diff options
author | Saqeb Akhter <johoja@gmail.com> | 2006-06-29 19:29:33 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2006-06-30 14:59:46 -0400 |
commit | c02a34f4e3e65a7b1fb64507ec5c093e8328335e (patch) | |
tree | 4976dfb5952a593a7195ee7bc5316a5e6e8f401f | |
parent | ccd214b27341485bd471e4e031c33d2ba1a9aaac (diff) |
V4L/DVB (4285): Cx88: add support for Geniatech Digistar / Digiwave 103g
This patch adds support for the Geniatech Digistar, aka
Digiwave 103g DVB-S card.
Acked-by: Andrew de Quincey <adq_dvb@lidskialf.net>
Signed-off-by: Saqeb Akhter <johoja@gmail.com>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
-rw-r--r-- | Documentation/video4linux/CARDLIST.cx88 | 1 | ||||
-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 |
4 files changed, 49 insertions, 0 deletions
diff --git a/Documentation/video4linux/CARDLIST.cx88 b/Documentation/video4linux/CARDLIST.cx88 index 6cb63ddf6163..00d9a1f2a54c 100644 --- a/Documentation/video4linux/CARDLIST.cx88 +++ b/Documentation/video4linux/CARDLIST.cx88 | |||
@@ -50,3 +50,4 @@ | |||
50 | 49 -> PixelView PlayTV P7000 [1554:4813] | 50 | 49 -> PixelView PlayTV P7000 [1554:4813] |
51 | 50 -> NPG Tech Real TV FM Top 10 [14f1:0842] | 51 | 50 -> NPG Tech Real TV FM Top 10 [14f1:0842] |
52 | 51 -> WinFast DTV2000 H [107d:665e] | 52 | 51 -> WinFast DTV2000 H [107d:665e] |
53 | 52 -> Geniatech DVB-S [14f1:0084] | ||
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, |