diff options
author | Michael Krufky <mkrufky@kernellabs.com> | 2009-05-08 15:05:29 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-06-16 17:21:03 -0400 |
commit | 19bc57968cc854c7da4846c21b3ef2a39e43f97d (patch) | |
tree | c243fa4b7536f5c6eba0c120a6203afeba0f2958 | |
parent | d099becb0bd7ee01a13d58371b4ea5a2f7052c04 (diff) |
V4L/DVB (11770): cx23885: add ATSC/QAM tuning support for Hauppauge WinTV-HVR1255
Signed-off-by: Michael Krufky <mkrufky@kernellabs.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r-- | Documentation/video4linux/CARDLIST.cx23885 | 1 | ||||
-rw-r--r-- | drivers/media/video/cx23885/cx23885-cards.c | 12 | ||||
-rw-r--r-- | drivers/media/video/cx23885/cx23885-dvb.c | 21 | ||||
-rw-r--r-- | drivers/media/video/cx23885/cx23885.h | 1 |
4 files changed, 35 insertions, 0 deletions
diff --git a/Documentation/video4linux/CARDLIST.cx23885 b/Documentation/video4linux/CARDLIST.cx23885 index ce62f5a2831..e7ed710f7ea 100644 --- a/Documentation/video4linux/CARDLIST.cx23885 +++ b/Documentation/video4linux/CARDLIST.cx23885 | |||
@@ -18,3 +18,4 @@ | |||
18 | 17 -> NetUP Dual DVB-S2 CI [1b55:2a2c] | 18 | 17 -> NetUP Dual DVB-S2 CI [1b55:2a2c] |
19 | 18 -> Hauppauge WinTV-HVR1270 [0070:2211] | 19 | 18 -> Hauppauge WinTV-HVR1270 [0070:2211] |
20 | 19 -> Hauppauge WinTV-HVR1275 [0070:2215] | 20 | 19 -> Hauppauge WinTV-HVR1275 [0070:2215] |
21 | 20 -> Hauppauge WinTV-HVR1255 [0070:2251] | ||
diff --git a/drivers/media/video/cx23885/cx23885-cards.c b/drivers/media/video/cx23885/cx23885-cards.c index 68ac04b7f1e..604ceb18052 100644 --- a/drivers/media/video/cx23885/cx23885-cards.c +++ b/drivers/media/video/cx23885/cx23885-cards.c | |||
@@ -189,6 +189,10 @@ struct cx23885_board cx23885_boards[] = { | |||
189 | .name = "Hauppauge WinTV-HVR1275", | 189 | .name = "Hauppauge WinTV-HVR1275", |
190 | .portc = CX23885_MPEG_DVB, | 190 | .portc = CX23885_MPEG_DVB, |
191 | }, | 191 | }, |
192 | [CX23885_BOARD_HAUPPAUGE_HVR1255] = { | ||
193 | .name = "Hauppauge WinTV-HVR1255", | ||
194 | .portc = CX23885_MPEG_DVB, | ||
195 | }, | ||
192 | }; | 196 | }; |
193 | const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); | 197 | const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); |
194 | 198 | ||
@@ -296,6 +300,10 @@ struct cx23885_subid cx23885_subids[] = { | |||
296 | .subvendor = 0x0070, | 300 | .subvendor = 0x0070, |
297 | .subdevice = 0x2215, | 301 | .subdevice = 0x2215, |
298 | .card = CX23885_BOARD_HAUPPAUGE_HVR1275, | 302 | .card = CX23885_BOARD_HAUPPAUGE_HVR1275, |
303 | }, { | ||
304 | .subvendor = 0x0070, | ||
305 | .subdevice = 0x2251, | ||
306 | .card = CX23885_BOARD_HAUPPAUGE_HVR1255, | ||
299 | }, | 307 | }, |
300 | }; | 308 | }; |
301 | const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); | 309 | const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); |
@@ -637,6 +645,7 @@ void cx23885_gpio_setup(struct cx23885_dev *dev) | |||
637 | break; | 645 | break; |
638 | case CX23885_BOARD_HAUPPAUGE_HVR1270: | 646 | case CX23885_BOARD_HAUPPAUGE_HVR1270: |
639 | case CX23885_BOARD_HAUPPAUGE_HVR1275: | 647 | case CX23885_BOARD_HAUPPAUGE_HVR1275: |
648 | case CX23885_BOARD_HAUPPAUGE_HVR1255: | ||
640 | /* GPIO-5 RF Control: 0 = RF1 Terrestrial, 1 = RF2 Cable */ | 649 | /* GPIO-5 RF Control: 0 = RF1 Terrestrial, 1 = RF2 Cable */ |
641 | /* GPIO-6 I2C Gate which can isolate the 3305 from the bus */ | 650 | /* GPIO-6 I2C Gate which can isolate the 3305 from the bus */ |
642 | /* GPIO-9 LG3305 reset */ | 651 | /* GPIO-9 LG3305 reset */ |
@@ -662,6 +671,7 @@ int cx23885_ir_init(struct cx23885_dev *dev) | |||
662 | case CX23885_BOARD_HAUPPAUGE_HVR1400: | 671 | case CX23885_BOARD_HAUPPAUGE_HVR1400: |
663 | case CX23885_BOARD_HAUPPAUGE_HVR1270: | 672 | case CX23885_BOARD_HAUPPAUGE_HVR1270: |
664 | case CX23885_BOARD_HAUPPAUGE_HVR1275: | 673 | case CX23885_BOARD_HAUPPAUGE_HVR1275: |
674 | case CX23885_BOARD_HAUPPAUGE_HVR1255: | ||
665 | /* FIXME: Implement me */ | 675 | /* FIXME: Implement me */ |
666 | break; | 676 | break; |
667 | case CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP: | 677 | case CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP: |
@@ -699,6 +709,7 @@ void cx23885_card_setup(struct cx23885_dev *dev) | |||
699 | case CX23885_BOARD_HAUPPAUGE_HVR1700: | 709 | case CX23885_BOARD_HAUPPAUGE_HVR1700: |
700 | case CX23885_BOARD_HAUPPAUGE_HVR1270: | 710 | case CX23885_BOARD_HAUPPAUGE_HVR1270: |
701 | case CX23885_BOARD_HAUPPAUGE_HVR1275: | 711 | case CX23885_BOARD_HAUPPAUGE_HVR1275: |
712 | case CX23885_BOARD_HAUPPAUGE_HVR1255: | ||
702 | if (dev->i2c_bus[0].i2c_rc == 0) | 713 | if (dev->i2c_bus[0].i2c_rc == 0) |
703 | hauppauge_eeprom(dev, eeprom+0xc0); | 714 | hauppauge_eeprom(dev, eeprom+0xc0); |
704 | break; | 715 | break; |
@@ -758,6 +769,7 @@ void cx23885_card_setup(struct cx23885_dev *dev) | |||
758 | case CX23885_BOARD_COMPRO_VIDEOMATE_E650F: | 769 | case CX23885_BOARD_COMPRO_VIDEOMATE_E650F: |
759 | case CX23885_BOARD_HAUPPAUGE_HVR1270: | 770 | case CX23885_BOARD_HAUPPAUGE_HVR1270: |
760 | case CX23885_BOARD_HAUPPAUGE_HVR1275: | 771 | case CX23885_BOARD_HAUPPAUGE_HVR1275: |
772 | case CX23885_BOARD_HAUPPAUGE_HVR1255: | ||
761 | default: | 773 | default: |
762 | ts2->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */ | 774 | ts2->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */ |
763 | ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */ | 775 | 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 7e354a93e89..b440b55f22c 100644 --- a/drivers/media/video/cx23885/cx23885-dvb.c +++ b/drivers/media/video/cx23885/cx23885-dvb.c | |||
@@ -197,6 +197,16 @@ static struct s5h1411_config dvico_s5h1411_config = { | |||
197 | .mpeg_timing = S5H1411_MPEGTIMING_CONTINOUS_NONINVERTING_CLOCK, | 197 | .mpeg_timing = S5H1411_MPEGTIMING_CONTINOUS_NONINVERTING_CLOCK, |
198 | }; | 198 | }; |
199 | 199 | ||
200 | static struct s5h1411_config hcw_s5h1411_config = { | ||
201 | .output_mode = S5H1411_SERIAL_OUTPUT, | ||
202 | .gpio = S5H1411_GPIO_OFF, | ||
203 | .vsb_if = S5H1411_IF_44000, | ||
204 | .qam_if = S5H1411_IF_4000, | ||
205 | .inversion = S5H1411_INVERSION_ON, | ||
206 | .status_mode = S5H1411_DEMODLOCKING, | ||
207 | .mpeg_timing = S5H1411_MPEGTIMING_CONTINOUS_NONINVERTING_CLOCK, | ||
208 | }; | ||
209 | |||
200 | static struct xc5000_config hauppauge_hvr1500q_tunerconfig = { | 210 | static struct xc5000_config hauppauge_hvr1500q_tunerconfig = { |
201 | .i2c_address = 0x61, | 211 | .i2c_address = 0x61, |
202 | .if_khz = 5380, | 212 | .if_khz = 5380, |
@@ -433,6 +443,17 @@ static int dvb_register(struct cx23885_tsport *port) | |||
433 | &hcw_lgdt3305_tda18271_config); | 443 | &hcw_lgdt3305_tda18271_config); |
434 | } | 444 | } |
435 | break; | 445 | break; |
446 | case CX23885_BOARD_HAUPPAUGE_HVR1255: | ||
447 | i2c_bus = &dev->i2c_bus[0]; | ||
448 | fe0->dvb.frontend = dvb_attach(s5h1411_attach, | ||
449 | &hcw_s5h1411_config, | ||
450 | &i2c_bus->i2c_adap); | ||
451 | if (fe0->dvb.frontend != NULL) { | ||
452 | dvb_attach(tda18271_attach, fe0->dvb.frontend, | ||
453 | 0x60, &dev->i2c_bus[1].i2c_adap, | ||
454 | &hauppauge_tda18271_config); | ||
455 | } | ||
456 | break; | ||
436 | case CX23885_BOARD_HAUPPAUGE_HVR1800: | 457 | case CX23885_BOARD_HAUPPAUGE_HVR1800: |
437 | i2c_bus = &dev->i2c_bus[0]; | 458 | i2c_bus = &dev->i2c_bus[0]; |
438 | switch (alt_tuner) { | 459 | switch (alt_tuner) { |
diff --git a/drivers/media/video/cx23885/cx23885.h b/drivers/media/video/cx23885/cx23885.h index 3c941ccc308..9b42e41f30f 100644 --- a/drivers/media/video/cx23885/cx23885.h +++ b/drivers/media/video/cx23885/cx23885.h | |||
@@ -73,6 +73,7 @@ | |||
73 | #define CX23885_BOARD_NETUP_DUAL_DVBS2_CI 17 | 73 | #define CX23885_BOARD_NETUP_DUAL_DVBS2_CI 17 |
74 | #define CX23885_BOARD_HAUPPAUGE_HVR1270 18 | 74 | #define CX23885_BOARD_HAUPPAUGE_HVR1270 18 |
75 | #define CX23885_BOARD_HAUPPAUGE_HVR1275 19 | 75 | #define CX23885_BOARD_HAUPPAUGE_HVR1275 19 |
76 | #define CX23885_BOARD_HAUPPAUGE_HVR1255 20 | ||
76 | 77 | ||
77 | #define GPIO_0 0x00000001 | 78 | #define GPIO_0 0x00000001 |
78 | #define GPIO_1 0x00000002 | 79 | #define GPIO_1 0x00000002 |