aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManu Abraham <abraham.manu@gmail.com>2007-07-02 08:01:48 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2008-12-29 14:53:14 -0500
commit795b72b21a566b9e440e7e8afadcfa76386c1cb2 (patch)
tree11f65033e003789e4b0a308955744c551726cc44
parent54c358fc23a4ca6c75bc0f8c6b3864ae16cba803 (diff)
V4L/DVB (9382): Use a delay for tracking acquisition status
Signed-off-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/dvb/frontends/stb0899_drv.c57
1 files changed, 9 insertions, 48 deletions
diff --git a/drivers/media/dvb/frontends/stb0899_drv.c b/drivers/media/dvb/frontends/stb0899_drv.c
index f5cfed738e80..92914c9bc3a6 100644
--- a/drivers/media/dvb/frontends/stb0899_drv.c
+++ b/drivers/media/dvb/frontends/stb0899_drv.c
@@ -1802,58 +1802,19 @@ static int stb0899_get_modcod(struct stb0899_internal *internal, struct dvbs2_pa
1802 * Once a new lock has established, the internal state 1802 * Once a new lock has established, the internal state
1803 * frequency (internal->freq) is updated 1803 * frequency (internal->freq) is updated
1804 */ 1804 */
1805static int stb0899_track(struct dvb_frontend *fe, struct dvbfe_params *params) 1805static int stb0899_track(struct dvb_frontend *fe, struct dvbfe_params *params, int *delay)
1806{ 1806{
1807 u32 lock_lost;
1808
1807 struct stb0899_state *state = fe->demodulator_priv; 1809 struct stb0899_state *state = fe->demodulator_priv;
1808 struct stb0899_internal *internal = &state->internal; 1810 struct stb0899_internal *internal = &state->internal;
1809 1811
1810 switch (state->delsys) { 1812 lock_lost = STB0899_READ_S2REG(STB0899_S2DEMOD, LOCK_LOST);
1811 case DVBFE_DELSYS_DVBS: 1813 dprintk(verbose, FE_DEBUG, 1, "Lock Lost=[0x%02x]\n", lock_lost);
1812 dprintk(verbose, FE_DEBUG, 1, "Tracking DVB-S state"); 1814 if (STB0899_GETFIELD(LOCK_LOST, lock_lost))
1813 if (stb0899_track_carrier(state) == CARRIEROK) { 1815 dprintk(verbose, FE_ERROR, 1, "Demodulator LOST LOCK !\n");
1814 params->frequency = internal->freq; 1816
1815 params->inversion = internal->inversion; 1817 *delay = HZ/10;
1816 params->delivery = state->delsys;
1817 params->delsys.dvbs.symbol_rate = internal->srate;
1818 params->delsys.dvbs.modulation = DVBFE_MOD_QPSK;
1819 stb0899_get_s1fec(internal, &params->delsys.dvbs.fec);
1820 }
1821 break;
1822 case DVBFE_DELSYS_DSS:
1823 dprintk(verbose, FE_DEBUG, 1, "Tracking DSS state");
1824 if (stb0899_track_carrier(state) == CARRIEROK) {
1825 params->frequency = internal->freq;
1826 params->inversion = internal->inversion;
1827 params->delivery = state->delsys;
1828 params->delsys.dss.symbol_rate = internal->srate;
1829 params->delsys.dss.modulation = DVBFE_MOD_QPSK;
1830 stb0899_get_s1fec(internal, &params->delsys.dss.fec);
1831 }
1832 break;
1833 case DVBFE_DELSYS_DVBS2:
1834 dprintk(verbose, FE_DEBUG, 1, "Tracking DVB-S2 state");
1835 if (stb0899_get_ifagc(state) == AGC1OK) {
1836 params->frequency = internal->freq;
1837 params->inversion = internal->inversion;
1838 params->delivery = state->delsys;
1839 params->delsys.dvbs2.symbol_rate = internal->srate;
1840 stb0899_get_modcod(internal, &params->delsys.dvbs2);
1841 params->delsys.dvbs2.rolloff = internal->rolloff;
1842 params->delsys.dvbs2.matype_1 = stb0899_read_reg(state, STB0899_MATSTRL);
1843 params->delsys.dvbs2.matype_2 = stb0899_read_reg(state, STB0899_MATSTRM);
1844 params->delsys.dvbs2.upl_1 = stb0899_read_reg(state, STB0899_UPLSTRL);
1845 params->delsys.dvbs2.upl_2 = stb0899_read_reg(state, STB0899_UPLSTRM);
1846 params->delsys.dvbs2.dfl_1 = stb0899_read_reg(state, STB0899_DFLSTRL);
1847 params->delsys.dvbs2.dfl_2 = stb0899_read_reg(state, STB0899_DFLSTRM);
1848 params->delsys.dvbs2.sync = stb0899_read_reg(state, STB0899_SYNCSTR);
1849 params->delsys.dvbs2.syncd_1 = stb0899_read_reg(state, STB0899_SYNCDSTRL);
1850 params->delsys.dvbs2.syncd_2 = stb0899_read_reg(state, STB0899_SYNCDSTRM);
1851 }
1852 break;
1853 default:
1854 dprintk(verbose, FE_ERROR, 1, "Unsupported delivery system");
1855 return -EINVAL;
1856 }
1857 1818
1858 return 0; 1819 return 0;
1859} 1820}