media: rc: no need for decoder state if decoder not enabled
authorSean Young <sean@mess.org>
Tue, 21 Apr 2020 10:19:27 +0000 (12:19 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Wed, 29 Apr 2020 09:59:20 +0000 (11:59 +0200)
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: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/rc/rc-core-priv.h

index 5f36244..1eeab27 100644 (file)
@@ -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 */