diff options
Diffstat (limited to 'drivers/media/dvb/ttpci/av7110.c')
-rw-r--r-- | drivers/media/dvb/ttpci/av7110.c | 60 |
1 files changed, 41 insertions, 19 deletions
diff --git a/drivers/media/dvb/ttpci/av7110.c b/drivers/media/dvb/ttpci/av7110.c index 21e331d32ca1..939a493b5251 100644 --- a/drivers/media/dvb/ttpci/av7110.c +++ b/drivers/media/dvb/ttpci/av7110.c | |||
@@ -1552,7 +1552,7 @@ static int get_firmware(struct av7110* av7110) | |||
1552 | #endif | 1552 | #endif |
1553 | 1553 | ||
1554 | 1554 | ||
1555 | static int alps_bsrv2_pll_set(struct dvb_frontend* fe, struct dvb_frontend_parameters* params) | 1555 | static int alps_bsrv2_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params) |
1556 | { | 1556 | { |
1557 | struct av7110* av7110 = (struct av7110*) fe->dvb->priv; | 1557 | struct av7110* av7110 = (struct av7110*) fe->dvb->priv; |
1558 | u8 pwr = 0; | 1558 | u8 pwr = 0; |
@@ -1575,6 +1575,8 @@ static int alps_bsrv2_pll_set(struct dvb_frontend* fe, struct dvb_frontend_param | |||
1575 | // NOTE: since we're using a prescaler of 2, we set the | 1575 | // NOTE: since we're using a prescaler of 2, we set the |
1576 | // divisor frequency to 62.5kHz and divide by 125 above | 1576 | // divisor frequency to 62.5kHz and divide by 125 above |
1577 | 1577 | ||
1578 | if (fe->ops->i2c_gate_ctrl) | ||
1579 | fe->ops->i2c_gate_ctrl(fe, 1); | ||
1578 | if (i2c_transfer (&av7110->i2c_adap, &msg, 1) != 1) | 1580 | if (i2c_transfer (&av7110->i2c_adap, &msg, 1) != 1) |
1579 | return -EIO; | 1581 | return -EIO; |
1580 | return 0; | 1582 | return 0; |
@@ -1584,10 +1586,9 @@ static struct ves1x93_config alps_bsrv2_config = { | |||
1584 | .demod_address = 0x08, | 1586 | .demod_address = 0x08, |
1585 | .xin = 90100000UL, | 1587 | .xin = 90100000UL, |
1586 | .invert_pwm = 0, | 1588 | .invert_pwm = 0, |
1587 | .pll_set = alps_bsrv2_pll_set, | ||
1588 | }; | 1589 | }; |
1589 | 1590 | ||
1590 | static int alps_tdbe2_pll_set(struct dvb_frontend* fe, struct dvb_frontend_parameters* params) | 1591 | static int alps_tdbe2_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params) |
1591 | { | 1592 | { |
1592 | struct av7110* av7110 = fe->dvb->priv; | 1593 | struct av7110* av7110 = fe->dvb->priv; |
1593 | u32 div; | 1594 | u32 div; |
@@ -1601,6 +1602,8 @@ static int alps_tdbe2_pll_set(struct dvb_frontend* fe, struct dvb_frontend_param | |||
1601 | data[2] = 0x85 | ((div >> 10) & 0x60); | 1602 | data[2] = 0x85 | ((div >> 10) & 0x60); |
1602 | data[3] = (params->frequency < 174000000 ? 0x88 : params->frequency < 470000000 ? 0x84 : 0x81); | 1603 | data[3] = (params->frequency < 174000000 ? 0x88 : params->frequency < 470000000 ? 0x84 : 0x81); |
1603 | 1604 | ||
1605 | if (fe->ops->i2c_gate_ctrl) | ||
1606 | fe->ops->i2c_gate_ctrl(fe, 1); | ||
1604 | if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1) | 1607 | if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1) |
1605 | return -EIO; | 1608 | return -EIO; |
1606 | return 0; | 1609 | return 0; |
@@ -1611,14 +1614,12 @@ static struct ves1820_config alps_tdbe2_config = { | |||
1611 | .xin = 57840000UL, | 1614 | .xin = 57840000UL, |
1612 | .invert = 1, | 1615 | .invert = 1, |
1613 | .selagc = VES1820_SELAGC_SIGNAMPERR, | 1616 | .selagc = VES1820_SELAGC_SIGNAMPERR, |
1614 | .pll_set = alps_tdbe2_pll_set, | ||
1615 | }; | 1617 | }; |
1616 | 1618 | ||
1617 | 1619 | ||
1618 | 1620 | ||
1619 | 1621 | ||
1620 | static int grundig_29504_451_pll_set(struct dvb_frontend* fe, | 1622 | static int grundig_29504_451_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params) |
1621 | struct dvb_frontend_parameters* params) | ||
1622 | { | 1623 | { |
1623 | struct av7110* av7110 = fe->dvb->priv; | 1624 | struct av7110* av7110 = fe->dvb->priv; |
1624 | u32 div; | 1625 | u32 div; |
@@ -1631,6 +1632,8 @@ static int grundig_29504_451_pll_set(struct dvb_frontend* fe, | |||
1631 | data[2] = 0x8e; | 1632 | data[2] = 0x8e; |
1632 | data[3] = 0x00; | 1633 | data[3] = 0x00; |
1633 | 1634 | ||
1635 | if (fe->ops->i2c_gate_ctrl) | ||
1636 | fe->ops->i2c_gate_ctrl(fe, 1); | ||
1634 | if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1) | 1637 | if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1) |
1635 | return -EIO; | 1638 | return -EIO; |
1636 | return 0; | 1639 | return 0; |
@@ -1638,13 +1641,11 @@ static int grundig_29504_451_pll_set(struct dvb_frontend* fe, | |||
1638 | 1641 | ||
1639 | static struct tda8083_config grundig_29504_451_config = { | 1642 | static struct tda8083_config grundig_29504_451_config = { |
1640 | .demod_address = 0x68, | 1643 | .demod_address = 0x68, |
1641 | .pll_set = grundig_29504_451_pll_set, | ||
1642 | }; | 1644 | }; |
1643 | 1645 | ||
1644 | 1646 | ||
1645 | 1647 | ||
1646 | static int philips_cd1516_pll_set(struct dvb_frontend* fe, | 1648 | static int philips_cd1516_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params) |
1647 | struct dvb_frontend_parameters* params) | ||
1648 | { | 1649 | { |
1649 | struct av7110* av7110 = fe->dvb->priv; | 1650 | struct av7110* av7110 = fe->dvb->priv; |
1650 | u32 div; | 1651 | u32 div; |
@@ -1659,6 +1660,8 @@ static int philips_cd1516_pll_set(struct dvb_frontend* fe, | |||
1659 | data[2] = 0x8e; | 1660 | data[2] = 0x8e; |
1660 | data[3] = (f < 174000000 ? 0xa1 : f < 470000000 ? 0x92 : 0x34); | 1661 | data[3] = (f < 174000000 ? 0xa1 : f < 470000000 ? 0x92 : 0x34); |
1661 | 1662 | ||
1663 | if (fe->ops->i2c_gate_ctrl) | ||
1664 | fe->ops->i2c_gate_ctrl(fe, 1); | ||
1662 | if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1) | 1665 | if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1) |
1663 | return -EIO; | 1666 | return -EIO; |
1664 | return 0; | 1667 | return 0; |
@@ -1669,12 +1672,11 @@ static struct ves1820_config philips_cd1516_config = { | |||
1669 | .xin = 57840000UL, | 1672 | .xin = 57840000UL, |
1670 | .invert = 1, | 1673 | .invert = 1, |
1671 | .selagc = VES1820_SELAGC_SIGNAMPERR, | 1674 | .selagc = VES1820_SELAGC_SIGNAMPERR, |
1672 | .pll_set = philips_cd1516_pll_set, | ||
1673 | }; | 1675 | }; |
1674 | 1676 | ||
1675 | 1677 | ||
1676 | 1678 | ||
1677 | static int alps_tdlb7_pll_set(struct dvb_frontend* fe, struct dvb_frontend_parameters* params) | 1679 | static int alps_tdlb7_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params) |
1678 | { | 1680 | { |
1679 | struct av7110* av7110 = fe->dvb->priv; | 1681 | struct av7110* av7110 = fe->dvb->priv; |
1680 | u32 div, pwr; | 1682 | u32 div, pwr; |
@@ -1693,6 +1695,8 @@ static int alps_tdlb7_pll_set(struct dvb_frontend* fe, struct dvb_frontend_param | |||
1693 | data[2] = 0x85; | 1695 | data[2] = 0x85; |
1694 | data[3] = pwr << 6; | 1696 | data[3] = pwr << 6; |
1695 | 1697 | ||
1698 | if (fe->ops->i2c_gate_ctrl) | ||
1699 | fe->ops->i2c_gate_ctrl(fe, 1); | ||
1696 | if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1) | 1700 | if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1) |
1697 | return -EIO; | 1701 | return -EIO; |
1698 | return 0; | 1702 | return 0; |
@@ -1708,7 +1712,6 @@ static int alps_tdlb7_request_firmware(struct dvb_frontend* fe, const struct fir | |||
1708 | static struct sp8870_config alps_tdlb7_config = { | 1712 | static struct sp8870_config alps_tdlb7_config = { |
1709 | 1713 | ||
1710 | .demod_address = 0x71, | 1714 | .demod_address = 0x71, |
1711 | .pll_set = alps_tdlb7_pll_set, | ||
1712 | .request_firmware = alps_tdlb7_request_firmware, | 1715 | .request_firmware = alps_tdlb7_request_firmware, |
1713 | }; | 1716 | }; |
1714 | 1717 | ||
@@ -1806,7 +1809,7 @@ static u8 nexusca_stv0297_inittab[] = { | |||
1806 | 0xff, 0xff, | 1809 | 0xff, 0xff, |
1807 | }; | 1810 | }; |
1808 | 1811 | ||
1809 | static int nexusca_stv0297_pll_set(struct dvb_frontend* fe, struct dvb_frontend_parameters* params) | 1812 | static int nexusca_stv0297_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params) |
1810 | { | 1813 | { |
1811 | struct av7110* av7110 = fe->dvb->priv; | 1814 | struct av7110* av7110 = fe->dvb->priv; |
1812 | u32 div; | 1815 | u32 div; |
@@ -1832,7 +1835,8 @@ static int nexusca_stv0297_pll_set(struct dvb_frontend* fe, struct dvb_frontend_ | |||
1832 | else | 1835 | else |
1833 | return -EINVAL; | 1836 | return -EINVAL; |
1834 | 1837 | ||
1835 | stv0297_enable_plli2c(fe); | 1838 | if (fe->ops->i2c_gate_ctrl) |
1839 | fe->ops->i2c_gate_ctrl(fe, 1); | ||
1836 | if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1) { | 1840 | if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1) { |
1837 | printk("nexusca: pll transfer failed!\n"); | 1841 | printk("nexusca: pll transfer failed!\n"); |
1838 | return -EIO; | 1842 | return -EIO; |
@@ -1840,8 +1844,8 @@ static int nexusca_stv0297_pll_set(struct dvb_frontend* fe, struct dvb_frontend_ | |||
1840 | 1844 | ||
1841 | // wait for PLL lock | 1845 | // wait for PLL lock |
1842 | for(i = 0; i < 20; i++) { | 1846 | for(i = 0; i < 20; i++) { |
1843 | 1847 | if (fe->ops->i2c_gate_ctrl) | |
1844 | stv0297_enable_plli2c(fe); | 1848 | fe->ops->i2c_gate_ctrl(fe, 1); |
1845 | if (i2c_transfer(&av7110->i2c_adap, &readmsg, 1) == 1) | 1849 | if (i2c_transfer(&av7110->i2c_adap, &readmsg, 1) == 1) |
1846 | if (data[0] & 0x40) break; | 1850 | if (data[0] & 0x40) break; |
1847 | msleep(10); | 1851 | msleep(10); |
@@ -1855,12 +1859,11 @@ static struct stv0297_config nexusca_stv0297_config = { | |||
1855 | .demod_address = 0x1C, | 1859 | .demod_address = 0x1C, |
1856 | .inittab = nexusca_stv0297_inittab, | 1860 | .inittab = nexusca_stv0297_inittab, |
1857 | .invert = 1, | 1861 | .invert = 1, |
1858 | .pll_set = nexusca_stv0297_pll_set, | ||
1859 | }; | 1862 | }; |
1860 | 1863 | ||
1861 | 1864 | ||
1862 | 1865 | ||
1863 | static int grundig_29504_401_pll_set(struct dvb_frontend* fe, struct dvb_frontend_parameters* params) | 1866 | static int grundig_29504_401_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params) |
1864 | { | 1867 | { |
1865 | struct av7110* av7110 = (struct av7110*) fe->dvb->priv; | 1868 | struct av7110* av7110 = (struct av7110*) fe->dvb->priv; |
1866 | u32 div; | 1869 | u32 div; |
@@ -1887,13 +1890,14 @@ static int grundig_29504_401_pll_set(struct dvb_frontend* fe, struct dvb_fronten | |||
1887 | data[2] = ((div >> 10) & 0x60) | cfg; | 1890 | data[2] = ((div >> 10) & 0x60) | cfg; |
1888 | data[3] = (cpump << 6) | band_select; | 1891 | data[3] = (cpump << 6) | band_select; |
1889 | 1892 | ||
1893 | if (fe->ops->i2c_gate_ctrl) | ||
1894 | fe->ops->i2c_gate_ctrl(fe, 1); | ||
1890 | if (i2c_transfer (&av7110->i2c_adap, &msg, 1) != 1) return -EIO; | 1895 | if (i2c_transfer (&av7110->i2c_adap, &msg, 1) != 1) return -EIO; |
1891 | return 0; | 1896 | return 0; |
1892 | } | 1897 | } |
1893 | 1898 | ||
1894 | static struct l64781_config grundig_29504_401_config = { | 1899 | static struct l64781_config grundig_29504_401_config = { |
1895 | .demod_address = 0x55, | 1900 | .demod_address = 0x55, |
1896 | .pll_set = grundig_29504_401_pll_set, | ||
1897 | }; | 1901 | }; |
1898 | 1902 | ||
1899 | 1903 | ||
@@ -2079,6 +2083,7 @@ static int frontend_init(struct av7110 *av7110) | |||
2079 | case 0x0000: // Fujitsu/Siemens DVB-Cable (ves1820/Philips CD1516(??)) | 2083 | case 0x0000: // Fujitsu/Siemens DVB-Cable (ves1820/Philips CD1516(??)) |
2080 | av7110->fe = ves1820_attach(&philips_cd1516_config, | 2084 | av7110->fe = ves1820_attach(&philips_cd1516_config, |
2081 | &av7110->i2c_adap, read_pwm(av7110)); | 2085 | &av7110->i2c_adap, read_pwm(av7110)); |
2086 | av7110->fe->ops->tuner_ops.set_params = philips_cd1516_tuner_set_params; | ||
2082 | break; | 2087 | break; |
2083 | } | 2088 | } |
2084 | 2089 | ||
@@ -2091,6 +2096,7 @@ static int frontend_init(struct av7110 *av7110) | |||
2091 | // try the ALPS BSRV2 first of all | 2096 | // try the ALPS BSRV2 first of all |
2092 | av7110->fe = ves1x93_attach(&alps_bsrv2_config, &av7110->i2c_adap); | 2097 | av7110->fe = ves1x93_attach(&alps_bsrv2_config, &av7110->i2c_adap); |
2093 | if (av7110->fe) { | 2098 | if (av7110->fe) { |
2099 | av7110->fe->ops->tuner_ops.set_params = alps_bsrv2_tuner_set_params; | ||
2094 | av7110->fe->ops->diseqc_send_master_cmd = av7110_diseqc_send_master_cmd; | 2100 | av7110->fe->ops->diseqc_send_master_cmd = av7110_diseqc_send_master_cmd; |
2095 | av7110->fe->ops->diseqc_send_burst = av7110_diseqc_send_burst; | 2101 | av7110->fe->ops->diseqc_send_burst = av7110_diseqc_send_burst; |
2096 | av7110->fe->ops->set_tone = av7110_set_tone; | 2102 | av7110->fe->ops->set_tone = av7110_set_tone; |
@@ -2101,6 +2107,9 @@ static int frontend_init(struct av7110 *av7110) | |||
2101 | // try the ALPS BSRU6 now | 2107 | // try the ALPS BSRU6 now |
2102 | av7110->fe = stv0299_attach(&alps_bsru6_config, &av7110->i2c_adap); | 2108 | av7110->fe = stv0299_attach(&alps_bsru6_config, &av7110->i2c_adap); |
2103 | if (av7110->fe) { | 2109 | if (av7110->fe) { |
2110 | av7110->fe->ops->tuner_ops.set_params = alps_bsru6_tuner_set_params; | ||
2111 | av7110->fe->tuner_priv = &av7110->i2c_adap; | ||
2112 | |||
2104 | av7110->fe->ops->diseqc_send_master_cmd = av7110_diseqc_send_master_cmd; | 2113 | av7110->fe->ops->diseqc_send_master_cmd = av7110_diseqc_send_master_cmd; |
2105 | av7110->fe->ops->diseqc_send_burst = av7110_diseqc_send_burst; | 2114 | av7110->fe->ops->diseqc_send_burst = av7110_diseqc_send_burst; |
2106 | av7110->fe->ops->set_tone = av7110_set_tone; | 2115 | av7110->fe->ops->set_tone = av7110_set_tone; |
@@ -2111,6 +2120,7 @@ static int frontend_init(struct av7110 *av7110) | |||
2111 | // Try the grundig 29504-451 | 2120 | // Try the grundig 29504-451 |
2112 | av7110->fe = tda8083_attach(&grundig_29504_451_config, &av7110->i2c_adap); | 2121 | av7110->fe = tda8083_attach(&grundig_29504_451_config, &av7110->i2c_adap); |
2113 | if (av7110->fe) { | 2122 | if (av7110->fe) { |
2123 | av7110->fe->ops->tuner_ops.set_params = grundig_29504_451_tuner_set_params; | ||
2114 | av7110->fe->ops->diseqc_send_master_cmd = av7110_diseqc_send_master_cmd; | 2124 | av7110->fe->ops->diseqc_send_master_cmd = av7110_diseqc_send_master_cmd; |
2115 | av7110->fe->ops->diseqc_send_burst = av7110_diseqc_send_burst; | 2125 | av7110->fe->ops->diseqc_send_burst = av7110_diseqc_send_burst; |
2116 | av7110->fe->ops->set_tone = av7110_set_tone; | 2126 | av7110->fe->ops->set_tone = av7110_set_tone; |
@@ -2124,11 +2134,13 @@ static int frontend_init(struct av7110 *av7110) | |||
2124 | /* Siemens DVB-C (full-length card) VES1820/Philips CD1516 */ | 2134 | /* Siemens DVB-C (full-length card) VES1820/Philips CD1516 */ |
2125 | av7110->fe = ves1820_attach(&philips_cd1516_config, &av7110->i2c_adap, | 2135 | av7110->fe = ves1820_attach(&philips_cd1516_config, &av7110->i2c_adap, |
2126 | read_pwm(av7110)); | 2136 | read_pwm(av7110)); |
2137 | av7110->fe->ops->tuner_ops.set_params = philips_cd1516_tuner_set_params; | ||
2127 | break; | 2138 | break; |
2128 | case 0x0003: | 2139 | case 0x0003: |
2129 | /* Hauppauge DVB-C 2.1 VES1820/ALPS TDBE2 */ | 2140 | /* Hauppauge DVB-C 2.1 VES1820/ALPS TDBE2 */ |
2130 | av7110->fe = ves1820_attach(&alps_tdbe2_config, &av7110->i2c_adap, | 2141 | av7110->fe = ves1820_attach(&alps_tdbe2_config, &av7110->i2c_adap, |
2131 | read_pwm(av7110)); | 2142 | read_pwm(av7110)); |
2143 | av7110->fe->ops->tuner_ops.set_params = alps_tdbe2_tuner_set_params; | ||
2132 | break; | 2144 | break; |
2133 | } | 2145 | } |
2134 | break; | 2146 | break; |
@@ -2137,17 +2149,20 @@ static int frontend_init(struct av7110 *av7110) | |||
2137 | 2149 | ||
2138 | // ALPS TDLB7 | 2150 | // ALPS TDLB7 |
2139 | av7110->fe = sp8870_attach(&alps_tdlb7_config, &av7110->i2c_adap); | 2151 | av7110->fe = sp8870_attach(&alps_tdlb7_config, &av7110->i2c_adap); |
2152 | av7110->fe->ops->tuner_ops.set_params = alps_tdlb7_tuner_set_params; | ||
2140 | break; | 2153 | break; |
2141 | 2154 | ||
2142 | case 0x0002: // Hauppauge/TT DVB-C premium rev2.X | 2155 | case 0x0002: // Hauppauge/TT DVB-C premium rev2.X |
2143 | 2156 | ||
2144 | av7110->fe = ves1820_attach(&alps_tdbe2_config, &av7110->i2c_adap, read_pwm(av7110)); | 2157 | av7110->fe = ves1820_attach(&alps_tdbe2_config, &av7110->i2c_adap, read_pwm(av7110)); |
2158 | av7110->fe->ops->tuner_ops.set_params = alps_tdbe2_tuner_set_params; | ||
2145 | break; | 2159 | break; |
2146 | 2160 | ||
2147 | case 0x0004: // Galaxis DVB-S rev1.3 | 2161 | case 0x0004: // Galaxis DVB-S rev1.3 |
2148 | /* ALPS BSRV2 */ | 2162 | /* ALPS BSRV2 */ |
2149 | av7110->fe = ves1x93_attach(&alps_bsrv2_config, &av7110->i2c_adap); | 2163 | av7110->fe = ves1x93_attach(&alps_bsrv2_config, &av7110->i2c_adap); |
2150 | if (av7110->fe) { | 2164 | if (av7110->fe) { |
2165 | av7110->fe->ops->tuner_ops.set_params = alps_bsrv2_tuner_set_params; | ||
2151 | av7110->fe->ops->diseqc_send_master_cmd = av7110_diseqc_send_master_cmd; | 2166 | av7110->fe->ops->diseqc_send_master_cmd = av7110_diseqc_send_master_cmd; |
2152 | av7110->fe->ops->diseqc_send_burst = av7110_diseqc_send_burst; | 2167 | av7110->fe->ops->diseqc_send_burst = av7110_diseqc_send_burst; |
2153 | av7110->fe->ops->set_tone = av7110_set_tone; | 2168 | av7110->fe->ops->set_tone = av7110_set_tone; |
@@ -2159,6 +2174,7 @@ static int frontend_init(struct av7110 *av7110) | |||
2159 | /* Grundig 29504-451 */ | 2174 | /* Grundig 29504-451 */ |
2160 | av7110->fe = tda8083_attach(&grundig_29504_451_config, &av7110->i2c_adap); | 2175 | av7110->fe = tda8083_attach(&grundig_29504_451_config, &av7110->i2c_adap); |
2161 | if (av7110->fe) { | 2176 | if (av7110->fe) { |
2177 | av7110->fe->ops->tuner_ops.set_params = grundig_29504_451_tuner_set_params; | ||
2162 | av7110->fe->ops->diseqc_send_master_cmd = av7110_diseqc_send_master_cmd; | 2178 | av7110->fe->ops->diseqc_send_master_cmd = av7110_diseqc_send_master_cmd; |
2163 | av7110->fe->ops->diseqc_send_burst = av7110_diseqc_send_burst; | 2179 | av7110->fe->ops->diseqc_send_burst = av7110_diseqc_send_burst; |
2164 | av7110->fe->ops->set_tone = av7110_set_tone; | 2180 | av7110->fe->ops->set_tone = av7110_set_tone; |
@@ -2169,12 +2185,15 @@ static int frontend_init(struct av7110 *av7110) | |||
2169 | case 0x0008: // Hauppauge/TT DVB-T | 2185 | case 0x0008: // Hauppauge/TT DVB-T |
2170 | 2186 | ||
2171 | av7110->fe = l64781_attach(&grundig_29504_401_config, &av7110->i2c_adap); | 2187 | av7110->fe = l64781_attach(&grundig_29504_401_config, &av7110->i2c_adap); |
2188 | av7110->fe->ops->tuner_ops.set_params = grundig_29504_401_tuner_set_params; | ||
2172 | break; | 2189 | break; |
2173 | 2190 | ||
2174 | case 0x000A: // Hauppauge/TT Nexus-CA rev1.X | 2191 | case 0x000A: // Hauppauge/TT Nexus-CA rev1.X |
2175 | 2192 | ||
2176 | av7110->fe = stv0297_attach(&nexusca_stv0297_config, &av7110->i2c_adap); | 2193 | av7110->fe = stv0297_attach(&nexusca_stv0297_config, &av7110->i2c_adap); |
2177 | if (av7110->fe) { | 2194 | if (av7110->fe) { |
2195 | av7110->fe->ops->tuner_ops.set_params = nexusca_stv0297_tuner_set_params; | ||
2196 | |||
2178 | /* set TDA9819 into DVB mode */ | 2197 | /* set TDA9819 into DVB mode */ |
2179 | saa7146_setgpio(av7110->dev, 1, SAA7146_GPIO_OUTLO); // TDA9198 pin9(STD) | 2198 | saa7146_setgpio(av7110->dev, 1, SAA7146_GPIO_OUTLO); // TDA9198 pin9(STD) |
2180 | saa7146_setgpio(av7110->dev, 3, SAA7146_GPIO_OUTLO); // TDA9198 pin30(VIF) | 2199 | saa7146_setgpio(av7110->dev, 3, SAA7146_GPIO_OUTLO); // TDA9198 pin30(VIF) |
@@ -2189,6 +2208,9 @@ static int frontend_init(struct av7110 *av7110) | |||
2189 | /* ALPS BSBE1 */ | 2208 | /* ALPS BSBE1 */ |
2190 | av7110->fe = stv0299_attach(&alps_bsbe1_config, &av7110->i2c_adap); | 2209 | av7110->fe = stv0299_attach(&alps_bsbe1_config, &av7110->i2c_adap); |
2191 | if (av7110->fe) { | 2210 | if (av7110->fe) { |
2211 | av7110->fe->ops->tuner_ops.set_params = alps_bsbe1_tuner_set_params; | ||
2212 | av7110->fe->tuner_priv = &av7110->i2c_adap; | ||
2213 | |||
2192 | if (lnbp21_init(av7110->fe, &av7110->i2c_adap, 0, 0)) { | 2214 | if (lnbp21_init(av7110->fe, &av7110->i2c_adap, 0, 0)) { |
2193 | printk("dvb-ttpci: LNBP21 not found!\n"); | 2215 | printk("dvb-ttpci: LNBP21 not found!\n"); |
2194 | if (av7110->fe->ops->release) | 2216 | if (av7110->fe->ops->release) |