V4L/DVB (9795): Add Compro VideoMate E650F (DVB-T part only).
[firefly-linux-kernel-4.4.55.git] / drivers / media / video / cx23885 / cx23885-cards.c
index 2cda15f829fdda6fb434b60f78e8b9e78cff22f7..caa098beeecf60f91f0a8482e5e2407d4d2f4fd7 100644 (file)
@@ -39,16 +39,16 @@ struct cx23885_board cx23885_boards[] = {
                .input          = {{
                        .type   = CX23885_VMUX_COMPOSITE1,
                        .vmux   = 0,
-               },{
+               }, {
                        .type   = CX23885_VMUX_COMPOSITE2,
                        .vmux   = 1,
-               },{
+               }, {
                        .type   = CX23885_VMUX_COMPOSITE3,
                        .vmux   = 2,
-               },{
+               }, {
                        .type   = CX23885_VMUX_COMPOSITE4,
                        .vmux   = 3,
-               }},
+               } },
        },
        [CX23885_BOARD_HAUPPAUGE_HVR1800lp] = {
                .name           = "Hauppauge WinTV-HVR1800lp",
@@ -57,19 +57,19 @@ struct cx23885_board cx23885_boards[] = {
                        .type   = CX23885_VMUX_TELEVISION,
                        .vmux   = 0,
                        .gpio0  = 0xff00,
-               },{
+               }, {
                        .type   = CX23885_VMUX_DEBUG,
                        .vmux   = 0,
                        .gpio0  = 0xff01,
-               },{
+               }, {
                        .type   = CX23885_VMUX_COMPOSITE1,
                        .vmux   = 1,
                        .gpio0  = 0xff02,
-               },{
+               }, {
                        .type   = CX23885_VMUX_SVIDEO,
                        .vmux   = 2,
                        .gpio0  = 0xff02,
-               }},
+               } },
        },
        [CX23885_BOARD_HAUPPAUGE_HVR1800] = {
                .name           = "Hauppauge WinTV-HVR1800",
@@ -84,20 +84,20 @@ struct cx23885_board cx23885_boards[] = {
                                        CX25840_VIN5_CH2 |
                                        CX25840_VIN2_CH1,
                        .gpio0  = 0,
-               },{
+               }, {
                        .type   = CX23885_VMUX_COMPOSITE1,
                        .vmux   =       CX25840_VIN7_CH3 |
                                        CX25840_VIN4_CH2 |
                                        CX25840_VIN6_CH1,
                        .gpio0  = 0,
-               },{
+               }, {
                        .type   = CX23885_VMUX_SVIDEO,
                        .vmux   =       CX25840_VIN7_CH3 |
                                        CX25840_VIN4_CH2 |
                                        CX25840_VIN8_CH1 |
                                        CX25840_SVIDEO_ON,
                        .gpio0  = 0,
-               }},
+               } },
        },
        [CX23885_BOARD_HAUPPAUGE_HVR1250] = {
                .name           = "Hauppauge WinTV-HVR1250",
@@ -106,19 +106,19 @@ struct cx23885_board cx23885_boards[] = {
                        .type   = CX23885_VMUX_TELEVISION,
                        .vmux   = 0,
                        .gpio0  = 0xff00,
-               },{
+               }, {
                        .type   = CX23885_VMUX_DEBUG,
                        .vmux   = 0,
                        .gpio0  = 0xff01,
-               },{
+               }, {
                        .type   = CX23885_VMUX_COMPOSITE1,
                        .vmux   = 1,
                        .gpio0  = 0xff02,
-               },{
+               }, {
                        .type   = CX23885_VMUX_SVIDEO,
                        .vmux   = 2,
                        .gpio0  = 0xff02,
-               }},
+               } },
        },
        [CX23885_BOARD_DVICO_FUSIONHDTV_5_EXP] = {
                .name           = "DViCO FusionHDTV5 Express",
@@ -158,6 +158,10 @@ struct cx23885_board cx23885_boards[] = {
                .name           = "Leadtek Winfast PxDVR3200 H",
                .portc          = CX23885_MPEG_DVB,
        },
+       [CX23885_BOARD_COMPRO_VIDEOMATE_E650F] = {
+               .name           = "Compro VideoMate E650F",
+               .portc          = CX23885_MPEG_DVB,
+       },
 };
 const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards);
 
