Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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;
	}

+16 −1
Original line number Diff line number Diff line
@@ -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);
+32 −5
Original line number Diff line number Diff line
@@ -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. */
+15 −13
Original line number Diff line number Diff line
@@ -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);