Commit d06b49ed authored by lawrence rust's avatar lawrence rust Committed by Mauro Carvalho Chehab

V4L/DVB: cx88: convert core->tvaudio into an enum

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: default avatarLawrence Rust <lawrence@softsystem.co.uk>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 3053814c
...@@ -879,7 +879,7 @@ static int set_tvaudio(struct cx88_core *core) ...@@ -879,7 +879,7 @@ static int set_tvaudio(struct cx88_core *core)
} else { } else {
printk("%s/0: tvaudio support needs work for this tv norm [%s], sorry\n", printk("%s/0: tvaudio support needs work for this tv norm [%s], sorry\n",
core->name, v4l2_norm_to_name(core->tvnorm)); core->name, v4l2_norm_to_name(core->tvnorm));
core->tvaudio = 0; core->tvaudio = WW_NONE;
return 0; return 0;
} }
......
...@@ -175,7 +175,13 @@ static s32 detect_a2_a2m_eiaj(struct cx88_core *core, s16 x[], u32 N) ...@@ -175,7 +175,13 @@ static s32 detect_a2_a2m_eiaj(struct cx88_core *core, s16 x[], u32 N)
stereo_freq = FREQ_EIAJ_STEREO; stereo_freq = FREQ_EIAJ_STEREO;
dual_freq = FREQ_EIAJ_DUAL; dual_freq = FREQ_EIAJ_DUAL;
break; 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", printk(KERN_WARNING "%s/0: unsupported audio mode %d for %s\n",
core->name, core->tvaudio, __func__); core->name, core->tvaudio, __func__);
return UNSET; return UNSET;
...@@ -292,11 +298,20 @@ s32 cx88_dsp_detect_stereo_sap(struct cx88_core *core) ...@@ -292,11 +298,20 @@ s32 cx88_dsp_detect_stereo_sap(struct cx88_core *core)
switch (core->tvaudio) { switch (core->tvaudio) {
case WW_BG: case WW_BG:
case WW_DK: case WW_DK:
case WW_EIAJ:
case WW_M:
ret = detect_a2_a2m_eiaj(core, samples, N); ret = detect_a2_a2m_eiaj(core, samples, N);
break; break;
case WW_BTSC: case WW_BTSC:
ret = detect_btsc(core, samples, N); ret = detect_btsc(core, samples, N);
break; break;
case WW_NONE:
case WW_I:
case WW_L:
case WW_I2SPT:
case WW_FM:
case WW_I2SADC:
break;
} }
kfree(samples); kfree(samples);
......
...@@ -360,7 +360,15 @@ static void set_audio_standard_NICAM(struct cx88_core *core, u32 mode) ...@@ -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_bgdki_common);
set_audio_registers(core, nicam_i); set_audio_registers(core, nicam_i);
break; 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__); dprintk("%s PAL-BGDK NICAM (status: known-good)\n", __func__);
set_audio_registers(core, nicam_bgdki_common); set_audio_registers(core, nicam_bgdki_common);
set_audio_registers(core, nicam_default); set_audio_registers(core, nicam_default);
...@@ -621,7 +629,13 @@ static void set_audio_standard_A2(struct cx88_core *core, u32 mode) ...@@ -621,7 +629,13 @@ static void set_audio_standard_A2(struct cx88_core *core, u32 mode)
dprintk("%s AM-L (status: devel)\n", __func__); dprintk("%s AM-L (status: devel)\n", __func__);
set_audio_registers(core, am_l); set_audio_registers(core, am_l);
break; 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__); dprintk("%s Warning: wrong value\n", __func__);
return; return;
break; break;
...@@ -779,7 +793,7 @@ void cx88_set_tvaudio(struct cx88_core *core) ...@@ -779,7 +793,7 @@ void cx88_set_tvaudio(struct cx88_core *core)
set_audio_finish(core, EN_I2SIN_ENABLE); set_audio_finish(core, EN_I2SIN_ENABLE);
break; break;
case WW_NONE: case WW_NONE:
default: case WW_I2SPT:
printk("%s/0: unknown tv audio mode [%d]\n", printk("%s/0: unknown tv audio mode [%d]\n",
core->name, core->tvaudio); core->name, core->tvaudio);
break; break;
...@@ -840,7 +854,12 @@ void cx88_get_stereo(struct cx88_core *core, struct v4l2_tuner *t) ...@@ -840,7 +854,12 @@ void cx88_get_stereo(struct cx88_core *core, struct v4l2_tuner *t)
break; break;
} }
break; break;
default: case WW_NONE:
case WW_I:
case WW_L:
case WW_I2SPT:
case WW_FM:
case WW_I2SADC:
/* nothing */ /* nothing */
break; break;
} }
...@@ -945,6 +964,9 @@ void cx88_set_stereo(struct cx88_core *core, u32 mode, int manual) ...@@ -945,6 +964,9 @@ void cx88_set_stereo(struct cx88_core *core, u32 mode, int manual)
} }
break; break;
case WW_I2SADC: case WW_I2SADC:
case WW_NONE:
case WW_EIAJ:
case WW_I2SPT:
/* DO NOTHING */ /* DO NOTHING */
break; break;
} }
...@@ -1000,7 +1022,12 @@ int cx88_audio_thread(void *data) ...@@ -1000,7 +1022,12 @@ int cx88_audio_thread(void *data)
/* automatically switch to best available mode */ /* automatically switch to best available mode */
cx88_set_stereo(core, mode, 0); cx88_set_stereo(core, mode, 0);
break; break;
default: case WW_NONE:
case WW_BTSC:
case WW_EIAJ:
case WW_I2SPT:
case WW_FM:
case WW_I2SADC:
hw_autodetect: hw_autodetect:
/* stereo autodetection is supported by hardware so /* stereo autodetection is supported by hardware so
we don't need to do it manually. Do nothing. */ we don't need to do it manually. Do nothing. */
......
...@@ -281,6 +281,20 @@ struct cx88_subid { ...@@ -281,6 +281,20 @@ struct cx88_subid {
u32 card; 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]) #define INPUT(nr) (core->board.input[nr])
/* ----------------------------------------------------------- */ /* ----------------------------------------------------------- */
...@@ -352,7 +366,7 @@ struct cx88_core { ...@@ -352,7 +366,7 @@ struct cx88_core {
/* state info */ /* state info */
struct task_struct *kthread; struct task_struct *kthread;
v4l2_std_id tvnorm; v4l2_std_id tvnorm;
u32 tvaudio; enum cx88_tvaudio tvaudio;
u32 audiomode_manual; u32 audiomode_manual;
u32 audiomode_current; u32 audiomode_current;
u32 input; u32 input;
...@@ -651,18 +665,6 @@ extern void cx88_setup_xc3028(struct cx88_core *core, struct xc2028_ctrl *ctl); ...@@ -651,18 +665,6 @@ extern void cx88_setup_xc3028(struct cx88_core *core, struct xc2028_ctrl *ctl);
/* ----------------------------------------------------------- */ /* ----------------------------------------------------------- */
/* cx88-tvaudio.c */ /* 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_set_tvaudio(struct cx88_core *core);
void cx88_newstation(struct cx88_core *core); void cx88_newstation(struct cx88_core *core);
void cx88_get_stereo(struct cx88_core *core, struct v4l2_tuner *t); void cx88_get_stereo(struct cx88_core *core, struct v4l2_tuner *t);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment