[linux-dvb] [FIXEd] Bug Report - Twinhan vp-1020, bt_8xx driver + frontend
Matthias Schwarzott
zzam at gentoo.org
Tue Dec 2 20:21:48 CET 2008
On Dienstag, 2. Dezember 2008, Alain Turbide wrote:
> Well, it's not a difficult fix now that I see it. The issue was that the
> original default for FE_ALGO_SW was 0 while FE_ALGO_HW was 1.
> Since there is an older documented option for the dst module called
> dst_algo that some people might still be using to force the tuning algo to
> sofware by setting dst_algo=0, there is no choice but to also make the
> default of DVBFE_ALGO_SW to also be 0 so that the values will match and the
> new code will still function with users who force dst_algo=0 on the dst
> module load.. The fix would thus be to go from: this in dvb_frontend.h
> enum dvbfe_algo {
> DVBFE_ALGO_HW = (1 << 0),
> DVBFE_ALGO_SW = (1 << 1),
> DVBFE_ALGO_CUSTOM = (1 << 2),
> DVBFE_ALGO_RECOVERY = (1 << 31)
> };
>
> to this:
> enum dvbfe_algo {
> DVBFE_ALGO_HW = (1 << 0),
> DVBFE_ALGO_SW = 0,
> DVBFE_ALGO_CUSTOM = (1 << 2),
> DVBFE_ALGO_RECOVERY = (1 << 31)
> };
>
> This is what I've done now and works well. This is the only change required
> to fix the issue. In dst.c we could also default dst_algo to
> DVB_FRONTEND_SW instead of 0 to make it more robust. I can't see any code
> else where that depends on DVBFE_ALGO_SW being set to 2.
>
Why should we rely on exact values, and not just modify the only place where
these values are exposed to userspace, and change dst_get_tuning_algo to
something similar to:
static int dst_get_tuning_algo(struct dvb_frontend *fe)
{
return dst_algo ? DVBFE_ALGO_HW : DVBFE_ALGO_SW;
}
The other (not backward compatible) fix is to adjust the parameter description
and use 1 and 2 as allowed settings.
Regards
Matthias
More information about the linux-dvb
mailing list