diff options
Diffstat (limited to 'drivers/media/video/cx23885/cx23885-cards.c')
-rw-r--r-- | drivers/media/video/cx23885/cx23885-cards.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/drivers/media/video/cx23885/cx23885-cards.c b/drivers/media/video/cx23885/cx23885-cards.c index 859510f7469..0f4b325f2d8 100644 --- a/drivers/media/video/cx23885/cx23885-cards.c +++ b/drivers/media/video/cx23885/cx23885-cards.c | |||
@@ -138,6 +138,10 @@ struct cx23885_board cx23885_boards[] = { | |||
138 | .name = "Hauppauge WinTV-HVR1700", | 138 | .name = "Hauppauge WinTV-HVR1700", |
139 | .portc = CX23885_MPEG_DVB, | 139 | .portc = CX23885_MPEG_DVB, |
140 | }, | 140 | }, |
141 | [CX23885_BOARD_HAUPPAUGE_HVR1400] = { | ||
142 | .name = "Hauppauge WinTV-HVR1400", | ||
143 | .portc = CX23885_MPEG_DVB, | ||
144 | }, | ||
141 | }; | 145 | }; |
142 | const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); | 146 | const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); |
143 | 147 | ||
@@ -197,6 +201,10 @@ struct cx23885_subid cx23885_subids[] = { | |||
197 | .subvendor = 0x0070, | 201 | .subvendor = 0x0070, |
198 | .subdevice = 0x8101, | 202 | .subdevice = 0x8101, |
199 | .card = CX23885_BOARD_HAUPPAUGE_HVR1700, | 203 | .card = CX23885_BOARD_HAUPPAUGE_HVR1700, |
204 | }, { | ||
205 | .subvendor = 0x0070, | ||
206 | .subdevice = 0x8010, | ||
207 | .card = CX23885_BOARD_HAUPPAUGE_HVR1400, | ||
200 | }, | 208 | }, |
201 | }; | 209 | }; |
202 | const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); | 210 | const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); |
@@ -251,6 +259,9 @@ static void hauppauge_eeprom(struct cx23885_dev *dev, u8 *eeprom_data) | |||
251 | case 79561: /* WinTV-HVR1250 (PCIe, OEM, No IR, half height, ATSC and Basic analog */ | 259 | case 79561: /* WinTV-HVR1250 (PCIe, OEM, No IR, half height, ATSC and Basic analog */ |
252 | case 79571: /* WinTV-HVR1250 (PCIe, OEM, No IR, full height, ATSC and Basic analog */ | 260 | case 79571: /* WinTV-HVR1250 (PCIe, OEM, No IR, full height, ATSC and Basic analog */ |
253 | case 79671: /* WinTV-HVR1250 (PCIe, OEM, No IR, half height, ATSC and Basic analog */ | 261 | case 79671: /* WinTV-HVR1250 (PCIe, OEM, No IR, half height, ATSC and Basic analog */ |
262 | case 80019: | ||
263 | /* WinTV-HVR1400 (Express Card, Retail, IR, | ||
264 | * DVB-T and Basic analog */ | ||
254 | case 81519: | 265 | case 81519: |
255 | /* WinTV-HVR1700 (PCIe, Retail, No IR, half height, | 266 | /* WinTV-HVR1700 (PCIe, Retail, No IR, half height, |
256 | * DVB-T and MPEG2 HW Encoder */ | 267 | * DVB-T and MPEG2 HW Encoder */ |
@@ -365,6 +376,18 @@ void cx23885_gpio_setup(struct cx23885_dev *dev) | |||
365 | mdelay(20); | 376 | mdelay(20); |
366 | cx_set(GP0_IO, 0x00050005); | 377 | cx_set(GP0_IO, 0x00050005); |
367 | break; | 378 | break; |
379 | case CX23885_BOARD_HAUPPAUGE_HVR1400: | ||
380 | /* GPIO-0 Dibcom7000p demodulator reset */ | ||
381 | /* GPIO-2 xc3028L tuner reset */ | ||
382 | /* GPIO-13 LED */ | ||
383 | |||
384 | /* Put the parts into reset and back */ | ||
385 | cx_set(GP0_IO, 0x00050000); | ||
386 | mdelay(20); | ||
387 | cx_clear(GP0_IO, 0x00000005); | ||
388 | mdelay(20); | ||
389 | cx_set(GP0_IO, 0x00050005); | ||
390 | break; | ||
368 | } | 391 | } |
369 | } | 392 | } |
370 | 393 | ||
@@ -376,6 +399,7 @@ int cx23885_ir_init(struct cx23885_dev *dev) | |||
376 | case CX23885_BOARD_HAUPPAUGE_HVR1500Q: | 399 | case CX23885_BOARD_HAUPPAUGE_HVR1500Q: |
377 | case CX23885_BOARD_HAUPPAUGE_HVR1800: | 400 | case CX23885_BOARD_HAUPPAUGE_HVR1800: |
378 | case CX23885_BOARD_HAUPPAUGE_HVR1200: | 401 | case CX23885_BOARD_HAUPPAUGE_HVR1200: |
402 | case CX23885_BOARD_HAUPPAUGE_HVR1400: | ||
379 | /* FIXME: Implement me */ | 403 | /* FIXME: Implement me */ |
380 | break; | 404 | break; |
381 | } | 405 | } |
@@ -400,6 +424,7 @@ void cx23885_card_setup(struct cx23885_dev *dev) | |||
400 | case CX23885_BOARD_HAUPPAUGE_HVR1250: | 424 | case CX23885_BOARD_HAUPPAUGE_HVR1250: |
401 | case CX23885_BOARD_HAUPPAUGE_HVR1500: | 425 | case CX23885_BOARD_HAUPPAUGE_HVR1500: |
402 | case CX23885_BOARD_HAUPPAUGE_HVR1500Q: | 426 | case CX23885_BOARD_HAUPPAUGE_HVR1500Q: |
427 | case CX23885_BOARD_HAUPPAUGE_HVR1400: | ||
403 | if (dev->i2c_bus[0].i2c_rc == 0) | 428 | if (dev->i2c_bus[0].i2c_rc == 0) |
404 | hauppauge_eeprom(dev, eeprom+0x80); | 429 | hauppauge_eeprom(dev, eeprom+0x80); |
405 | break; | 430 | break; |
@@ -425,6 +450,7 @@ void cx23885_card_setup(struct cx23885_dev *dev) | |||
425 | case CX23885_BOARD_HAUPPAUGE_HVR1800lp: | 450 | case CX23885_BOARD_HAUPPAUGE_HVR1800lp: |
426 | case CX23885_BOARD_HAUPPAUGE_HVR1200: | 451 | case CX23885_BOARD_HAUPPAUGE_HVR1200: |
427 | case CX23885_BOARD_HAUPPAUGE_HVR1700: | 452 | case CX23885_BOARD_HAUPPAUGE_HVR1700: |
453 | case CX23885_BOARD_HAUPPAUGE_HVR1400: | ||
428 | default: | 454 | default: |
429 | ts2->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */ | 455 | ts2->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */ |
430 | ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */ | 456 | ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */ |