Commit 4159d01b authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

[media] em28xx: Add ISDB support for c3tech Digital duo

This is an hybrid board. However, for analog, it requires
a new driver for saa7136. So, for now, let's just add
support for Digital TV.
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 401f6a27
...@@ -85,3 +85,4 @@ ...@@ -85,3 +85,4 @@
85 -> PCTV QuatroStick (510e) (em2884) [2304:0242] 85 -> PCTV QuatroStick (510e) (em2884) [2304:0242]
86 -> PCTV QuatroStick nano (520e) (em2884) [2013:0251] 86 -> PCTV QuatroStick nano (520e) (em2884) [2013:0251]
87 -> Terratec Cinergy HTC USB XS (em2884) [0ccd:008e,0ccd:00ac] 87 -> Terratec Cinergy HTC USB XS (em2884) [0ccd:008e,0ccd:00ac]
88 -> C3 Tech Digital Duo HDTV/SDTV USB (em2884) [1b80:e755]
...@@ -46,6 +46,7 @@ config VIDEO_EM28XX_DVB ...@@ -46,6 +46,7 @@ config VIDEO_EM28XX_DVB
select DVB_A8293 if MEDIA_SUBDRV_AUTOSELECT select DVB_A8293 if MEDIA_SUBDRV_AUTOSELECT
select DVB_MT352 if MEDIA_SUBDRV_AUTOSELECT select DVB_MT352 if MEDIA_SUBDRV_AUTOSELECT
select DVB_S5H1409 if MEDIA_SUBDRV_AUTOSELECT select DVB_S5H1409 if MEDIA_SUBDRV_AUTOSELECT
select DVB_MB86A20S if MEDIA_SUBDRV_AUTOSELECT
select MEDIA_TUNER_QT1010 if MEDIA_SUBDRV_AUTOSELECT select MEDIA_TUNER_QT1010 if MEDIA_SUBDRV_AUTOSELECT
select MEDIA_TUNER_TDA18271 if MEDIA_SUBDRV_AUTOSELECT select MEDIA_TUNER_TDA18271 if MEDIA_SUBDRV_AUTOSELECT
---help--- ---help---
......
...@@ -345,6 +345,18 @@ static struct em28xx_reg_seq pctv_460e[] = { ...@@ -345,6 +345,18 @@ static struct em28xx_reg_seq pctv_460e[] = {
{ -1, -1, -1, -1}, { -1, -1, -1, -1},
}; };
static struct em28xx_reg_seq c3tech_digital_duo_digital[] = {
{EM2874_R80_GPIO, 0xff, 0xff, 10},
{EM2874_R80_GPIO, 0xfd, 0xff, 10}, /* xc5000 reset */
{EM2874_R80_GPIO, 0xf9, 0xff, 35},
{EM2874_R80_GPIO, 0xfd, 0xff, 10},
{EM2874_R80_GPIO, 0xff, 0xff, 10},
{EM2874_R80_GPIO, 0xfe, 0xff, 10},
{EM2874_R80_GPIO, 0xbe, 0xff, 10},
{EM2874_R80_GPIO, 0xfe, 0xff, 20},
{ -1, -1, -1, -1},
};
#if 0 #if 0
static struct em28xx_reg_seq hauppauge_930c_gpio[] = { static struct em28xx_reg_seq hauppauge_930c_gpio[] = {
{EM2874_R80_GPIO, 0x6f, 0xff, 10}, {EM2874_R80_GPIO, 0x6f, 0xff, 10},
...@@ -978,6 +990,16 @@ struct em28xx_board em28xx_boards[] = { ...@@ -978,6 +990,16 @@ struct em28xx_board em28xx_boards[] = {
.i2c_speed = EM28XX_I2C_CLK_WAIT_ENABLE | .i2c_speed = EM28XX_I2C_CLK_WAIT_ENABLE |
EM28XX_I2C_FREQ_400_KHZ, EM28XX_I2C_FREQ_400_KHZ,
}, },
[EM2884_BOARD_C3TECH_DIGITAL_DUO] = {
.name = "C3 Tech Digital Duo HDTV/SDTV USB",
.has_dvb = 1,
/* FIXME: Add analog support - need a saa7136 driver */
.tuner_type = TUNER_ABSENT, /* Digital-only TDA18271HD */
.ir_codes = RC_MAP_EMPTY,
.def_i2c_bus = 1,
.i2c_speed = EM28XX_I2C_CLK_WAIT_ENABLE,
.dvb_gpio = c3tech_digital_duo_digital,
},
[EM2884_BOARD_CINERGY_HTC_STICK] = { [EM2884_BOARD_CINERGY_HTC_STICK] = {
.name = "Terratec Cinergy HTC Stick", .name = "Terratec Cinergy HTC Stick",
.has_dvb = 1, .has_dvb = 1,
...@@ -2144,6 +2166,8 @@ struct usb_device_id em28xx_id_table[] = { ...@@ -2144,6 +2166,8 @@ struct usb_device_id em28xx_id_table[] = {
.driver_info = EM28174_BOARD_PCTV_460E }, .driver_info = EM28174_BOARD_PCTV_460E },
{ USB_DEVICE(0x2040, 0x1605), { USB_DEVICE(0x2040, 0x1605),
.driver_info = EM2884_BOARD_HAUPPAUGE_WINTV_HVR_930C }, .driver_info = EM2884_BOARD_HAUPPAUGE_WINTV_HVR_930C },
{ USB_DEVICE(0x1b80, 0xe755),
.driver_info = EM2884_BOARD_C3TECH_DIGITAL_DUO },
{ USB_DEVICE(0xeb1a, 0x5006), { USB_DEVICE(0xeb1a, 0x5006),
.driver_info = EM2860_BOARD_HT_VIDBOX_NW03 }, .driver_info = EM2860_BOARD_HT_VIDBOX_NW03 },
{ USB_DEVICE(0x1b80, 0xe309), /* Sveon STV40 */ { USB_DEVICE(0x1b80, 0xe309), /* Sveon STV40 */
......
...@@ -50,6 +50,7 @@ ...@@ -50,6 +50,7 @@
#include "tda10071.h" #include "tda10071.h"
#include "a8293.h" #include "a8293.h"
#include "qt1010.h" #include "qt1010.h"
#include "mb86a20s.h"
MODULE_DESCRIPTION("driver for em28xx based DVB cards"); MODULE_DESCRIPTION("driver for em28xx based DVB cards");
MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@infradead.org>"); MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@infradead.org>");
...@@ -766,9 +767,25 @@ static struct zl10353_config em28xx_zl10353_no_i2c_gate_dev = { ...@@ -766,9 +767,25 @@ static struct zl10353_config em28xx_zl10353_no_i2c_gate_dev = {
}; };
static struct qt1010_config em28xx_qt1010_config = { static struct qt1010_config em28xx_qt1010_config = {
.i2c_address = 0x62 .i2c_address = 0x62
};
static const struct mb86a20s_config c3tech_duo_mb86a20s_config = {
.demod_address = 0x10,
.is_serial = true,
};
static struct tda18271_std_map mb86a20s_tda18271_config = {
.dvbt_6 = { .if_freq = 4000, .agc_mode = 3, .std = 4,
.if_lvl = 1, .rfagc_top = 0x37, },
};
static struct tda18271_config c3tech_duo_tda18271_config = {
.std_map = &mb86a20s_tda18271_config,
.gate = TDA18271_GATE_DIGITAL,
.small_i2c = TDA18271_03_BYTE_CHUNK_INIT,
}; };
/* ------------------------------------------------------------------ */ /* ------------------------------------------------------------------ */
static int em28xx_attach_xc3028(u8 addr, struct em28xx *dev) static int em28xx_attach_xc3028(u8 addr, struct em28xx *dev)
...@@ -1177,6 +1194,15 @@ static int em28xx_dvb_init(struct em28xx *dev) ...@@ -1177,6 +1194,15 @@ static int em28xx_dvb_init(struct em28xx *dev)
dvb->fe[0]->ops.i2c_gate_ctrl(dvb->fe[0], 0); dvb->fe[0]->ops.i2c_gate_ctrl(dvb->fe[0], 0);
break; break;
case EM2884_BOARD_C3TECH_DIGITAL_DUO:
dvb->fe[0] = dvb_attach(mb86a20s_attach,
&c3tech_duo_mb86a20s_config,
&dev->i2c_adap[dev->def_i2c_bus]);
if (dvb->fe[0] != NULL)
dvb_attach(tda18271_attach, dvb->fe[0], 0x60,
&dev->i2c_adap[dev->def_i2c_bus],
&c3tech_duo_tda18271_config);
break;
case EM28174_BOARD_PCTV_460E: case EM28174_BOARD_PCTV_460E:
/* attach demod */ /* attach demod */
dvb->fe[0] = dvb_attach(tda10071_attach, dvb->fe[0] = dvb_attach(tda10071_attach,
......
...@@ -129,6 +129,7 @@ ...@@ -129,6 +129,7 @@
#define EM2884_BOARD_PCTV_510E 85 #define EM2884_BOARD_PCTV_510E 85
#define EM2884_BOARD_PCTV_520E 86 #define EM2884_BOARD_PCTV_520E 86
#define EM2884_BOARD_TERRATEC_HTC_USB_XS 87 #define EM2884_BOARD_TERRATEC_HTC_USB_XS 87
#define EM2884_BOARD_C3TECH_DIGITAL_DUO 88
/* 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