diff options
author | Vadim Catana <skystar@moldova.cc> | 2006-01-09 12:25:02 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@brturbo.com.br> | 2006-01-09 12:25:02 -0500 |
commit | 0e0351e3709023dbd015d09880b04f0aa8818fcb (patch) | |
tree | 204b97290bd663cf36171e4139c2ad470c7c6b41 | |
parent | fb56cb65e4b737c93727ea296050e8d24eb7cb42 (diff) |
V4L (1007): Add support for KWorld DVB-S 100
- Add support for KWorld DVB-S 100, based on the same chips as Hauppauge
Nova-S Plus (CX23883/CX24123/CX24109), without the Intersil ISL6421,
which is used for LNB control.
- LNB voltage and tone are controled by LNBDC and LNBTone bits from
register 0x29 of the CX24123 demodulator.
- The MO_GP0_IO register from CX23883 is used to turn LNB power on and off.
Signed-off-by: Vadim Catana <skystar@moldova.cc>
Acked-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Michael Krufky <mkrufky@m1k.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@brturbo.com.br>
-rw-r--r-- | Documentation/video4linux/CARDLIST.cx88 | 1 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-cards.c | 26 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-dvb.c | 27 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88.h | 1 |
4 files changed, 53 insertions, 2 deletions
diff --git a/Documentation/video4linux/CARDLIST.cx88 b/Documentation/video4linux/CARDLIST.cx88 index 739a343e5275..13ec5e965f41 100644 --- a/Documentation/video4linux/CARDLIST.cx88 +++ b/Documentation/video4linux/CARDLIST.cx88 | |||
@@ -37,3 +37,4 @@ | |||
37 | 36 -> AVerTV 303 (M126) [1461:000a] | 37 | 36 -> AVerTV 303 (M126) [1461:000a] |
38 | 37 -> Hauppauge Nova-S-Plus DVB-S [0070:9201,0070:9202] | 38 | 37 -> Hauppauge Nova-S-Plus DVB-S [0070:9201,0070:9202] |
39 | 38 -> Hauppauge Nova-SE2 DVB-S [0070:9200] | 39 | 38 -> Hauppauge Nova-SE2 DVB-S [0070:9200] |
40 | 39 -> KWorld DVB-S 100 [17de:08b2] | ||
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c index 1976e04d8ace..fd173e6ac605 100644 --- a/drivers/media/video/cx88/cx88-cards.c +++ b/drivers/media/video/cx88/cx88-cards.c | |||
@@ -928,6 +928,24 @@ struct cx88_board cx88_boards[] = { | |||
928 | }}, | 928 | }}, |
929 | .dvb = 1, | 929 | .dvb = 1, |
930 | }, | 930 | }, |
931 | [CX88_BOARD_KWORLD_DVBS_100] = { | ||
932 | .name = "KWorld DVB-S 100", | ||
933 | .tuner_type = TUNER_ABSENT, | ||
934 | .radio_type = UNSET, | ||
935 | .tuner_addr = ADDR_UNSET, | ||
936 | .radio_addr = ADDR_UNSET, | ||
937 | .input = {{ | ||
938 | .type = CX88_VMUX_DVB, | ||
939 | .vmux = 0, | ||
940 | },{ | ||
941 | .type = CX88_VMUX_COMPOSITE1, | ||
942 | .vmux = 1, | ||
943 | },{ | ||
944 | .type = CX88_VMUX_SVIDEO, | ||
945 | .vmux = 2, | ||
946 | }}, | ||
947 | .dvb = 1, | ||
948 | }, | ||
931 | }; | 949 | }; |
932 | const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards); | 950 | const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards); |
933 | 951 | ||
@@ -1087,6 +1105,10 @@ struct cx88_subid cx88_subids[] = { | |||
1087 | .subvendor = 0x0070, | 1105 | .subvendor = 0x0070, |
1088 | .subdevice = 0x9202, | 1106 | .subdevice = 0x9202, |
1089 | .card = CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1, | 1107 | .card = CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1, |
1108 | },{ | ||
1109 | .subvendor = 0x17de, | ||
1110 | .subdevice = 0x08b2, | ||
1111 | .card = CX88_BOARD_KWORLD_DVBS_100, | ||
1090 | }, | 1112 | }, |
1091 | }; | 1113 | }; |
1092 | const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids); | 1114 | const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids); |
@@ -1260,6 +1282,10 @@ void cx88_card_setup(struct cx88_core *core) | |||
1260 | if (0 == core->i2c_rc) | 1282 | if (0 == core->i2c_rc) |
1261 | hauppauge_eeprom(core,eeprom); | 1283 | hauppauge_eeprom(core,eeprom); |
1262 | break; | 1284 | break; |
1285 | case CX88_BOARD_KWORLD_DVBS_100: | ||
1286 | cx_write(MO_GP0_IO, 0x000007f8); | ||
1287 | cx_write(MO_GP1_IO, 0x00000001); | ||
1288 | break; | ||
1263 | case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T1: | 1289 | case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T1: |
1264 | case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PLUS: | 1290 | case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PLUS: |
1265 | /* GPIO0:0 is hooked to mt352 reset pin */ | 1291 | /* GPIO0:0 is hooked to mt352 reset pin */ |
diff --git a/drivers/media/video/cx88/cx88-dvb.c b/drivers/media/video/cx88/cx88-dvb.c index 21972572a943..054094e48fc3 100644 --- a/drivers/media/video/cx88/cx88-dvb.c +++ b/drivers/media/video/cx88/cx88-dvb.c | |||
@@ -326,9 +326,28 @@ static int cx24123_set_ts_param(struct dvb_frontend* fe, | |||
326 | return 0; | 326 | return 0; |
327 | } | 327 | } |
328 | 328 | ||
329 | static void cx24123_enable_lnb_voltage(struct dvb_frontend* fe, int on) | ||
330 | { | ||
331 | struct cx8802_dev *dev= fe->dvb->priv; | ||
332 | struct cx88_core *core = dev->core; | ||
333 | |||
334 | if (on) | ||
335 | cx_write(MO_GP0_IO, 0x000006f9); | ||
336 | else | ||
337 | cx_write(MO_GP0_IO, 0x000006fB); | ||
338 | } | ||
339 | |||
329 | static struct cx24123_config hauppauge_novas_config = { | 340 | static struct cx24123_config hauppauge_novas_config = { |
330 | .demod_address = 0x55, | 341 | .demod_address = 0x55, |
331 | .set_ts_params = cx24123_set_ts_param, | 342 | .use_isl6421 = 1, |
343 | .set_ts_params = cx24123_set_ts_param, | ||
344 | }; | ||
345 | |||
346 | static struct cx24123_config kworld_dvbs_100_config = { | ||
347 | .demod_address = 0x15, | ||
348 | .use_isl6421 = 0, | ||
349 | .set_ts_params = cx24123_set_ts_param, | ||
350 | .enable_lnb_voltage = cx24123_enable_lnb_voltage, | ||
332 | }; | 351 | }; |
333 | #endif | 352 | #endif |
334 | 353 | ||
@@ -445,6 +464,10 @@ static int dvb_register(struct cx8802_dev *dev) | |||
445 | dev->dvb.frontend = cx24123_attach(&hauppauge_novas_config, | 464 | dev->dvb.frontend = cx24123_attach(&hauppauge_novas_config, |
446 | &dev->core->i2c_adap); | 465 | &dev->core->i2c_adap); |
447 | break; | 466 | break; |
467 | case CX88_BOARD_KWORLD_DVBS_100: | ||
468 | dev->dvb.frontend = cx24123_attach(&kworld_dvbs_100_config, | ||
469 | &dev->core->i2c_adap); | ||
470 | break; | ||
448 | #endif | 471 | #endif |
449 | default: | 472 | default: |
450 | printk("%s: The frontend of your DVB/ATSC card isn't supported yet\n", | 473 | 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 2cf40afc0ace..11dc0335151c 100644 --- a/drivers/media/video/cx88/cx88.h +++ b/drivers/media/video/cx88/cx88.h | |||
@@ -181,6 +181,7 @@ extern struct sram_channel cx88_sram_channels[]; | |||
181 | #define CX88_BOARD_AVERTV_303 36 | 181 | #define CX88_BOARD_AVERTV_303 36 |
182 | #define CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1 37 | 182 | #define CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1 37 |
183 | #define CX88_BOARD_HAUPPAUGE_NOVASE2_S1 38 | 183 | #define CX88_BOARD_HAUPPAUGE_NOVASE2_S1 38 |
184 | #define CX88_BOARD_KWORLD_DVBS_100 39 | ||
184 | 185 | ||
185 | enum cx88_itype { | 186 | enum cx88_itype { |
186 | CX88_VMUX_COMPOSITE1 = 1, | 187 | CX88_VMUX_COMPOSITE1 = 1, |