Commit 7cc4f309 authored by Jisheng Zhang's avatar Jisheng Zhang Committed by Thomas Gleixner
Browse files

irqchip/dw-apb-ictl: Support building as module



The driver is now always built in. In some synaptics ARM64 SoCs it is used
as a second level interrupt controller hanging off the ARM GIC and is
therefore loadable during boot.

Enable it to be built as a module and handle built-in usage correctly, so
that it continues working on systems where it is the main interrupt
controller.

[ tglx: Massage changelog ]

Signed-off-by: default avatarJisheng Zhang <jszhang@kernel.org>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20240614153449.2083-1-jszhang@kernel.org
parent ef7080bd
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -145,7 +145,7 @@ config DAVINCI_CP_INTC
	select IRQ_DOMAIN

config DW_APB_ICTL
	bool
	tristate "DesignWare APB Interrupt Controller"
	select GENERIC_IRQ_CHIP
	select IRQ_DOMAIN_HIERARCHY

+10 −3
Original line number Diff line number Diff line
@@ -122,7 +122,7 @@ static int __init dw_apb_ictl_init(struct device_node *np,
	int ret, nrirqs, parent_irq, i;
	u32 reg;

	if (!parent) {
	if (!parent && IS_BUILTIN(CONFIG_DW_APB_ICTL)) {
		/* Used as the primary interrupt controller */
		parent_irq = 0;
		domain_ops = &dw_apb_ictl_irq_domain_ops;
@@ -214,5 +214,12 @@ static int __init dw_apb_ictl_init(struct device_node *np,
	release_mem_region(r.start, resource_size(&r));
	return ret;
}
IRQCHIP_DECLARE(dw_apb_ictl,
		"snps,dw-apb-ictl", dw_apb_ictl_init);
#if IS_BUILTIN(CONFIG_DW_APB_ICTL)
IRQCHIP_DECLARE(dw_apb_ictl, "snps,dw-apb-ictl", dw_apb_ictl_init);
#else
IRQCHIP_PLATFORM_DRIVER_BEGIN(dw_apb_ictl)
IRQCHIP_MATCH("snps,dw-apb-ictl", dw_apb_ictl_init)
IRQCHIP_PLATFORM_DRIVER_END(dw_apb_ictl)
MODULE_DESCRIPTION("DesignWare APB Interrupt Controller");
MODULE_LICENSE("GPL v2");
#endif