diff options
author | Markus Rechberger <mrechberger@gmail.com> | 2006-01-23 14:11:10 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@brturbo.com.br> | 2006-01-23 14:11:10 -0500 |
commit | a94e95b443811c127734ef10f3b7d2220532c1d2 (patch) | |
tree | 4db69dec34628c32dd40788373f3503670ccd542 /drivers | |
parent | cbcf749382a7bbf70b1bbf6eeb3234d1682c9f17 (diff) |
V4L/DVB (3432): Hauppauge HVR 900 Composite support
- Hauppauge HVR 900 Composite support
Signed-off-by: Markus Rechberger <mrechberger@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/media/video/em28xx/em28xx-cards.c | 67 | ||||
-rw-r--r-- | drivers/media/video/em28xx/em28xx-video.c | 1 | ||||
-rw-r--r-- | drivers/media/video/em28xx/em28xx.h | 2 |
3 files changed, 56 insertions, 14 deletions
diff --git a/drivers/media/video/em28xx/em28xx-cards.c b/drivers/media/video/em28xx/em28xx-cards.c index 58f7b4194a0d..ed428c58b73d 100644 --- a/drivers/media/video/em28xx/em28xx-cards.c +++ b/drivers/media/video/em28xx/em28xx-cards.c | |||
@@ -136,6 +136,28 @@ struct em28xx_board em28xx_boards[] = { | |||
136 | .amux = 1, | 136 | .amux = 1, |
137 | }}, | 137 | }}, |
138 | }, | 138 | }, |
139 | [EM2880_BOARD_WINTV_HVR_900] = { | ||
140 | .name = "WinTV HVR 900", | ||
141 | .vchannels = 3, | ||
142 | .norm = VIDEO_MODE_PAL, | ||
143 | .has_tuner = 0, | ||
144 | .tda9887_conf = TDA9887_PRESENT, | ||
145 | .has_tuner = 1, | ||
146 | .decoder = EM28XX_TVP5150, | ||
147 | .input = {{ | ||
148 | .type = EM28XX_VMUX_COMPOSITE1, | ||
149 | .vmux = 2, | ||
150 | .amux = 0, | ||
151 | },{ | ||
152 | .type = EM28XX_VMUX_TELEVISION, | ||
153 | .vmux = 0, | ||
154 | .amux = 1, | ||
155 | },{ | ||
156 | .type = EM28XX_VMUX_SVIDEO, | ||
157 | .vmux = 9, | ||
158 | .amux = 1, | ||
159 | }}, | ||
160 | }, | ||
139 | [EM2820_BOARD_MSI_VOX_USB_2] = { | 161 | [EM2820_BOARD_MSI_VOX_USB_2] = { |
140 | .name = "MSI VOX USB 2.0", | 162 | .name = "MSI VOX USB 2.0", |
141 | .vchannels = 3, | 163 | .vchannels = 3, |
@@ -254,30 +276,47 @@ struct usb_device_id em28xx_id_table [] = { | |||
254 | { USB_DEVICE(0x2304, 0x0208), .driver_info = EM2820_BOARD_PINNACLE_USB_2 }, | 276 | { USB_DEVICE(0x2304, 0x0208), .driver_info = EM2820_BOARD_PINNACLE_USB_2 }, |
255 | { USB_DEVICE(0x2040, 0x4200), .driver_info = EM2820_BOARD_HAUPPAUGE_WINTV_USB_2 }, | 277 | { USB_DEVICE(0x2040, 0x4200), .driver_info = EM2820_BOARD_HAUPPAUGE_WINTV_USB_2 }, |
256 | { USB_DEVICE(0x2304, 0x0207), .driver_info = EM2820_BOARD_PINNACLE_DVC_90 }, | 278 | { USB_DEVICE(0x2304, 0x0207), .driver_info = EM2820_BOARD_PINNACLE_DVC_90 }, |
279 | { USB_DEVICE(0x2040, 0x6500), .driver_info = EM2880_BOARD_WINTV_HVR_900 }, | ||
257 | { }, | 280 | { }, |
258 | }; | 281 | }; |
259 | 282 | ||
283 | void em28xx_pre_card_setup(struct em28xx *dev) | ||
284 | { | ||
285 | /* request some modules */ | ||
286 | switch(dev->model){ | ||
287 | case EM2880_BOARD_WINTV_HVR_900: | ||
288 | { | ||
289 | em28xx_write_regs_req(dev, 0x00, 0x08, "\x7d", 1); // reset through GPIO? | ||
290 | break; | ||
291 | } | ||
292 | } | ||
293 | } | ||
294 | |||
260 | void em28xx_card_setup(struct em28xx *dev) | 295 | void em28xx_card_setup(struct em28xx *dev) |
261 | { | 296 | { |
262 | /* request some modules */ | 297 | /* request some modules */ |
263 | if (dev->model == EM2820_BOARD_HAUPPAUGE_WINTV_USB_2) { | 298 | switch(dev->model){ |
264 | struct tveeprom tv; | 299 | case EM2820_BOARD_HAUPPAUGE_WINTV_USB_2: |
300 | { | ||
301 | struct tveeprom tv; | ||
265 | #ifdef CONFIG_MODULES | 302 | #ifdef CONFIG_MODULES |
266 | request_module("tveeprom"); | 303 | request_module("tveeprom"); |
267 | request_module("ir-kbd-i2c"); | 304 | request_module("ir-kbd-i2c"); |
268 | request_module("msp3400"); | 305 | request_module("msp3400"); |
269 | #endif | 306 | #endif |
270 | /* Call first TVeeprom */ | 307 | /* Call first TVeeprom */ |
271 | 308 | ||
272 | dev->i2c_client.addr = 0xa0 >> 1; | 309 | dev->i2c_client.addr = 0xa0 >> 1; |
273 | tveeprom_hauppauge_analog(&dev->i2c_client, &tv, dev->eedata); | 310 | tveeprom_hauppauge_analog(&dev->i2c_client, &tv, dev->eedata); |
274 | 311 | ||
275 | dev->tuner_type= tv.tuner_type; | 312 | dev->tuner_type= tv.tuner_type; |
276 | if (tv.audio_processor == AUDIO_CHIP_MSP34XX) { | 313 | if (tv.audio_processor == AUDIO_CHIP_MSP34XX) { |
277 | dev->i2s_speed=2048000; | 314 | dev->i2s_speed=2048000; |
278 | dev->has_msp34xx=1; | 315 | dev->has_msp34xx=1; |
279 | } else | 316 | } else |
280 | dev->has_msp34xx=0; | 317 | dev->has_msp34xx=0; |
318 | break; | ||
319 | } | ||
281 | } | 320 | } |
282 | } | 321 | } |
283 | 322 | ||
diff --git a/drivers/media/video/em28xx/em28xx-video.c b/drivers/media/video/em28xx/em28xx-video.c index 1b0e10d5edd4..1726b2c26b6c 100644 --- a/drivers/media/video/em28xx/em28xx-video.c +++ b/drivers/media/video/em28xx/em28xx-video.c | |||
@@ -1766,6 +1766,7 @@ static int em28xx_init_dev(struct em28xx **devhandle, struct usb_device *udev, | |||
1766 | dev->vpic.depth = 16; | 1766 | dev->vpic.depth = 16; |
1767 | dev->vpic.palette = VIDEO_PALETTE_YUV422; | 1767 | dev->vpic.palette = VIDEO_PALETTE_YUV422; |
1768 | 1768 | ||
1769 | em28xx_pre_card_setup(dev); | ||
1769 | #ifdef CONFIG_MODULES | 1770 | #ifdef CONFIG_MODULES |
1770 | /* request some modules */ | 1771 | /* request some modules */ |
1771 | if (dev->decoder == EM28XX_SAA7113 || dev->decoder == EM28XX_SAA7114) | 1772 | if (dev->decoder == EM28XX_SAA7113 || dev->decoder == EM28XX_SAA7114) |
diff --git a/drivers/media/video/em28xx/em28xx.h b/drivers/media/video/em28xx/em28xx.h index 119fdbedc7bf..8269cca7dcdb 100644 --- a/drivers/media/video/em28xx/em28xx.h +++ b/drivers/media/video/em28xx/em28xx.h | |||
@@ -41,6 +41,7 @@ | |||
41 | #define EM2800_BOARD_LEADTEK_WINFAST_USBII 7 | 41 | #define EM2800_BOARD_LEADTEK_WINFAST_USBII 7 |
42 | #define EM2800_BOARD_KWORLD_USB2800 8 | 42 | #define EM2800_BOARD_KWORLD_USB2800 8 |
43 | #define EM2820_BOARD_PINNACLE_DVC_90 9 | 43 | #define EM2820_BOARD_PINNACLE_DVC_90 9 |
44 | #define EM2880_BOARD_WINTV_HVR_900 10 | ||
44 | 45 | ||
45 | #define UNSET -1 | 46 | #define UNSET -1 |
46 | 47 | ||
@@ -327,6 +328,7 @@ int em28xx_set_alternate(struct em28xx *dev); | |||
327 | 328 | ||
328 | /* Provided by em28xx-cards.c */ | 329 | /* Provided by em28xx-cards.c */ |
329 | extern int em2800_variant_detect(struct usb_device* udev,int model); | 330 | extern int em2800_variant_detect(struct usb_device* udev,int model); |
331 | extern void em28xx_pre_card_setup(struct em28xx *dev); | ||
330 | extern void em28xx_card_setup(struct em28xx *dev); | 332 | extern void em28xx_card_setup(struct em28xx *dev); |
331 | extern struct em28xx_board em28xx_boards[]; | 333 | extern struct em28xx_board em28xx_boards[]; |
332 | extern struct usb_device_id em28xx_id_table[]; | 334 | extern struct usb_device_id em28xx_id_table[]; |