diff options
author | Igor M. Liplianin <liplianin@me.by> | 2008-09-04 17:24:14 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2008-10-12 09:37:03 -0200 |
commit | af832623c2a44525df6e4ae0142fb0385479546c (patch) | |
tree | dae316e09fe1069dcad2b1682b94e76ac531f2ce /drivers/media/video/cx88/cx88-dvb.c | |
parent | 13c97bf56724b4f2d3dac139fb4cb081a3c401dc (diff) | |
download | linux-af832623c2a44525df6e4ae0142fb0385479546c.tar.gz linux-af832623c2a44525df6e4ae0142fb0385479546c.tar.bz2 linux-af832623c2a44525df6e4ae0142fb0385479546c.zip |
V4L/DVB (8989): Added support for TeVii S460 DVB-S/S2 card
Added support for TeVii S460 DVB-S/S2 card. The card
based on cx24116 demodulator.
Signed-off-by: Igor M. Liplianin <liplianin@me.by>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/cx88/cx88-dvb.c')
-rw-r--r-- | drivers/media/video/cx88/cx88-dvb.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/drivers/media/video/cx88/cx88-dvb.c b/drivers/media/video/cx88/cx88-dvb.c index 7a5a4a2c69ca..5ff6e9d28713 100644 --- a/drivers/media/video/cx88/cx88-dvb.c +++ b/drivers/media/video/cx88/cx88-dvb.c @@ -376,6 +376,31 @@ static int geniatech_dvbs_set_voltage(struct dvb_frontend *fe, return 0; } +static int tevii_dvbs_set_voltage(struct dvb_frontend *fe, + fe_sec_voltage_t voltage) +{ + struct cx8802_dev *dev= fe->dvb->priv; + struct cx88_core *core = dev->core; + + switch (voltage) { + case SEC_VOLTAGE_13: + printk("LNB Voltage SEC_VOLTAGE_13\n"); + cx_write(MO_GP0_IO, 0x00006040); + break; + case SEC_VOLTAGE_18: + printk("LNB Voltage SEC_VOLTAGE_18\n"); + cx_write(MO_GP0_IO, 0x00006060); + break; + case SEC_VOLTAGE_OFF: + printk("LNB Voltage SEC_VOLTAGE_off\n"); + break; + } + + if (core->prev_set_voltage) + return core->prev_set_voltage(fe, voltage); + return 0; +} + static int cx88_pci_nano_callback(void *ptr, int command, int arg) { struct cx88_core *core = ptr; @@ -548,6 +573,12 @@ static struct cx24116_config hauppauge_hvr4000_config = { .reset_device = cx24116_reset_device, }; +static struct cx24116_config tevii_s460_config = { + .demod_address = 0x55, + .set_ts_params = cx24116_set_ts_param, + .reset_device = cx24116_reset_device, +}; + static int dvb_register(struct cx8802_dev *dev) { struct cx88_core *core = dev->core; @@ -918,6 +949,15 @@ static int dvb_register(struct cx8802_dev *dev) 0x08, 0x00, 0x00); } break; + case CX88_BOARD_TEVII_S460: + dev->dvb.frontend = dvb_attach(cx24116_attach, + &tevii_s460_config, + &core->i2c_adap); + if (dev->dvb.frontend != NULL) { + core->prev_set_voltage = dev->dvb.frontend->ops.set_voltage; + dev->dvb.frontend->ops.set_voltage = tevii_dvbs_set_voltage; + } + break; default: printk(KERN_ERR "%s/2: The frontend of your DVB/ATSC card isn't supported yet\n", core->name); |