V4L (1007): Add support for KWorld DVB-S 100
authorVadim Catana <skystar@moldova.cc>
Mon, 9 Jan 2006 17:25:02 +0000 (15:25 -0200)
committerMauro Carvalho Chehab <mchehab@brturbo.com.br>
Mon, 9 Jan 2006 17:25:02 +0000 (15:25 -0200)
- 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>
Documentation/video4linux/CARDLIST.cx88
drivers/media/video/cx88/cx88-cards.c
drivers/media/video/cx88/cx88-dvb.c
drivers/media/video/cx88/cx88.h

index 739a343e5275aac1ee4fd3598e052bb6664f545b..13ec5e965f4133acea413f923f0b6611bd365ffc 100644 (file)
@@ -37,3 +37,4 @@
  36 -> AVerTV 303 (M126)                                   [1461:000a]
  37 -> Hauppauge Nova-S-Plus DVB-S                         [0070:9201,0070:9202]
  38 -> Hauppauge Nova-SE2 DVB-S                            [0070:9200]
+ 39 -> KWorld DVB-S 100                                    [17de:08b2]
index 1976e04d8ace15a1d6616f514bfc3ba5568295a9..fd173e6ac6052a40db5fdef259a003096d764c52 100644 (file)
@@ -928,6 +928,24 @@ struct cx88_board cx88_boards[] = {
                }},
                .dvb            = 1,
        },
+       [CX88_BOARD_KWORLD_DVBS_100] = {
+               .name           = "KWorld DVB-S 100",
+               .tuner_type     = TUNER_ABSENT,
+               .radio_type     = UNSET,
+               .tuner_addr     = ADDR_UNSET,
+               .radio_addr     = ADDR_UNSET,
+               .input          = {{
+                       .type   = CX88_VMUX_DVB,
+                       .vmux   = 0,
+               },{
+                       .type   = CX88_VMUX_COMPOSITE1,
+                       .vmux   = 1,
+               },{
+                       .type   = CX88_VMUX_SVIDEO,
+                       .vmux   = 2,
+               }},
+               .dvb            = 1,
+       },
 };
 const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards);
 
@@ -1087,6 +1105,10 @@ struct cx88_subid cx88_subids[] = {
                .subvendor = 0x0070,
                .subdevice = 0x9202,
                .card      = CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1,
+       },{
+               .subvendor = 0x17de,
+               .subdevice = 0x08b2,
+               .card      = CX88_BOARD_KWORLD_DVBS_100,
        },
 };
 const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids);
@@ -1260,6 +1282,10 @@ void cx88_card_setup(struct cx88_core *core)
                if (0 == core->i2c_rc)
                        hauppauge_eeprom(core,eeprom);
                break;
+       case CX88_BOARD_KWORLD_DVBS_100:
+               cx_write(MO_GP0_IO, 0x000007f8);
+               cx_write(MO_GP1_IO, 0x00000001);
+               break;
        case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T1:
        case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PLUS:
                /* GPIO0:0 is hooked to mt352 reset pin */
index 21972572a94324848349095b5f11b671e12206a6..054094e48fc309a6bcfad0107dc9c848264ecba2 100644 (file)
@@ -326,9 +326,28 @@ static int cx24123_set_ts_param(struct dvb_frontend* fe,
        return 0;
 }
 
+static void cx24123_enable_lnb_voltage(struct dvb_frontend* fe, int on)
+{
+       struct cx8802_dev *dev= fe->dvb->priv;
+       struct cx88_core *core = dev->core;
+
+       if (on)
+               cx_write(MO_GP0_IO, 0x000006f9);
+       else
+               cx_write(MO_GP0_IO, 0x000006fB);
+}
+
 static struct cx24123_config hauppauge_novas_config = {
-       .demod_address = 0x55,
-       .set_ts_params = cx24123_set_ts_param,
+       .demod_address          = 0x55,
+       .use_isl6421            = 1,
+       .set_ts_params          = cx24123_set_ts_param,
+};
+
+static struct cx24123_config kworld_dvbs_100_config = {
+       .demod_address          = 0x15,
+       .use_isl6421            = 0,
+       .set_ts_params          = cx24123_set_ts_param,
+       .enable_lnb_voltage     = cx24123_enable_lnb_voltage,
 };
 #endif
 
@@ -445,6 +464,10 @@ static int dvb_register(struct cx8802_dev *dev)
                dev->dvb.frontend = cx24123_attach(&hauppauge_novas_config,
                        &dev->core->i2c_adap);
                break;
+       case CX88_BOARD_KWORLD_DVBS_100:
+               dev->dvb.frontend = cx24123_attach(&kworld_dvbs_100_config,
+                       &dev->core->i2c_adap);
+               break;
 #endif
        default:
                printk("%s: The frontend of your DVB/ATSC card isn't supported yet\n",
index 2cf40afc0acee625fff5ea83a435fd4ffbedf178..11dc0335151c7472a5e12bec1f0d58fb9a04357b 100644 (file)
@@ -181,6 +181,7 @@ extern struct sram_channel cx88_sram_channels[];
 #define CX88_BOARD_AVERTV_303              36
 #define CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1  37
 #define CX88_BOARD_HAUPPAUGE_NOVASE2_S1    38
+#define CX88_BOARD_KWORLD_DVBS_100         39
 
 enum cx88_itype {
        CX88_VMUX_COMPOSITE1 = 1,