2014-04-15 04:55:12 +04:00
/*
* Silicon Labs Si2168 DVB - T / T2 / C demodulator driver
*
* Copyright ( C ) 2014 Antti Palosaari < crope @ iki . fi >
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*/
2014-04-11 05:00:50 +04:00
# ifndef SI2168_PRIV_H
# define SI2168_PRIV_H
# include "si2168.h"
# include "dvb_frontend.h"
# include <linux/firmware.h>
# include <linux/i2c-mux.h>
2016-12-09 03:19:19 +03:00
# include <linux/kernel.h>
2014-04-11 05:00:50 +04:00
2014-07-18 02:43:37 +04:00
# define SI2168_A20_FIRMWARE "dvb-demod-si2168-a20-01.fw"
2014-07-13 17:52:18 +04:00
# define SI2168_A30_FIRMWARE "dvb-demod-si2168-a30-01.fw"
# define SI2168_B40_FIRMWARE "dvb-demod-si2168-b40-01.fw"
2017-02-08 00:33:47 +03:00
# define SI2168_D60_FIRMWARE "dvb-demod-si2168-d60-01.fw"
2014-07-22 09:03:59 +04:00
# define SI2168_B40_FIRMWARE_FALLBACK "dvb-demod-si2168-02.fw"
2014-04-11 05:00:50 +04:00
/* state struct */
2014-11-25 22:46:16 +03:00
struct si2168_dev {
2016-05-04 23:15:32 +03:00
struct mutex i2c_mutex ;
2016-04-20 09:41:36 +03:00
struct i2c_mux_core * muxc ;
2014-04-11 05:00:50 +04:00
struct dvb_frontend fe ;
2015-06-07 20:53:52 +03:00
enum fe_delivery_system delivery_system ;
enum fe_status fe_status ;
2016-06-30 02: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-08 00:33:47 +03:00
# define SI2168_CHIP_ID_D60 ('D' << 24 | 68 << 16 | '6' << 8 | '0' << 0)
2016-06-30 02:38:17 +03:00
unsigned int chip_id ;
unsigned int version ;
const char * firmware_name ;
2014-04-11 05:00:50 +04:00
bool active ;
2016-06-30 02:38:17 +03:00
bool warm ;
2014-08-11 23:58:10 +04:00
u8 ts_mode ;
2014-11-15 00:22:10 +03:00
bool ts_clock_inv ;
2015-05-05 19:54:14 +03:00
bool ts_clock_gapped ;
2014-04-11 05:00:50 +04:00
} ;
2015-02-26 13:13:06 +03:00
/* firmware command struct */
2014-07-13 17:52:17 +04:00
# define SI2168_ARGLEN 30
2014-04-11 05:00:50 +04:00
struct si2168_cmd {
2014-07-13 17:52:17 +04:00
u8 args [ SI2168_ARGLEN ] ;
2014-04-11 05:00:50 +04:00
unsigned wlen ;
unsigned rlen ;
} ;
# endif