diff options
Diffstat (limited to 'drivers/media/video/cx88/cx88-cards.c')
-rw-r--r-- | drivers/media/video/cx88/cx88-cards.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c index 29ba5d53ce34..4a9998f4a618 100644 --- a/drivers/media/video/cx88/cx88-cards.c +++ b/drivers/media/video/cx88/cx88-cards.c | |||
@@ -1280,6 +1280,29 @@ struct cx88_board cx88_boards[] = { | |||
1280 | .gpio3 = 0x02000000, | 1280 | .gpio3 = 0x02000000, |
1281 | }}, | 1281 | }}, |
1282 | }, | 1282 | }, |
1283 | [CX88_BOARD_HAUPPAUGE_HVR1300] = { | ||
1284 | .name = "Hauppauge WinTV-HVR1300 DVB-T/Hybrid MPEG Encoder", | ||
1285 | .tuner_type = TUNER_PHILIPS_FMD1216ME_MK3, | ||
1286 | .radio_type = UNSET, | ||
1287 | .tuner_addr = ADDR_UNSET, | ||
1288 | .radio_addr = ADDR_UNSET, | ||
1289 | .tda9887_conf = TDA9887_PRESENT, | ||
1290 | .input = {{ | ||
1291 | .type = CX88_VMUX_TELEVISION, | ||
1292 | .vmux = 0, | ||
1293 | .gpio0 = 0xe780, | ||
1294 | },{ | ||
1295 | .type = CX88_VMUX_COMPOSITE1, | ||
1296 | .vmux = 1, | ||
1297 | .gpio0 = 0xe780, | ||
1298 | },{ | ||
1299 | .type = CX88_VMUX_SVIDEO, | ||
1300 | .vmux = 2, | ||
1301 | .gpio0 = 0xe780, | ||
1302 | }}, | ||
1303 | /* fixme: Add radio support */ | ||
1304 | .dvb = 1, | ||
1305 | }, | ||
1283 | }; | 1306 | }; |
1284 | const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards); | 1307 | const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards); |
1285 | 1308 | ||
@@ -1542,6 +1565,18 @@ struct cx88_subid cx88_subids[] = { | |||
1542 | .subvendor = 0xc180, | 1565 | .subvendor = 0xc180, |
1543 | .subdevice = 0xc980, | 1566 | .subdevice = 0xc980, |
1544 | .card = CX88_BOARD_TE_DTV_250_OEM_SWANN, | 1567 | .card = CX88_BOARD_TE_DTV_250_OEM_SWANN, |
1568 | },{ | ||
1569 | .subvendor = 0x0070, | ||
1570 | .subdevice = 0x9600, | ||
1571 | .card = CX88_BOARD_HAUPPAUGE_HVR1300, | ||
1572 | },{ | ||
1573 | .subvendor = 0x0070, | ||
1574 | .subdevice = 0x9601, | ||
1575 | .card = CX88_BOARD_HAUPPAUGE_HVR1300, | ||
1576 | },{ | ||
1577 | .subvendor = 0x0070, | ||
1578 | .subdevice = 0x9602, | ||
1579 | .card = CX88_BOARD_HAUPPAUGE_HVR1300, | ||
1545 | }, | 1580 | }, |
1546 | }; | 1581 | }; |
1547 | const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids); | 1582 | const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids); |
@@ -1597,6 +1632,11 @@ static void hauppauge_eeprom(struct cx88_core *core, u8 *eeprom_data) | |||
1597 | case 92000: /* Nova-SE2 (OEM, No Video or IR) */ | 1632 | case 92000: /* Nova-SE2 (OEM, No Video or IR) */ |
1598 | case 94009: /* WinTV-HVR1100 (Video and IR Retail) */ | 1633 | case 94009: /* WinTV-HVR1100 (Video and IR Retail) */ |
1599 | case 94501: /* WinTV-HVR1100 (Video and IR OEM) */ | 1634 | case 94501: /* WinTV-HVR1100 (Video and IR OEM) */ |
1635 | case 96009: /* WinTV-HVR1300 (PAL Video, MPEG Video and IR RX) */ | ||
1636 | case 96019: /* WinTV-HVR1300 (PAL Video, MPEG Video and IR RX/TX) */ | ||
1637 | case 96559: /* WinTV-HVR1300 (PAL Video, MPEG Video no IR) */ | ||
1638 | case 96569: /* WinTV-HVR1300 () */ | ||
1639 | case 96659: /* WinTV-HVR1300 () */ | ||
1600 | case 98559: /* WinTV-HVR1100LP (Video no IR, Retail - Low Profile) */ | 1640 | case 98559: /* WinTV-HVR1100LP (Video no IR, Retail - Low Profile) */ |
1601 | /* known */ | 1641 | /* known */ |
1602 | break; | 1642 | break; |
@@ -1723,6 +1763,22 @@ void cx88_card_list(struct cx88_core *core, struct pci_dev *pci) | |||
1723 | core->name, i, cx88_boards[i].name); | 1763 | core->name, i, cx88_boards[i].name); |
1724 | } | 1764 | } |
1725 | 1765 | ||
1766 | void cx88_card_setup_pre_i2c(struct cx88_core *core) | ||
1767 | { | ||
1768 | switch (core->board) { | ||
1769 | case CX88_BOARD_HAUPPAUGE_HVR1300: | ||
1770 | /* Bring the 702 demod up before i2c scanning/attach or devices are hidden */ | ||
1771 | /* We leave here with the 702 on the bus */ | ||
1772 | cx_write(MO_GP0_IO, 0x0000e780); | ||
1773 | udelay(1000); | ||
1774 | cx_clear(MO_GP0_IO, 0x00000080); | ||
1775 | udelay(50); | ||
1776 | cx_set(MO_GP0_IO, 0x00000080); /* 702 out of reset */ | ||
1777 | udelay(1000); | ||
1778 | break; | ||
1779 | } | ||
1780 | } | ||
1781 | |||
1726 | void cx88_card_setup(struct cx88_core *core) | 1782 | void cx88_card_setup(struct cx88_core *core) |
1727 | { | 1783 | { |
1728 | static u8 eeprom[256]; | 1784 | static u8 eeprom[256]; |
@@ -1752,6 +1808,7 @@ void cx88_card_setup(struct cx88_core *core) | |||
1752 | case CX88_BOARD_HAUPPAUGE_HVR1100: | 1808 | case CX88_BOARD_HAUPPAUGE_HVR1100: |
1753 | case CX88_BOARD_HAUPPAUGE_HVR1100LP: | 1809 | case CX88_BOARD_HAUPPAUGE_HVR1100LP: |
1754 | case CX88_BOARD_HAUPPAUGE_HVR3000: | 1810 | case CX88_BOARD_HAUPPAUGE_HVR3000: |
1811 | case CX88_BOARD_HAUPPAUGE_HVR1300: | ||
1755 | if (0 == core->i2c_rc) | 1812 | if (0 == core->i2c_rc) |
1756 | hauppauge_eeprom(core,eeprom); | 1813 | hauppauge_eeprom(core,eeprom); |
1757 | break; | 1814 | break; |