V4L/DVB (9062): Add support for Prolink Pixelview Global Extreme
authorMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 29 Sep 2008 15:08:29 +0000 (12:08 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sun, 12 Oct 2008 11:37:10 +0000 (09:37 -0200)
Thanks to Sidney Matias <sidney.matias@gmail.com> for getting GPIO
values and testing on this device.

Cc: Sidney Matias <sidney.matias@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Documentation/video4linux/CARDLIST.cx88
drivers/media/video/cx88/cx88-cards.c
drivers/media/video/cx88/cx88-input.c
drivers/media/video/cx88/cx88.h

index 075650c95fe641cb7e7c4022fb8abde7f6590247..50d0b1c559a9aa0def7466767043f5124723a61d 100644 (file)
@@ -72,3 +72,4 @@
  71 -> Omicom SS4 DVB-S/S2 PCI                             [A044:2011]
  72 -> TBS 8920 DVB-S/S2                                   [8920:8888]
  73 -> TeVii S420 DVB-S                                    [d420:9022]
+ 74 -> Prolink Pixelview Global Extreme                    [1554:4976]
index b5a25094c9e555d561491e709c8b2a756ef075d9..9f721080152468d420fc501fa6be98451b633350 100644 (file)
@@ -1628,6 +1628,36 @@ static const struct cx88_board cx88_boards[] = {
                        .gpio2 = 0x0cfb,
                },
        },
+       [CX88_BOARD_PROLINK_PV_GLOBAL_XTREME] = {
+               .name           = "Prolink Pixelview Global Extreme",
+               .tuner_type     = TUNER_XC2028,
+               .tuner_addr     = 0x61,
+               .input          = { {
+                       .type   = CX88_VMUX_TELEVISION,
+                       .vmux   = 0,
+                       .gpio0 = 0x04fb,
+                       .gpio1 = 0x04080,
+                       .gpio2 = 0x0cf7,
+               }, {
+                       .type   = CX88_VMUX_COMPOSITE1,
+                       .vmux   = 1,
+                       .gpio0 = 0x04fb,
+                       .gpio1 = 0x04080,
+                       .gpio2 = 0x0cfb,
+               }, {
+                       .type   = CX88_VMUX_SVIDEO,
+                       .vmux   = 2,
+                       .gpio0 = 0x04fb,
+                       .gpio1 = 0x04080,
+                       .gpio2 = 0x0cfb,
+               } },
+               .radio = {
+                       .type   = CX88_RADIO,
+                       .gpio0 = 0x04ff,
+                       .gpio1 = 0x04080,
+                       .gpio2 = 0x0cf7,
+               },
+       },
        /* Both radio, analog and ATSC work with this board.
           However, for analog to work, s5h1409 gate should be open,
           otherwise, tuner-xc3028 won't be detected.
@@ -2125,6 +2155,10 @@ static const struct cx88_subid cx88_subids[] = {
                .subvendor = 0x1554,
                .subdevice = 0x4935,
                .card      = CX88_BOARD_PROLINK_PV_8000GT,
+       }, {
+               .subvendor = 0x1554,
+               .subdevice = 0x4976,
+               .card      = CX88_BOARD_PROLINK_PV_GLOBAL_XTREME,
        }, {
                .subvendor = 0x17de,
                .subdevice = 0x08c1,
@@ -2429,6 +2463,7 @@ static int cx88_xc2028_tuner_callback(struct cx88_core *core,
                return cx88_xc3028_geniatech_tuner_callback(core,
                                                        command, arg);
        case CX88_BOARD_PROLINK_PV_8000GT:
+       case CX88_BOARD_PROLINK_PV_GLOBAL_XTREME:
                return cx88_pv_8000gt_callback(core, command, arg);
        case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PRO:
        case CX88_BOARD_DVICO_FUSIONHDTV_5_PCI_NANO:
@@ -2582,6 +2617,7 @@ static void cx88_card_setup_pre_i2c(struct cx88_core *core)
                udelay(1000);
                break;
 
+       case CX88_BOARD_PROLINK_PV_GLOBAL_XTREME:
        case CX88_BOARD_PROLINK_PV_8000GT:
                cx_write(MO_GP2_IO, 0xcf7);
                mdelay(50);
@@ -2629,9 +2665,10 @@ void cx88_setup_xc3028(struct cx88_core *core, struct xc2028_ctrl *ctl)
        case CX88_BOARD_DVICO_FUSIONHDTV_5_PCI_NANO:
                ctl->demod = XC3028_FE_OREN538;
                break;
+       case CX88_BOARD_PROLINK_PV_GLOBAL_XTREME:
        case CX88_BOARD_PROLINK_PV_8000GT:
                /*
-                * This board uses non-MTS firmware
+                * Those boards uses non-MTS firmware
                 */
                break;
        default:
index 13bc5d160761c89db5ca8edff44e0e8c0f0e41d8..8683d104de72a4113587bff03440d38749ce048b 100644 (file)
@@ -261,6 +261,7 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
                ir->polling = 1; /* ms */
                break;
        case CX88_BOARD_PROLINK_PV_8000GT:
+       case CX88_BOARD_PROLINK_PV_GLOBAL_XTREME:
                ir_codes = ir_codes_pixelview_new;
                ir->gpio_addr = MO_GP1_IO;
                ir->mask_keycode = 0x3f;
index 30b750ee85644ba1c6a2e006b7c214ce13590c63..6420fb7615b16a1ce6133760f62bd84ed08c52ff 100644 (file)
@@ -227,6 +227,7 @@ extern struct sram_channel cx88_sram_channels[];
 #define CX88_BOARD_OMICOM_SS4_PCI          71
 #define CX88_BOARD_TBS_8920                72
 #define CX88_BOARD_TEVII_S420              73
+#define CX88_BOARD_PROLINK_PV_GLOBAL_XTREME 74
 
 enum cx88_itype {
        CX88_VMUX_COMPOSITE1 = 1,