[media] tuner-core: fix s_std and s_tuner
authorHans Verkuil <hans.verkuil@cisco.com>
Tue, 14 Jun 2011 06:56:09 +0000 (03:56 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Thu, 7 Jul 2011 18:00:10 +0000 (15:00 -0300)
commit4e4a31fb95d88518180517bae3098a23ebde9f9c
tree2b30f41f3685345c2d4750d73f412ce03329e6ef
parent98c32bcded0e249fd48726930ae9f393e0e318b4
[media] tuner-core: fix s_std and s_tuner

Both s_std and s_tuner are broken because set_mode_freq is called before the
new std (for s_std) and audmode (for s_tuner) are set.

This patch splits set_mode_freq in a set_mode and a set_freq and in s_std/s_tuner
first calls set_mode, and if that returns 0 (i.e. the mode is supported)
then they set t->std/t->audmode and call set_freq.

This fixes a bug where changing std or audmode would actually change it to
the previous value.

Discovered while testing analog TV standards for cx18 with a tda18271 tuner.

Cc: stable@kernel.org
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/tuner-core.c