diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/media/video/cx88/cx88-cards.c | 19 | ||||
| -rw-r--r-- | drivers/media/video/cx88/cx88-dvb.c | 28 | ||||
| -rw-r--r-- | drivers/media/video/cx88/cx88.h | 1 |
3 files changed, 48 insertions, 0 deletions
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c index f9d68f20dc88..14bd4863d157 100644 --- a/drivers/media/video/cx88/cx88-cards.c +++ b/drivers/media/video/cx88/cx88-cards.c | |||
| @@ -1194,6 +1194,21 @@ struct cx88_board cx88_boards[] = { | |||
| 1194 | }}, | 1194 | }}, |
| 1195 | .dvb = 1, | 1195 | .dvb = 1, |
| 1196 | }, | 1196 | }, |
| 1197 | [CX88_BOARD_GENIATECH_DVBS] = { | ||
| 1198 | .name = "Geniatech DVB-S", | ||
| 1199 | .tuner_type = TUNER_ABSENT, | ||
| 1200 | .radio_type = UNSET, | ||
| 1201 | .tuner_addr = ADDR_UNSET, | ||
| 1202 | .radio_addr = ADDR_UNSET, | ||
| 1203 | .input = {{ | ||
| 1204 | .type = CX88_VMUX_DVB, | ||
| 1205 | .vmux = 0, | ||
| 1206 | },{ | ||
| 1207 | .type = CX88_VMUX_COMPOSITE1, | ||
| 1208 | .vmux = 1, | ||
| 1209 | }}, | ||
| 1210 | .dvb = 1, | ||
| 1211 | }, | ||
| 1197 | }; | 1212 | }; |
| 1198 | const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards); | 1213 | const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards); |
| 1199 | 1214 | ||
| @@ -1439,6 +1454,10 @@ struct cx88_subid cx88_subids[] = { | |||
| 1439 | .subvendor = 0x18ac, | 1454 | .subvendor = 0x18ac, |
| 1440 | .subdevice = 0xd800, /* FusionHDTV 3 Gold (original revision) */ | 1455 | .subdevice = 0xd800, /* FusionHDTV 3 Gold (original revision) */ |
| 1441 | .card = CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q, | 1456 | .card = CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q, |
| 1457 | },{ | ||
| 1458 | .subvendor = 0x14f1, | ||
| 1459 | .subdevice = 0x0084, | ||
| 1460 | .card = CX88_BOARD_GENIATECH_DVBS, | ||
| 1442 | }, | 1461 | }, |
| 1443 | }; | 1462 | }; |
| 1444 | const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids); | 1463 | const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids); |
diff --git a/drivers/media/video/cx88/cx88-dvb.c b/drivers/media/video/cx88/cx88-dvb.c index dce1feddd55d..afde3789d702 100644 --- a/drivers/media/video/cx88/cx88-dvb.c +++ b/drivers/media/video/cx88/cx88-dvb.c | |||
| @@ -496,6 +496,26 @@ static int kworld_dvbs_100_set_voltage(struct dvb_frontend* fe, fe_sec_voltage_t | |||
| 496 | return 0; | 496 | return 0; |
| 497 | } | 497 | } |
| 498 | 498 | ||
| 499 | static int geniatech_dvbs_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage) | ||
| 500 | { | ||
| 501 | struct cx8802_dev *dev= fe->dvb->priv; | ||
| 502 | struct cx88_core *core = dev->core; | ||
| 503 | |||
| 504 | if (voltage == SEC_VOLTAGE_OFF) { | ||
| 505 | dprintk(1,"LNB Voltage OFF\n"); | ||
| 506 | cx_write(MO_GP0_IO, 0x0000efff); | ||
| 507 | } | ||
| 508 | |||
| 509 | if (core->prev_set_voltage) | ||
| 510 | return core->prev_set_voltage(fe, voltage); | ||
| 511 | return 0; | ||
| 512 | } | ||
| 513 | |||
| 514 | static struct cx24123_config geniatech_dvbs_config = { | ||
| 515 | .demod_address = 0x55, | ||
| 516 | .set_ts_params = cx24123_set_ts_param, | ||
| 517 | }; | ||
| 518 | |||
| 499 | static struct cx24123_config hauppauge_novas_config = { | 519 | static struct cx24123_config hauppauge_novas_config = { |
| 500 | .demod_address = 0x55, | 520 | .demod_address = 0x55, |
| 501 | .set_ts_params = cx24123_set_ts_param, | 521 | .set_ts_params = cx24123_set_ts_param, |
| @@ -760,6 +780,14 @@ static int dvb_register(struct cx8802_dev *dev) | |||
| 760 | dev->dvb.frontend->ops.set_voltage = kworld_dvbs_100_set_voltage; | 780 | dev->dvb.frontend->ops.set_voltage = kworld_dvbs_100_set_voltage; |
| 761 | } | 781 | } |
| 762 | break; | 782 | break; |
| 783 | case CX88_BOARD_GENIATECH_DVBS: | ||
| 784 | dev->dvb.frontend = cx24123_attach(&geniatech_dvbs_config, | ||
| 785 | &dev->core->i2c_adap); | ||
| 786 | if (dev->dvb.frontend) { | ||
| 787 | dev->core->prev_set_voltage = dev->dvb.frontend->ops.set_voltage; | ||
| 788 | dev->dvb.frontend->ops.set_voltage = geniatech_dvbs_set_voltage; | ||
| 789 | } | ||
| 790 | break; | ||
| 763 | #endif | 791 | #endif |
| 764 | default: | 792 | default: |
| 765 | printk("%s: The frontend of your DVB/ATSC card isn't supported yet\n", | 793 | printk("%s: The frontend of your DVB/ATSC card isn't supported yet\n", |
diff --git a/drivers/media/video/cx88/cx88.h b/drivers/media/video/cx88/cx88.h index 336e823c7588..e7810955dd4f 100644 --- a/drivers/media/video/cx88/cx88.h +++ b/drivers/media/video/cx88/cx88.h | |||
| @@ -196,6 +196,7 @@ extern struct sram_channel cx88_sram_channels[]; | |||
| 196 | #define CX88_BOARD_PIXELVIEW_PLAYTV_P7000 49 | 196 | #define CX88_BOARD_PIXELVIEW_PLAYTV_P7000 49 |
| 197 | #define CX88_BOARD_NPGTECH_REALTV_TOP10FM 50 | 197 | #define CX88_BOARD_NPGTECH_REALTV_TOP10FM 50 |
| 198 | #define CX88_BOARD_WINFAST_DTV2000H 51 | 198 | #define CX88_BOARD_WINFAST_DTV2000H 51 |
| 199 | #define CX88_BOARD_GENIATECH_DVBS 52 | ||
| 199 | 200 | ||
| 200 | enum cx88_itype { | 201 | enum cx88_itype { |
| 201 | CX88_VMUX_COMPOSITE1 = 1, | 202 | CX88_VMUX_COMPOSITE1 = 1, |
