diff options
-rw-r--r-- | drivers/media/video/cx23885/cx23885-cards.c | 26 | ||||
-rw-r--r-- | drivers/media/video/cx23885/cx23885-core.c | 7 | ||||
-rw-r--r-- | drivers/media/video/cx23885/cx23885-dvb.c | 24 | ||||
-rw-r--r-- | drivers/media/video/cx23885/cx23885.h | 1 |
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 | }; |
92 | const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); | 113 | const 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 | }; |
116 | const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); | 141 | const 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 | ||
100 | static 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 | ||
101 | static struct mt2131_config hauppauge_hvr1800lp_rev2_tunerconfig = { | 111 | static 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 | ||
119 | static struct mt2131_config hauppauge_hvr1250_tunerconfig = { | ||
120 | 0x61 | ||
121 | }; | ||
122 | |||
109 | static int dvb_register(struct cx23885_tsport *port) | 123 | static 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 | ||
57 | enum cx23885_itype { | 58 | enum cx23885_itype { |
58 | CX23885_VMUX_COMPOSITE1 = 1, | 59 | CX23885_VMUX_COMPOSITE1 = 1, |