aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Krufky <mkrufky@kernellabs.com>2009-05-08 15:05:29 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-06-16 17:21:03 -0400
commit19bc57968cc854c7da4846c21b3ef2a39e43f97d (patch)
treec243fa4b7536f5c6eba0c120a6203afeba0f2958
parentd099becb0bd7ee01a13d58371b4ea5a2f7052c04 (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.cx238851
-rw-r--r--drivers/media/video/cx23885/cx23885-cards.c12
-rw-r--r--drivers/media/video/cx23885/cx23885-dvb.c21
-rw-r--r--drivers/media/video/cx23885/cx23885.h1
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};
193const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); 197const 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};
301const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); 309const 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
200static 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
200static struct xc5000_config hauppauge_hvr1500q_tunerconfig = { 210static 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