Skip to content

Commit

Permalink
irqchip/dw-apb-ictl: Support building as module
Browse files Browse the repository at this point in the history
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: Jisheng Zhang <jszhang@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20240614153449.2083-1-jszhang@kernel.org
  • Loading branch information
Jisheng Zhang authored and Thomas Gleixner committed Jun 23, 2024
1 parent ef7080b commit 7cc4f30
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 4 deletions.
2 changes: 1 addition & 1 deletion drivers/irqchip/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
13 changes: 10 additions & 3 deletions drivers/irqchip/irq-dw-apb-ictl.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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

0 comments on commit 7cc4f30

Please sign in to comment.