diff options
Diffstat (limited to 'drivers/media/video')
-rw-r--r-- | drivers/media/video/em28xx/em28xx-cards.c | 48 | ||||
-rw-r--r-- | drivers/media/video/em28xx/em28xx-dvb.c | 1 | ||||
-rw-r--r-- | drivers/media/video/em28xx/em28xx.h | 1 |
3 files changed, 50 insertions, 0 deletions
diff --git a/drivers/media/video/em28xx/em28xx-cards.c b/drivers/media/video/em28xx/em28xx-cards.c index 0b6e5c7c3466..972c4addc406 100644 --- a/drivers/media/video/em28xx/em28xx-cards.c +++ b/drivers/media/video/em28xx/em28xx-cards.c | |||
@@ -139,6 +139,24 @@ static struct em28xx_reg_seq kworld_330u_digital[] = { | |||
139 | { -1, -1, -1, -1}, | 139 | { -1, -1, -1, -1}, |
140 | }; | 140 | }; |
141 | 141 | ||
142 | /* Evga inDtube | ||
143 | GPIO0 - Enable digital power (s5h1409) - low to enable | ||
144 | GPIO1 - Enable analog power (tvp5150/emp202) - low to enable | ||
145 | GPIO4 - xc3028 reset | ||
146 | GOP3 - s5h1409 reset | ||
147 | */ | ||
148 | static struct em28xx_reg_seq evga_indtube_analog[] = { | ||
149 | {EM28XX_R08_GPIO, 0x79, 0xff, 60}, | ||
150 | { -1, -1, -1, -1}, | ||
151 | }; | ||
152 | |||
153 | static struct em28xx_reg_seq evga_indtube_digital[] = { | ||
154 | {EM28XX_R08_GPIO, 0x7a, 0xff, 1}, | ||
155 | {EM2880_R04_GPO, 0x04, 0xff, 10}, | ||
156 | {EM2880_R04_GPO, 0x0c, 0xff, 1}, | ||
157 | { -1, -1, -1, -1}, | ||
158 | }; | ||
159 | |||
142 | /* Callback for the most boards */ | 160 | /* Callback for the most boards */ |
143 | static struct em28xx_reg_seq default_tuner_gpio[] = { | 161 | static struct em28xx_reg_seq default_tuner_gpio[] = { |
144 | {EM28XX_R08_GPIO, EM_GPIO_4, EM_GPIO_4, 10}, | 162 | {EM28XX_R08_GPIO, EM_GPIO_4, EM_GPIO_4, 10}, |
@@ -1449,6 +1467,31 @@ struct em28xx_board em28xx_boards[] = { | |||
1449 | .gpio = terratec_av350_unmute_gpio, | 1467 | .gpio = terratec_av350_unmute_gpio, |
1450 | } }, | 1468 | } }, |
1451 | }, | 1469 | }, |
1470 | [EM2882_BOARD_EVGA_INDTUBE] = { | ||
1471 | .name = "Evga inDtube", | ||
1472 | .tuner_type = TUNER_XC2028, | ||
1473 | .tuner_gpio = default_tuner_gpio, | ||
1474 | .decoder = EM28XX_TVP5150, | ||
1475 | .mts_firmware = 1, | ||
1476 | .has_dvb = 1, | ||
1477 | .dvb_gpio = evga_indtube_digital, | ||
1478 | .input = { { | ||
1479 | .type = EM28XX_VMUX_TELEVISION, | ||
1480 | .vmux = TVP5150_COMPOSITE0, | ||
1481 | .amux = EM28XX_AMUX_VIDEO, | ||
1482 | .gpio = evga_indtube_analog, | ||
1483 | }, { | ||
1484 | .type = EM28XX_VMUX_COMPOSITE1, | ||
1485 | .vmux = TVP5150_COMPOSITE1, | ||
1486 | .amux = EM28XX_AMUX_LINE_IN, | ||
1487 | .gpio = evga_indtube_analog, | ||
1488 | }, { | ||
1489 | .type = EM28XX_VMUX_SVIDEO, | ||
1490 | .vmux = TVP5150_SVIDEO, | ||
1491 | .amux = EM28XX_AMUX_LINE_IN, | ||
1492 | .gpio = evga_indtube_analog, | ||
1493 | } }, | ||
1494 | }, | ||
1452 | }; | 1495 | }; |
1453 | const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards); | 1496 | const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards); |
1454 | 1497 | ||
@@ -1571,6 +1614,7 @@ static struct em28xx_hash_table em28xx_eeprom_hash[] = { | |||
1571 | {0x72cc5a8b, EM2820_BOARD_PROLINK_PLAYTV_BOX4_USB2, TUNER_YMEC_TVF_5533MF}, | 1614 | {0x72cc5a8b, EM2820_BOARD_PROLINK_PLAYTV_BOX4_USB2, TUNER_YMEC_TVF_5533MF}, |
1572 | {0x966a0441, EM2880_BOARD_KWORLD_DVB_310U, TUNER_XC2028}, | 1615 | {0x966a0441, EM2880_BOARD_KWORLD_DVB_310U, TUNER_XC2028}, |
1573 | {0x9567eb1a, EM2880_BOARD_EMPIRE_DUAL_TV, TUNER_XC2028}, | 1616 | {0x9567eb1a, EM2880_BOARD_EMPIRE_DUAL_TV, TUNER_XC2028}, |
1617 | {0xcee44a99, EM2882_BOARD_EVGA_INDTUBE, TUNER_XC2028}, | ||
1574 | }; | 1618 | }; |
1575 | 1619 | ||
1576 | /* I2C devicelist hash table for devices with generic USB IDs */ | 1620 | /* I2C devicelist hash table for devices with generic USB IDs */ |
@@ -1834,6 +1878,10 @@ static void em28xx_setup_xc3028(struct em28xx *dev, struct xc2028_ctrl *ctl) | |||
1834 | ctl->demod = XC3028_FE_CHINA; | 1878 | ctl->demod = XC3028_FE_CHINA; |
1835 | ctl->fname = XC2028_DEFAULT_FIRMWARE; | 1879 | ctl->fname = XC2028_DEFAULT_FIRMWARE; |
1836 | break; | 1880 | break; |
1881 | case EM2882_BOARD_EVGA_INDTUBE: | ||
1882 | ctl->demod = XC3028_FE_CHINA; | ||
1883 | ctl->fname = XC3028L_DEFAULT_FIRMWARE; | ||
1884 | break; | ||
1837 | default: | 1885 | default: |
1838 | ctl->demod = XC3028_FE_OREN538; | 1886 | ctl->demod = XC3028_FE_OREN538; |
1839 | } | 1887 | } |
diff --git a/drivers/media/video/em28xx/em28xx-dvb.c b/drivers/media/video/em28xx/em28xx-dvb.c index 563dd2b1c8e9..e7b47c8da8f3 100644 --- a/drivers/media/video/em28xx/em28xx-dvb.c +++ b/drivers/media/video/em28xx/em28xx-dvb.c | |||
@@ -445,6 +445,7 @@ static int dvb_init(struct em28xx *dev) | |||
445 | } | 445 | } |
446 | break; | 446 | break; |
447 | case EM2883_BOARD_KWORLD_HYBRID_330U: | 447 | case EM2883_BOARD_KWORLD_HYBRID_330U: |
448 | case EM2882_BOARD_EVGA_INDTUBE: | ||
448 | dvb->frontend = dvb_attach(s5h1409_attach, | 449 | dvb->frontend = dvb_attach(s5h1409_attach, |
449 | &em28xx_s5h1409_with_xc3028, | 450 | &em28xx_s5h1409_with_xc3028, |
450 | &dev->i2c_adap); | 451 | &dev->i2c_adap); |
diff --git a/drivers/media/video/em28xx/em28xx.h b/drivers/media/video/em28xx/em28xx.h index 8bf81be1da61..813ce45c2f99 100644 --- a/drivers/media/video/em28xx/em28xx.h +++ b/drivers/media/video/em28xx/em28xx.h | |||
@@ -106,6 +106,7 @@ | |||
106 | #define EM2860_BOARD_TERRATEC_GRABBY 67 | 106 | #define EM2860_BOARD_TERRATEC_GRABBY 67 |
107 | #define EM2860_BOARD_TERRATEC_AV350 68 | 107 | #define EM2860_BOARD_TERRATEC_AV350 68 |
108 | #define EM2882_BOARD_KWORLD_ATSC_315U 69 | 108 | #define EM2882_BOARD_KWORLD_ATSC_315U 69 |
109 | #define EM2882_BOARD_EVGA_INDTUBE 70 | ||
109 | 110 | ||
110 | /* Limits minimum and default number of buffers */ | 111 | /* Limits minimum and default number of buffers */ |
111 | #define EM28XX_MIN_BUF 4 | 112 | #define EM28XX_MIN_BUF 4 |