Commit 04ad28c9 authored by Igor M. Liplianin's avatar Igor M. Liplianin Committed by Mauro Carvalho Chehab

V4L/DVB (9017): Add support for Silicon Laboratories SI2109/2110 demodulators.

Add support for Silicon Laboratories SI2109/2110 demodulator
and cards with it, such as DvbWorld PCI2002.
Signed-off-by: default avatarIgor M. Liplianin <liplianin@me.by>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 34c08029
......@@ -4,6 +4,7 @@ config DVB_DM1105
select DVB_PLL if !DVB_FE_CUSTOMISE
select DVB_STV0299 if !DVB_FE_CUSTOMISE
select DVB_CX24116 if !DVB_FE_CUSTOMISE
select DVB_SI21XX if !DVB_FE_CUSTOMISE
help
Support for cards based on the SDMC DM1105 PCI chip like
DvbWorld 2002
......
......@@ -40,8 +40,8 @@
#include "stv0299.h"
/*#include "stv0288.h"
*#include "si21xx.h"
*#include "stb6000.h"*/
#include "si21xx.h"
#include "cx24116.h"
#include "z0194a.h"
......@@ -600,12 +600,12 @@ static struct stv0288_config earda_config = {
.min_delay_ms = 100,
};
#endif /* keep */
static struct si21xx_config serit_config = {
.demod_address = 0x68,
.min_delay_ms = 100,
};
#endif /* keep */
static struct cx24116_config serit_sp2633_config = {
.demod_address = 0x55,
......@@ -639,7 +639,7 @@ static int __devinit frontend_init(struct dm1105dvb *dm1105dvb)
&dm1105dvb->i2c_adap);
}
}
#endif /* keep */
if (!dm1105dvb->fe) {
dm1105dvb->fe = dvb_attach(
si21xx_attach, &serit_config,
......@@ -648,7 +648,6 @@ static int __devinit frontend_init(struct dm1105dvb *dm1105dvb)
dm1105dvb->fe->ops.set_voltage =
dm1105dvb_set_voltage;
}
#endif /* keep */
break;
case PCI_DEVICE_ID_DW2004:
dm1105dvb->fe = dvb_attach(
......
......@@ -99,6 +99,13 @@ config DVB_CX24116
help
A DVB-S/S2 tuner module. Say Y when you want to support this frontend.
config DVB_SI21XX
tristate "Silicon Labs SI21XX based"
depends on DVB_CORE && I2C
default m if DVB_FE_CUSTOMISE
help
A DVB-S tuner module. Say Y when you want to support this frontend.
comment "DVB-T (terrestrial) frontends"
depends on DVB_CORE
......
......@@ -52,3 +52,4 @@ obj-$(CONFIG_DVB_LGS8GL5) += lgs8gl5.o
obj-$(CONFIG_DVB_DUMMY_FE) += dvb_dummy_fe.o
obj-$(CONFIG_DVB_AF9013) += af9013.o
obj-$(CONFIG_DVB_CX24116) += cx24116.o
obj-$(CONFIG_DVB_SI21XX) += si21xx.o
This diff is collapsed.
#ifndef SI21XX_H
#define SI21XX_H
#include <linux/dvb/frontend.h>
#include "dvb_frontend.h"
struct si21xx_config {
/* the demodulator's i2c address */
u8 demod_address;
/* minimum delay before retuning */
int min_delay_ms;
};
#if defined(CONFIG_DVB_SI21XX) || \
(defined(CONFIG_DVB_SI21XX_MODULE) && defined(MODULE))
extern struct dvb_frontend *si21xx_attach(const struct si21xx_config *config,
struct i2c_adapter *i2c);
#else
static inline struct dvb_frontend *si21xx_attach(
const struct si21xx_config *config, struct i2c_adapter *i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
return NULL;
}
#endif
static inline int si21xx_writeregister(struct dvb_frontend *fe, u8 reg, u8 val)
{
int r = 0;
u8 buf[] = {reg, val};
if (fe->ops.write)
r = fe->ops.write(fe, buf, 2);
return r;
}
#endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment