aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@redhat.com>2009-02-11 12:13:20 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-03-30 11:42:43 -0400
commit0bf4f6ce6d43b135867a78fa1b4ac58e22d2e329 (patch)
tree6762b6d44b7515615a222ae0dd109e705dcce070
parent517efa89acef3ac440e6e1ca10252d407ba51abf (diff)
V4L/DVB (10514): em28xx: Add support for Kaiomy TVnPC U2 stick
Thanks to Peter Senna Tschudin <peter.senna@gmail.com> for borrow me one of those devices. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--Documentation/video4linux/CARDLIST.em28xx1
-rw-r--r--drivers/media/video/em28xx/em28xx-cards.c43
-rw-r--r--drivers/media/video/em28xx/em28xx.h1
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};
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);
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