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 ...@@ -4,6 +4,7 @@ config DVB_DM1105
select DVB_PLL if !DVB_FE_CUSTOMISE select DVB_PLL if !DVB_FE_CUSTOMISE
select DVB_STV0299 if !DVB_FE_CUSTOMISE select DVB_STV0299 if !DVB_FE_CUSTOMISE
select DVB_CX24116 if !DVB_FE_CUSTOMISE select DVB_CX24116 if !DVB_FE_CUSTOMISE
select DVB_SI21XX if !DVB_FE_CUSTOMISE
help help
Support for cards based on the SDMC DM1105 PCI chip like Support for cards based on the SDMC DM1105 PCI chip like
DvbWorld 2002 DvbWorld 2002
......
...@@ -40,8 +40,8 @@ ...@@ -40,8 +40,8 @@
#include "stv0299.h" #include "stv0299.h"
/*#include "stv0288.h" /*#include "stv0288.h"
*#include "si21xx.h"
*#include "stb6000.h"*/ *#include "stb6000.h"*/
#include "si21xx.h"
#include "cx24116.h" #include "cx24116.h"
#include "z0194a.h" #include "z0194a.h"
...@@ -600,12 +600,12 @@ static struct stv0288_config earda_config = { ...@@ -600,12 +600,12 @@ static struct stv0288_config earda_config = {
.min_delay_ms = 100, .min_delay_ms = 100,
}; };
#endif /* keep */
static struct si21xx_config serit_config = { static struct si21xx_config serit_config = {
.demod_address = 0x68, .demod_address = 0x68,
.min_delay_ms = 100, .min_delay_ms = 100,
}; };
#endif /* keep */
static struct cx24116_config serit_sp2633_config = { static struct cx24116_config serit_sp2633_config = {
.demod_address = 0x55, .demod_address = 0x55,
...@@ -639,7 +639,7 @@ static int __devinit frontend_init(struct dm1105dvb *dm1105dvb) ...@@ -639,7 +639,7 @@ static int __devinit frontend_init(struct dm1105dvb *dm1105dvb)
&dm1105dvb->i2c_adap); &dm1105dvb->i2c_adap);
} }
} }
#endif /* keep */
if (!dm1105dvb->fe) { if (!dm1105dvb->fe) {
dm1105dvb->fe = dvb_attach( dm1105dvb->fe = dvb_attach(
si21xx_attach, &serit_config, si21xx_attach, &serit_config,
...@@ -648,7 +648,6 @@ static int __devinit frontend_init(struct dm1105dvb *dm1105dvb) ...@@ -648,7 +648,6 @@ static int __devinit frontend_init(struct dm1105dvb *dm1105dvb)
dm1105dvb->fe->ops.set_voltage = dm1105dvb->fe->ops.set_voltage =
dm1105dvb_set_voltage; dm1105dvb_set_voltage;
} }
#endif /* keep */
break; break;
case PCI_DEVICE_ID_DW2004: case PCI_DEVICE_ID_DW2004:
dm1105dvb->fe = dvb_attach( dm1105dvb->fe = dvb_attach(
......
...@@ -99,6 +99,13 @@ config DVB_CX24116 ...@@ -99,6 +99,13 @@ config DVB_CX24116
help help
A DVB-S/S2 tuner module. Say Y when you want to support this frontend. 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" comment "DVB-T (terrestrial) frontends"
depends on DVB_CORE depends on DVB_CORE
......
...@@ -52,3 +52,4 @@ obj-$(CONFIG_DVB_LGS8GL5) += lgs8gl5.o ...@@ -52,3 +52,4 @@ obj-$(CONFIG_DVB_LGS8GL5) += lgs8gl5.o
obj-$(CONFIG_DVB_DUMMY_FE) += dvb_dummy_fe.o obj-$(CONFIG_DVB_DUMMY_FE) += dvb_dummy_fe.o
obj-$(CONFIG_DVB_AF9013) += af9013.o obj-$(CONFIG_DVB_AF9013) += af9013.o
obj-$(CONFIG_DVB_CX24116) += cx24116.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