Commit 0bf4f6ce authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

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: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 517efa89
...@@ -57,5 +57,6 @@ ...@@ -57,5 +57,6 @@
57 -> Kworld PlusTV HD Hybrid 330 (em2883) [eb1a:a316] 57 -> Kworld PlusTV HD Hybrid 330 (em2883) [eb1a:a316]
58 -> Compro VideoMate ForYou/Stereo (em2820/em2840) [185b:2041] 58 -> Compro VideoMate ForYou/Stereo (em2820/em2840) [185b:2041]
60 -> Hauppauge WinTV HVR 850 (em2883) [2040:651f] 60 -> Hauppauge WinTV HVR 850 (em2883) [2040:651f]
61 -> Kaiomy TVnPC U2 (em2860) [eb1a:e303]
61 -> Pixelview PlayTV Box 4 USB 2.0 (em2820/em2840) 61 -> Pixelview PlayTV Box 4 USB 2.0 (em2820/em2840)
62 -> Gadmei TVR200 (em2820/em2840) 62 -> Gadmei TVR200 (em2820/em2840)
...@@ -1252,6 +1252,33 @@ struct em28xx_board em28xx_boards[] = { ...@@ -1252,6 +1252,33 @@ struct em28xx_board em28xx_boards[] = {
.amux = EM28XX_AMUX_LINE_IN, .amux = EM28XX_AMUX_LINE_IN,
} }, } },
}, },
[EM2860_BOARD_KAIOMY_TVNPC_U2] = {
.name = "Kaiomy TVnPC U2",
.vchannels = 3,
.tuner_type = TUNER_XC2028,
.tuner_addr = 0x61,
.mts_firmware = 1,
.decoder = EM28XX_TVP5150,
.tuner_gpio = default_tuner_gpio,
.input = { {
.type = EM28XX_VMUX_TELEVISION,
.vmux = TVP5150_COMPOSITE0,
.amux = EM28XX_AMUX_VIDEO,
}, {
.type = EM28XX_VMUX_COMPOSITE1,
.vmux = TVP5150_COMPOSITE1,
.amux = EM28XX_AMUX_LINE_IN,
}, {
.type = EM28XX_VMUX_SVIDEO,
.vmux = TVP5150_SVIDEO,
.amux = EM28XX_AMUX_LINE_IN,
} },
.radio = {
.type = EM28XX_RADIO,
.amux = EM28XX_AMUX_LINE_IN,
}
}
}; };
const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards); const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards);
...@@ -1279,6 +1306,8 @@ struct usb_device_id em28xx_id_table [] = { ...@@ -1279,6 +1306,8 @@ struct usb_device_id em28xx_id_table [] = {
.driver_info = EM2820_BOARD_UNKNOWN }, .driver_info = EM2820_BOARD_UNKNOWN },
{ USB_DEVICE(0xeb1a, 0xe300), { USB_DEVICE(0xeb1a, 0xe300),
.driver_info = EM2861_BOARD_KWORLD_PVRTV_300U }, .driver_info = EM2861_BOARD_KWORLD_PVRTV_300U },
{ USB_DEVICE(0xeb1a, 0xe303),
.driver_info = EM2860_BOARD_KAIOMY_TVNPC_U2 },
{ USB_DEVICE(0xeb1a, 0xe305), { USB_DEVICE(0xeb1a, 0xe305),
.driver_info = EM2880_BOARD_KWORLD_DVB_305U }, .driver_info = EM2880_BOARD_KWORLD_DVB_305U },
{ USB_DEVICE(0xeb1a, 0xe310), { USB_DEVICE(0xeb1a, 0xe310),
...@@ -1524,6 +1553,20 @@ void em28xx_pre_card_setup(struct em28xx *dev) ...@@ -1524,6 +1553,20 @@ void em28xx_pre_card_setup(struct em28xx *dev)
/* enables audio for that devices */ /* enables audio for that devices */
em28xx_write_reg(dev, EM28XX_R08_GPIO, 0xfd); em28xx_write_reg(dev, EM28XX_R08_GPIO, 0xfd);
break; break;
case EM2860_BOARD_KAIOMY_TVNPC_U2:
em28xx_write_regs(dev, EM28XX_R0F_XCLK, "\x07", 1);
em28xx_write_regs(dev, EM28XX_R06_I2C_CLK, "\x40", 1);
em28xx_write_regs(dev, 0x0d, "\x42", 1);
em28xx_write_regs(dev, 0x08, "\xfd", 1);
msleep(10);
em28xx_write_regs(dev, 0x08, "\xff", 1);
msleep(10);
em28xx_write_regs(dev, 0x08, "\x7f", 1);
msleep(10);
em28xx_write_regs(dev, 0x08, "\x6b", 1);
break;
} }
em28xx_gpio_set(dev, dev->board.tuner_gpio); em28xx_gpio_set(dev, dev->board.tuner_gpio);
......
...@@ -99,6 +99,7 @@ ...@@ -99,6 +99,7 @@
#define EM2883_BOARD_HAUPPAUGE_WINTV_HVR_850 60 #define EM2883_BOARD_HAUPPAUGE_WINTV_HVR_850 60
#define EM2820_BOARD_PROLINK_PLAYTV_BOX4_USB2 61 #define EM2820_BOARD_PROLINK_PLAYTV_BOX4_USB2 61
#define EM2820_BOARD_GADMEI_TVR200 62 #define EM2820_BOARD_GADMEI_TVR200 62
#define EM2860_BOARD_KAIOMY_TVNPC_U2 61
/* Limits minimum and default number of buffers */ /* Limits minimum and default number of buffers */
#define EM28XX_MIN_BUF 4 #define EM28XX_MIN_BUF 4
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment