aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/cx23885
diff options
context:
space:
mode:
authorSteven Toth <stoth@hauppauge.com>2007-08-22 20:01:20 -0400
committerMauro Carvalho Chehab <mchehab@infradead.org>2007-10-09 21:08:20 -0400
commita77743bc2d29197d48a6f4ae9f8f9e0f0b0ba5d7 (patch)
tree54297211d81fe39bcfab7be65a2ff92339072eda /drivers/media/video/cx23885
parent4823e9ee9f45c78777d040742b5e46336a42c8b3 (diff)
V4L/DVB (6168): cx23885: Added HVR1250 ATSC support
Adding support for the Hauppauge HVR1250 PCIe ATSC board. Signed-off-by: Steven Toth <stoth@hauppauge.com> Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/video/cx23885')
-rw-r--r--drivers/media/video/cx23885/cx23885-cards.c26
-rw-r--r--drivers/media/video/cx23885/cx23885-core.c7
-rw-r--r--drivers/media/video/cx23885/cx23885-dvb.c24
-rw-r--r--drivers/media/video/cx23885/cx23885.h1
4 files changed, 58 insertions, 0 deletions
diff --git a/drivers/media/video/cx23885/cx23885-cards.c b/drivers/media/video/cx23885/cx23885-cards.c
index 8bb3fe4a876c..e6d34fb5b943 100644
--- a/drivers/media/video/cx23885/cx23885-cards.c
+++ b/drivers/media/video/cx23885/cx23885-cards.c
@@ -88,6 +88,27 @@ struct cx23885_board cx23885_boards[] = {
88 .gpio0 = 0xff02, 88 .gpio0 = 0xff02,
89 }}, 89 }},
90 }, 90 },
91 [CX23885_BOARD_HAUPPAUGE_HVR1250] = {
92 .name = "Hauppauge WinTV-HVR1250",
93 .portc = CX23885_MPEG_DVB,
94 .input = {{
95 .type = CX23885_VMUX_TELEVISION,
96 .vmux = 0,
97 .gpio0 = 0xff00,
98 },{
99 .type = CX23885_VMUX_DEBUG,
100 .vmux = 0,
101 .gpio0 = 0xff01,
102 },{
103 .type = CX23885_VMUX_COMPOSITE1,
104 .vmux = 1,
105 .gpio0 = 0xff02,
106 },{
107 .type = CX23885_VMUX_SVIDEO,
108 .vmux = 2,
109 .gpio0 = 0xff02,
110 }},
111 },
91}; 112};
92const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); 113const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards);
93 114
@@ -111,6 +132,10 @@ struct cx23885_subid cx23885_subids[] = {
111 .subvendor = 0x0070, 132 .subvendor = 0x0070,
112 .subdevice = 0x7801, 133 .subdevice = 0x7801,
113 .card = CX23885_BOARD_HAUPPAUGE_HVR1800, 134 .card = CX23885_BOARD_HAUPPAUGE_HVR1800,
135 },{
136 .subvendor = 0x0070,
137 .subdevice = 0x7911,
138 .card = CX23885_BOARD_HAUPPAUGE_HVR1250,
114 }, 139 },
115}; 140};
116const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); 141const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids);
@@ -176,6 +201,7 @@ void cx23885_card_setup(struct cx23885_dev *dev)
176 } 201 }
177 202
178 switch (dev->board) { 203 switch (dev->board) {
204 case CX23885_BOARD_HAUPPAUGE_HVR1250:
179 case CX23885_BOARD_HAUPPAUGE_HVR1800: 205 case CX23885_BOARD_HAUPPAUGE_HVR1800:
180 case CX23885_BOARD_HAUPPAUGE_HVR1800lp: 206 case CX23885_BOARD_HAUPPAUGE_HVR1800lp:
181 if (dev->i2c_bus[0].i2c_rc == 0) 207 if (dev->i2c_bus[0].i2c_rc == 0)
diff --git a/drivers/media/video/cx23885/cx23885-core.c b/drivers/media/video/cx23885/cx23885-core.c
index d2bc3e586623..1148d684188a 100644
--- a/drivers/media/video/cx23885/cx23885-core.c
+++ b/drivers/media/video/cx23885/cx23885-core.c
@@ -603,6 +603,11 @@ void cx23885_reset(struct cx23885_dev *dev)
603 cx23885_sram_channel_setup(dev, &dev->sram_channels[ SRAM_CH09 ], 128, 0); 603 cx23885_sram_channel_setup(dev, &dev->sram_channels[ SRAM_CH09 ], 128, 0);
604 604
605 switch(dev->board) { 605 switch(dev->board) {
606 case CX23885_BOARD_HAUPPAUGE_HVR1250:
607 /* GPIO-0 cx24227 demodulator reset */
608 dprintk( 1, "%s() Configuring HVR1250 GPIO's\n", __FUNCTION__);
609 cx_set(GP0_IO, 0x00010001); /* Bring the part out of reset */
610 break;
606 case CX23885_BOARD_HAUPPAUGE_HVR1800: 611 case CX23885_BOARD_HAUPPAUGE_HVR1800:
607 /* GPIO-0 656_CLK */ 612 /* GPIO-0 656_CLK */
608 /* GPIO-1 656_D0 */ 613 /* GPIO-1 656_D0 */
@@ -650,6 +655,7 @@ static int cx23885_ir_init(struct cx23885_dev *dev)
650 dprintk(1, "%s()\n", __FUNCTION__); 655 dprintk(1, "%s()\n", __FUNCTION__);
651 656
652 switch (dev->board) { 657 switch (dev->board) {
658 case CX23885_BOARD_HAUPPAUGE_HVR1250:
653 case CX23885_BOARD_HAUPPAUGE_HVR1800: 659 case CX23885_BOARD_HAUPPAUGE_HVR1800:
654 dprintk(1, "%s() FIXME - Implement IR support\n", __FUNCTION__); 660 dprintk(1, "%s() FIXME - Implement IR support\n", __FUNCTION__);
655 break; 661 break;
@@ -1023,6 +1029,7 @@ static int cx23885_start_dma(struct cx23885_tsport *port,
1023 cx_write(GPIO2, 0x00); 1029 cx_write(GPIO2, 0x00);
1024 1030
1025 switch (dev->board) { 1031 switch (dev->board) {
1032 case CX23885_BOARD_HAUPPAUGE_HVR1250:
1026 case CX23885_BOARD_HAUPPAUGE_HVR1800lp: 1033 case CX23885_BOARD_HAUPPAUGE_HVR1800lp:
1027 case CX23885_BOARD_HAUPPAUGE_HVR1800: 1034 case CX23885_BOARD_HAUPPAUGE_HVR1800:
1028 cx_write(port->reg_vld_misc, 0x00); 1035 cx_write(port->reg_vld_misc, 0x00);
diff --git a/drivers/media/video/cx23885/cx23885-dvb.c b/drivers/media/video/cx23885/cx23885-dvb.c
index bd0afc2a0447..63a1dde0d17a 100644
--- a/drivers/media/video/cx23885/cx23885-dvb.c
+++ b/drivers/media/video/cx23885/cx23885-dvb.c
@@ -97,6 +97,16 @@ static struct s5h1409_config hauppauge_hvr1800_config = {
97 .status_mode = S5H1409_DEMODLOCKING 97 .status_mode = S5H1409_DEMODLOCKING
98}; 98};
99 99
100static struct s5h1409_config hauppauge_hvr1250_config = {
101 .demod_address = 0x32 >> 1,
102 .output_mode = S5H1409_SERIAL_OUTPUT,
103 .gpio = S5H1409_GPIO_ON,
104 .if_freq = 44000,
105 .inversion = S5H1409_INVERSION_OFF,
106 .status_mode = S5H1409_DEMODLOCKING
107};
108
109
100 110
101static struct mt2131_config hauppauge_hvr1800lp_rev2_tunerconfig = { 111static struct mt2131_config hauppauge_hvr1800lp_rev2_tunerconfig = {
102 0x61 112 0x61
@@ -106,6 +116,10 @@ static struct mt2131_config hauppauge_hvr1800_tunerconfig = {
106 0x61 116 0x61
107}; 117};
108 118
119static struct mt2131_config hauppauge_hvr1250_tunerconfig = {
120 0x61
121};
122
109static int dvb_register(struct cx23885_tsport *port) 123static int dvb_register(struct cx23885_tsport *port)
110{ 124{
111 struct cx23885_dev *dev = port->dev; 125 struct cx23885_dev *dev = port->dev;
@@ -115,6 +129,16 @@ static int dvb_register(struct cx23885_tsport *port)
115 129
116 /* init frontend */ 130 /* init frontend */
117 switch (dev->board) { 131 switch (dev->board) {
132 case CX23885_BOARD_HAUPPAUGE_HVR1250:
133 port->dvb.frontend = dvb_attach(s5h1409_attach,
134 &hauppauge_hvr1250_config,
135 &dev->i2c_bus[0].i2c_adap);
136 if (port->dvb.frontend != NULL) {
137 dvb_attach(mt2131_attach, port->dvb.frontend,
138 &dev->i2c_bus[0].i2c_adap,
139 &hauppauge_hvr1250_tunerconfig, 0);
140 }
141 break;
118 case CX23885_BOARD_HAUPPAUGE_HVR1800lp: 142 case CX23885_BOARD_HAUPPAUGE_HVR1800lp:
119 port->dvb.frontend = dvb_attach(s5h1409_attach, 143 port->dvb.frontend = dvb_attach(s5h1409_attach,
120 &hauppauge_hvr1800lp_config, 144 &hauppauge_hvr1800lp_config,
diff --git a/drivers/media/video/cx23885/cx23885.h b/drivers/media/video/cx23885/cx23885.h
index 929235440e23..300a97980acb 100644
--- a/drivers/media/video/cx23885/cx23885.h
+++ b/drivers/media/video/cx23885/cx23885.h
@@ -53,6 +53,7 @@
53#define CX23885_BOARD_UNKNOWN 0 53#define CX23885_BOARD_UNKNOWN 0
54#define CX23885_BOARD_HAUPPAUGE_HVR1800lp 1 54#define CX23885_BOARD_HAUPPAUGE_HVR1800lp 1
55#define CX23885_BOARD_HAUPPAUGE_HVR1800 2 55#define CX23885_BOARD_HAUPPAUGE_HVR1800 2
56#define CX23885_BOARD_HAUPPAUGE_HVR1250 3
56 57
57enum cx23885_itype { 58enum cx23885_itype {
58 CX23885_VMUX_COMPOSITE1 = 1, 59 CX23885_VMUX_COMPOSITE1 = 1,