* [PATCH 1/7] irqchip: Introduce Kconfig symbol to build irq-bcm283x.c
2019-09-13 23:22 [PATCH 0/7] irqchip/irq-bcm283x update for BCM7211 Florian Fainelli
@ 2019-09-13 23:22 ` Florian Fainelli
2019-09-13 23:22 ` [PATCH 2/7] dt-bindings: interrupt-controller: Add brcm,bcm7211-armctrl-ic binding Florian Fainelli
` (5 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Florian Fainelli @ 2019-09-13 23:22 UTC (permalink / raw)
To: linux-kernel; +Cc: Florian Fainelli
Both irq-bcm2835.c and irq-bcm2836.c are currently used with
ARCH_BCM2835 but are soon going to be used with ARCH_BRCMSTB, introduce
a Kconfig symbol to make that those drivers selected/built by other
platforms.
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
drivers/irqchip/Kconfig | 5 +++++
drivers/irqchip/Makefile | 4 ++--
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig
index 80e10f4e213a..d1bb20d23d27 100644
--- a/drivers/irqchip/Kconfig
+++ b/drivers/irqchip/Kconfig
@@ -113,6 +113,11 @@ config I8259
bool
select IRQ_DOMAIN
+config BCM283X_IRQ
+ bool
+ select IRQ_DOMAIN
+ default ARCH_BCM2835
+
config BCM6345_L1_IRQ
bool
select GENERIC_IRQ_CHIP
diff --git a/drivers/irqchip/Makefile b/drivers/irqchip/Makefile
index 8d0fcec6ab23..9cf14c7945f6 100644
--- a/drivers/irqchip/Makefile
+++ b/drivers/irqchip/Makefile
@@ -5,8 +5,8 @@ obj-$(CONFIG_AL_FIC) += irq-al-fic.o
obj-$(CONFIG_ALPINE_MSI) += irq-alpine-msi.o
obj-$(CONFIG_ATH79) += irq-ath79-cpu.o
obj-$(CONFIG_ATH79) += irq-ath79-misc.o
-obj-$(CONFIG_ARCH_BCM2835) += irq-bcm2835.o
-obj-$(CONFIG_ARCH_BCM2835) += irq-bcm2836.o
+obj-$(CONFIG_BCM283X_IRQ) += irq-bcm2835.o
+obj-$(CONFIG_BCM283X_IRQ) += irq-bcm2836.o
obj-$(CONFIG_DAVINCI_AINTC) += irq-davinci-aintc.o
obj-$(CONFIG_DAVINCI_CP_INTC) += irq-davinci-cp-intc.o
obj-$(CONFIG_ARCH_EXYNOS) += exynos-combiner.o
--
2.17.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/7] dt-bindings: interrupt-controller: Add brcm,bcm7211-armctrl-ic binding
2019-09-13 23:22 [PATCH 0/7] irqchip/irq-bcm283x update for BCM7211 Florian Fainelli
2019-09-13 23:22 ` [PATCH 1/7] irqchip: Introduce Kconfig symbol to build irq-bcm283x.c Florian Fainelli
@ 2019-09-13 23:22 ` Florian Fainelli
2019-09-13 23:22 ` [PATCH 3/7] irqchip/irq-bcm2835: Add support for 7211 interrupt controller Florian Fainelli
` (4 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Florian Fainelli @ 2019-09-13 23:22 UTC (permalink / raw)
To: linux-kernel; +Cc: Florian Fainelli
BCM7211 features a second level interrupt controller similar in nature
to BCM2836, with a few modifications to the register offsets, document
that specific compatible string.
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
.../interrupt-controller/brcm,bcm2835-armctrl-ic.txt | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt b/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
index 0f1af5a1c12e..0b07845b46e4 100644
--- a/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
+++ b/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
@@ -12,7 +12,8 @@ interrupt there indicates that the ARMCTRL has an interrupt to handle.
Required properties:
- compatible : should be "brcm,bcm2835-armctrl-ic" or
- "brcm,bcm2836-armctrl-ic"
+ "brcm,bcm2836-armctrl-ic" or
+ "brcm,bcm7211-armctrl-ic"
- reg : Specifies base physical address and size of the registers.
- interrupt-controller : Identifies the node as an interrupt controller
- #interrupt-cells : Specifies the number of cells needed to encode an
@@ -25,7 +26,8 @@ Required properties:
The 2nd cell contains the interrupt number within the bank. Valid values
are 0..7 for bank 0, and 0..31 for bank 1.
-Additional required properties for brcm,bcm2836-armctrl-ic:
+Additional required properties for brcm,bcm2836-armctrl-ic and
+brcm,bcm7211-armctrl-ic:
- interrupts : Specifies the interrupt on the parent for this interrupt
controller to handle.
--
2.17.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/7] irqchip/irq-bcm2835: Add support for 7211 interrupt controller
2019-09-13 23:22 [PATCH 0/7] irqchip/irq-bcm283x update for BCM7211 Florian Fainelli
2019-09-13 23:22 ` [PATCH 1/7] irqchip: Introduce Kconfig symbol to build irq-bcm283x.c Florian Fainelli
2019-09-13 23:22 ` [PATCH 2/7] dt-bindings: interrupt-controller: Add brcm,bcm7211-armctrl-ic binding Florian Fainelli
@ 2019-09-13 23:22 ` Florian Fainelli
2019-09-13 23:22 ` [PATCH 4/7] dt-bindings: interrupt-controller: Add brcm,bcm7211-l1-intc binding Florian Fainelli
` (3 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Florian Fainelli @ 2019-09-13 23:22 UTC (permalink / raw)
To: linux-kernel; +Cc: Florian Fainelli
BCM7211 has a number of similarities with BCM2836, except the register
offsets are different and the bank bits are also different, account for
all of these differences.
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
drivers/irqchip/irq-bcm2835.c | 86 +++++++++++++++++++++++++++++------
1 file changed, 72 insertions(+), 14 deletions(-)
diff --git a/drivers/irqchip/irq-bcm2835.c b/drivers/irqchip/irq-bcm2835.c
index 418245d31921..55afc3487723 100644
--- a/drivers/irqchip/irq-bcm2835.c
+++ b/drivers/irqchip/irq-bcm2835.c
@@ -57,19 +57,34 @@
#define SHORTCUT_SHIFT 10
#define BANK1_HWIRQ BIT(8)
#define BANK2_HWIRQ BIT(9)
+#define BANK1_HWIRQ_BCM7211 BIT(24)
+#define BANK2_HWIRQ_BCM7211 BIT(25)
#define BANK0_VALID_MASK (BANK0_HWIRQ_MASK | BANK1_HWIRQ | BANK2_HWIRQ \
| SHORTCUT1_MASK | SHORTCUT2_MASK)
+#define BANK0_VALID_MASK_BCM7211 (BANK0_HWIRQ_MASK | BANK1_HWIRQ_BCM7211 | \
+ BANK2_HWIRQ_BCM7211 | SHORTCUT1_MASK | \
+ SHORTCUT2_MASK)
#define REG_FIQ_CONTROL 0x0c
#define NR_BANKS 3
#define IRQS_PER_BANK 32
+enum armctrl_type {
+ ARMCTRL_BCM2835 = 0,
+ ARMCTRL_BCM2836,
+ ARMCTRL_BCM7211
+};
+
static const int reg_pending[] __initconst = { 0x00, 0x04, 0x08 };
static const int reg_enable[] __initconst = { 0x18, 0x10, 0x14 };
static const int reg_disable[] __initconst = { 0x24, 0x1c, 0x20 };
static const int bank_irqs[] __initconst = { 8, 32, 32 };
+static const int reg_pending_bcm7211[] __initconst = { 0x08, 0x00, 0x04 };
+static const int reg_enable_bcm7211[] __initconst = { 0x18, 0x10, 0x14 };
+static const int reg_disable_bcm7211[] __initconst = { 0x28, 0x20, 0x24 };
+
static const int shortcuts[] = {
7, 9, 10, 18, 19, /* Bank 1 */
21, 22, 23, 24, 25, 30 /* Bank 2 */
@@ -87,6 +102,7 @@ static struct armctrl_ic intc __read_mostly;
static void __exception_irq_entry bcm2835_handle_irq(
struct pt_regs *regs);
static void bcm2836_chained_handle_irq(struct irq_desc *desc);
+static void bcm7211_chained_handle_irq(struct irq_desc *desc);
static void armctrl_mask_irq(struct irq_data *d)
{
@@ -131,11 +147,14 @@ static const struct irq_domain_ops armctrl_ops = {
static int __init armctrl_of_init(struct device_node *node,
struct device_node *parent,
- bool is_2836)
+ enum armctrl_type type)
{
void __iomem *base;
int irq, b, i;
+ if (type > ARMCTRL_BCM7211)
+ return -EINVAL;
+
base = of_iomap(node, 0);
if (!base)
panic("%pOF: unable to map IC registers\n", node);
@@ -146,9 +165,19 @@ static int __init armctrl_of_init(struct device_node *node,
panic("%pOF: unable to create IRQ domain\n", node);
for (b = 0; b < NR_BANKS; b++) {
- intc.pending[b] = base + reg_pending[b];
- intc.enable[b] = base + reg_enable[b];
- intc.disable[b] = base + reg_disable[b];
+ if (type <= ARMCTRL_BCM2836) {
+ intc.pending[b] = base + reg_pending[b];
+ intc.enable[b] = base + reg_enable[b];
+ intc.disable[b] = base + reg_disable[b];
+ } else {
+ intc.pending[b] = base + reg_pending_bcm7211[b];
+ intc.enable[b] = base + reg_enable_bcm7211[b];
+ intc.disable[b] = base + reg_disable_bcm7211[b];
+ }
+
+ if (type == ARMCTRL_BCM7211)
+ armctrl_chip.flags |= IRQCHIP_MASK_ON_SUSPEND |
+ IRQCHIP_SKIP_SET_WAKE;
for (i = 0; i < bank_irqs[b]; i++) {
irq = irq_create_mapping(intc.domain, MAKE_HWIRQ(b, i));
@@ -159,14 +188,19 @@ static int __init armctrl_of_init(struct device_node *node,
}
}
- if (is_2836) {
+ if (type >= ARMCTRL_BCM2836) {
int parent_irq = irq_of_parse_and_map(node, 0);
if (!parent_irq) {
panic("%pOF: unable to get parent interrupt.\n",
node);
}
- irq_set_chained_handler(parent_irq, bcm2836_chained_handle_irq);
+ if (type == ARMCTRL_BCM2836)
+ irq_set_chained_handler(parent_irq,
+ bcm2836_chained_handle_irq);
+ else
+ irq_set_chained_handler(parent_irq,
+ bcm7211_chained_handle_irq);
} else {
set_handle_irq(bcm2835_handle_irq);
}
@@ -177,13 +211,19 @@ static int __init armctrl_of_init(struct device_node *node,
static int __init bcm2835_armctrl_of_init(struct device_node *node,
struct device_node *parent)
{
- return armctrl_of_init(node, parent, false);
+ return armctrl_of_init(node, parent, ARMCTRL_BCM2835);
}
static int __init bcm2836_armctrl_of_init(struct device_node *node,
struct device_node *parent)
{
- return armctrl_of_init(node, parent, true);
+ return armctrl_of_init(node, parent, ARMCTRL_BCM2836);
+}
+
+static int __init bcm7211_armctrl_of_init(struct device_node *node,
+ struct device_node *parent)
+{
+ return armctrl_of_init(node, parent, ARMCTRL_BCM7211);
}
@@ -205,9 +245,11 @@ static u32 armctrl_translate_shortcut(int bank, u32 stat)
return MAKE_HWIRQ(bank, shortcuts[ffs(stat >> SHORTCUT_SHIFT) - 1]);
}
-static u32 get_next_armctrl_hwirq(void)
+static u32 get_next_armctrl_hwirq(u32 valid_mask,
+ u32 bank1_mask,
+ u32 bank2_mask)
{
- u32 stat = readl_relaxed(intc.pending[0]) & BANK0_VALID_MASK;
+ u32 stat = readl_relaxed(intc.pending[0]) & valid_mask;
if (stat == 0)
return ~0;
@@ -217,9 +259,9 @@ static u32 get_next_armctrl_hwirq(void)
return armctrl_translate_shortcut(1, stat & SHORTCUT1_MASK);
else if (stat & SHORTCUT2_MASK)
return armctrl_translate_shortcut(2, stat & SHORTCUT2_MASK);
- else if (stat & BANK1_HWIRQ)
+ else if (stat & bank1_mask)
return armctrl_translate_bank(1);
- else if (stat & BANK2_HWIRQ)
+ else if (stat & bank2_mask)
return armctrl_translate_bank(2);
else
BUG();
@@ -230,7 +272,9 @@ static void __exception_irq_entry bcm2835_handle_irq(
{
u32 hwirq;
- while ((hwirq = get_next_armctrl_hwirq()) != ~0)
+ while ((hwirq = get_next_armctrl_hwirq(BANK0_VALID_MASK,
+ BANK1_HWIRQ,
+ BANK2_HWIRQ)) != ~0)
handle_domain_irq(intc.domain, hwirq, regs);
}
@@ -238,7 +282,19 @@ static void bcm2836_chained_handle_irq(struct irq_desc *desc)
{
u32 hwirq;
- while ((hwirq = get_next_armctrl_hwirq()) != ~0)
+ while ((hwirq = get_next_armctrl_hwirq(BANK0_VALID_MASK,
+ BANK1_HWIRQ,
+ BANK2_HWIRQ)) != ~0)
+ generic_handle_irq(irq_linear_revmap(intc.domain, hwirq));
+}
+
+static void bcm7211_chained_handle_irq(struct irq_desc *desc)
+{
+ u32 hwirq;
+
+ while ((hwirq = get_next_armctrl_hwirq(BANK0_VALID_MASK_BCM7211,
+ BANK1_HWIRQ_BCM7211,
+ BANK2_HWIRQ_BCM7211)) != ~0)
generic_handle_irq(irq_linear_revmap(intc.domain, hwirq));
}
@@ -246,3 +302,5 @@ IRQCHIP_DECLARE(bcm2835_armctrl_ic, "brcm,bcm2835-armctrl-ic",
bcm2835_armctrl_of_init);
IRQCHIP_DECLARE(bcm2836_armctrl_ic, "brcm,bcm2836-armctrl-ic",
bcm2836_armctrl_of_init);
+IRQCHIP_DECLARE(bcm7211_armctrl_ic, "brcm,bcm7211-armctrl-ic",
+ bcm7211_armctrl_of_init);
--
2.17.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 4/7] dt-bindings: interrupt-controller: Add brcm,bcm7211-l1-intc binding
2019-09-13 23:22 [PATCH 0/7] irqchip/irq-bcm283x update for BCM7211 Florian Fainelli
` (2 preceding siblings ...)
2019-09-13 23:22 ` [PATCH 3/7] irqchip/irq-bcm2835: Add support for 7211 interrupt controller Florian Fainelli
@ 2019-09-13 23:22 ` Florian Fainelli
2019-09-13 23:22 ` [PATCH 5/7] irqchip/irq-bcm2836: Add support for the 7211 interrupt controller Florian Fainelli
` (2 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Florian Fainelli @ 2019-09-13 23:22 UTC (permalink / raw)
To: linux-kernel; +Cc: Florian Fainelli
BCM7211 uses a very similar root interrupt controller than what exists on
BCM2836, define a specific compatible string to key off specific
behavior.
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
.../bindings/interrupt-controller/brcm,bcm2836-l1-intc.txt | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm2836-l1-intc.txt b/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm2836-l1-intc.txt
index 8ced1696c325..13bef028d6ad 100644
--- a/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm2836-l1-intc.txt
+++ b/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm2836-l1-intc.txt
@@ -7,7 +7,9 @@ controller.
Required properties:
-- compatible: Should be "brcm,bcm2836-l1-intc"
+- compatible: Should be one of
+ "brcm,bcm2836-l1-intc"
+ "brcm,bcm7211-l1-intc"
- reg: Specifies base physical address and size of the
registers
- interrupt-controller: Identifies the node as an interrupt controller
--
2.17.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 5/7] irqchip/irq-bcm2836: Add support for the 7211 interrupt controller
2019-09-13 23:22 [PATCH 0/7] irqchip/irq-bcm283x update for BCM7211 Florian Fainelli
` (3 preceding siblings ...)
2019-09-13 23:22 ` [PATCH 4/7] dt-bindings: interrupt-controller: Add brcm,bcm7211-l1-intc binding Florian Fainelli
@ 2019-09-13 23:22 ` Florian Fainelli
2019-09-13 23:22 ` [PATCH 6/7] irqchip: Build BCM283X_IRQ for ARCH_BRCMSTB Florian Fainelli
2019-09-13 23:22 ` [PATCH 7/7] irqchip/irq-bcm283x: Add registration prints Florian Fainelli
6 siblings, 0 replies; 9+ messages in thread
From: Florian Fainelli @ 2019-09-13 23:22 UTC (permalink / raw)
To: linux-kernel; +Cc: Florian Fainelli
The root interrupt controller on 7211 is about identical to the one
existing on BCM2836, except that the SMP cross call are done through the
standard ARM GIC-400 interrupt controller. This interrupt controller is
used for side band wake-up signals though.
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
drivers/irqchip/irq-bcm2836.c | 25 ++++++++++++++++++++++---
1 file changed, 22 insertions(+), 3 deletions(-)
diff --git a/drivers/irqchip/irq-bcm2836.c b/drivers/irqchip/irq-bcm2836.c
index 2038693f074c..77fa395c8f6b 100644
--- a/drivers/irqchip/irq-bcm2836.c
+++ b/drivers/irqchip/irq-bcm2836.c
@@ -112,6 +112,8 @@ static int bcm2836_map(struct irq_domain *d, unsigned int irq,
return -EINVAL;
}
+ chip->flags |= IRQCHIP_MASK_ON_SUSPEND | IRQCHIP_SKIP_SET_WAKE;
+
irq_set_percpu_devid(irq);
irq_domain_set_info(d, irq, hw, chip, d->host_data,
handle_percpu_devid_irq, NULL, NULL);
@@ -216,8 +218,9 @@ static void bcm2835_init_local_timer_frequency(void)
writel(0x80000000, intc.base + LOCAL_PRESCALER);
}
-static int __init bcm2836_arm_irqchip_l1_intc_of_init(struct device_node *node,
- struct device_node *parent)
+static int __init arm_irqchip_l1_intc_of_init_smp(struct device_node *node,
+ struct device_node *parent,
+ bool smp_init)
{
intc.base = of_iomap(node, 0);
if (!intc.base) {
@@ -232,11 +235,27 @@ static int __init bcm2836_arm_irqchip_l1_intc_of_init(struct device_node *node,
if (!intc.domain)
panic("%pOF: unable to create IRQ domain\n", node);
- bcm2836_arm_irqchip_smp_init();
+ if (smp_init)
+ bcm2836_arm_irqchip_smp_init();
set_handle_irq(bcm2836_arm_irqchip_handle_irq);
+
return 0;
}
+static int __init bcm2836_arm_irqchip_l1_intc_of_init(struct device_node *node,
+ struct device_node *parent)
+{
+ return arm_irqchip_l1_intc_of_init_smp(node, parent, true);
+}
+
+static int __init bcm7211_arm_irqchip_l1_intc_of_init(struct device_node *node,
+ struct device_node *parent)
+{
+ return arm_irqchip_l1_intc_of_init_smp(node, parent, false);
+}
+
IRQCHIP_DECLARE(bcm2836_arm_irqchip_l1_intc, "brcm,bcm2836-l1-intc",
bcm2836_arm_irqchip_l1_intc_of_init);
+IRQCHIP_DECLARE(bcm7211_arm_irqchip_l1_intc, "brcm,bcm7211-l1-intc",
+ bcm7211_arm_irqchip_l1_intc_of_init);
--
2.17.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 6/7] irqchip: Build BCM283X_IRQ for ARCH_BRCMSTB
2019-09-13 23:22 [PATCH 0/7] irqchip/irq-bcm283x update for BCM7211 Florian Fainelli
` (4 preceding siblings ...)
2019-09-13 23:22 ` [PATCH 5/7] irqchip/irq-bcm2836: Add support for the 7211 interrupt controller Florian Fainelli
@ 2019-09-13 23:22 ` Florian Fainelli
2019-09-13 23:22 ` [PATCH 7/7] irqchip/irq-bcm283x: Add registration prints Florian Fainelli
6 siblings, 0 replies; 9+ messages in thread
From: Florian Fainelli @ 2019-09-13 23:22 UTC (permalink / raw)
To: linux-kernel; +Cc: Florian Fainelli
Now that irq-bcm2835.c and irq-bcm2836.c have been updated to support
BCM7211 which is under ARCH_BRCMSTB, build both drivers for
ARCH_BRCMSTB.
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
drivers/irqchip/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig
index d1bb20d23d27..ffd5f986172a 100644
--- a/drivers/irqchip/Kconfig
+++ b/drivers/irqchip/Kconfig
@@ -116,7 +116,7 @@ config I8259
config BCM283X_IRQ
bool
select IRQ_DOMAIN
- default ARCH_BCM2835
+ default ARCH_BCM2835 || ARCH_BRCMSTB
config BCM6345_L1_IRQ
bool
--
2.17.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 7/7] irqchip/irq-bcm283x: Add registration prints
2019-09-13 23:22 [PATCH 0/7] irqchip/irq-bcm283x update for BCM7211 Florian Fainelli
` (5 preceding siblings ...)
2019-09-13 23:22 ` [PATCH 6/7] irqchip: Build BCM283X_IRQ for ARCH_BRCMSTB Florian Fainelli
@ 2019-09-13 23:22 ` Florian Fainelli
6 siblings, 0 replies; 9+ messages in thread
From: Florian Fainelli @ 2019-09-13 23:22 UTC (permalink / raw)
To: linux-kernel; +Cc: Florian Fainelli
With many different kind of interrupt controllers available and used on
7211, add prints to help determine which ones are registered.
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
drivers/irqchip/irq-bcm2835.c | 9 +++++++++
drivers/irqchip/irq-bcm2836.c | 2 ++
2 files changed, 11 insertions(+)
diff --git a/drivers/irqchip/irq-bcm2835.c b/drivers/irqchip/irq-bcm2835.c
index 55afc3487723..ae23e9ec86d0 100644
--- a/drivers/irqchip/irq-bcm2835.c
+++ b/drivers/irqchip/irq-bcm2835.c
@@ -76,6 +76,12 @@ enum armctrl_type {
ARMCTRL_BCM7211
};
+static const char *armctrl_type_str[] = {
+ [ARMCTRL_BCM2835] = "BCM2835",
+ [ARMCTRL_BCM2836] = "BCM2836",
+ [ARMCTRL_BCM7211] = "BCM7211",
+};
+
static const int reg_pending[] __initconst = { 0x00, 0x04, 0x08 };
static const int reg_enable[] __initconst = { 0x18, 0x10, 0x14 };
static const int reg_disable[] __initconst = { 0x24, 0x1c, 0x20 };
@@ -205,6 +211,9 @@ static int __init armctrl_of_init(struct device_node *node,
set_handle_irq(bcm2835_handle_irq);
}
+ pr_info("registered %s intc (%pOF)\n", armctrl_type_str[type],
+ node);
+
return 0;
}
diff --git a/drivers/irqchip/irq-bcm2836.c b/drivers/irqchip/irq-bcm2836.c
index 77fa395c8f6b..b159dc91919d 100644
--- a/drivers/irqchip/irq-bcm2836.c
+++ b/drivers/irqchip/irq-bcm2836.c
@@ -240,6 +240,8 @@ static int __init arm_irqchip_l1_intc_of_init_smp(struct device_node *node,
set_handle_irq(bcm2836_arm_irqchip_handle_irq);
+ pr_info("Registered BCM2836 intc (%s)\n", node->full_name);
+
return 0;
}
--
2.17.1
^ permalink raw reply related [flat|nested] 9+ messages in thread