V4L/DVB: cx88: convert core->tvaudio into an enum
authorlawrence rust <lawrence@softsystem.co.uk>
Mon, 23 Aug 2010 10:49:58 +0000 (07:49 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Thu, 21 Oct 2010 03:04:49 +0000 (01:04 -0200)
Using an enum and removing the default case from switch statements accessing
the value enables the compiler to emit a warning (enabled with -Wall) when an
audio mode is not handled.

This highlights an omission in the function cx88_dsp_detect_stereo_sap()
(in cx88-dsp.c) not handling WW_EIAJ and WW_M.

Signed-off-by: Lawrence Rust <lawrence@softsystem.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/cx88/cx88-core.c
drivers/media/video/cx88/cx88-dsp.c
drivers/media/video/cx88/cx88-tvaudio.c
drivers/media/video/cx88/cx88.h

index 85eb266fb351fc9f9161ea7d5dcf62b5aed32843..56066a1ff20df1e7e0b95598b9562d57d08be85d 100644 (file)
@@ -879,7 +879,7 @@ static int set_tvaudio(struct cx88_core *core)
        } else {
                printk("%s/0: tvaudio support needs work for this tv norm [%s], sorry\n",
                       core->name, v4l2_norm_to_name(core->tvnorm));
-               core->tvaudio = 0;
+               core->tvaudio = WW_NONE;
                return 0;
        }
 
index a94e00a4ac5d7a699d866fbf1ca21f3aafd490c6..e1d6eef233dc7f4e04e464b5241ef7c2ff41ee26 100644 (file)
@@ -175,7 +175,13 @@ static s32 detect_a2_a2m_eiaj(struct cx88_core *core, s16 x[], u32 N)
                stereo_freq = FREQ_EIAJ_STEREO;
                dual_freq = FREQ_EIAJ_DUAL;
                break;
-       default:
+       case WW_NONE:
+       case WW_BTSC:
+       case WW_I:
+       case WW_L:
+       case WW_I2SPT:
+       case WW_FM:
+       case WW_I2SADC:
                printk(KERN_WARNING "%s/0: unsupported audio mode %d for %s\n",
                       core->name, core->tvaudio, __func__);
                return UNSET;
@@ -292,11 +298,20 @@ s32 cx88_dsp_detect_stereo_sap(struct cx88_core *core)
        switch (core->tvaudio) {
        case WW_BG:
        case WW_DK:
+       case WW_EIAJ:
+       case WW_M:
                ret = detect_a2_a2m_eiaj(core, samples, N);
                break;
        case WW_BTSC:
                ret = detect_btsc(core, samples, N);
                break;
+       case WW_NONE:
+       case WW_I:
+       case WW_L:
+       case WW_I2SPT:
+       case WW_FM:
+       case WW_I2SADC:
+               break;
        }
 
        kfree(samples);
index 239631568f3b50aa3e5ccbf69853717ba03d8ff6..db6354709064467f1445f84eaea94c3f52dda1aa 100644 (file)
@@ -360,7 +360,15 @@ static void set_audio_standard_NICAM(struct cx88_core *core, u32 mode)
                set_audio_registers(core, nicam_bgdki_common);
                set_audio_registers(core, nicam_i);
                break;
-       default:
+       case WW_NONE:
+       case WW_BTSC:
+       case WW_BG:
+       case WW_DK:
+       case WW_EIAJ:
+       case WW_I2SPT:
+       case WW_FM:
+       case WW_I2SADC:
+       case WW_M:
                dprintk("%s PAL-BGDK NICAM (status: known-good)\n", __func__);
                set_audio_registers(core, nicam_bgdki_common);
                set_audio_registers(core, nicam_default);
@@ -621,7 +629,13 @@ static void set_audio_standard_A2(struct cx88_core *core, u32 mode)
                dprintk("%s AM-L (status: devel)\n", __func__);
                set_audio_registers(core, am_l);
                break;
-       default:
+       case WW_NONE:
+       case WW_BTSC:
+       case WW_EIAJ:
+       case WW_I2SPT:
+       case WW_FM:
+       case WW_I2SADC:
+       case WW_M:
                dprintk("%s Warning: wrong value\n", __func__);
                return;
                break;
@@ -779,7 +793,7 @@ void cx88_set_tvaudio(struct cx88_core *core)
                set_audio_finish(core, EN_I2SIN_ENABLE);
                break;
        case WW_NONE:
-       default:
+       case WW_I2SPT:
                printk("%s/0: unknown tv audio mode [%d]\n",
                       core->name, core->tvaudio);
                break;
@@ -840,7 +854,12 @@ void cx88_get_stereo(struct cx88_core *core, struct v4l2_tuner *t)
                        break;
                }
                break;
-       default:
+       case WW_NONE:
+       case WW_I:
+       case WW_L:
+       case WW_I2SPT:
+       case WW_FM:
+       case WW_I2SADC:
                /* nothing */
                break;
        }
@@ -945,6 +964,9 @@ void cx88_set_stereo(struct cx88_core *core, u32 mode, int manual)
                }
                break;
        case WW_I2SADC:
+       case WW_NONE:
+       case WW_EIAJ:
+       case WW_I2SPT:
                /* DO NOTHING */
                break;
        }
@@ -1000,7 +1022,12 @@ int cx88_audio_thread(void *data)
                        /* automatically switch to best available mode */
                        cx88_set_stereo(core, mode, 0);
                        break;
-               default:
+               case WW_NONE:
+               case WW_BTSC:
+               case WW_EIAJ:
+               case WW_I2SPT:
+               case WW_FM:
+               case WW_I2SADC:
 hw_autodetect:
                        /* stereo autodetection is supported by hardware so
                           we don't need to do it manually. Do nothing. */
index 33d161a1172544f38988f1aab0f7c02d173344c5..d9554090eb6ff3ac25d32193a19bfc145514fd8c 100644 (file)
@@ -281,6 +281,20 @@ struct cx88_subid {
        u32     card;
 };
 
+enum cx88_tvaudio {
+       WW_NONE = 1,
+       WW_BTSC,
+       WW_BG,
+       WW_DK,
+       WW_I,
+       WW_L,
+       WW_EIAJ,
+       WW_I2SPT,
+       WW_FM,
+       WW_I2SADC,
+       WW_M
+};
+
 #define INPUT(nr) (core->board.input[nr])
 
 /* ----------------------------------------------------------- */
@@ -352,7 +366,7 @@ struct cx88_core {
        /* state info */
        struct task_struct         *kthread;
        v4l2_std_id                tvnorm;
-       u32                        tvaudio;
+       enum cx88_tvaudio          tvaudio;
        u32                        audiomode_manual;
        u32                        audiomode_current;
        u32                        input;
@@ -651,18 +665,6 @@ extern void cx88_setup_xc3028(struct cx88_core *core, struct xc2028_ctrl *ctl);
 /* ----------------------------------------------------------- */
 /* cx88-tvaudio.c                                              */
 
-#define WW_NONE                 1
-#define WW_BTSC                 2
-#define WW_BG           3
-#define WW_DK           4
-#define WW_I            5
-#define WW_L            6
-#define WW_EIAJ                 7
-#define WW_I2SPT        8
-#define WW_FM           9
-#define WW_I2SADC       10
-#define WW_M            11
-
 void cx88_set_tvaudio(struct cx88_core *core);
 void cx88_newstation(struct cx88_core *core);
 void cx88_get_stereo(struct cx88_core *core, struct v4l2_tuner *t);