Skip to content

Commit

Permalink
irqchips/bmips: Add bcm6345-l1 interrupt controller
Browse files Browse the repository at this point in the history
Add the BCM6345 interrupt controller based on the SMP-capable BCM7038
and the BCM3380 but with packed interrupt registers.

Add the BCM6345 interrupt controller to a list with the existing BCM7038
so that interrupts on CPU1 are not ignored.

Update the maintainers file list for BMIPS to include this driver.

Signed-off-by: Simon Arlott <[email protected]>
Cc: Mark Rutland <[email protected]>
Cc: [email protected]
Cc: Ian Campbell <[email protected]>
Cc: Florian Fainelli <[email protected]>
Cc: Jason Cooper <[email protected]>
Cc: Pawel Moll <[email protected]>
Cc: [email protected]
Cc: Marc Zyngier <[email protected]>
Cc: Kevin Cernekee <[email protected]>
Cc: Ralf Baechle <[email protected]>
Cc: Jonas Gorski <[email protected]>
Cc: Kumar Gala <[email protected]>
Cc: Rob Herring <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Thomas Gleixner <[email protected]>
  • Loading branch information
nomis authored and KAGA-KOKO committed Feb 8, 2016
1 parent 4b5ce20 commit c7c42ec
Show file tree
Hide file tree
Showing 6 changed files with 380 additions and 2 deletions.
1 change: 1 addition & 0 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -2423,6 +2423,7 @@ F: arch/mips/bmips/*
F: arch/mips/include/asm/mach-bmips/*
F: arch/mips/kernel/*bmips*
F: arch/mips/boot/dts/brcm/bcm*.dts*
F: drivers/irqchip/irq-bcm63*
F: drivers/irqchip/irq-bcm7*
F: drivers/irqchip/irq-brcmstb*
F: include/linux/bcm963xx_nvram.h
Expand Down
1 change: 1 addition & 0 deletions arch/mips/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ config BMIPS_GENERIC
select CSRC_R4K
select SYNC_R4K
select COMMON_CLK
select BCM6345_L1_IRQ
select BCM7038_L1_IRQ
select BCM7120_L2_IRQ
select BRCMSTB_L2_IRQ
Expand Down
10 changes: 8 additions & 2 deletions arch/mips/bmips/irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@
#include <asm/irq_cpu.h>
#include <asm/time.h>

static const struct of_device_id smp_intc_dt_match[] = {
{ .compatible = "brcm,bcm7038-l1-intc" },
{ .compatible = "brcm,bcm6345-l1-intc" },
{}
};

unsigned int get_c0_compare_int(void)
{
return CP0_LEGACY_COMPARE_IRQ;
Expand All @@ -24,8 +30,8 @@ void __init arch_init_irq(void)
{
struct device_node *dn;

/* Only the STB (bcm7038) controller supports SMP IRQ affinity */
dn = of_find_compatible_node(NULL, NULL, "brcm,bcm7038-l1-intc");
/* Only these controllers support SMP IRQ affinity */
dn = of_find_matching_node(NULL, smp_intc_dt_match);
if (dn)
of_node_put(dn);
else
Expand Down
5 changes: 5 additions & 0 deletions drivers/irqchip/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,11 @@ config I8259
bool
select IRQ_DOMAIN

config BCM6345_L1_IRQ
bool
select GENERIC_IRQ_CHIP
select IRQ_DOMAIN

config BCM7038_L1_IRQ
bool
select GENERIC_IRQ_CHIP
Expand Down
1 change: 1 addition & 0 deletions drivers/irqchip/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ obj-$(CONFIG_XTENSA) += irq-xtensa-pic.o
obj-$(CONFIG_XTENSA_MX) += irq-xtensa-mx.o
obj-$(CONFIG_IRQ_CROSSBAR) += irq-crossbar.o
obj-$(CONFIG_SOC_VF610) += irq-vf610-mscm-ir.o
obj-$(CONFIG_BCM6345_L1_IRQ) += irq-bcm6345-l1.o
obj-$(CONFIG_BCM7038_L1_IRQ) += irq-bcm7038-l1.o
obj-$(CONFIG_BCM7120_L2_IRQ) += irq-bcm7120-l2.o
obj-$(CONFIG_BRCMSTB_L2_IRQ) += irq-brcmstb-l2.o
Expand Down
Loading

0 comments on commit c7c42ec

Please sign in to comment.