[media] mb86a20s: Fix Interleaving
authorMauro Carvalho Chehab <m.chehab@samsung.com>
Sat, 12 Jul 2014 00:37:47 +0000 (21:37 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Wed, 23 Jul 2014 00:33:41 +0000 (21:33 -0300)
Interleaving code was wrong at mb86a20s: instead, it was looking
at the Guard Interval. Fix it.

Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
drivers/media/dvb-frontends/mb86a20s.c

index 79bc1c9d0fa9b4ace49a37505c0d50f42de40ff2..83fac7886813b19a573b11c3e2899c16e5e7367a 100644 (file)
@@ -459,6 +459,9 @@ static int mb86a20s_get_interleaving(struct mb86a20s_state *state,
                                     unsigned layer)
 {
        int rc;
+       int interleaving[] = {
+               0, 1, 2, 4, 8
+       };
 
        static unsigned char reg[] = {
                [0] = 0x88,     /* Layer A */
@@ -475,20 +478,7 @@ static int mb86a20s_get_interleaving(struct mb86a20s_state *state,
        if (rc < 0)
                return rc;
 
-       switch ((rc >> 4) & 0x07) {
-       case 1:
-               return GUARD_INTERVAL_1_4;
-       case 2:
-               return GUARD_INTERVAL_1_8;
-       case 3:
-               return GUARD_INTERVAL_1_16;
-       case 4:
-               return GUARD_INTERVAL_1_32;
-
-       default:
-       case 0:
-               return GUARD_INTERVAL_AUTO;
-       }
+       return interleaving[(rc >> 4) & 0x07];
 }
 
 static int mb86a20s_get_segment_count(struct mb86a20s_state *state,