diff options
author | Devin Heitmueller <dheitmueller@kernellabs.com> | 2009-06-18 23:33:54 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-06-23 02:14:21 -0400 |
commit | 19859229d7d98bc2d582ff45045dd7f73d649383 (patch) | |
tree | cdbed4c93686baea5375d29c103d3a31c35365c6 /drivers/media/video/em28xx/em28xx-cards.c | |
parent | cdf7bfa8926fb26d5900103ae09eb5f3eddb95cc (diff) |
V4L/DVB (12101): em28xx: add support for EVGA inDtube
Add support for the EVGA inDtube. Both ATSC and analog side validated as
fully functional.
Thanks to Jake Crimmins from EVGA for providing the correct GPIO info.
Thanks to Alan Hagge for doing all the device testing.
Thanks to Greg Williamson for providing hardware for testing.
Cc: Jake Crimmins <jcrimmins@evga.com>
Cc: Alan Hagge <ahagge@gmail.com>
Cc: Greg Williamson <cheeseboy16@gmail.com>
Signed-off-by: Devin Heitmueller <dheitmueller@kernellabs.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/em28xx/em28xx-cards.c')
-rw-r--r-- | drivers/media/video/em28xx/em28xx-cards.c | 48 |
1 files changed, 48 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 | } |