diff options
Diffstat (limited to 'drivers/media/pci/cx23885/cx23885-cards.c')
-rw-r--r-- | drivers/media/pci/cx23885/cx23885-cards.c | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/drivers/media/pci/cx23885/cx23885-cards.c b/drivers/media/pci/cx23885/cx23885-cards.c index 88c257d1161b..db99ca2613ba 100644 --- a/drivers/media/pci/cx23885/cx23885-cards.c +++ b/drivers/media/pci/cx23885/cx23885-cards.c | |||
@@ -680,6 +680,32 @@ struct cx23885_board cx23885_boards[] = { | |||
680 | .portb = CX23885_MPEG_DVB, | 680 | .portb = CX23885_MPEG_DVB, |
681 | .portc = CX23885_MPEG_DVB, | 681 | .portc = CX23885_MPEG_DVB, |
682 | }, | 682 | }, |
683 | [CX23885_BOARD_DVBSKY_T980C] = { | ||
684 | .name = "DVBSky T980C", | ||
685 | .portb = CX23885_MPEG_DVB, | ||
686 | }, | ||
687 | [CX23885_BOARD_DVBSKY_S950C] = { | ||
688 | .name = "DVBSky S950C", | ||
689 | .portb = CX23885_MPEG_DVB, | ||
690 | }, | ||
691 | [CX23885_BOARD_TT_CT2_4500_CI] = { | ||
692 | .name = "Technotrend TT-budget CT2-4500 CI", | ||
693 | .portb = CX23885_MPEG_DVB, | ||
694 | }, | ||
695 | [CX23885_BOARD_DVBSKY_S950] = { | ||
696 | .name = "DVBSky S950", | ||
697 | .portb = CX23885_MPEG_DVB, | ||
698 | }, | ||
699 | [CX23885_BOARD_DVBSKY_S952] = { | ||
700 | .name = "DVBSky S952", | ||
701 | .portb = CX23885_MPEG_DVB, | ||
702 | .portc = CX23885_MPEG_DVB, | ||
703 | }, | ||
704 | [CX23885_BOARD_DVBSKY_T982] = { | ||
705 | .name = "DVBSky T982", | ||
706 | .portb = CX23885_MPEG_DVB, | ||
707 | .portc = CX23885_MPEG_DVB, | ||
708 | }, | ||
683 | }; | 709 | }; |
684 | const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); | 710 | const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); |
685 | 711 | ||
@@ -939,6 +965,30 @@ struct cx23885_subid cx23885_subids[] = { | |||
939 | .subvendor = 0x4254, | 965 | .subvendor = 0x4254, |
940 | .subdevice = 0x9580, | 966 | .subdevice = 0x9580, |
941 | .card = CX23885_BOARD_DVBSKY_T9580, | 967 | .card = CX23885_BOARD_DVBSKY_T9580, |
968 | }, { | ||
969 | .subvendor = 0x4254, | ||
970 | .subdevice = 0x980c, | ||
971 | .card = CX23885_BOARD_DVBSKY_T980C, | ||
972 | }, { | ||
973 | .subvendor = 0x4254, | ||
974 | .subdevice = 0x950c, | ||
975 | .card = CX23885_BOARD_DVBSKY_S950C, | ||
976 | }, { | ||
977 | .subvendor = 0x13c2, | ||
978 | .subdevice = 0x3013, | ||
979 | .card = CX23885_BOARD_TT_CT2_4500_CI, | ||
980 | }, { | ||
981 | .subvendor = 0x4254, | ||
982 | .subdevice = 0x0950, | ||
983 | .card = CX23885_BOARD_DVBSKY_S950, | ||
984 | }, { | ||
985 | .subvendor = 0x4254, | ||
986 | .subdevice = 0x0952, | ||
987 | .card = CX23885_BOARD_DVBSKY_S952, | ||
988 | }, { | ||
989 | .subvendor = 0x4254, | ||
990 | .subdevice = 0x0982, | ||
991 | .card = CX23885_BOARD_DVBSKY_T982, | ||
942 | }, | 992 | }, |
943 | }; | 993 | }; |
944 | const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); | 994 | const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); |
@@ -1534,6 +1584,8 @@ void cx23885_gpio_setup(struct cx23885_dev *dev) | |||
1534 | mdelay(60); | 1584 | mdelay(60); |
1535 | break; | 1585 | break; |
1536 | case CX23885_BOARD_DVBSKY_T9580: | 1586 | case CX23885_BOARD_DVBSKY_T9580: |
1587 | case CX23885_BOARD_DVBSKY_S952: | ||
1588 | case CX23885_BOARD_DVBSKY_T982: | ||
1537 | /* enable GPIO3-18 pins */ | 1589 | /* enable GPIO3-18 pins */ |
1538 | cx_write(MC417_CTL, 0x00000037); | 1590 | cx_write(MC417_CTL, 0x00000037); |
1539 | cx23885_gpio_enable(dev, GPIO_2 | GPIO_11, 1); | 1591 | cx23885_gpio_enable(dev, GPIO_2 | GPIO_11, 1); |
@@ -1541,6 +1593,45 @@ void cx23885_gpio_setup(struct cx23885_dev *dev) | |||
1541 | mdelay(100); | 1593 | mdelay(100); |
1542 | cx23885_gpio_set(dev, GPIO_2 | GPIO_11); | 1594 | cx23885_gpio_set(dev, GPIO_2 | GPIO_11); |
1543 | break; | 1595 | break; |
1596 | case CX23885_BOARD_DVBSKY_T980C: | ||
1597 | case CX23885_BOARD_DVBSKY_S950C: | ||
1598 | case CX23885_BOARD_TT_CT2_4500_CI: | ||
1599 | /* | ||
1600 | * GPIO-0 INTA from CiMax, input | ||
1601 | * GPIO-1 reset CiMax, output, high active | ||
1602 | * GPIO-2 reset demod, output, low active | ||
1603 | * GPIO-3 to GPIO-10 data/addr for CAM | ||
1604 | * GPIO-11 ~CS0 to CiMax1 | ||
1605 | * GPIO-12 ~CS1 to CiMax2 | ||
1606 | * GPIO-13 ADL0 load LSB addr | ||
1607 | * GPIO-14 ADL1 load MSB addr | ||
1608 | * GPIO-15 ~RDY from CiMax | ||
1609 | * GPIO-17 ~RD to CiMax | ||
1610 | * GPIO-18 ~WR to CiMax | ||
1611 | */ | ||
1612 | |||
1613 | cx_set(GP0_IO, 0x00060002); /* GPIO 1/2 as output */ | ||
1614 | cx_clear(GP0_IO, 0x00010004); /* GPIO 0 as input */ | ||
1615 | mdelay(100); /* reset delay */ | ||
1616 | cx_set(GP0_IO, 0x00060004); /* GPIO as out, reset high */ | ||
1617 | cx_clear(GP0_IO, 0x00010002); | ||
1618 | cx_write(MC417_CTL, 0x00000037); /* enable GPIO3-18 pins */ | ||
1619 | |||
1620 | /* GPIO-15 IN as ~ACK, rest as OUT */ | ||
1621 | cx_write(MC417_OEN, 0x00001000); | ||
1622 | |||
1623 | /* ~RD, ~WR high; ADL0, ADL1 low; ~CS0, ~CS1 high */ | ||
1624 | cx_write(MC417_RWD, 0x0000c300); | ||
1625 | |||
1626 | /* enable irq */ | ||
1627 | cx_write(GPIO_ISM, 0x00000000); /* INTERRUPTS active low */ | ||
1628 | break; | ||
1629 | case CX23885_BOARD_DVBSKY_S950: | ||
1630 | cx23885_gpio_enable(dev, GPIO_2, 1); | ||
1631 | cx23885_gpio_clear(dev, GPIO_2); | ||
1632 | msleep(100); | ||
1633 | cx23885_gpio_set(dev, GPIO_2); | ||
1634 | break; | ||
1544 | } | 1635 | } |
1545 | } | 1636 | } |
1546 | 1637 | ||
@@ -1621,6 +1712,13 @@ int cx23885_ir_init(struct cx23885_dev *dev) | |||
1621 | case CX23885_BOARD_MYGICA_X8507: | 1712 | case CX23885_BOARD_MYGICA_X8507: |
1622 | case CX23885_BOARD_TBS_6980: | 1713 | case CX23885_BOARD_TBS_6980: |
1623 | case CX23885_BOARD_TBS_6981: | 1714 | case CX23885_BOARD_TBS_6981: |
1715 | case CX23885_BOARD_DVBSKY_T9580: | ||
1716 | case CX23885_BOARD_DVBSKY_T980C: | ||
1717 | case CX23885_BOARD_DVBSKY_S950C: | ||
1718 | case CX23885_BOARD_TT_CT2_4500_CI: | ||
1719 | case CX23885_BOARD_DVBSKY_S950: | ||
1720 | case CX23885_BOARD_DVBSKY_S952: | ||
1721 | case CX23885_BOARD_DVBSKY_T982: | ||
1624 | if (!enable_885_ir) | 1722 | if (!enable_885_ir) |
1625 | break; | 1723 | break; |
1626 | dev->sd_ir = cx23885_find_hw(dev, CX23885_HW_AV_CORE); | 1724 | dev->sd_ir = cx23885_find_hw(dev, CX23885_HW_AV_CORE); |
@@ -1667,6 +1765,13 @@ void cx23885_ir_fini(struct cx23885_dev *dev) | |||
1667 | case CX23885_BOARD_MYGICA_X8507: | 1765 | case CX23885_BOARD_MYGICA_X8507: |
1668 | case CX23885_BOARD_TBS_6980: | 1766 | case CX23885_BOARD_TBS_6980: |
1669 | case CX23885_BOARD_TBS_6981: | 1767 | case CX23885_BOARD_TBS_6981: |
1768 | case CX23885_BOARD_DVBSKY_T9580: | ||
1769 | case CX23885_BOARD_DVBSKY_T980C: | ||
1770 | case CX23885_BOARD_DVBSKY_S950C: | ||
1771 | case CX23885_BOARD_TT_CT2_4500_CI: | ||
1772 | case CX23885_BOARD_DVBSKY_S950: | ||
1773 | case CX23885_BOARD_DVBSKY_S952: | ||
1774 | case CX23885_BOARD_DVBSKY_T982: | ||
1670 | cx23885_irq_remove(dev, PCI_MSK_AV_CORE); | 1775 | cx23885_irq_remove(dev, PCI_MSK_AV_CORE); |
1671 | /* sd_ir is a duplicate pointer to the AV Core, just clear it */ | 1776 | /* sd_ir is a duplicate pointer to the AV Core, just clear it */ |
1672 | dev->sd_ir = NULL; | 1777 | dev->sd_ir = NULL; |
@@ -1714,6 +1819,13 @@ void cx23885_ir_pci_int_enable(struct cx23885_dev *dev) | |||
1714 | case CX23885_BOARD_MYGICA_X8507: | 1819 | case CX23885_BOARD_MYGICA_X8507: |
1715 | case CX23885_BOARD_TBS_6980: | 1820 | case CX23885_BOARD_TBS_6980: |
1716 | case CX23885_BOARD_TBS_6981: | 1821 | case CX23885_BOARD_TBS_6981: |
1822 | case CX23885_BOARD_DVBSKY_T9580: | ||
1823 | case CX23885_BOARD_DVBSKY_T980C: | ||
1824 | case CX23885_BOARD_DVBSKY_S950C: | ||
1825 | case CX23885_BOARD_TT_CT2_4500_CI: | ||
1826 | case CX23885_BOARD_DVBSKY_S950: | ||
1827 | case CX23885_BOARD_DVBSKY_S952: | ||
1828 | case CX23885_BOARD_DVBSKY_T982: | ||
1717 | if (dev->sd_ir) | 1829 | if (dev->sd_ir) |
1718 | cx23885_irq_add_enable(dev, PCI_MSK_AV_CORE); | 1830 | cx23885_irq_add_enable(dev, PCI_MSK_AV_CORE); |
1719 | break; | 1831 | break; |
@@ -1817,6 +1929,10 @@ void cx23885_card_setup(struct cx23885_dev *dev) | |||
1817 | case CX23885_BOARD_TEVII_S471: | 1929 | case CX23885_BOARD_TEVII_S471: |
1818 | case CX23885_BOARD_DVBWORLD_2005: | 1930 | case CX23885_BOARD_DVBWORLD_2005: |
1819 | case CX23885_BOARD_PROF_8000: | 1931 | case CX23885_BOARD_PROF_8000: |
1932 | case CX23885_BOARD_DVBSKY_T980C: | ||
1933 | case CX23885_BOARD_DVBSKY_S950C: | ||
1934 | case CX23885_BOARD_TT_CT2_4500_CI: | ||
1935 | case CX23885_BOARD_DVBSKY_S950: | ||
1820 | ts1->gen_ctrl_val = 0x5; /* Parallel */ | 1936 | ts1->gen_ctrl_val = 0x5; /* Parallel */ |
1821 | ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */ | 1937 | ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */ |
1822 | ts1->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; | 1938 | ts1->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; |
@@ -1865,6 +1981,7 @@ void cx23885_card_setup(struct cx23885_dev *dev) | |||
1865 | ts2->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; | 1981 | ts2->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; |
1866 | break; | 1982 | break; |
1867 | case CX23885_BOARD_DVBSKY_T9580: | 1983 | case CX23885_BOARD_DVBSKY_T9580: |
1984 | case CX23885_BOARD_DVBSKY_T982: | ||
1868 | ts1->gen_ctrl_val = 0x5; /* Parallel */ | 1985 | ts1->gen_ctrl_val = 0x5; /* Parallel */ |
1869 | ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */ | 1986 | ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */ |
1870 | ts1->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; | 1987 | ts1->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; |
@@ -1872,6 +1989,14 @@ void cx23885_card_setup(struct cx23885_dev *dev) | |||
1872 | ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */ | 1989 | ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */ |
1873 | ts2->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; | 1990 | ts2->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; |
1874 | break; | 1991 | break; |
1992 | case CX23885_BOARD_DVBSKY_S952: | ||
1993 | ts1->gen_ctrl_val = 0x5; /* Parallel */ | ||
1994 | ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */ | ||
1995 | ts1->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; | ||
1996 | ts2->gen_ctrl_val = 0xe; /* Serial bus */ | ||
1997 | ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */ | ||
1998 | ts2->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; | ||
1999 | break; | ||
1875 | case CX23885_BOARD_HAUPPAUGE_HVR1250: | 2000 | case CX23885_BOARD_HAUPPAUGE_HVR1250: |
1876 | case CX23885_BOARD_HAUPPAUGE_HVR1500: | 2001 | case CX23885_BOARD_HAUPPAUGE_HVR1500: |
1877 | case CX23885_BOARD_HAUPPAUGE_HVR1500Q: | 2002 | case CX23885_BOARD_HAUPPAUGE_HVR1500Q: |
@@ -1935,6 +2060,12 @@ void cx23885_card_setup(struct cx23885_dev *dev) | |||
1935 | case CX23885_BOARD_TBS_6980: | 2060 | case CX23885_BOARD_TBS_6980: |
1936 | case CX23885_BOARD_TBS_6981: | 2061 | case CX23885_BOARD_TBS_6981: |
1937 | case CX23885_BOARD_DVBSKY_T9580: | 2062 | case CX23885_BOARD_DVBSKY_T9580: |
2063 | case CX23885_BOARD_DVBSKY_T980C: | ||
2064 | case CX23885_BOARD_DVBSKY_S950C: | ||
2065 | case CX23885_BOARD_TT_CT2_4500_CI: | ||
2066 | case CX23885_BOARD_DVBSKY_S950: | ||
2067 | case CX23885_BOARD_DVBSKY_S952: | ||
2068 | case CX23885_BOARD_DVBSKY_T982: | ||
1938 | dev->sd_cx25840 = v4l2_i2c_new_subdev(&dev->v4l2_dev, | 2069 | dev->sd_cx25840 = v4l2_i2c_new_subdev(&dev->v4l2_dev, |
1939 | &dev->i2c_bus[2].i2c_adap, | 2070 | &dev->i2c_bus[2].i2c_adap, |
1940 | "cx25840", 0x88 >> 1, NULL); | 2071 | "cx25840", 0x88 >> 1, NULL); |