diff options
-rw-r--r-- | Documentation/video4linux/CARDLIST.em28xx | 1 | ||||
-rw-r--r-- | drivers/media/video/em28xx/em28xx-cards.c | 43 | ||||
-rw-r--r-- | drivers/media/video/em28xx/em28xx.h | 1 |
3 files changed, 45 insertions, 0 deletions
diff --git a/Documentation/video4linux/CARDLIST.em28xx b/Documentation/video4linux/CARDLIST.em28xx index f7a7f48f4d74..e914b1374347 100644 --- a/Documentation/video4linux/CARDLIST.em28xx +++ b/Documentation/video4linux/CARDLIST.em28xx | |||
@@ -57,5 +57,6 @@ | |||
57 | 57 -> Kworld PlusTV HD Hybrid 330 (em2883) [eb1a:a316] | 57 | 57 -> Kworld PlusTV HD Hybrid 330 (em2883) [eb1a:a316] |
58 | 58 -> Compro VideoMate ForYou/Stereo (em2820/em2840) [185b:2041] | 58 | 58 -> Compro VideoMate ForYou/Stereo (em2820/em2840) [185b:2041] |
59 | 60 -> Hauppauge WinTV HVR 850 (em2883) [2040:651f] | 59 | 60 -> Hauppauge WinTV HVR 850 (em2883) [2040:651f] |
60 | 61 -> Kaiomy TVnPC U2 (em2860) [eb1a:e303] | ||
60 | 61 -> Pixelview PlayTV Box 4 USB 2.0 (em2820/em2840) | 61 | 61 -> Pixelview PlayTV Box 4 USB 2.0 (em2820/em2840) |
61 | 62 -> Gadmei TVR200 (em2820/em2840) | 62 | 62 -> Gadmei TVR200 (em2820/em2840) |
diff --git a/drivers/media/video/em28xx/em28xx-cards.c b/drivers/media/video/em28xx/em28xx-cards.c index 369db26cd721..c62243ef73b4 100644 --- a/drivers/media/video/em28xx/em28xx-cards.c +++ b/drivers/media/video/em28xx/em28xx-cards.c | |||
@@ -1252,6 +1252,33 @@ struct em28xx_board em28xx_boards[] = { | |||
1252 | .amux = EM28XX_AMUX_LINE_IN, | 1252 | .amux = EM28XX_AMUX_LINE_IN, |
1253 | } }, | 1253 | } }, |
1254 | }, | 1254 | }, |
1255 | [EM2860_BOARD_KAIOMY_TVNPC_U2] = { | ||
1256 | .name = "Kaiomy TVnPC U2", | ||
1257 | .vchannels = 3, | ||
1258 | .tuner_type = TUNER_XC2028, | ||
1259 | .tuner_addr = 0x61, | ||
1260 | .mts_firmware = 1, | ||
1261 | .decoder = EM28XX_TVP5150, | ||
1262 | .tuner_gpio = default_tuner_gpio, | ||
1263 | .input = { { | ||
1264 | .type = EM28XX_VMUX_TELEVISION, | ||
1265 | .vmux = TVP5150_COMPOSITE0, | ||
1266 | .amux = EM28XX_AMUX_VIDEO, | ||
1267 | |||
1268 | }, { | ||
1269 | .type = EM28XX_VMUX_COMPOSITE1, | ||
1270 | .vmux = TVP5150_COMPOSITE1, | ||
1271 | .amux = EM28XX_AMUX_LINE_IN, | ||
1272 | }, { | ||
1273 | .type = EM28XX_VMUX_SVIDEO, | ||
1274 | .vmux = TVP5150_SVIDEO, | ||
1275 | .amux = EM28XX_AMUX_LINE_IN, | ||
1276 | } }, | ||
1277 | .radio = { | ||
1278 | .type = EM28XX_RADIO, | ||
1279 | .amux = EM28XX_AMUX_LINE_IN, | ||
1280 | } | ||
1281 | } | ||
1255 | }; | 1282 | }; |
1256 | const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards); | 1283 | const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards); |
1257 | 1284 | ||
@@ -1279,6 +1306,8 @@ struct usb_device_id em28xx_id_table [] = { | |||
1279 | .driver_info = EM2820_BOARD_UNKNOWN }, | 1306 | .driver_info = EM2820_BOARD_UNKNOWN }, |
1280 | { USB_DEVICE(0xeb1a, 0xe300), | 1307 | { USB_DEVICE(0xeb1a, 0xe300), |
1281 | .driver_info = EM2861_BOARD_KWORLD_PVRTV_300U }, | 1308 | .driver_info = EM2861_BOARD_KWORLD_PVRTV_300U }, |
1309 | { USB_DEVICE(0xeb1a, 0xe303), | ||
1310 | .driver_info = EM2860_BOARD_KAIOMY_TVNPC_U2 }, | ||
1282 | { USB_DEVICE(0xeb1a, 0xe305), | 1311 | { USB_DEVICE(0xeb1a, 0xe305), |
1283 | .driver_info = EM2880_BOARD_KWORLD_DVB_305U }, | 1312 | .driver_info = EM2880_BOARD_KWORLD_DVB_305U }, |
1284 | { USB_DEVICE(0xeb1a, 0xe310), | 1313 | { USB_DEVICE(0xeb1a, 0xe310), |
@@ -1524,6 +1553,20 @@ void em28xx_pre_card_setup(struct em28xx *dev) | |||
1524 | /* enables audio for that devices */ | 1553 | /* enables audio for that devices */ |
1525 | em28xx_write_reg(dev, EM28XX_R08_GPIO, 0xfd); | 1554 | em28xx_write_reg(dev, EM28XX_R08_GPIO, 0xfd); |
1526 | break; | 1555 | break; |
1556 | |||
1557 | case EM2860_BOARD_KAIOMY_TVNPC_U2: | ||
1558 | em28xx_write_regs(dev, EM28XX_R0F_XCLK, "\x07", 1); | ||
1559 | em28xx_write_regs(dev, EM28XX_R06_I2C_CLK, "\x40", 1); | ||
1560 | em28xx_write_regs(dev, 0x0d, "\x42", 1); | ||
1561 | em28xx_write_regs(dev, 0x08, "\xfd", 1); | ||
1562 | msleep(10); | ||
1563 | em28xx_write_regs(dev, 0x08, "\xff", 1); | ||
1564 | msleep(10); | ||
1565 | em28xx_write_regs(dev, 0x08, "\x7f", 1); | ||
1566 | msleep(10); | ||
1567 | em28xx_write_regs(dev, 0x08, "\x6b", 1); | ||
1568 | |||
1569 | break; | ||
1527 | } | 1570 | } |
1528 | 1571 | ||
1529 | em28xx_gpio_set(dev, dev->board.tuner_gpio); | 1572 | em28xx_gpio_set(dev, dev->board.tuner_gpio); |
diff --git a/drivers/media/video/em28xx/em28xx.h b/drivers/media/video/em28xx/em28xx.h index 989e67fdff3e..24fc8b429466 100644 --- a/drivers/media/video/em28xx/em28xx.h +++ b/drivers/media/video/em28xx/em28xx.h | |||
@@ -99,6 +99,7 @@ | |||
99 | #define EM2883_BOARD_HAUPPAUGE_WINTV_HVR_850 60 | 99 | #define EM2883_BOARD_HAUPPAUGE_WINTV_HVR_850 60 |
100 | #define EM2820_BOARD_PROLINK_PLAYTV_BOX4_USB2 61 | 100 | #define EM2820_BOARD_PROLINK_PLAYTV_BOX4_USB2 61 |
101 | #define EM2820_BOARD_GADMEI_TVR200 62 | 101 | #define EM2820_BOARD_GADMEI_TVR200 62 |
102 | #define EM2860_BOARD_KAIOMY_TVNPC_U2 61 | ||
102 | 103 | ||
103 | /* Limits minimum and default number of buffers */ | 104 | /* Limits minimum and default number of buffers */ |
104 | #define EM28XX_MIN_BUF 4 | 105 | #define EM28XX_MIN_BUF 4 |