@@ -169,43 +173,43 @@ struct cx23885_subid cx23885_subids[] = {
                .subvendor = 0x0070,
                .subdevice = 0x3400,
                .card      = CX23885_BOARD_UNKNOWN,
-       },{
+       }, {
                .subvendor = 0x0070,
                .subdevice = 0x7600,
                .card      = CX23885_BOARD_HAUPPAUGE_HVR1800lp,
-       },{
+       }, {
                .subvendor = 0x0070,
                .subdevice = 0x7800,
                .card      = CX23885_BOARD_HAUPPAUGE_HVR1800,
-       },{
+       }, {
                .subvendor = 0x0070,
                .subdevice = 0x7801,
                .card      = CX23885_BOARD_HAUPPAUGE_HVR1800,
-       },{
+       }, {
                .subvendor = 0x0070,
                .subdevice = 0x7809,
                .card      = CX23885_BOARD_HAUPPAUGE_HVR1800,
-       },{
+       }, {
                .subvendor = 0x0070,
                .subdevice = 0x7911,
                .card      = CX23885_BOARD_HAUPPAUGE_HVR1250,
-       },{
+       }, {
                .subvendor = 0x18ac,
                .subdevice = 0xd500,
                .card      = CX23885_BOARD_DVICO_FUSIONHDTV_5_EXP,
-       },{
+       }, {
                .subvendor = 0x0070,
                .subdevice = 0x7790,
                .card      = CX23885_BOARD_HAUPPAUGE_HVR1500Q,
-       },{
+       }, {
                .subvendor = 0x0070,
                .subdevice = 0x7797,
                .card      = CX23885_BOARD_HAUPPAUGE_HVR1500Q,
-       },{
+       }, {
                .subvendor = 0x0070,
                .subdevice = 0x7710,
                .card      = CX23885_BOARD_HAUPPAUGE_HVR1500,
-       },{
+       }, {
                .subvendor = 0x0070,
                .subdevice = 0x7717,
                .card      = CX23885_BOARD_HAUPPAUGE_HVR1500,
@@ -225,11 +229,11 @@ struct cx23885_subid cx23885_subids[] = {
                .subvendor = 0x0070,
                .subdevice = 0x8010,
                .card      = CX23885_BOARD_HAUPPAUGE_HVR1400,
-       },{
+       }, {
                .subvendor = 0x18ac,
                .subdevice = 0xd618,
                .card      = CX23885_BOARD_DVICO_FUSIONHDTV_7_DUAL_EXP,
-       },{
+       }, {
                .subvendor = 0x18ac,
                .subdevice = 0xdb78,
                .card      = CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP,
@@ -237,6 +241,10 @@ struct cx23885_subid cx23885_subids[] = {
                .subvendor = 0x107d,
                .subdevice = 0x6681,
                .card      = CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H,
+       }, {
+               .subvendor = 0x185b,
+               .subdevice = 0xe800,
+               .card      = CX23885_BOARD_COMPRO_VIDEOMATE_E650F,
        },
 };
 const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids);
