diff options
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, | |||
376 | return 0; | 376 | return 0; |
377 | } | 377 | } |
378 | 378 | ||
379 | static int tevii_dvbs_set_voltage(struct dvb_frontend *fe, | ||
380 | fe_sec_voltage_t voltage) | ||
381 | { | ||
382 | struct cx8802_dev *dev= fe->dvb->priv; | ||
383 | struct cx88_core *core = dev->core; | ||
384 | |||
385 | switch (voltage) { | ||
386 | case SEC_VOLTAGE_13: | ||
387 | printk("LNB Voltage SEC_VOLTAGE_13\n"); | ||
388 | cx_write(MO_GP0_IO, 0x00006040); | ||
389 | break; | ||
390 | case SEC_VOLTAGE_18: | ||
391 | printk("LNB Voltage SEC_VOLTAGE_18\n"); | ||
392 | cx_write(MO_GP0_IO, 0x00006060); | ||
393 | break; | ||
394 | case SEC_VOLTAGE_OFF: | ||
395 | printk("LNB Voltage SEC_VOLTAGE_off\n"); | ||
396 | break; | ||
397 | } | ||
398 | |||
399 | if (core->prev_set_voltage) | ||
400 | return core->prev_set_voltage(fe, voltage); | ||
401 | return 0; | ||
402 | } | ||
403 | |||
379 | static int cx88_pci_nano_callback(void *ptr, int command, int arg) | 404 | static int cx88_pci_nano_callback(void *ptr, int command, int arg) |
380 | { | 405 | { |
381 | struct cx88_core *core = ptr; | 406 | struct cx88_core *core = ptr; |
@@ -548,6 +573,12 @@ static struct cx24116_config hauppauge_hvr4000_config = { | |||
548 | .reset_device = cx24116_reset_device, | 573 | .reset_device = cx24116_reset_device, |
549 | }; | 574 | }; |
550 | 575 | ||
576 | static struct cx24116_config tevii_s460_config = { | ||
577 | .demod_address = 0x55, | ||
578 | .set_ts_params = cx24116_set_ts_param, | ||
579 | .reset_device = cx24116_reset_device, | ||
580 | }; | ||
581 | |||
551 | static int dvb_register(struct cx8802_dev *dev) | 582 | static int dvb_register(struct cx8802_dev *dev) |
552 | { | 583 | { |
553 | struct cx88_core *core = dev->core; | 584 | struct cx88_core *core = dev->core; |
@@ -918,6 +949,15 @@ static int dvb_register(struct cx8802_dev *dev) | |||
918 | 0x08, 0x00, 0x00); | 949 | 0x08, 0x00, 0x00); |
919 | } | 950 | } |
920 | break; | 951 | break; |
952 | case CX88_BOARD_TEVII_S460: | ||
953 | dev->dvb.frontend = dvb_attach(cx24116_attach, | ||
954 | &tevii_s460_config, | ||
955 | &core->i2c_adap); | ||
956 | if (dev->dvb.frontend != NULL) { | ||
957 | core->prev_set_voltage = dev->dvb.frontend->ops.set_voltage; | ||
958 | dev->dvb.frontend->ops.set_voltage = tevii_dvbs_set_voltage; | ||
959 | } | ||
960 | break; | ||
921 | default: | 961 | default: |
922 | printk(KERN_ERR "%s/2: The frontend of your DVB/ATSC card isn't supported yet\n", | 962 | printk(KERN_ERR "%s/2: The frontend of your DVB/ATSC card isn't supported yet\n", |
923 | core->name); | 963 | core->name); |