diff options
author | Steven Toth <stoth@hauppauge.com> | 2008-04-19 00:14:19 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2008-04-24 13:09:44 -0400 |
commit | b3ea01668907bdb32b0c690d28f9f2b1298bd258 (patch) | |
tree | 5c2aeb1648e05c243b2a361782d45298df3a30e3 /drivers/media/video/cx23885 | |
parent | 7bbb1ce4f3e517666ad27f3307d49bb2da69ffec (diff) |
V4L/DVB (7645): Add support for the Hauppauge HVR-1200
This adds support for DVB-T mode only, analog mode is not supported.
Signed-off-by: Steven Toth <stoth@hauppauge.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/video/cx23885')
-rw-r--r-- | drivers/media/video/cx23885/Kconfig | 2 | ||||
-rw-r--r-- | drivers/media/video/cx23885/cx23885-cards.c | 22 | ||||
-rw-r--r-- | drivers/media/video/cx23885/cx23885-dvb.c | 26 | ||||
-rw-r--r-- | drivers/media/video/cx23885/cx23885-i2c.c | 1 | ||||
-rw-r--r-- | drivers/media/video/cx23885/cx23885.h | 1 |
5 files changed, 52 insertions, 0 deletions
diff --git a/drivers/media/video/cx23885/Kconfig b/drivers/media/video/cx23885/Kconfig index 1fd326fe4113..ca5fbce3a909 100644 --- a/drivers/media/video/cx23885/Kconfig +++ b/drivers/media/video/cx23885/Kconfig | |||
@@ -8,6 +8,7 @@ config VIDEO_CX23885 | |||
8 | select VIDEO_TVEEPROM | 8 | select VIDEO_TVEEPROM |
9 | select VIDEO_IR | 9 | select VIDEO_IR |
10 | select VIDEOBUF_DVB | 10 | select VIDEOBUF_DVB |
11 | select VIDEO_CX25840 | ||
11 | select DVB_TUNER_MT2131 if !DVB_FE_CUSTOMISE | 12 | select DVB_TUNER_MT2131 if !DVB_FE_CUSTOMISE |
12 | select DVB_S5H1409 if !DVB_FE_CUSTOMISE | 13 | select DVB_S5H1409 if !DVB_FE_CUSTOMISE |
13 | select DVB_LGDT330X if !DVB_FE_CUSTOMISE | 14 | select DVB_LGDT330X if !DVB_FE_CUSTOMISE |
@@ -16,6 +17,7 @@ config VIDEO_CX23885 | |||
16 | select TUNER_TDA8290 if !DVB_FE_CUSTOMIZE | 17 | select TUNER_TDA8290 if !DVB_FE_CUSTOMIZE |
17 | select DVB_TDA18271 if !DVB_FE_CUSTOMIZE | 18 | select DVB_TDA18271 if !DVB_FE_CUSTOMIZE |
18 | select DVB_TUNER_XC5000 if !DVB_FE_CUSTOMIZE | 19 | select DVB_TUNER_XC5000 if !DVB_FE_CUSTOMIZE |
20 | select DVB_TDA10048 if !DVB_FE_CUSTOMIZE | ||
19 | ---help--- | 21 | ---help--- |
20 | This is a video4linux driver for Conexant 23885 based | 22 | This is a video4linux driver for Conexant 23885 based |
21 | TV cards. | 23 | TV cards. |
diff --git a/drivers/media/video/cx23885/cx23885-cards.c b/drivers/media/video/cx23885/cx23885-cards.c index 77cd452e6e5b..8cb32f307a5d 100644 --- a/drivers/media/video/cx23885/cx23885-cards.c +++ b/drivers/media/video/cx23885/cx23885-cards.c | |||
@@ -130,6 +130,10 @@ struct cx23885_board cx23885_boards[] = { | |||
130 | .name = "Hauppauge WinTV-HVR1500", | 130 | .name = "Hauppauge WinTV-HVR1500", |
131 | .portc = CX23885_MPEG_DVB, | 131 | .portc = CX23885_MPEG_DVB, |
132 | }, | 132 | }, |
133 | [CX23885_BOARD_HAUPPAUGE_HVR1200] = { | ||
134 | .name = "Hauppauge WinTV-HVR1200", | ||
135 | .portc = CX23885_MPEG_DVB, | ||
136 | }, | ||
133 | }; | 137 | }; |
134 | const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); | 138 | const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); |
135 | 139 | ||
@@ -181,6 +185,10 @@ struct cx23885_subid cx23885_subids[] = { | |||
181 | .subvendor = 0x0070, | 185 | .subvendor = 0x0070, |
182 | .subdevice = 0x7717, | 186 | .subdevice = 0x7717, |
183 | .card = CX23885_BOARD_HAUPPAUGE_HVR1500, | 187 | .card = CX23885_BOARD_HAUPPAUGE_HVR1500, |
188 | }, { | ||
189 | .subvendor = 0x0070, | ||
190 | .subdevice = 0x71d1, | ||
191 | .card = CX23885_BOARD_HAUPPAUGE_HVR1200, | ||
184 | }, | 192 | }, |
185 | }; | 193 | }; |
186 | const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); | 194 | const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); |
@@ -314,6 +322,17 @@ void cx23885_gpio_setup(struct cx23885_dev *dev) | |||
314 | cx_set(GP0_IO, 0x00040004); | 322 | cx_set(GP0_IO, 0x00040004); |
315 | mdelay(20); | 323 | mdelay(20); |
316 | break; | 324 | break; |
325 | case CX23885_BOARD_HAUPPAUGE_HVR1200: | ||
326 | /* GPIO-0 tda10048 demodulator reset */ | ||
327 | /* GPIO-2 tda18271 tuner reset */ | ||
328 | |||
329 | /* Put the parts into reset and back */ | ||
330 | cx_set(GP0_IO, 0x00050000); | ||
331 | mdelay(20); | ||
332 | cx_clear(GP0_IO, 0x00000005); | ||
333 | mdelay(20); | ||
334 | cx_set(GP0_IO, 0x00050005); | ||
335 | break; | ||
317 | } | 336 | } |
318 | } | 337 | } |
319 | 338 | ||
@@ -324,6 +343,7 @@ int cx23885_ir_init(struct cx23885_dev *dev) | |||
324 | case CX23885_BOARD_HAUPPAUGE_HVR1500: | 343 | case CX23885_BOARD_HAUPPAUGE_HVR1500: |
325 | case CX23885_BOARD_HAUPPAUGE_HVR1500Q: | 344 | case CX23885_BOARD_HAUPPAUGE_HVR1500Q: |
326 | case CX23885_BOARD_HAUPPAUGE_HVR1800: | 345 | case CX23885_BOARD_HAUPPAUGE_HVR1800: |
346 | case CX23885_BOARD_HAUPPAUGE_HVR1200: | ||
327 | /* FIXME: Implement me */ | 347 | /* FIXME: Implement me */ |
328 | break; | 348 | break; |
329 | } | 349 | } |
@@ -353,6 +373,7 @@ void cx23885_card_setup(struct cx23885_dev *dev) | |||
353 | break; | 373 | break; |
354 | case CX23885_BOARD_HAUPPAUGE_HVR1800: | 374 | case CX23885_BOARD_HAUPPAUGE_HVR1800: |
355 | case CX23885_BOARD_HAUPPAUGE_HVR1800lp: | 375 | case CX23885_BOARD_HAUPPAUGE_HVR1800lp: |
376 | case CX23885_BOARD_HAUPPAUGE_HVR1200: | ||
356 | if (dev->i2c_bus[0].i2c_rc == 0) | 377 | if (dev->i2c_bus[0].i2c_rc == 0) |
357 | hauppauge_eeprom(dev, eeprom+0xc0); | 378 | hauppauge_eeprom(dev, eeprom+0xc0); |
358 | break; | 379 | break; |
@@ -369,6 +390,7 @@ void cx23885_card_setup(struct cx23885_dev *dev) | |||
369 | case CX23885_BOARD_HAUPPAUGE_HVR1500Q: | 390 | case CX23885_BOARD_HAUPPAUGE_HVR1500Q: |
370 | case CX23885_BOARD_HAUPPAUGE_HVR1800: | 391 | case CX23885_BOARD_HAUPPAUGE_HVR1800: |
371 | case CX23885_BOARD_HAUPPAUGE_HVR1800lp: | 392 | case CX23885_BOARD_HAUPPAUGE_HVR1800lp: |
393 | case CX23885_BOARD_HAUPPAUGE_HVR1200: | ||
372 | default: | 394 | default: |
373 | ts2->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */ | 395 | ts2->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */ |
374 | ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */ | 396 | ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */ |
diff --git a/drivers/media/video/cx23885/cx23885-dvb.c b/drivers/media/video/cx23885/cx23885-dvb.c index 1a720abbd066..18cd90c9c0f3 100644 --- a/drivers/media/video/cx23885/cx23885-dvb.c +++ b/drivers/media/video/cx23885/cx23885-dvb.c | |||
@@ -36,6 +36,7 @@ | |||
36 | #include "tda18271.h" | 36 | #include "tda18271.h" |
37 | #include "lgdt330x.h" | 37 | #include "lgdt330x.h" |
38 | #include "xc5000.h" | 38 | #include "xc5000.h" |
39 | #include "tda10048.h" | ||
39 | #include "dvb-pll.h" | 40 | #include "dvb-pll.h" |
40 | #include "tuner-xc2028.h" | 41 | #include "tuner-xc2028.h" |
41 | #include "tuner-xc2028-types.h" | 42 | #include "tuner-xc2028-types.h" |
@@ -107,6 +108,13 @@ static struct s5h1409_config hauppauge_generic_config = { | |||
107 | .mpeg_timing = S5H1409_MPEGTIMING_CONTINOUS_NONINVERTING_CLOCK, | 108 | .mpeg_timing = S5H1409_MPEGTIMING_CONTINOUS_NONINVERTING_CLOCK, |
108 | }; | 109 | }; |
109 | 110 | ||
111 | static struct tda10048_config hauppauge_hvr1200_config = { | ||
112 | .demod_address = 0x10 >> 1, | ||
113 | .output_mode = TDA10048_SERIAL_OUTPUT, | ||
114 | .fwbulkwritelen = TDA10048_BULKWRITE_200, | ||
115 | .inversion = TDA10048_INVERSION_ON | ||
116 | }; | ||
117 | |||
110 | static struct s5h1409_config hauppauge_ezqam_config = { | 118 | static struct s5h1409_config hauppauge_ezqam_config = { |
111 | .demod_address = 0x32 >> 1, | 119 | .demod_address = 0x32 >> 1, |
112 | .output_mode = S5H1409_SERIAL_OUTPUT, | 120 | .output_mode = S5H1409_SERIAL_OUTPUT, |
@@ -178,6 +186,10 @@ static struct tda18271_config hauppauge_tda18271_config = { | |||
178 | .gate = TDA18271_GATE_ANALOG, | 186 | .gate = TDA18271_GATE_ANALOG, |
179 | }; | 187 | }; |
180 | 188 | ||
189 | static struct tda18271_config hauppauge_hvr1200_tuner_config = { | ||
190 | .gate = TDA18271_GATE_ANALOG, | ||
191 | }; | ||
192 | |||
181 | static int cx23885_hvr1500_xc3028_callback(void *ptr, int command, int arg) | 193 | static int cx23885_hvr1500_xc3028_callback(void *ptr, int command, int arg) |
182 | { | 194 | { |
183 | struct cx23885_tsport *port = ptr; | 195 | struct cx23885_tsport *port = ptr; |
@@ -317,6 +329,20 @@ static int dvb_register(struct cx23885_tsport *port) | |||
317 | fe->ops.tuner_ops.set_config(fe, &ctl); | 329 | fe->ops.tuner_ops.set_config(fe, &ctl); |
318 | } | 330 | } |
319 | break; | 331 | break; |
332 | case CX23885_BOARD_HAUPPAUGE_HVR1200: | ||
333 | i2c_bus = &dev->i2c_bus[0]; | ||
334 | port->dvb.frontend = dvb_attach(tda10048_attach, | ||
335 | &hauppauge_hvr1200_config, | ||
336 | &i2c_bus->i2c_adap); | ||
337 | if (port->dvb.frontend != NULL) { | ||
338 | dvb_attach(tda829x_attach, port->dvb.frontend, | ||
339 | &dev->i2c_bus[1].i2c_adap, 0x42, | ||
340 | &tda829x_no_probe); | ||
341 | dvb_attach(tda18271_attach, port->dvb.frontend, | ||
342 | 0x60, &dev->i2c_bus[1].i2c_adap, | ||
343 | &hauppauge_hvr1200_tuner_config); | ||
344 | } | ||
345 | break; | ||
320 | default: | 346 | default: |
321 | printk("%s: The frontend of your DVB/ATSC card isn't supported yet\n", | 347 | printk("%s: The frontend of your DVB/ATSC card isn't supported yet\n", |
322 | dev->name); | 348 | dev->name); |
diff --git a/drivers/media/video/cx23885/cx23885-i2c.c b/drivers/media/video/cx23885/cx23885-i2c.c index 8773a1fd97cb..85f9d5ef17d0 100644 --- a/drivers/media/video/cx23885/cx23885-i2c.c +++ b/drivers/media/video/cx23885/cx23885-i2c.c | |||
@@ -353,6 +353,7 @@ static struct i2c_client cx23885_i2c_client_template = { | |||
353 | }; | 353 | }; |
354 | 354 | ||
355 | static char *i2c_devs[128] = { | 355 | static char *i2c_devs[128] = { |
356 | [0x10 >> 1] = "tda10048", | ||
356 | [ 0x1c >> 1 ] = "lgdt3303", | 357 | [ 0x1c >> 1 ] = "lgdt3303", |
357 | [ 0x86 >> 1 ] = "tda9887", | 358 | [ 0x86 >> 1 ] = "tda9887", |
358 | [ 0x32 >> 1 ] = "cx24227", | 359 | [ 0x32 >> 1 ] = "cx24227", |
diff --git a/drivers/media/video/cx23885/cx23885.h b/drivers/media/video/cx23885/cx23885.h index 7cb2179f2622..5bbfe6f50769 100644 --- a/drivers/media/video/cx23885/cx23885.h +++ b/drivers/media/video/cx23885/cx23885.h | |||
@@ -59,6 +59,7 @@ | |||
59 | #define CX23885_BOARD_DVICO_FUSIONHDTV_5_EXP 4 | 59 | #define CX23885_BOARD_DVICO_FUSIONHDTV_5_EXP 4 |
60 | #define CX23885_BOARD_HAUPPAUGE_HVR1500Q 5 | 60 | #define CX23885_BOARD_HAUPPAUGE_HVR1500Q 5 |
61 | #define CX23885_BOARD_HAUPPAUGE_HVR1500 6 | 61 | #define CX23885_BOARD_HAUPPAUGE_HVR1500 6 |
62 | #define CX23885_BOARD_HAUPPAUGE_HVR1200 7 | ||
62 | 63 | ||
63 | /* Currently unsupported by the driver: PAL/H, NTSC/Kr, SECAM B/G/H/LC */ | 64 | /* Currently unsupported by the driver: PAL/H, NTSC/Kr, SECAM B/G/H/LC */ |
64 | #define CX23885_NORMS (\ | 65 | #define CX23885_NORMS (\ |