Skip to content

Commit

Permalink
V4L/DVB: cx88: convert core->tvaudio into an enum
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
lawrence rust authored and Mauro Carvalho Chehab committed Oct 21, 2010
1 parent 3053814 commit d06b49e
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 20 deletions.
2 changes: 1 addition & 1 deletion drivers/media/video/cx88/cx88-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand Down
17 changes: 16 additions & 1 deletion drivers/media/video/cx88/cx88-dsp.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
Expand Down
37 changes: 32 additions & 5 deletions drivers/media/video/cx88/cx88-tvaudio.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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;
}
Expand Down Expand Up @@ -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;
}
Expand Down Expand Up @@ -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. */
Expand Down
28 changes: 15 additions & 13 deletions drivers/media/video/cx88/cx88.h
Original file line number Diff line number Diff line change
Expand Up @@ -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])

/* ----------------------------------------------------------- */
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit d06b49e

Please sign in to comment.