aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/em28xx/em28xx-cards.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/em28xx/em28xx-cards.c')
-rw-r--r--drivers/media/video/em28xx/em28xx-cards.c43
1 files changed, 43 insertions, 0 deletions
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};
1256const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards); 1283const 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);