2019-05-27 08:55:06 +02:00
/* SPDX-License-Identifier: GPL-2.0-or-later */
2014-04-14 21:55:12 -03:00
/*
* Silicon Labs Si2168 DVB - T / T2 / C demodulator driver
*
* Copyright ( C ) 2014 Antti Palosaari < crope @ iki . fi >
*/
2014-04-10 22:00:50 -03:00
# ifndef SI2168_PRIV_H
# define SI2168_PRIV_H
# include "si2168.h"
2017-12-28 13:03:51 -05:00
# include <media/dvb_frontend.h>
2014-04-10 22:00:50 -03:00
# include <linux/firmware.h>
# include <linux/i2c-mux.h>
2016-12-08 22:19:19 -02:00
# include <linux/kernel.h>
2014-04-10 22:00:50 -03:00
2014-07-17 19:43:37 -03:00
# define SI2168_A20_FIRMWARE "dvb-demod-si2168-a20-01.fw"
2014-07-13 10:52:18 -03:00
# define SI2168_A30_FIRMWARE "dvb-demod-si2168-a30-01.fw"
# define SI2168_B40_FIRMWARE "dvb-demod-si2168-b40-01.fw"
2017-02-07 19:33:47 -02:00
# define SI2168_D60_FIRMWARE "dvb-demod-si2168-d60-01.fw"
2014-07-22 02:03:59 -03:00
# define SI2168_B40_FIRMWARE_FALLBACK "dvb-demod-si2168-02.fw"
2014-04-10 22:00:50 -03:00
/* state struct */
2014-11-25 16:46:16 -03:00
struct si2168_dev {
2016-05-04 22:15:32 +02:00
struct mutex i2c_mutex ;
2016-04-20 08:41:36 +02:00
struct i2c_mux_core * muxc ;
2014-04-10 22:00:50 -03:00
struct dvb_frontend fe ;
2015-06-07 14:53:52 -03:00
enum fe_delivery_system delivery_system ;
enum fe_status fe_status ;
2016-06-29 20:38:17 -03:00
# define SI2168_CHIP_ID_A20 ('A' << 24 | 68 << 16 | '2' << 8 | '0' << 0)
# define SI2168_CHIP_ID_A30 ('A' << 24 | 68 << 16 | '3' << 8 | '0' << 0)
# define SI2168_CHIP_ID_B40 ('B' << 24 | 68 << 16 | '4' << 8 | '0' << 0)
2017-02-07 19:33:47 -02:00
# define SI2168_CHIP_ID_D60 ('D' << 24 | 68 << 16 | '6' << 8 | '0' << 0)
2016-06-29 20:38:17 -03:00
unsigned int chip_id ;
unsigned int version ;
const char * firmware_name ;
2014-04-10 22:00:50 -03:00
bool active ;
2016-06-29 20:38:17 -03:00
bool warm ;
2014-08-11 16:58:10 -03:00
u8 ts_mode ;
2014-11-14 18:22:10 -03:00
bool ts_clock_inv ;
2015-05-05 13:54:14 -03:00
bool ts_clock_gapped ;
2018-01-17 17:31:58 -05:00
bool spectral_inversion ;
2014-04-10 22:00:50 -03:00
} ;
2015-02-26 07:13:06 -03:00
/* firmware command struct */
2014-07-13 10:52:17 -03:00
# define SI2168_ARGLEN 30
2014-04-10 22:00:50 -03:00
struct si2168_cmd {
2014-07-13 10:52:17 -03:00
u8 args [ SI2168_ARGLEN ] ;
2014-04-10 22:00:50 -03:00
unsigned wlen ;
unsigned rlen ;
} ;
# endif