diff options
author | Manu Abraham <abraham.manu@gmail.com> | 2007-07-02 08:01:48 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2008-12-29 14:53:14 -0500 |
commit | 795b72b21a566b9e440e7e8afadcfa76386c1cb2 (patch) | |
tree | 11f65033e003789e4b0a308955744c551726cc44 /drivers/media/dvb/frontends/stb0899_drv.c | |
parent | 54c358fc23a4ca6c75bc0f8c6b3864ae16cba803 (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>
Diffstat (limited to 'drivers/media/dvb/frontends/stb0899_drv.c')
-rw-r--r-- | drivers/media/dvb/frontends/stb0899_drv.c | 57 |
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 | */ |
1805 | static int stb0899_track(struct dvb_frontend *fe, struct dvbfe_params *params) | 1805 | static 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, ¶ms->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, ¶ms->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, ¶ms->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 | } |