[media] add the support for DiBcom dib8096P
The purpose of this patch is to support the DiBcom chip dib8096P. Signed-off-by: Olivier Grenie <olivier.grenie@dibcom.fr> Signed-off-by: Patrick Boettcher <patrick.boettcher@dibcom.fr> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
Родитель
b293f304c5
Коммит
0c32dbd74f
|
@ -1279,7 +1279,7 @@ static int stk807x_frontend_attach(struct dvb_usb_adapter *adap)
|
|||
dib0700_set_gpio(adap->dev, GPIO0, GPIO_OUT, 1);
|
||||
|
||||
dib8000_i2c_enumeration(&adap->dev->i2c_adap, 1, 18,
|
||||
0x80);
|
||||
0x80, 0);
|
||||
|
||||
adap->fe_adap[0].fe = dvb_attach(dib8000_attach, &adap->dev->i2c_adap, 0x80,
|
||||
&dib807x_dib8000_config[0]);
|
||||
|
@ -1308,7 +1308,7 @@ static int stk807xpvr_frontend_attach0(struct dvb_usb_adapter *adap)
|
|||
dib0700_set_gpio(adap->dev, GPIO0, GPIO_OUT, 1);
|
||||
|
||||
/* initialize IC 0 */
|
||||
dib8000_i2c_enumeration(&adap->dev->i2c_adap, 1, 0x22, 0x80);
|
||||
dib8000_i2c_enumeration(&adap->dev->i2c_adap, 1, 0x22, 0x80, 0);
|
||||
|
||||
adap->fe_adap[0].fe = dvb_attach(dib8000_attach, &adap->dev->i2c_adap, 0x80,
|
||||
&dib807x_dib8000_config[0]);
|
||||
|
@ -1319,7 +1319,7 @@ static int stk807xpvr_frontend_attach0(struct dvb_usb_adapter *adap)
|
|||
static int stk807xpvr_frontend_attach1(struct dvb_usb_adapter *adap)
|
||||
{
|
||||
/* initialize IC 1 */
|
||||
dib8000_i2c_enumeration(&adap->dev->i2c_adap, 1, 0x12, 0x82);
|
||||
dib8000_i2c_enumeration(&adap->dev->i2c_adap, 1, 0x12, 0x82, 0);
|
||||
|
||||
adap->fe_adap[0].fe = dvb_attach(dib8000_attach, &adap->dev->i2c_adap, 0x82,
|
||||
&dib807x_dib8000_config[1]);
|
||||
|
@ -1578,7 +1578,7 @@ static int stk809x_frontend_attach(struct dvb_usb_adapter *adap)
|
|||
msleep(10);
|
||||
dib0700_set_gpio(adap->dev, GPIO0, GPIO_OUT, 1);
|
||||
|
||||
dib8000_i2c_enumeration(&adap->dev->i2c_adap, 1, 18, 0x80);
|
||||
dib8000_i2c_enumeration(&adap->dev->i2c_adap, 1, 18, 0x80, 0);
|
||||
|
||||
adap->fe_adap[0].fe = dvb_attach(dib8000_attach, &adap->dev->i2c_adap, 0x80, &dib809x_dib8000_config[0]);
|
||||
|
||||
|
@ -1629,7 +1629,7 @@ static int nim8096md_frontend_attach(struct dvb_usb_adapter *adap)
|
|||
msleep(20);
|
||||
dib0700_set_gpio(adap->dev, GPIO0, GPIO_OUT, 1);
|
||||
|
||||
dib8000_i2c_enumeration(&adap->dev->i2c_adap, 2, 18, 0x80);
|
||||
dib8000_i2c_enumeration(&adap->dev->i2c_adap, 2, 18, 0x80, 0);
|
||||
|
||||
adap->fe_adap[0].fe = dvb_attach(dib8000_attach, &adap->dev->i2c_adap, 0x80, &dib809x_dib8000_config[0]);
|
||||
if (adap->fe_adap[0].fe == NULL)
|
||||
|
|
|
@ -81,13 +81,6 @@ enum dib7000p_power_mode {
|
|||
};
|
||||
|
||||
/* dib7090 specific fonctions */
|
||||
#define MPEG_ON_DIBTX 1
|
||||
#define DIV_ON_DIBTX 2
|
||||
#define ADC_ON_DIBTX 3
|
||||
#define DEMOUT_ON_HOSTBUS 4
|
||||
#define DIBTX_ON_HOSTBUS 5
|
||||
#define MPEG_ON_HOSTBUS 6
|
||||
|
||||
static int dib7090_set_output_mode(struct dvb_frontend *fe, int mode);
|
||||
static int dib7090_set_diversity_in(struct dvb_frontend *fe, int onoff);
|
||||
static void dib7090_setDibTxMux(struct dib7000p_state *state, int mode);
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -32,6 +32,7 @@ struct dib8000_config {
|
|||
u8 div_cfg;
|
||||
u8 output_mode;
|
||||
u8 refclksel;
|
||||
u8 enMpegOutput:1;
|
||||
};
|
||||
|
||||
#define DEFAULT_DIB8000_I2C_ADDRESS 18
|
||||
|
@ -40,7 +41,8 @@ struct dib8000_config {
|
|||
extern struct dvb_frontend *dib8000_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, struct dib8000_config *cfg);
|
||||
extern struct i2c_adapter *dib8000_get_i2c_master(struct dvb_frontend *, enum dibx000_i2c_interface, int);
|
||||
|
||||
extern int dib8000_i2c_enumeration(struct i2c_adapter *host, int no_of_demods, u8 default_addr, u8 first_addr);
|
||||
extern int dib8000_i2c_enumeration(struct i2c_adapter *host, int no_of_demods,
|
||||
u8 default_addr, u8 first_addr, u8 is_dib8096p);
|
||||
|
||||
extern int dib8000_set_gpio(struct dvb_frontend *, u8 num, u8 dir, u8 val);
|
||||
extern int dib8000_set_wbd_ref(struct dvb_frontend *, u16 value);
|
||||
|
@ -50,6 +52,13 @@ extern int dib8000_set_tune_state(struct dvb_frontend *fe, enum frontend_tune_st
|
|||
extern enum frontend_tune_state dib8000_get_tune_state(struct dvb_frontend *fe);
|
||||
extern void dib8000_pwm_agc_reset(struct dvb_frontend *fe);
|
||||
extern s32 dib8000_get_adc_power(struct dvb_frontend *fe, u8 mode);
|
||||
extern struct i2c_adapter *dib8096p_get_i2c_tuner(struct dvb_frontend *fe);
|
||||
extern int dib8096p_tuner_sleep(struct dvb_frontend *fe, int onoff);
|
||||
extern int dib8090p_get_dc_power(struct dvb_frontend *fe, u8 IQ);
|
||||
extern u32 dib8000_ctrl_timf(struct dvb_frontend *fe,
|
||||
uint8_t op, uint32_t timf);
|
||||
extern int dib8000_update_pll(struct dvb_frontend *fe,
|
||||
struct dibx000_bandwidth_config *pll);
|
||||
extern int dib8000_set_slave_frontend(struct dvb_frontend *fe, struct dvb_frontend *fe_slave);
|
||||
extern int dib8000_remove_slave_frontend(struct dvb_frontend *fe);
|
||||
extern struct dvb_frontend *dib8000_get_slave_frontend(struct dvb_frontend *fe, int slave_index);
|
||||
|
@ -66,7 +75,9 @@ static inline struct i2c_adapter *dib8000_get_i2c_master(struct dvb_frontend *fe
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static inline int dib8000_i2c_enumeration(struct i2c_adapter *host, int no_of_demods, u8 default_addr, u8 first_addr)
|
||||
static inline int dib8000_i2c_enumeration(struct i2c_adapter *host,
|
||||
int no_of_demods, u8 default_addr, u8 first_addr,
|
||||
u8 is_dib8096p)
|
||||
{
|
||||
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
|
||||
return -ENODEV;
|
||||
|
@ -109,11 +120,38 @@ static inline void dib8000_pwm_agc_reset(struct dvb_frontend *fe)
|
|||
{
|
||||
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
|
||||
}
|
||||
static inline struct i2c_adapter *dib8096p_get_i2c_tuner(struct dvb_frontend *fe)
|
||||
{
|
||||
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
|
||||
return NULL;
|
||||
}
|
||||
static inline int dib8096p_tuner_sleep(struct dvb_frontend *fe, int onoff)
|
||||
{
|
||||
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
|
||||
return 0;
|
||||
}
|
||||
static inline s32 dib8000_get_adc_power(struct dvb_frontend *fe, u8 mode)
|
||||
{
|
||||
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
|
||||
return 0;
|
||||
}
|
||||
static inline int dib8090p_get_dc_power(struct dvb_frontend *fe, u8 IQ)
|
||||
{
|
||||
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
|
||||
return 0;
|
||||
}
|
||||
static inline u32 dib8000_ctrl_timf(struct dvb_frontend *fe,
|
||||
uint8_t op, uint32_t timf)
|
||||
{
|
||||
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
|
||||
return 0;
|
||||
}
|
||||
static inline int dib8000_update_pll(struct dvb_frontend *fe,
|
||||
struct dibx000_bandwidth_config *pll)
|
||||
{
|
||||
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
|
||||
return -ENODEV;
|
||||
}
|
||||
static inline int dib8000_set_slave_frontend(struct dvb_frontend *fe, struct dvb_frontend *fe_slave)
|
||||
{
|
||||
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
|
||||
|
|
|
@ -276,4 +276,11 @@ struct dibSubbandSelection {
|
|||
#define DEMOD_TIMF_GET 0x01
|
||||
#define DEMOD_TIMF_UPDATE 0x02
|
||||
|
||||
#define MPEG_ON_DIBTX 1
|
||||
#define DIV_ON_DIBTX 2
|
||||
#define ADC_ON_DIBTX 3
|
||||
#define DEMOUT_ON_HOSTBUS 4
|
||||
#define DIBTX_ON_HOSTBUS 5
|
||||
#define MPEG_ON_HOSTBUS 6
|
||||
|
||||
#endif
|
||||
|
|
Загрузка…
Ссылка в новой задаче