Commit 0004fd59 authored by Markus Rechberger's avatar Markus Rechberger Committed by Mauro Carvalho Chehab

V4L/DVB (3291): Added support for xc3028 analogue tuner (Hauppauge HVR900, Terratec Hybrid XS)

Added support for xc3028 to v4l which adds support for:
 * Terratec Hybrid XS (analogue)
 * Hauppauge HVR 900 (analogue)
Signed-off-by: default avatarMarkus Rechberger <mrechberger@gmail.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 1d519605
...@@ -69,3 +69,4 @@ tuner=67 - Philips TD1316 Hybrid Tuner ...@@ -69,3 +69,4 @@ tuner=67 - Philips TD1316 Hybrid Tuner
tuner=68 - Philips TUV1236D ATSC/NTSC dual in tuner=68 - Philips TUV1236D ATSC/NTSC dual in
tuner=69 - Tena TNF 5335 MF tuner=69 - Tena TNF 5335 MF
tuner=70 - Samsung TCPN 2121P30A tuner=70 - Samsung TCPN 2121P30A
tuner=71 - Xceive xc3028
...@@ -9,7 +9,7 @@ zoran-objs := zr36120.o zr36120_i2c.o zr36120_mem.o ...@@ -9,7 +9,7 @@ zoran-objs := zr36120.o zr36120_i2c.o zr36120_mem.o
zr36067-objs := zoran_procfs.o zoran_device.o \ zr36067-objs := zoran_procfs.o zoran_device.o \
zoran_driver.o zoran_card.o zoran_driver.o zoran_card.o
tuner-objs := tuner-core.o tuner-types.o tuner-simple.o \ tuner-objs := tuner-core.o tuner-types.o tuner-simple.o \
mt20xx.o tda8290.o tea5767.o mt20xx.o tda8290.o tea5767.o xc3028.o
msp3400-objs := msp3400-driver.o msp3400-kthreads.o msp3400-objs := msp3400-driver.o msp3400-kthreads.o
......
...@@ -158,8 +158,8 @@ struct em28xx_board em28xx_boards[] = { ...@@ -158,8 +158,8 @@ struct em28xx_board em28xx_boards[] = {
.name = "Hauppauge WinTV HVR 900", .name = "Hauppauge WinTV HVR 900",
.vchannels = 3, .vchannels = 3,
.norm = VIDEO_MODE_PAL, .norm = VIDEO_MODE_PAL,
.has_tuner = 0,
.tda9887_conf = TDA9887_PRESENT, .tda9887_conf = TDA9887_PRESENT,
.tuner_type = TUNER_XCEIVE_XC3028,
.has_tuner = 1, .has_tuner = 1,
.decoder = EM28XX_TVP5150, .decoder = EM28XX_TVP5150,
.input = {{ .input = {{
...@@ -180,8 +180,8 @@ struct em28xx_board em28xx_boards[] = { ...@@ -180,8 +180,8 @@ struct em28xx_board em28xx_boards[] = {
.name = "Terratec Hybrid XS", .name = "Terratec Hybrid XS",
.vchannels = 3, .vchannels = 3,
.norm = VIDEO_MODE_PAL, .norm = VIDEO_MODE_PAL,
.has_tuner = 0,
.tda9887_conf = TDA9887_PRESENT, .tda9887_conf = TDA9887_PRESENT,
.tuner_type = TUNER_XCEIVE_XC3028,
.has_tuner = 1, .has_tuner = 1,
.decoder = EM28XX_TVP5150, .decoder = EM28XX_TVP5150,
.input = {{ .input = {{
......
...@@ -217,6 +217,9 @@ static void set_type(struct i2c_client *c, unsigned int type, ...@@ -217,6 +217,9 @@ static void set_type(struct i2c_client *c, unsigned int type,
i2c_master_send(c,buffer,4); i2c_master_send(c,buffer,4);
default_tuner_init(c); default_tuner_init(c);
break; break;
case TUNER_XCEIVE_XC3028:
xc3028_init(c);
break;
default: default:
default_tuner_init(c); default_tuner_init(c);
break; break;
......
...@@ -983,6 +983,23 @@ static struct tuner_params tuner_samsung_tcpn_2121p30a_params[] = { ...@@ -983,6 +983,23 @@ static struct tuner_params tuner_samsung_tcpn_2121p30a_params[] = {
}, },
}; };
/* ------------ TUNER_XCEIVE_XC3028 - Xceive xc3028 ------------ */
static struct tuner_range tuner_xceive_xc3028_ranges[] = {
{ 16 * 140.25 /*MHz*/, 0x02, },
{ 16 * 463.25 /*MHz*/, 0x04, },
{ 16 * 999.99 , 0x01, },
};
static struct tuner_params tuner_xceive_xc3028_params[] = {
{
.type = TUNER_XCEIVE_XC3028,
.ranges = tuner_xceive_xc3028_ranges,
.count = ARRAY_SIZE(tuner_xceive_xc3028_ranges),
},
};
/* --------------------------------------------------------------------- */ /* --------------------------------------------------------------------- */
struct tunertype tuners[] = { struct tunertype tuners[] = {
...@@ -1350,6 +1367,10 @@ struct tunertype tuners[] = { ...@@ -1350,6 +1367,10 @@ struct tunertype tuners[] = {
.params = tuner_samsung_tcpn_2121p30a_params, .params = tuner_samsung_tcpn_2121p30a_params,
.count = ARRAY_SIZE(tuner_samsung_tcpn_2121p30a_params), .count = ARRAY_SIZE(tuner_samsung_tcpn_2121p30a_params),
}, },
[TUNER_XCEIVE_XC3028] = { /* Xceive 3028 */
.name = "Xceive xc3028",
.params = tuner_xceive_xc3028_params,
},
}; };
unsigned const int tuner_count = ARRAY_SIZE(tuners); unsigned const int tuner_count = ARRAY_SIZE(tuners);
...@@ -117,6 +117,8 @@ ...@@ -117,6 +117,8 @@
#define TUNER_TNF_5335MF 69 /* Sabrent Bt848 */ #define TUNER_TNF_5335MF 69 /* Sabrent Bt848 */
#define TUNER_SAMSUNG_TCPN_2121P30A 70 /* Hauppauge PVR-500MCE NTSC */ #define TUNER_SAMSUNG_TCPN_2121P30A 70 /* Hauppauge PVR-500MCE NTSC */
#define TUNER_XCEIVE_XC3028 71
/* tv card specific */ /* tv card specific */
#define TDA9887_PRESENT (1<<0) #define TDA9887_PRESENT (1<<0)
#define TDA9887_PORT1_INACTIVE (1<<1) #define TDA9887_PORT1_INACTIVE (1<<1)
...@@ -209,6 +211,7 @@ struct tuner { ...@@ -209,6 +211,7 @@ struct tuner {
extern unsigned const int tuner_count; extern unsigned const int tuner_count;
extern int microtune_init(struct i2c_client *c); extern int microtune_init(struct i2c_client *c);
extern int xc3028_init(struct i2c_client *c);
extern int tda8290_init(struct i2c_client *c); extern int tda8290_init(struct i2c_client *c);
extern int tda8290_probe(struct i2c_client *c); extern int tda8290_probe(struct i2c_client *c);
extern int tea5767_tuner_init(struct i2c_client *c); extern int tea5767_tuner_init(struct i2c_client *c);
......
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