aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Toth <stoth@kernellabs.com>2009-05-02 10:39:46 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-06-16 17:21:03 -0400
commit2074dffaedebbf5a8468fd37855d6d94ba34041c (patch)
treecd0d053e41167a050970784e660c75afc84a085e
parent6de72bd6453003ef14acc3bac4159f7fffff7064 (diff)
V4L/DVB (11767): cx23885: Add preliminary support for the HVR1270
The patch means the board will be recognised, and the parts brought out of reset correctly. This patches depends on the centralized GPIO patch to be merged. What's missing before the HVR-1270 will function for DTV? The model# needs to be added to avoid 'unknown model' output and the LG3305/Tuner need to be attached in cx23885-dvb.c Signed-off-by: Steven Toth <stoth@kernellabs.com> 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.c21
-rw-r--r--drivers/media/video/cx23885/cx23885.h1
3 files changed, 23 insertions, 0 deletions
diff --git a/Documentation/video4linux/CARDLIST.cx23885 b/Documentation/video4linux/CARDLIST.cx23885
index 91aa3c0f0dd2..9f07a6a34585 100644
--- a/Documentation/video4linux/CARDLIST.cx23885
+++ b/Documentation/video4linux/CARDLIST.cx23885
@@ -16,3 +16,4 @@
16 15 -> TeVii S470 [d470:9022] 16 15 -> TeVii S470 [d470:9022]
17 16 -> DVBWorld DVB-S2 2005 [0001:2005] 17 16 -> DVBWorld DVB-S2 2005 [0001:2005]
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]
diff --git a/drivers/media/video/cx23885/cx23885-cards.c b/drivers/media/video/cx23885/cx23885-cards.c
index 6d6293f7d428..49c6634c6327 100644
--- a/drivers/media/video/cx23885/cx23885-cards.c
+++ b/drivers/media/video/cx23885/cx23885-cards.c
@@ -181,6 +181,9 @@ struct cx23885_board cx23885_boards[] = {
181 .portb = CX23885_MPEG_DVB, 181 .portb = CX23885_MPEG_DVB,
182 .portc = CX23885_MPEG_DVB, 182 .portc = CX23885_MPEG_DVB,
183 }, 183 },
184 [CX23885_BOARD_HAUPPAUGE_HVR1270] = {
185 .name = "Hauppauge WinTV-HVR1270",
186 },
184}; 187};
185const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); 188const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards);
186 189
@@ -280,6 +283,10 @@ struct cx23885_subid cx23885_subids[] = {
280 .subvendor = 0x1b55, 283 .subvendor = 0x1b55,
281 .subdevice = 0x2a2c, 284 .subdevice = 0x2a2c,
282 .card = CX23885_BOARD_NETUP_DUAL_DVBS2_CI, 285 .card = CX23885_BOARD_NETUP_DUAL_DVBS2_CI,
286 }, {
287 .subvendor = 0x0070,
288 .subdevice = 0x2211,
289 .card = CX23885_BOARD_HAUPPAUGE_HVR1270,
283 }, 290 },
284}; 291};
285const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); 292const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids);
@@ -619,6 +626,17 @@ void cx23885_gpio_setup(struct cx23885_dev *dev)
619 /* enable irq */ 626 /* enable irq */
620 cx_write(GPIO_ISM, 0x00000000);/* INTERRUPTS active low*/ 627 cx_write(GPIO_ISM, 0x00000000);/* INTERRUPTS active low*/
621 break; 628 break;
629 case CX23885_BOARD_HAUPPAUGE_HVR1270:
630 /* GPIO-6 I2C Gate which can isolate the 3305 from the bus */
631 /* GPIO-9 LG3305 reset */
632
633 /* Put the parts into reset and back */
634 cx23885_gpio_enable(dev, GPIO_9 | GPIO_6, 1);
635 cx23885_gpio_set(dev, GPIO_9 | GPIO_6);
636 cx23885_gpio_clear(dev, GPIO_9);
637 mdelay(20);
638 cx23885_gpio_set(dev, GPIO_9);
639 break;
622 } 640 }
623} 641}
624 642
@@ -631,6 +649,7 @@ int cx23885_ir_init(struct cx23885_dev *dev)
631 case CX23885_BOARD_HAUPPAUGE_HVR1800: 649 case CX23885_BOARD_HAUPPAUGE_HVR1800:
632 case CX23885_BOARD_HAUPPAUGE_HVR1200: 650 case CX23885_BOARD_HAUPPAUGE_HVR1200:
633 case CX23885_BOARD_HAUPPAUGE_HVR1400: 651 case CX23885_BOARD_HAUPPAUGE_HVR1400:
652 case CX23885_BOARD_HAUPPAUGE_HVR1270:
634 /* FIXME: Implement me */ 653 /* FIXME: Implement me */
635 break; 654 break;
636 case CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP: 655 case CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP:
@@ -666,6 +685,7 @@ void cx23885_card_setup(struct cx23885_dev *dev)
666 case CX23885_BOARD_HAUPPAUGE_HVR1800lp: 685 case CX23885_BOARD_HAUPPAUGE_HVR1800lp:
667 case CX23885_BOARD_HAUPPAUGE_HVR1200: 686 case CX23885_BOARD_HAUPPAUGE_HVR1200:
668 case CX23885_BOARD_HAUPPAUGE_HVR1700: 687 case CX23885_BOARD_HAUPPAUGE_HVR1700:
688 case CX23885_BOARD_HAUPPAUGE_HVR1270:
669 if (dev->i2c_bus[0].i2c_rc == 0) 689 if (dev->i2c_bus[0].i2c_rc == 0)
670 hauppauge_eeprom(dev, eeprom+0xc0); 690 hauppauge_eeprom(dev, eeprom+0xc0);
671 break; 691 break;
@@ -723,6 +743,7 @@ void cx23885_card_setup(struct cx23885_dev *dev)
723 case CX23885_BOARD_HAUPPAUGE_HVR1400: 743 case CX23885_BOARD_HAUPPAUGE_HVR1400:
724 case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H: 744 case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H:
725 case CX23885_BOARD_COMPRO_VIDEOMATE_E650F: 745 case CX23885_BOARD_COMPRO_VIDEOMATE_E650F:
746 case CX23885_BOARD_HAUPPAUGE_HVR1270:
726 default: 747 default:
727 ts2->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */ 748 ts2->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */
728 ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */ 749 ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */
diff --git a/drivers/media/video/cx23885/cx23885.h b/drivers/media/video/cx23885/cx23885.h
index d9b03f83fa31..13dccb8ce0df 100644
--- a/drivers/media/video/cx23885/cx23885.h
+++ b/drivers/media/video/cx23885/cx23885.h
@@ -71,6 +71,7 @@
71#define CX23885_BOARD_TEVII_S470 15 71#define CX23885_BOARD_TEVII_S470 15
72#define CX23885_BOARD_DVBWORLD_2005 16 72#define CX23885_BOARD_DVBWORLD_2005 16
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 75
75#define GPIO_0 0x00000001 76#define GPIO_0 0x00000001
76#define GPIO_1 0x00000002 77#define GPIO_1 0x00000002