Commit 408d0244 authored by Sean Young's avatar Sean Young Committed by Mauro Carvalho Chehab
Browse files

media: rc: no need for decoder state if decoder not enabled



One struct ir_raw_event_ctrl is allocated per raw IR device; reduce the
amount allocated if not all decoders are enabled.

Signed-off-by: default avatarSean Young <sean@mess.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent c4ed27cf
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@ struct ir_raw_event_ctrl {
	u32				bpf_sample;
	struct bpf_prog_array __rcu	*progs;
#endif
#if IS_ENABLED(CONFIG_IR_NEC_DECODER)
	struct nec_dec {
		int state;
		unsigned count;
@@ -71,12 +72,16 @@ struct ir_raw_event_ctrl {
		bool is_nec_x;
		bool necx_repeat;
	} nec;
#endif
#if IS_ENABLED(CONFIG_IR_RC5_DECODER)
	struct rc5_dec {
		int state;
		u32 bits;
		unsigned count;
		bool is_rc5x;
	} rc5;
#endif
#if IS_ENABLED(CONFIG_IR_RC6_DECODER)
	struct rc6_dec {
		int state;
		u8 header;
@@ -85,11 +90,15 @@ struct ir_raw_event_ctrl {
		unsigned count;
		unsigned wanted_bits;
	} rc6;
#endif
#if IS_ENABLED(CONFIG_IR_SONY_DECODER)
	struct sony_dec {
		int state;
		u32 bits;
		unsigned count;
	} sony;
#endif
#if IS_ENABLED(CONFIG_IR_JVC_DECODER)
	struct jvc_dec {
		int state;
		u16 bits;
@@ -98,17 +107,23 @@ struct ir_raw_event_ctrl {
		bool first;
		bool toggle;
	} jvc;
#endif
#if IS_ENABLED(CONFIG_IR_SANYO_DECODER)
	struct sanyo_dec {
		int state;
		unsigned count;
		u64 bits;
	} sanyo;
#endif
#if IS_ENABLED(CONFIG_IR_SHARP_DECODER)
	struct sharp_dec {
		int state;
		unsigned count;
		u32 bits;
		unsigned int pulse_len;
	} sharp;
#endif
#if IS_ENABLED(CONFIG_IR_MCE_KBD_DECODER)
	struct mce_kbd_dec {
		/* locks key up timer */
		spinlock_t keylock;
@@ -119,11 +134,15 @@ struct ir_raw_event_ctrl {
		unsigned count;
		unsigned wanted_bits;
	} mce_kbd;
#endif
#if IS_ENABLED(CONFIG_IR_XMP_DECODER)
	struct xmp_dec {
		int state;
		unsigned count;
		u32 durations[16];
	} xmp;
#endif
#if IS_ENABLED(CONFIG_IR_IMON_DECODER)
	struct imon_dec {
		int state;
		int count;
@@ -131,11 +150,14 @@ struct ir_raw_event_ctrl {
		unsigned int bits;
		bool stick_keyboard;
	} imon;
#endif
#if IS_ENABLED(CONFIG_IR_RCMM_DECODER)
	struct rcmm_dec {
		int state;
		unsigned int count;
		u32 bits;
	} rcmm;
#endif
};

/* Mutex for locking raw IR processing and handler change */