irqchip: Allow extra fields to be passed to IRQCHIP_PLATFORM_DRIVER_END
authorFrank Li <Frank.Li@nxp.com>
Thu, 22 Sep 2022 16:12:42 +0000 (11:12 -0500)
committerMarc Zyngier <maz@kernel.org>
Wed, 28 Sep 2022 13:21:53 +0000 (14:21 +0100)
IRQCHIP_PLATFORM_DRIVER_* doesn't allow some fields (such as .pm)
to be set in the platform_driver structure.

Make IRQCHIP_PLATFORM_DRIVER_END variadic so that .pm or another
field can be set if needed.

Signed-off-by: Frank Li <Frank.Li@nxp.com>
[maz: revamped commit message]
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20220922161246.20586-3-Frank.Li@nxp.com
include/linux/irqchip.h

index 3a091d0..d5e6024 100644 (file)
@@ -44,7 +44,8 @@ static const struct of_device_id drv_name##_irqchip_match_table[] = {
 #define IRQCHIP_MATCH(compat, fn) { .compatible = compat,              \
                                    .data = typecheck_irq_init_cb(fn), },
 
-#define IRQCHIP_PLATFORM_DRIVER_END(drv_name)                          \
+
+#define IRQCHIP_PLATFORM_DRIVER_END(drv_name, ...)                     \
        {},                                                             \
 };                                                                     \
 MODULE_DEVICE_TABLE(of, drv_name##_irqchip_match_table);               \
@@ -56,6 +57,7 @@ static struct platform_driver drv_name##_driver = {                   \
                .owner = THIS_MODULE,                                   \
                .of_match_table = drv_name##_irqchip_match_table,       \
                .suppress_bind_attrs = true,                            \
+               __VA_ARGS__                                             \
        },                                                              \
 };                                                                     \
 builtin_platform_driver(drv_name##_driver)