@@ -247,23 +255,25 @@ void cx23885_card_list(struct cx23885_dev *dev)
 
        if (0 == dev->pci->subsystem_vendor &&
            0 == dev->pci->subsystem_device) {
-               printk("%s: Your board has no valid PCIe Subsystem ID and thus can't\n"
-                      "%s: be autodetected.  Please pass card=<n> insmod option to\n"
-                      "%s: workaround that.  Redirect complaints to the vendor of\n"
-                      "%s: the TV card.  Best regards,\n"
+               printk(KERN_INFO
+                       "%s: Board has no valid PCIe Subsystem ID and can't\n"
+                      "%s: be autodetected. Pass card=<n> insmod option\n"
+                      "%s: to workaround that. Redirect complaints to the\n"
+                      "%s: vendor of the TV card.  Best regards,\n"
                       "%s:         -- tux\n",
                       dev->name, dev->name, dev->name, dev->name, dev->name);
        } else {
-               printk("%s: Your board isn't known (yet) to the driver.  You can\n"
-                      "%s: try to pick one of the existing card configs via\n"
+               printk(KERN_INFO
+                       "%s: Your board isn't known (yet) to the driver.\n"
+                      "%s: Try to pick one of the existing card configs via\n"
                       "%s: card=<n> insmod option.  Updating to the latest\n"
                       "%s: version might help as well.\n",
                       dev->name, dev->name, dev->name, dev->name);
        }
-       printk("%s: Here is a list of valid choices for the card=<n> insmod option:\n",
+       printk(KERN_INFO "%s: Here is a list of valid choices for the card=<n> insmod option:\n",
               dev->name);
        for (i = 0; i < cx23885_bcount; i++)
-               printk("%s:    card=%d -> %s\n",
+               printk(KERN_INFO "%s:    card=%d -> %s\n",
                       dev->name, i, cx23885_boards[i].name);
 }
 
@@ -271,11 +281,11 @@ static void hauppauge_eeprom(struct cx23885_dev *dev, u8 *eeprom_data)
 {
        struct tveeprom tv;
 
-       tveeprom_hauppauge_analog(&dev->i2c_bus[0].i2c_client, &tv, eeprom_data);
+       tveeprom_hauppauge_analog(&dev->i2c_bus[0].i2c_client, &tv,
+               eeprom_data);
 
        /* Make sure we support the board model */
-       switch (tv.model)
-       {
+       switch (tv.model) {
        case 71009:
                /* WinTV-HVR1200 (PCIe, Retail, full height)
                 * DVB-T and basic analog */
@@ -303,21 +313,51 @@ static void hauppauge_eeprom(struct cx23885_dev *dev, u8 *eeprom_data)
        case 71999:
                /* WinTV-HVR1200 (PCIe, OEM, full height)
                 * DVB-T and basic analog */
-       case 76601: /* WinTV-HVR1800lp (PCIe, Retail, No IR, Dual channel ATSC and MPEG2 HW Encoder */
-       case 77001: /* WinTV-HVR1500 (Express Card, OEM, No IR, ATSC and Basic analog */
-       case 77011: /* WinTV-HVR1500 (Express Card, Retail, No IR, ATSC and Basic analog */
-       case 77041: /* WinTV-HVR1500Q (Express Card, OEM, No IR, ATSC/QAM and Basic analog */
-       case 77051: /* WinTV-HVR1500Q (Express Card, Retail, No IR, ATSC/QAM and Basic analog */
-       case 78011: /* WinTV-HVR1800 (PCIe, Retail, 3.5mm in, IR, No FM, Dual channel ATSC and MPEG2 HW Encoder */
-       case 78501: /* WinTV-HVR1800 (PCIe, OEM, RCA in, No IR, FM, Dual channel ATSC and MPEG2 HW Encoder */
-       case 78521: /* WinTV-HVR1800 (PCIe, OEM, RCA in, No IR, FM, Dual channel ATSC and MPEG2 HW Encoder */
-       case 78531: /* WinTV-HVR1800 (PCIe, OEM, RCA in, No IR, No FM, Dual channel ATSC and MPEG2 HW Encoder */
-       case 78631: /* WinTV-HVR1800 (PCIe, OEM, No IR, No FM, Dual channel ATSC and MPEG2 HW Encoder */
-       case 79001: /* WinTV-HVR1250 (PCIe, Retail, IR, full height, ATSC and Basic analog */
-       case 79101: /* WinTV-HVR1250 (PCIe, Retail, IR, half height, ATSC and Basic analog */
-       case 79561: /* WinTV-HVR1250 (PCIe, OEM, No IR, half height, ATSC and Basic analog */
-       case 79571: /* WinTV-HVR1250 (PCIe, OEM, No IR, full height, ATSC and Basic analog */
-       case 79671: /* WinTV-HVR1250 (PCIe, OEM, No IR, half height, ATSC and Basic analog */
+       case 76601:
+               /* WinTV-HVR1800lp (PCIe, Retail, No IR, Dual
+                       channel ATSC and MPEG2 HW Encoder */
+       case 77001:
+               /* WinTV-HVR1500 (Express Card, OEM, No IR, ATSC
+                       and Basic analog */
+       case 77011:
+               /* WinTV-HVR1500 (Express Card, Retail, No IR, ATSC
+                       and Basic analog */
+       case 77041:
+               /* WinTV-HVR1500Q (Express Card, OEM, No IR, ATSC/QAM
+                       and Basic analog */
+       case 77051:
+               /* WinTV-HVR1500Q (Express Card, Retail, No IR, ATSC/QAM
+                       and Basic analog */
+       case 78011:
+               /* WinTV-HVR1800 (PCIe, Retail, 3.5mm in, IR, No FM,
+                       Dual channel ATSC and MPEG2 HW Encoder */
+       case 78501:
+               /* WinTV-HVR1800 (PCIe, OEM, RCA in, No IR, FM,
+                       Dual channel ATSC and MPEG2 HW Encoder */
+       case 78521:
+               /* WinTV-HVR1800 (PCIe, OEM, RCA in, No IR, FM,
+                       Dual channel ATSC and MPEG2 HW Encoder */
+       case 78531:
+               /* WinTV-HVR1800 (PCIe, OEM, RCA in, No IR, No FM,
+                       Dual channel ATSC and MPEG2 HW Encoder */
+       case 78631:
+               /* WinTV-HVR1800 (PCIe, OEM, No IR, No FM,
+                       Dual channel ATSC and MPEG2 HW Encoder */
+       case 79001:
+               /* WinTV-HVR1250 (PCIe, Retail, IR, full height,
+                       ATSC and Basic analog */
+       case 79101:
+               /* WinTV-HVR1250 (PCIe, Retail, IR, half height,
+                       ATSC and Basic analog */
+       case 79561:
+               /* WinTV-HVR1250 (PCIe, OEM, No IR, half height,
+                       ATSC and Basic analog */
+       case 79571:
+               /* WinTV-HVR1250 (PCIe, OEM, No IR, full height,
+                ATSC and Basic analog */
+       case 79671:
+               /* WinTV-HVR1250 (PCIe, OEM, No IR, half height,
+                       ATSC and Basic analog */
        case 80019:
                /* WinTV-HVR1400 (Express Card, Retail, IR,
                 * DVB-T and Basic analog */
@@ -329,7 +369,8 @@ static void hauppauge_eeprom(struct cx23885_dev *dev, u8 *eeprom_data)
                 * DVB-T and MPEG2 HW Encoder */
                break;
        default:
-               printk("%s: warning: unknown hauppauge model #%d\n", dev->name, tv.model);
+               printk(KERN_WARNING "%s: warning: unknown hauppauge model #%d\n",
+                       dev->name, tv.model);
                break;
        }
 
@@ -352,11 +393,12 @@ int cx23885_tuner_callback(void *priv, int component, int command, int arg)
                return -EINVAL;
        }
 
-       switch(dev->board) {
+       switch (dev->board) {
        case CX23885_BOARD_HAUPPAUGE_HVR1400:
        case CX23885_BOARD_HAUPPAUGE_HVR1500:
        case CX23885_BOARD_HAUPPAUGE_HVR1500Q:
        case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H:
+       case CX23885_BOARD_COMPRO_VIDEOMATE_E650F:
                /* Tuner Reset Command */
                bitmask = 0x04;
                break;
@@ -383,7 +425,7 @@ int cx23885_tuner_callback(void *priv, int component, int command, int arg)
 
 void cx23885_gpio_setup(struct cx23885_dev *dev)
 {
-       switch(dev->board) {
+       switch (dev->board) {
        case CX23885_BOARD_HAUPPAUGE_HVR1250:
                /* GPIO-0 cx24227 demodulator reset */
                cx_set(GP0_IO, 0x00010001); /* Bring the part out of reset */
@@ -497,6 +539,7 @@ void cx23885_gpio_setup(struct cx23885_dev *dev)
                cx_set(GP0_IO, 0x000f000f);
                break;
        case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H:
+       case CX23885_BOARD_COMPRO_VIDEOMATE_E650F:
                /* GPIO-2  xc3028 tuner reset */
 
                /* The following GPIO's are on the internal AVCore (cx25840) */
@@ -597,6 +640,7 @@ void cx23885_card_setup(struct cx23885_dev *dev)
        case CX23885_BOARD_HAUPPAUGE_HVR1700:
        case CX23885_BOARD_HAUPPAUGE_HVR1400:
        case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H:
+       case CX23885_BOARD_COMPRO_VIDEOMATE_E650F:
        default:
                ts2->gen_ctrl_val  = 0xc; /* Serial bus + punctured clock */
                ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */
@@ -611,16 +655,10 @@ void cx23885_card_setup(struct cx23885_dev *dev)
        case CX23885_BOARD_HAUPPAUGE_HVR1800lp:
        case CX23885_BOARD_HAUPPAUGE_HVR1700:
        case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H:
+       case CX23885_BOARD_COMPRO_VIDEOMATE_E650F:
                request_module("cx25840");
                break;
        }
 }
 
 /* ------------------------------------------------------------------ */
-
-/*
- * Local variables:
- * c-basic-offset: 8
- * End:
- * kate: eol "unix"; indent-width 3; remove-trailing-space on; replace-trailing-space-save on; tab-width 8; replace-tabs off; space-indent off; mixed-indent off
- */