diff options
Diffstat (limited to 'drivers/media/video/em28xx/em28xx-cards.c')
-rw-r--r-- | drivers/media/video/em28xx/em28xx-cards.c | 49 |
1 files changed, 44 insertions, 5 deletions
diff --git a/drivers/media/video/em28xx/em28xx-cards.c b/drivers/media/video/em28xx/em28xx-cards.c index 69fcea82d01c..4e37375decf5 100644 --- a/drivers/media/video/em28xx/em28xx-cards.c +++ b/drivers/media/video/em28xx/em28xx-cards.c | |||
@@ -100,6 +100,13 @@ static struct em28xx_reg_seq hauppauge_wintv_hvr_900_digital[] = { | |||
100 | { -1, -1, -1, -1}, | 100 | { -1, -1, -1, -1}, |
101 | }; | 101 | }; |
102 | 102 | ||
103 | /* Board Hauppauge WinTV HVR 900 (R2) digital */ | ||
104 | static struct em28xx_reg_seq hauppauge_wintv_hvr_900R2_digital[] = { | ||
105 | {EM28XX_R08_GPIO, 0x2e, ~EM_GPIO_4, 10}, | ||
106 | {EM2880_R04_GPO, 0x0c, 0x0f, 10}, | ||
107 | { -1, -1, -1, -1}, | ||
108 | }; | ||
109 | |||
103 | /* Boards - EM2880 MSI DIGIVOX AD and EM2880_BOARD_MSI_DIGIVOX_AD_II */ | 110 | /* Boards - EM2880 MSI DIGIVOX AD and EM2880_BOARD_MSI_DIGIVOX_AD_II */ |
104 | static struct em28xx_reg_seq em2880_msi_digivox_ad_analog[] = { | 111 | static struct em28xx_reg_seq em2880_msi_digivox_ad_analog[] = { |
105 | {EM28XX_R08_GPIO, 0x69, ~EM_GPIO_4, 10}, | 112 | {EM28XX_R08_GPIO, 0x69, ~EM_GPIO_4, 10}, |
@@ -282,6 +289,16 @@ static struct em28xx_reg_seq leadership_reset[] = { | |||
282 | { -1, -1, -1, -1}, | 289 | { -1, -1, -1, -1}, |
283 | }; | 290 | }; |
284 | 291 | ||
292 | /* 2013:024f PCTV Systems nanoStick T2 290e | ||
293 | * GPIO_6 - demod reset | ||
294 | * GPIO_7 - LED | ||
295 | */ | ||
296 | static struct em28xx_reg_seq pctv_290e[] = { | ||
297 | {EM2874_R80_GPIO, 0x00, 0xff, 80}, | ||
298 | {EM2874_R80_GPIO, 0x40, 0xff, 80}, /* GPIO_6 = 1 */ | ||
299 | {EM2874_R80_GPIO, 0xc0, 0xff, 80}, /* GPIO_7 = 1 */ | ||
300 | {-1, -1, -1, -1}, | ||
301 | }; | ||
285 | 302 | ||
286 | /* | 303 | /* |
287 | * Board definitions | 304 | * Board definitions |
@@ -859,6 +876,8 @@ struct em28xx_board em28xx_boards[] = { | |||
859 | .tuner_type = TUNER_XC2028, | 876 | .tuner_type = TUNER_XC2028, |
860 | .tuner_gpio = default_tuner_gpio, | 877 | .tuner_gpio = default_tuner_gpio, |
861 | .mts_firmware = 1, | 878 | .mts_firmware = 1, |
879 | .has_dvb = 1, | ||
880 | .dvb_gpio = hauppauge_wintv_hvr_900R2_digital, | ||
862 | .ir_codes = RC_MAP_HAUPPAUGE, | 881 | .ir_codes = RC_MAP_HAUPPAUGE, |
863 | .decoder = EM28XX_TVP5150, | 882 | .decoder = EM28XX_TVP5150, |
864 | .input = { { | 883 | .input = { { |
@@ -1448,12 +1467,14 @@ struct em28xx_board em28xx_boards[] = { | |||
1448 | .gpio = pinnacle_hybrid_pro_analog, | 1467 | .gpio = pinnacle_hybrid_pro_analog, |
1449 | } }, | 1468 | } }, |
1450 | }, | 1469 | }, |
1451 | [EM2882_BOARD_PINNACLE_HYBRID_PRO] = { | 1470 | [EM2882_BOARD_PINNACLE_HYBRID_PRO_330E] = { |
1452 | .name = "Pinnacle Hybrid Pro (2)", | 1471 | .name = "Pinnacle Hybrid Pro (330e)", |
1453 | .valid = EM28XX_BOARD_NOT_VALIDATED, | ||
1454 | .tuner_type = TUNER_XC2028, | 1472 | .tuner_type = TUNER_XC2028, |
1455 | .tuner_gpio = default_tuner_gpio, | 1473 | .tuner_gpio = default_tuner_gpio, |
1456 | .mts_firmware = 1, | 1474 | .mts_firmware = 1, |
1475 | .has_dvb = 1, | ||
1476 | .dvb_gpio = hauppauge_wintv_hvr_900R2_digital, | ||
1477 | .ir_codes = RC_MAP_PINNACLE_PCTV_HD, | ||
1457 | .decoder = EM28XX_TVP5150, | 1478 | .decoder = EM28XX_TVP5150, |
1458 | .input = { { | 1479 | .input = { { |
1459 | .type = EM28XX_VMUX_TELEVISION, | 1480 | .type = EM28XX_VMUX_TELEVISION, |
@@ -1749,6 +1770,17 @@ struct em28xx_board em28xx_boards[] = { | |||
1749 | .dvb_gpio = kworld_a340_digital, | 1770 | .dvb_gpio = kworld_a340_digital, |
1750 | .tuner_gpio = default_tuner_gpio, | 1771 | .tuner_gpio = default_tuner_gpio, |
1751 | }, | 1772 | }, |
1773 | /* 2013:024f PCTV Systems nanoStick T2 290e. | ||
1774 | * Empia EM28174, Sony CXD2820R and NXP TDA18271HD/C2 */ | ||
1775 | [EM28174_BOARD_PCTV_290E] = { | ||
1776 | .i2c_speed = EM2874_I2C_SECONDARY_BUS_SELECT | | ||
1777 | EM28XX_I2C_CLK_WAIT_ENABLE | EM28XX_I2C_FREQ_100_KHZ, | ||
1778 | .xclk = EM28XX_XCLK_FREQUENCY_12MHZ, | ||
1779 | .name = "PCTV Systems nanoStick T2 290e", | ||
1780 | .tuner_type = TUNER_ABSENT, | ||
1781 | .tuner_gpio = pctv_290e, | ||
1782 | .has_dvb = 1, | ||
1783 | }, | ||
1752 | }; | 1784 | }; |
1753 | const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards); | 1785 | const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards); |
1754 | 1786 | ||
@@ -1863,7 +1895,7 @@ struct usb_device_id em28xx_id_table[] = { | |||
1863 | { USB_DEVICE(0x2304, 0x021a), | 1895 | { USB_DEVICE(0x2304, 0x021a), |
1864 | .driver_info = EM2820_BOARD_PINNACLE_DVC_90 }, | 1896 | .driver_info = EM2820_BOARD_PINNACLE_DVC_90 }, |
1865 | { USB_DEVICE(0x2304, 0x0226), | 1897 | { USB_DEVICE(0x2304, 0x0226), |
1866 | .driver_info = EM2882_BOARD_PINNACLE_HYBRID_PRO }, | 1898 | .driver_info = EM2882_BOARD_PINNACLE_HYBRID_PRO_330E }, |
1867 | { USB_DEVICE(0x2304, 0x0227), | 1899 | { USB_DEVICE(0x2304, 0x0227), |
1868 | .driver_info = EM2880_BOARD_PINNACLE_PCTV_HD_PRO }, | 1900 | .driver_info = EM2880_BOARD_PINNACLE_PCTV_HD_PRO }, |
1869 | { USB_DEVICE(0x0413, 0x6023), | 1901 | { USB_DEVICE(0x0413, 0x6023), |
@@ -1876,6 +1908,8 @@ struct usb_device_id em28xx_id_table[] = { | |||
1876 | .driver_info = EM2860_BOARD_GADMEI_UTV330 }, | 1908 | .driver_info = EM2860_BOARD_GADMEI_UTV330 }, |
1877 | { USB_DEVICE(0x1b80, 0xa340), | 1909 | { USB_DEVICE(0x1b80, 0xa340), |
1878 | .driver_info = EM2870_BOARD_KWORLD_A340 }, | 1910 | .driver_info = EM2870_BOARD_KWORLD_A340 }, |
1911 | { USB_DEVICE(0x2013, 0x024f), | ||
1912 | .driver_info = EM28174_BOARD_PCTV_290E }, | ||
1879 | { }, | 1913 | { }, |
1880 | }; | 1914 | }; |
1881 | MODULE_DEVICE_TABLE(usb, em28xx_id_table); | 1915 | MODULE_DEVICE_TABLE(usb, em28xx_id_table); |
@@ -2229,7 +2263,7 @@ static void em28xx_setup_xc3028(struct em28xx *dev, struct xc2028_ctrl *ctl) | |||
2229 | ctl->demod = XC3028_FE_ZARLINK456; | 2263 | ctl->demod = XC3028_FE_ZARLINK456; |
2230 | break; | 2264 | break; |
2231 | case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2: | 2265 | case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2: |
2232 | /* djh - Not sure which demod we need here */ | 2266 | case EM2882_BOARD_PINNACLE_HYBRID_PRO_330E: |
2233 | ctl->demod = XC3028_FE_DEFAULT; | 2267 | ctl->demod = XC3028_FE_DEFAULT; |
2234 | break; | 2268 | break; |
2235 | case EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600: | 2269 | case EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600: |
@@ -2799,6 +2833,11 @@ static int em28xx_init_dev(struct em28xx **devhandle, struct usb_device *udev, | |||
2799 | dev->reg_gpio_num = EM2874_R80_GPIO; | 2833 | dev->reg_gpio_num = EM2874_R80_GPIO; |
2800 | dev->wait_after_write = 0; | 2834 | dev->wait_after_write = 0; |
2801 | break; | 2835 | break; |
2836 | case CHIP_ID_EM28174: | ||
2837 | em28xx_info("chip ID is em28174\n"); | ||
2838 | dev->reg_gpio_num = EM2874_R80_GPIO; | ||
2839 | dev->wait_after_write = 0; | ||
2840 | break; | ||
2802 | case CHIP_ID_EM2883: | 2841 | case CHIP_ID_EM2883: |
2803 | em28xx_info("chip ID is em2882/em2883\n"); | 2842 | em28xx_info("chip ID is em2882/em2883\n"); |
2804 | dev->wait_after_write = 0; | 2843 | dev->wait_after_write = 0; |