aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVadim Catana <skystar@moldova.cc>2006-01-09 12:25:02 -0500
committerMauro Carvalho Chehab <mchehab@brturbo.com.br>2006-01-09 12:25:02 -0500
commit0e0351e3709023dbd015d09880b04f0aa8818fcb (patch)
tree204b97290bd663cf36171e4139c2ad470c7c6b41
parentfb56cb65e4b737c93727ea296050e8d24eb7cb42 (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.cx881
-rw-r--r--drivers/media/video/cx88/cx88-cards.c26
-rw-r--r--drivers/media/video/cx88/cx88-dvb.c27
-rw-r--r--drivers/media/video/cx88/cx88.h1
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};
932const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards); 950const 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};
1092const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids); 1114const 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
329static 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
329static struct cx24123_config hauppauge_novas_config = { 340static 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
346static 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
185enum cx88_itype { 186enum cx88_itype {
186 CX88_VMUX_COMPOSITE1 = 1, 187 CX88_VMUX_COMPOSITE1 = 1,