[media] tvaudio: fix tda8425_setmode
authorDaniel Glöckner <daniel-gl@gmx.net>
Sun, 10 Jun 2012 00:43:51 +0000 (21:43 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 18 Jun 2012 23:46:34 +0000 (20:46 -0300)
The passed audio mode is not a bitfield.

Signed-off-by: Daniel Glöckner <daniel-gl@gmx.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/tvaudio.c

index 9b85e2a4476225f48c79a80f375940235d8f7062..76a8cbe2085dd446db84a11e1d396d365efcf27b 100644 (file)
@@ -1230,21 +1230,25 @@ static void tda8425_setmode(struct CHIPSTATE *chip, int mode)
 {
        int s1 = chip->shadow.bytes[TDA8425_S1+1] & 0xe1;
 
-       if (mode & V4L2_TUNER_MODE_LANG1) {
+       switch (mode) {
+       case V4L2_TUNER_MODE_LANG1:
                s1 |= TDA8425_S1_ML_SOUND_A;
                s1 |= TDA8425_S1_STEREO_PSEUDO;
-
-       } else if (mode & V4L2_TUNER_MODE_LANG2) {
+               break;
+       case V4L2_TUNER_MODE_LANG2:
                s1 |= TDA8425_S1_ML_SOUND_B;
                s1 |= TDA8425_S1_STEREO_PSEUDO;
-
-       } else {
+               break;
+       case V4L2_TUNER_MODE_MONO:
                s1 |= TDA8425_S1_ML_STEREO;
-
-               if (mode & V4L2_TUNER_MODE_MONO)
-                       s1 |= TDA8425_S1_STEREO_MONO;
-               if (mode & V4L2_TUNER_MODE_STEREO)
-                       s1 |= TDA8425_S1_STEREO_SPATIAL;
+               s1 |= TDA8425_S1_STEREO_MONO;
+               break;
+       case V4L2_TUNER_MODE_STEREO:
+               s1 |= TDA8425_S1_ML_STEREO;
+               s1 |= TDA8425_S1_STEREO_SPATIAL;
+               break;
+       default:
+               return;
        }
        chip_write(chip,TDA8425_S1,s1);
 }