aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/ttpci
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@redhat.com>2011-12-23 06:01:05 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2011-12-31 05:30:57 -0500
commite439aedf54db4501c171ae913c2a0095058c58a3 (patch)
treed2ac6580e013d5efecb095884d6a334c9c77db36 /drivers/media/dvb/ttpci
parent8579881bb617cd81559f36523cf5bdcde26af6f7 (diff)
[media] av7110: use DVBv5 parameters on set_params()
Instead of using DVBv3 parameters, rely on DVBv5 parameters to set the tuner Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb/ttpci')
-rw-r--r--drivers/media/dvb/ttpci/av7110.c75
1 files changed, 48 insertions, 27 deletions
diff --git a/drivers/media/dvb/ttpci/av7110.c b/drivers/media/dvb/ttpci/av7110.c
index abf6b55cf6d5..c6191e1f162b 100644
--- a/drivers/media/dvb/ttpci/av7110.c
+++ b/drivers/media/dvb/ttpci/av7110.c
@@ -1570,18 +1570,25 @@ static int get_firmware(struct av7110* av7110)
1570 1570
1571static int alps_bsrv2_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params) 1571static int alps_bsrv2_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params)
1572{ 1572{
1573 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
1573 struct av7110* av7110 = fe->dvb->priv; 1574 struct av7110* av7110 = fe->dvb->priv;
1574 u8 pwr = 0; 1575 u8 pwr = 0;
1575 u8 buf[4]; 1576 u8 buf[4];
1576 struct i2c_msg msg = { .addr = 0x61, .flags = 0, .buf = buf, .len = sizeof(buf) }; 1577 struct i2c_msg msg = { .addr = 0x61, .flags = 0, .buf = buf, .len = sizeof(buf) };
1577 u32 div = (params->frequency + 479500) / 125; 1578 u32 div = (p->frequency + 479500) / 125;
1578 1579
1579 if (params->frequency > 2000000) pwr = 3; 1580 if (p->frequency > 2000000)
1580 else if (params->frequency > 1800000) pwr = 2; 1581 pwr = 3;
1581 else if (params->frequency > 1600000) pwr = 1; 1582 else if (p->frequency > 1800000)
1582 else if (params->frequency > 1200000) pwr = 0; 1583 pwr = 2;
1583 else if (params->frequency >= 1100000) pwr = 1; 1584 else if (p->frequency > 1600000)
1584 else pwr = 2; 1585 pwr = 1;
1586 else if (p->frequency > 1200000)
1587 pwr = 0;
1588 else if (p->frequency >= 1100000)
1589 pwr = 1;
1590 else
1591 pwr = 2;
1585 1592
1586 buf[0] = (div >> 8) & 0x7f; 1593 buf[0] = (div >> 8) & 0x7f;
1587 buf[1] = div & 0xff; 1594 buf[1] = div & 0xff;
@@ -1606,17 +1613,18 @@ static struct ves1x93_config alps_bsrv2_config = {
1606 1613
1607static int alps_tdbe2_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params) 1614static int alps_tdbe2_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params)
1608{ 1615{
1616 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
1609 struct av7110* av7110 = fe->dvb->priv; 1617 struct av7110* av7110 = fe->dvb->priv;
1610 u32 div; 1618 u32 div;
1611 u8 data[4]; 1619 u8 data[4];
1612 struct i2c_msg msg = { .addr = 0x62, .flags = 0, .buf = data, .len = sizeof(data) }; 1620 struct i2c_msg msg = { .addr = 0x62, .flags = 0, .buf = data, .len = sizeof(data) };
1613 1621
1614 div = (params->frequency + 35937500 + 31250) / 62500; 1622 div = (p->frequency + 35937500 + 31250) / 62500;
1615 1623
1616 data[0] = (div >> 8) & 0x7f; 1624 data[0] = (div >> 8) & 0x7f;
1617 data[1] = div & 0xff; 1625 data[1] = div & 0xff;
1618 data[2] = 0x85 | ((div >> 10) & 0x60); 1626 data[2] = 0x85 | ((div >> 10) & 0x60);
1619 data[3] = (params->frequency < 174000000 ? 0x88 : params->frequency < 470000000 ? 0x84 : 0x81); 1627 data[3] = (p->frequency < 174000000 ? 0x88 : p->frequency < 470000000 ? 0x84 : 0x81);
1620 1628
1621 if (fe->ops.i2c_gate_ctrl) 1629 if (fe->ops.i2c_gate_ctrl)
1622 fe->ops.i2c_gate_ctrl(fe, 1); 1630 fe->ops.i2c_gate_ctrl(fe, 1);
@@ -1637,12 +1645,13 @@ static struct ves1820_config alps_tdbe2_config = {
1637 1645
1638static int grundig_29504_451_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params) 1646static int grundig_29504_451_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params)
1639{ 1647{
1648 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
1640 struct av7110* av7110 = fe->dvb->priv; 1649 struct av7110* av7110 = fe->dvb->priv;
1641 u32 div; 1650 u32 div;
1642 u8 data[4]; 1651 u8 data[4];
1643 struct i2c_msg msg = { .addr = 0x61, .flags = 0, .buf = data, .len = sizeof(data) }; 1652 struct i2c_msg msg = { .addr = 0x61, .flags = 0, .buf = data, .len = sizeof(data) };
1644 1653
1645 div = params->frequency / 125; 1654 div = p->frequency / 125;
1646 data[0] = (div >> 8) & 0x7f; 1655 data[0] = (div >> 8) & 0x7f;
1647 data[1] = div & 0xff; 1656 data[1] = div & 0xff;
1648 data[2] = 0x8e; 1657 data[2] = 0x8e;
@@ -1663,9 +1672,10 @@ static struct tda8083_config grundig_29504_451_config = {
1663 1672
1664static int philips_cd1516_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params) 1673static int philips_cd1516_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params)
1665{ 1674{
1675 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
1666 struct av7110* av7110 = fe->dvb->priv; 1676 struct av7110* av7110 = fe->dvb->priv;
1667 u32 div; 1677 u32 div;
1668 u32 f = params->frequency; 1678 u32 f = p->frequency;
1669 u8 data[4]; 1679 u8 data[4];
1670 struct i2c_msg msg = { .addr = 0x61, .flags = 0, .buf = data, .len = sizeof(data) }; 1680 struct i2c_msg msg = { .addr = 0x61, .flags = 0, .buf = data, .len = sizeof(data) };
1671 1681
@@ -1694,14 +1704,15 @@ static struct ves1820_config philips_cd1516_config = {
1694 1704
1695static int alps_tdlb7_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params) 1705static int alps_tdlb7_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params)
1696{ 1706{
1707 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
1697 struct av7110* av7110 = fe->dvb->priv; 1708 struct av7110* av7110 = fe->dvb->priv;
1698 u32 div, pwr; 1709 u32 div, pwr;
1699 u8 data[4]; 1710 u8 data[4];
1700 struct i2c_msg msg = { .addr = 0x60, .flags = 0, .buf = data, .len = sizeof(data) }; 1711 struct i2c_msg msg = { .addr = 0x60, .flags = 0, .buf = data, .len = sizeof(data) };
1701 1712
1702 div = (params->frequency + 36200000) / 166666; 1713 div = (p->frequency + 36200000) / 166666;
1703 1714
1704 if (params->frequency <= 782000000) 1715 if (p->frequency <= 782000000)
1705 pwr = 1; 1716 pwr = 1;
1706 else 1717 else
1707 pwr = 2; 1718 pwr = 2;
@@ -1831,6 +1842,7 @@ static u8 nexusca_stv0297_inittab[] = {
1831 1842
1832static int nexusca_stv0297_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params) 1843static int nexusca_stv0297_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params)
1833{ 1844{
1845 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
1834 struct av7110* av7110 = fe->dvb->priv; 1846 struct av7110* av7110 = fe->dvb->priv;
1835 u32 div; 1847 u32 div;
1836 u8 data[4]; 1848 u8 data[4];
@@ -1838,19 +1850,19 @@ static int nexusca_stv0297_tuner_set_params(struct dvb_frontend* fe, struct dvb_
1838 struct i2c_msg readmsg = { .addr = 0x63, .flags = I2C_M_RD, .buf = data, .len = 1 }; 1850 struct i2c_msg readmsg = { .addr = 0x63, .flags = I2C_M_RD, .buf = data, .len = 1 };
1839 int i; 1851 int i;
1840 1852
1841 div = (params->frequency + 36150000 + 31250) / 62500; 1853 div = (p->frequency + 36150000 + 31250) / 62500;
1842 1854
1843 data[0] = (div >> 8) & 0x7f; 1855 data[0] = (div >> 8) & 0x7f;
1844 data[1] = div & 0xff; 1856 data[1] = div & 0xff;
1845 data[2] = 0xce; 1857 data[2] = 0xce;
1846 1858
1847 if (params->frequency < 45000000) 1859 if (p->frequency < 45000000)
1848 return -EINVAL; 1860 return -EINVAL;
1849 else if (params->frequency < 137000000) 1861 else if (p->frequency < 137000000)
1850 data[3] = 0x01; 1862 data[3] = 0x01;
1851 else if (params->frequency < 403000000) 1863 else if (p->frequency < 403000000)
1852 data[3] = 0x02; 1864 data[3] = 0x02;
1853 else if (params->frequency < 860000000) 1865 else if (p->frequency < 860000000)
1854 data[3] = 0x04; 1866 data[3] = 0x04;
1855 else 1867 else
1856 return -EINVAL; 1868 return -EINVAL;
@@ -1886,25 +1898,34 @@ static struct stv0297_config nexusca_stv0297_config = {
1886 1898
1887static int grundig_29504_401_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params) 1899static int grundig_29504_401_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params)
1888{ 1900{
1901 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
1889 struct av7110* av7110 = fe->dvb->priv; 1902 struct av7110* av7110 = fe->dvb->priv;
1890 u32 div; 1903 u32 div;
1891 u8 cfg, cpump, band_select; 1904 u8 cfg, cpump, band_select;
1892 u8 data[4]; 1905 u8 data[4];
1893 struct i2c_msg msg = { .addr = 0x61, .flags = 0, .buf = data, .len = sizeof(data) }; 1906 struct i2c_msg msg = { .addr = 0x61, .flags = 0, .buf = data, .len = sizeof(data) };
1894 1907
1895 div = (36125000 + params->frequency) / 166666; 1908 div = (36125000 + p->frequency) / 166666;
1896 1909
1897 cfg = 0x88; 1910 cfg = 0x88;
1898 1911
1899 if (params->frequency < 175000000) cpump = 2; 1912 if (p->frequency < 175000000)
1900 else if (params->frequency < 390000000) cpump = 1; 1913 cpump = 2;
1901 else if (params->frequency < 470000000) cpump = 2; 1914 else if (p->frequency < 390000000)
1902 else if (params->frequency < 750000000) cpump = 1; 1915 cpump = 1;
1903 else cpump = 3; 1916 else if (p->frequency < 470000000)
1917 cpump = 2;
1918 else if (p->frequency < 750000000)
1919 cpump = 1;
1920 else
1921 cpump = 3;
1904 1922
1905 if (params->frequency < 175000000) band_select = 0x0e; 1923 if (p->frequency < 175000000)
1906 else if (params->frequency < 470000000) band_select = 0x05; 1924 band_select = 0x0e;
1907 else band_select = 0x03; 1925 else if (p->frequency < 470000000)
1926 band_select = 0x05;
1927 else
1928 band_select = 0x03;
1908 1929
1909 data[0] = (div >> 8) & 0x7f; 1930 data[0] = (div >> 8) & 0x7f;
1910 data[1] = div & 0xff; 1931 data[1] = div & 0xff;