diff options
-rw-r--r-- | Documentation/video4linux/CARDLIST.cx23885 | 1 | ||||
-rw-r--r-- | drivers/media/video/cx23885/cx23885-cards.c | 20 | ||||
-rw-r--r-- | drivers/media/video/cx23885/cx23885-dvb.c | 24 | ||||
-rw-r--r-- | drivers/media/video/cx23885/cx23885.h | 1 |
4 files changed, 44 insertions, 2 deletions
diff --git a/Documentation/video4linux/CARDLIST.cx23885 b/Documentation/video4linux/CARDLIST.cx23885 index e7ed710f7ea..948e436108b 100644 --- a/Documentation/video4linux/CARDLIST.cx23885 +++ b/Documentation/video4linux/CARDLIST.cx23885 | |||
@@ -19,3 +19,4 @@ | |||
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] | 21 | 20 -> Hauppauge WinTV-HVR1255 [0070:2251] |
22 | 21 -> Hauppauge WinTV-HVR1210 [0070:2291,0070:2295] | ||
diff --git a/drivers/media/video/cx23885/cx23885-cards.c b/drivers/media/video/cx23885/cx23885-cards.c index 604ceb18052..82fc2577b5e 100644 --- a/drivers/media/video/cx23885/cx23885-cards.c +++ b/drivers/media/video/cx23885/cx23885-cards.c | |||
@@ -193,6 +193,10 @@ struct cx23885_board cx23885_boards[] = { | |||
193 | .name = "Hauppauge WinTV-HVR1255", | 193 | .name = "Hauppauge WinTV-HVR1255", |
194 | .portc = CX23885_MPEG_DVB, | 194 | .portc = CX23885_MPEG_DVB, |
195 | }, | 195 | }, |
196 | [CX23885_BOARD_HAUPPAUGE_HVR1210] = { | ||
197 | .name = "Hauppauge WinTV-HVR1210", | ||
198 | .portc = CX23885_MPEG_DVB, | ||
199 | }, | ||
196 | }; | 200 | }; |
197 | const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); | 201 | const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); |
198 | 202 | ||
@@ -304,6 +308,14 @@ struct cx23885_subid cx23885_subids[] = { | |||
304 | .subvendor = 0x0070, | 308 | .subvendor = 0x0070, |
305 | .subdevice = 0x2251, | 309 | .subdevice = 0x2251, |
306 | .card = CX23885_BOARD_HAUPPAUGE_HVR1255, | 310 | .card = CX23885_BOARD_HAUPPAUGE_HVR1255, |
311 | }, { | ||
312 | .subvendor = 0x0070, | ||
313 | .subdevice = 0x2291, | ||
314 | .card = CX23885_BOARD_HAUPPAUGE_HVR1210, | ||
315 | }, { | ||
316 | .subvendor = 0x0070, | ||
317 | .subdevice = 0x2295, | ||
318 | .card = CX23885_BOARD_HAUPPAUGE_HVR1210, | ||
307 | }, | 319 | }, |
308 | }; | 320 | }; |
309 | const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); | 321 | const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); |
@@ -646,9 +658,10 @@ void cx23885_gpio_setup(struct cx23885_dev *dev) | |||
646 | case CX23885_BOARD_HAUPPAUGE_HVR1270: | 658 | case CX23885_BOARD_HAUPPAUGE_HVR1270: |
647 | case CX23885_BOARD_HAUPPAUGE_HVR1275: | 659 | case CX23885_BOARD_HAUPPAUGE_HVR1275: |
648 | case CX23885_BOARD_HAUPPAUGE_HVR1255: | 660 | case CX23885_BOARD_HAUPPAUGE_HVR1255: |
661 | case CX23885_BOARD_HAUPPAUGE_HVR1210: | ||
649 | /* GPIO-5 RF Control: 0 = RF1 Terrestrial, 1 = RF2 Cable */ | 662 | /* GPIO-5 RF Control: 0 = RF1 Terrestrial, 1 = RF2 Cable */ |
650 | /* GPIO-6 I2C Gate which can isolate the 3305 from the bus */ | 663 | /* GPIO-6 I2C Gate which can isolate the demod from the bus */ |
651 | /* GPIO-9 LG3305 reset */ | 664 | /* GPIO-9 Demod reset */ |
652 | 665 | ||
653 | /* Put the parts into reset and back */ | 666 | /* Put the parts into reset and back */ |
654 | cx23885_gpio_enable(dev, GPIO_9 | GPIO_6 | GPIO_5, 1); | 667 | cx23885_gpio_enable(dev, GPIO_9 | GPIO_6 | GPIO_5, 1); |
@@ -672,6 +685,7 @@ int cx23885_ir_init(struct cx23885_dev *dev) | |||
672 | case CX23885_BOARD_HAUPPAUGE_HVR1270: | 685 | case CX23885_BOARD_HAUPPAUGE_HVR1270: |
673 | case CX23885_BOARD_HAUPPAUGE_HVR1275: | 686 | case CX23885_BOARD_HAUPPAUGE_HVR1275: |
674 | case CX23885_BOARD_HAUPPAUGE_HVR1255: | 687 | case CX23885_BOARD_HAUPPAUGE_HVR1255: |
688 | case CX23885_BOARD_HAUPPAUGE_HVR1210: | ||
675 | /* FIXME: Implement me */ | 689 | /* FIXME: Implement me */ |
676 | break; | 690 | break; |
677 | case CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP: | 691 | case CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP: |
@@ -710,6 +724,7 @@ void cx23885_card_setup(struct cx23885_dev *dev) | |||
710 | case CX23885_BOARD_HAUPPAUGE_HVR1270: | 724 | case CX23885_BOARD_HAUPPAUGE_HVR1270: |
711 | case CX23885_BOARD_HAUPPAUGE_HVR1275: | 725 | case CX23885_BOARD_HAUPPAUGE_HVR1275: |
712 | case CX23885_BOARD_HAUPPAUGE_HVR1255: | 726 | case CX23885_BOARD_HAUPPAUGE_HVR1255: |
727 | case CX23885_BOARD_HAUPPAUGE_HVR1210: | ||
713 | if (dev->i2c_bus[0].i2c_rc == 0) | 728 | if (dev->i2c_bus[0].i2c_rc == 0) |
714 | hauppauge_eeprom(dev, eeprom+0xc0); | 729 | hauppauge_eeprom(dev, eeprom+0xc0); |
715 | break; | 730 | break; |
@@ -770,6 +785,7 @@ void cx23885_card_setup(struct cx23885_dev *dev) | |||
770 | case CX23885_BOARD_HAUPPAUGE_HVR1270: | 785 | case CX23885_BOARD_HAUPPAUGE_HVR1270: |
771 | case CX23885_BOARD_HAUPPAUGE_HVR1275: | 786 | case CX23885_BOARD_HAUPPAUGE_HVR1275: |
772 | case CX23885_BOARD_HAUPPAUGE_HVR1255: | 787 | case CX23885_BOARD_HAUPPAUGE_HVR1255: |
788 | case CX23885_BOARD_HAUPPAUGE_HVR1210: | ||
773 | default: | 789 | default: |
774 | ts2->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */ | 790 | ts2->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */ |
775 | ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */ | 791 | 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 b440b55f22c..22d1aefc0bf 100644 --- a/drivers/media/video/cx23885/cx23885-dvb.c +++ b/drivers/media/video/cx23885/cx23885-dvb.c | |||
@@ -128,6 +128,15 @@ static struct tda10048_config hauppauge_hvr1200_config = { | |||
128 | .clk_freq_khz = TDA10048_CLK_16000, | 128 | .clk_freq_khz = TDA10048_CLK_16000, |
129 | }; | 129 | }; |
130 | 130 | ||
131 | static struct tda10048_config hauppauge_hvr1210_config = { | ||
132 | .demod_address = 0x10 >> 1, | ||
133 | .output_mode = TDA10048_SERIAL_OUTPUT, | ||
134 | .fwbulkwritelen = TDA10048_BULKWRITE_200, | ||
135 | .inversion = TDA10048_INVERSION_ON, | ||
136 | .if_freq_khz = TDA10048_IF_4000, | ||
137 | .clk_freq_khz = TDA10048_CLK_16000, | ||
138 | }; | ||
139 | |||
131 | static struct s5h1409_config hauppauge_ezqam_config = { | 140 | static struct s5h1409_config hauppauge_ezqam_config = { |
132 | .demod_address = 0x32 >> 1, | 141 | .demod_address = 0x32 >> 1, |
133 | .output_mode = S5H1409_SERIAL_OUTPUT, | 142 | .output_mode = S5H1409_SERIAL_OUTPUT, |
@@ -237,6 +246,10 @@ static struct tda18271_config hauppauge_hvr1200_tuner_config = { | |||
237 | .gate = TDA18271_GATE_ANALOG, | 246 | .gate = TDA18271_GATE_ANALOG, |
238 | }; | 247 | }; |
239 | 248 | ||
249 | static struct tda18271_config hauppauge_hvr1210_tuner_config = { | ||
250 | .gate = TDA18271_GATE_DIGITAL, | ||
251 | }; | ||
252 | |||
240 | static struct tda18271_std_map hcw_lgdt3305_tda18271_std_map = { | 253 | static struct tda18271_std_map hcw_lgdt3305_tda18271_std_map = { |
241 | .atsc_6 = { .if_freq = 3250, .agc_mode = 3, .std = 4, | 254 | .atsc_6 = { .if_freq = 3250, .agc_mode = 3, .std = 4, |
242 | .if_lvl = 1, .rfagc_top = 0x58 }, | 255 | .if_lvl = 1, .rfagc_top = 0x58 }, |
@@ -554,6 +567,17 @@ static int dvb_register(struct cx23885_tsport *port) | |||
554 | &hauppauge_hvr1200_tuner_config); | 567 | &hauppauge_hvr1200_tuner_config); |
555 | } | 568 | } |
556 | break; | 569 | break; |
570 | case CX23885_BOARD_HAUPPAUGE_HVR1210: | ||
571 | i2c_bus = &dev->i2c_bus[0]; | ||
572 | fe0->dvb.frontend = dvb_attach(tda10048_attach, | ||
573 | &hauppauge_hvr1210_config, | ||
574 | &i2c_bus->i2c_adap); | ||
575 | if (fe0->dvb.frontend != NULL) { | ||
576 | dvb_attach(tda18271_attach, fe0->dvb.frontend, | ||
577 | 0x60, &dev->i2c_bus[1].i2c_adap, | ||
578 | &hauppauge_hvr1210_tuner_config); | ||
579 | } | ||
580 | break; | ||
557 | case CX23885_BOARD_HAUPPAUGE_HVR1400: | 581 | case CX23885_BOARD_HAUPPAUGE_HVR1400: |
558 | i2c_bus = &dev->i2c_bus[0]; | 582 | i2c_bus = &dev->i2c_bus[0]; |
559 | fe0->dvb.frontend = dvb_attach(dib7000p_attach, | 583 | fe0->dvb.frontend = dvb_attach(dib7000p_attach, |
diff --git a/drivers/media/video/cx23885/cx23885.h b/drivers/media/video/cx23885/cx23885.h index 9b42e41f30f..5067c19b659 100644 --- a/drivers/media/video/cx23885/cx23885.h +++ b/drivers/media/video/cx23885/cx23885.h | |||
@@ -74,6 +74,7 @@ | |||
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 | #define CX23885_BOARD_HAUPPAUGE_HVR1255 20 |
77 | #define CX23885_BOARD_HAUPPAUGE_HVR1210 21 | ||
77 | 78 | ||
78 | #define GPIO_0 0x00000001 | 79 | #define GPIO_0 0x00000001 |
79 | #define GPIO_1 0x00000002 | 80 | #define GPIO_1 0x00000002 |