* [PATCH v4 1/2] devicetree: add binding for Sigma Designs SMP86xx interrupt controller
@ 2016-01-20 18:07 Mans Rullgard
2016-01-20 18:07 ` [PATCH v4 2/2] irqchip: add support for Sigma Designs SMP86xx/SMP87xx " Mans Rullgard
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Mans Rullgard @ 2016-01-20 18:07 UTC (permalink / raw)
To: Jason Cooper, Marc Zyngier, Mark Rutland, Marc Gonzalez
Cc: Thomas Gleixner, Rob Herring, Pawel Moll, Ian Campbell,
Kumar Gala, linux-kernel, devicetree, Sebastian Frias
This adds a binding for the secondary interrupt controller in
Sigma Designs SMP86xx and SMP87xx chips.
Signed-off-by: Mans Rullgard <mans@mansr.com>
---
Changes:
- not included in v3
---
.../interrupt-controller/sigma,smp8642-intc.txt | 49 ++++++++++++++++++++++
1 file changed, 49 insertions(+)
create mode 100644 Documentation/devicetree/bindings/interrupt-controller/sigma,smp8642-intc.txt
diff --git a/Documentation/devicetree/bindings/interrupt-controller/sigma,smp8642-intc.txt b/Documentation/devicetree/bindings/interrupt-controller/sigma,smp8642-intc.txt
new file mode 100644
index 000000000000..2643f3466091
--- /dev/null
+++ b/Documentation/devicetree/bindings/interrupt-controller/sigma,smp8642-intc.txt
@@ -0,0 +1,49 @@
+Sigma Designs SMP86xx/SMP87xx secondary interrupt controller
+
+Required properties:
+- compatible: should be "sigma,smp8642-intc"
+- reg: physical address of MMIO region
+- ranges: address space mapping of child nodes
+- interrupt-parent: phandle of parent interrupt controller
+- interrupt-controller: boolean
+- #address-cells: should be <1>
+- #size-cells: should be <1>
+
+One child node per control block with properties:
+- reg: address of registers for this control block
+- interrupt-controller: boolean
+- #interrupt-cells: should be <2>, interrupt index and flags per interrupts.txt
+- interrupts: interrupt spec of primary interrupt controller
+
+Example:
+
+interrupt-controller@6e000 {
+ compatible = "sigma,smp8642-intc";
+ reg = <0x6e000 0x400>;
+ ranges = <0x0 0x6e000 0x400>;
+ interrupt-parent = <&gic>;
+ interrupt-controller;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ irq0: irq0 {
+ reg = <0x000 0x100>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ irq1: irq1 {
+ reg = <0x100 0x100>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ irq2: irq2 {
+ reg = <0x300 0x100>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
+ };
+};
--
2.7.0
^ permalink raw reply related [flat|nested] 10+ messages in thread* [PATCH v4 2/2] irqchip: add support for Sigma Designs SMP86xx/SMP87xx interrupt controller 2016-01-20 18:07 [PATCH v4 1/2] devicetree: add binding for Sigma Designs SMP86xx interrupt controller Mans Rullgard @ 2016-01-20 18:07 ` Mans Rullgard 2016-01-29 17:10 ` Marc Zyngier 2016-02-18 1:34 ` Jason Cooper 2016-01-22 16:06 ` [PATCH v4 1/2] devicetree: add binding for Sigma Designs SMP86xx " Rob Herring 2016-02-18 1:33 ` Jason Cooper 2 siblings, 2 replies; 10+ messages in thread From: Mans Rullgard @ 2016-01-20 18:07 UTC (permalink / raw) To: Jason Cooper, Marc Zyngier, Mark Rutland, Marc Gonzalez Cc: Thomas Gleixner, Rob Herring, Pawel Moll, Ian Campbell, Kumar Gala, linux-kernel, devicetree, Sebastian Frias This adds support for the secondary interrupt controller used in Sigma Designs SMP86xx and SMP87xx chips. Signed-off-by: Mans Rullgard <mans@mansr.com> --- Changes from v3: - use of_address_to_resource() rather accessing "reg" property directly Boot tested on SMP8643 (tango3) and SMP8759 (tango4) --- drivers/irqchip/Kconfig | 5 + drivers/irqchip/Makefile | 1 + drivers/irqchip/irq-tango.c | 232 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 238 insertions(+) create mode 100644 drivers/irqchip/irq-tango.c diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig index 4d7294e5d982..399eda54b860 100644 --- a/drivers/irqchip/Kconfig +++ b/drivers/irqchip/Kconfig @@ -133,6 +133,11 @@ config ST_IRQCHIP help Enables SysCfg Controlled IRQs on STi based platforms. +config TANGO_IRQ + bool + select IRQ_DOMAIN + select GENERIC_IRQ_CHIP + config TB10X_IRQC bool select IRQ_DOMAIN diff --git a/drivers/irqchip/Makefile b/drivers/irqchip/Makefile index 177f78f6e6d6..74512452cc8b 100644 --- a/drivers/irqchip/Makefile +++ b/drivers/irqchip/Makefile @@ -38,6 +38,7 @@ obj-$(CONFIG_VERSATILE_FPGA_IRQ) += irq-versatile-fpga.o obj-$(CONFIG_ARCH_NSPIRE) += irq-zevio.o obj-$(CONFIG_ARCH_VT8500) += irq-vt8500.o obj-$(CONFIG_ST_IRQCHIP) += irq-st.o +obj-$(CONFIG_TANGO_IRQ) += irq-tango.o obj-$(CONFIG_TB10X_IRQC) += irq-tb10x.o obj-$(CONFIG_XTENSA) += irq-xtensa-pic.o obj-$(CONFIG_XTENSA_MX) += irq-xtensa-mx.o diff --git a/drivers/irqchip/irq-tango.c b/drivers/irqchip/irq-tango.c new file mode 100644 index 000000000000..bdbb5c0ff7fe --- /dev/null +++ b/drivers/irqchip/irq-tango.c @@ -0,0 +1,232 @@ +/* + * Copyright (C) 2014 Mans Rullgard <mans@mansr.com> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +#include <linux/init.h> +#include <linux/irq.h> +#include <linux/irqchip.h> +#include <linux/irqchip/chained_irq.h> +#include <linux/ioport.h> +#include <linux/io.h> +#include <linux/of_address.h> +#include <linux/of_irq.h> +#include <linux/slab.h> + +#define IRQ0_CTL_BASE 0x0000 +#define IRQ1_CTL_BASE 0x0100 +#define EDGE_CTL_BASE 0x0200 +#define IRQ2_CTL_BASE 0x0300 + +#define IRQ_CTL_HI 0x18 +#define EDGE_CTL_HI 0x20 + +#define IRQ_STATUS 0x00 +#define IRQ_RAWSTAT 0x04 +#define IRQ_EN_SET 0x08 +#define IRQ_EN_CLR 0x0c +#define IRQ_SOFT_SET 0x10 +#define IRQ_SOFT_CLR 0x14 + +#define EDGE_STATUS 0x00 +#define EDGE_RAWSTAT 0x04 +#define EDGE_CFG_RISE 0x08 +#define EDGE_CFG_FALL 0x0c +#define EDGE_CFG_RISE_SET 0x10 +#define EDGE_CFG_RISE_CLR 0x14 +#define EDGE_CFG_FALL_SET 0x18 +#define EDGE_CFG_FALL_CLR 0x1c + +struct tangox_irq_chip { + void __iomem *base; + unsigned long ctl; +}; + +static inline u32 intc_readl(struct tangox_irq_chip *chip, int reg) +{ + return readl_relaxed(chip->base + reg); +} + +static inline void intc_writel(struct tangox_irq_chip *chip, int reg, u32 val) +{ + writel_relaxed(val, chip->base + reg); +} + +static void tangox_dispatch_irqs(struct irq_domain *dom, unsigned int status, + int base) +{ + unsigned int hwirq; + unsigned int virq; + + while (status) { + hwirq = __ffs(status); + virq = irq_find_mapping(dom, base + hwirq); + if (virq) + generic_handle_irq(virq); + status &= ~BIT(hwirq); + } +} + +static void tangox_irq_handler(struct irq_desc *desc) +{ + struct irq_domain *dom = irq_desc_get_handler_data(desc); + struct irq_chip *host_chip = irq_desc_get_chip(desc); + struct tangox_irq_chip *chip = dom->host_data; + unsigned int status_lo, status_hi; + + chained_irq_enter(host_chip, desc); + + status_lo = intc_readl(chip, chip->ctl + IRQ_STATUS); + status_hi = intc_readl(chip, chip->ctl + IRQ_CTL_HI + IRQ_STATUS); + + tangox_dispatch_irqs(dom, status_lo, 0); + tangox_dispatch_irqs(dom, status_hi, 32); + + chained_irq_exit(host_chip, desc); +} + +static int tangox_irq_set_type(struct irq_data *d, unsigned int flow_type) +{ + struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d); + struct tangox_irq_chip *chip = gc->domain->host_data; + struct irq_chip_regs *regs = &gc->chip_types[0].regs; + + switch (flow_type & IRQ_TYPE_SENSE_MASK) { + case IRQ_TYPE_EDGE_RISING: + intc_writel(chip, regs->type + EDGE_CFG_RISE_SET, d->mask); + intc_writel(chip, regs->type + EDGE_CFG_FALL_CLR, d->mask); + break; + + case IRQ_TYPE_EDGE_FALLING: + intc_writel(chip, regs->type + EDGE_CFG_RISE_CLR, d->mask); + intc_writel(chip, regs->type + EDGE_CFG_FALL_SET, d->mask); + break; + + case IRQ_TYPE_LEVEL_HIGH: + intc_writel(chip, regs->type + EDGE_CFG_RISE_CLR, d->mask); + intc_writel(chip, regs->type + EDGE_CFG_FALL_CLR, d->mask); + break; + + case IRQ_TYPE_LEVEL_LOW: + intc_writel(chip, regs->type + EDGE_CFG_RISE_SET, d->mask); + intc_writel(chip, regs->type + EDGE_CFG_FALL_SET, d->mask); + break; + + default: + pr_err("Invalid trigger mode %x for IRQ %d\n", + flow_type, d->irq); + return -EINVAL; + } + + return irq_setup_alt_chip(d, flow_type); +} + +static void __init tangox_irq_init_chip(struct irq_chip_generic *gc, + unsigned long ctl_offs, + unsigned long edge_offs) +{ + struct tangox_irq_chip *chip = gc->domain->host_data; + struct irq_chip_type *ct = gc->chip_types; + unsigned long ctl_base = chip->ctl + ctl_offs; + unsigned long edge_base = EDGE_CTL_BASE + edge_offs; + int i; + + gc->reg_base = chip->base; + gc->unused = 0; + + for (i = 0; i < 2; i++) { + ct[i].chip.irq_ack = irq_gc_ack_set_bit; + ct[i].chip.irq_mask = irq_gc_mask_disable_reg; + ct[i].chip.irq_mask_ack = irq_gc_mask_disable_reg_and_ack; + ct[i].chip.irq_unmask = irq_gc_unmask_enable_reg; + ct[i].chip.irq_set_type = tangox_irq_set_type; + ct[i].chip.name = gc->domain->name; + + ct[i].regs.enable = ctl_base + IRQ_EN_SET; + ct[i].regs.disable = ctl_base + IRQ_EN_CLR; + ct[i].regs.ack = edge_base + EDGE_RAWSTAT; + ct[i].regs.type = edge_base; + } + + ct[0].type = IRQ_TYPE_LEVEL_MASK; + ct[0].handler = handle_level_irq; + + ct[1].type = IRQ_TYPE_EDGE_BOTH; + ct[1].handler = handle_edge_irq; + + intc_writel(chip, ct->regs.disable, 0xffffffff); + intc_writel(chip, ct->regs.ack, 0xffffffff); +} + +static void __init tangox_irq_domain_init(struct irq_domain *dom) +{ + struct irq_chip_generic *gc; + int i; + + for (i = 0; i < 2; i++) { + gc = irq_get_domain_generic_chip(dom, i * 32); + tangox_irq_init_chip(gc, i * IRQ_CTL_HI, i * EDGE_CTL_HI); + } +} + +static int __init tangox_irq_init(void __iomem *base, struct resource *baseres, + struct device_node *node) +{ + struct tangox_irq_chip *chip; + struct irq_domain *dom; + struct resource res; + int irq; + int err; + + irq = irq_of_parse_and_map(node, 0); + if (!irq) + panic("%s: failed to get IRQ", node->name); + + err = of_address_to_resource(node, 0, &res); + if (err) + panic("%s: failed to get address", node->name); + + chip = kzalloc(sizeof(*chip), GFP_KERNEL); + chip->ctl = res.start - baseres->start; + chip->base = base; + + dom = irq_domain_add_linear(node, 64, &irq_generic_chip_ops, chip); + if (!dom) + panic("%s: failed to create irqdomain", node->name); + + err = irq_alloc_domain_generic_chips(dom, 32, 2, node->name, + handle_level_irq, 0, 0, 0); + if (err) + panic("%s: failed to allocate irqchip", node->name); + + tangox_irq_domain_init(dom); + + irq_set_chained_handler(irq, tangox_irq_handler); + irq_set_handler_data(irq, dom); + + return 0; +} + +static int __init tangox_of_irq_init(struct device_node *node, + struct device_node *parent) +{ + struct device_node *c; + struct resource res; + void __iomem *base; + + base = of_iomap(node, 0); + if (!base) + panic("%s: of_iomap failed", node->name); + + of_address_to_resource(node, 0, &res); + + for_each_child_of_node(node, c) + tangox_irq_init(base, &res, c); + + return 0; +} +IRQCHIP_DECLARE(tangox_intc, "sigma,smp8642-intc", tangox_of_irq_init); -- 2.7.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v4 2/2] irqchip: add support for Sigma Designs SMP86xx/SMP87xx interrupt controller 2016-01-20 18:07 ` [PATCH v4 2/2] irqchip: add support for Sigma Designs SMP86xx/SMP87xx " Mans Rullgard @ 2016-01-29 17:10 ` Marc Zyngier 2016-02-09 9:12 ` Marc Gonzalez 2016-02-18 1:34 ` Jason Cooper 1 sibling, 1 reply; 10+ messages in thread From: Marc Zyngier @ 2016-01-29 17:10 UTC (permalink / raw) To: Mans Rullgard, Jason Cooper, Mark Rutland, Marc Gonzalez Cc: Thomas Gleixner, Rob Herring, Pawel Moll, Ian Campbell, Kumar Gala, linux-kernel, devicetree, Sebastian Frias On 20/01/16 18:07, Mans Rullgard wrote: > This adds support for the secondary interrupt controller used in Sigma > Designs SMP86xx and SMP87xx chips. > > Signed-off-by: Mans Rullgard <mans@mansr.com> > --- > Changes from v3: > - use of_address_to_resource() rather accessing "reg" property directly > > Boot tested on SMP8643 (tango3) and SMP8759 (tango4) > --- > drivers/irqchip/Kconfig | 5 + > drivers/irqchip/Makefile | 1 + > drivers/irqchip/irq-tango.c | 232 ++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 238 insertions(+) > create mode 100644 drivers/irqchip/irq-tango.c Acked-by: Marc Zyngier <marc.zyngier@arm.com> M. -- Jazz is not dead. It just smells funny... ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4 2/2] irqchip: add support for Sigma Designs SMP86xx/SMP87xx interrupt controller 2016-01-29 17:10 ` Marc Zyngier @ 2016-02-09 9:12 ` Marc Gonzalez 2016-02-09 9:33 ` Marc Zyngier 0 siblings, 1 reply; 10+ messages in thread From: Marc Gonzalez @ 2016-02-09 9:12 UTC (permalink / raw) To: Thomas Gleixner, Marc Zyngier, Jason Cooper Cc: LKML, Mans Rullgard, Sebastian Frias, Mark Rutland, Rob Herring On 29/01/2016 18:10, Marc Zyngier wrote: > On 20/01/16 18:07, Mans Rullgard wrote: > >> This adds support for the secondary interrupt controller used in Sigma >> Designs SMP86xx and SMP87xx chips. >> >> Signed-off-by: Mans Rullgard <mans@mansr.com> >> --- >> Changes from v3: >> - use of_address_to_resource() rather accessing "reg" property directly So, with this version, no changes are required to the DT node written for earlier versions, right? >> drivers/irqchip/Kconfig | 5 + >> drivers/irqchip/Makefile | 1 + >> drivers/irqchip/irq-tango.c | 232 ++++++++++++++++++++++++++++++++++++++++++++ >> 3 files changed, 238 insertions(+) >> create mode 100644 drivers/irqchip/irq-tango.c > > Acked-by: Marc Zyngier <marc.zyngier@arm.com> So, at some point, this driver should appear in one of the upstream repositories, right? linux-next? irq/core branch on tip? https://git.kernel.org/cgit/linux/kernel/git/tip/tip.git/log/?h=irq/core https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/ Will it be included in Linux 4.6? Regards. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4 2/2] irqchip: add support for Sigma Designs SMP86xx/SMP87xx interrupt controller 2016-02-09 9:12 ` Marc Gonzalez @ 2016-02-09 9:33 ` Marc Zyngier 2016-02-09 9:56 ` Marc Gonzalez 0 siblings, 1 reply; 10+ messages in thread From: Marc Zyngier @ 2016-02-09 9:33 UTC (permalink / raw) To: Marc Gonzalez, Thomas Gleixner, Jason Cooper Cc: LKML, Mans Rullgard, Sebastian Frias, Mark Rutland, Rob Herring On 09/02/16 09:12, Marc Gonzalez wrote: > On 29/01/2016 18:10, Marc Zyngier wrote: > >> On 20/01/16 18:07, Mans Rullgard wrote: >> >>> This adds support for the secondary interrupt controller used in Sigma >>> Designs SMP86xx and SMP87xx chips. >>> >>> Signed-off-by: Mans Rullgard <mans@mansr.com> >>> --- >>> Changes from v3: >>> - use of_address_to_resource() rather accessing "reg" property directly > > So, with this version, no changes are required to the DT node > written for earlier versions, right? > >>> drivers/irqchip/Kconfig | 5 + >>> drivers/irqchip/Makefile | 1 + >>> drivers/irqchip/irq-tango.c | 232 ++++++++++++++++++++++++++++++++++++++++++++ >>> 3 files changed, 238 insertions(+) >>> create mode 100644 drivers/irqchip/irq-tango.c >> >> Acked-by: Marc Zyngier <marc.zyngier@arm.com> > > So, at some point, this driver should appear in one of the upstream > repositories, right? > > linux-next? irq/core branch on tip? > > https://git.kernel.org/cgit/linux/kernel/git/tip/tip.git/log/?h=irq/core > https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/ > As I already said on IRC, one of us (Thomas, Jason or me) will queue it, and it will eventually appear in the branches documented in the MAINTAINERS file. > Will it be included in Linux 4.6? My crystal ball says "Probably". Thanks, M. -- Jazz is not dead. It just smells funny... ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4 2/2] irqchip: add support for Sigma Designs SMP86xx/SMP87xx interrupt controller 2016-02-09 9:33 ` Marc Zyngier @ 2016-02-09 9:56 ` Marc Gonzalez 0 siblings, 0 replies; 10+ messages in thread From: Marc Gonzalez @ 2016-02-09 9:56 UTC (permalink / raw) To: Marc Zyngier; +Cc: LKML On 09/02/2016 10:33, Marc Zyngier wrote: > As I already said on IRC, one of us (Thomas, Jason or me) will queue it, > and it will eventually appear in the branches documented in the > MAINTAINERS file. Thanks for bringing the T field in the MAINTAINERS file to my attention, I had managed to never notice it until now. Doh! When there are several T entries, it means they are frequently synced? Regards. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4 2/2] irqchip: add support for Sigma Designs SMP86xx/SMP87xx interrupt controller 2016-01-20 18:07 ` [PATCH v4 2/2] irqchip: add support for Sigma Designs SMP86xx/SMP87xx " Mans Rullgard 2016-01-29 17:10 ` Marc Zyngier @ 2016-02-18 1:34 ` Jason Cooper 1 sibling, 0 replies; 10+ messages in thread From: Jason Cooper @ 2016-02-18 1:34 UTC (permalink / raw) To: Mans Rullgard Cc: Marc Zyngier, Mark Rutland, Marc Gonzalez, Thomas Gleixner, Rob Herring, Pawel Moll, Ian Campbell, Kumar Gala, linux-kernel, devicetree, Sebastian Frias Hi Mans, On Wed, Jan 20, 2016 at 06:07:17PM +0000, Mans Rullgard wrote: > This adds support for the secondary interrupt controller used in Sigma > Designs SMP86xx and SMP87xx chips. > > Signed-off-by: Mans Rullgard <mans@mansr.com> > --- > Changes from v3: > - use of_address_to_resource() rather accessing "reg" property directly > > Boot tested on SMP8643 (tango3) and SMP8759 (tango4) > --- > drivers/irqchip/Kconfig | 5 + > drivers/irqchip/Makefile | 1 + > drivers/irqchip/irq-tango.c | 232 ++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 238 insertions(+) > create mode 100644 drivers/irqchip/irq-tango.c Applied to irqchip/tango with Marc's Acked-by. thx, Jason. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4 1/2] devicetree: add binding for Sigma Designs SMP86xx interrupt controller 2016-01-20 18:07 [PATCH v4 1/2] devicetree: add binding for Sigma Designs SMP86xx interrupt controller Mans Rullgard 2016-01-20 18:07 ` [PATCH v4 2/2] irqchip: add support for Sigma Designs SMP86xx/SMP87xx " Mans Rullgard @ 2016-01-22 16:06 ` Rob Herring 2016-01-22 16:36 ` Måns Rullgård 2016-02-18 1:33 ` Jason Cooper 2 siblings, 1 reply; 10+ messages in thread From: Rob Herring @ 2016-01-22 16:06 UTC (permalink / raw) To: Mans Rullgard Cc: Jason Cooper, Marc Zyngier, Mark Rutland, Marc Gonzalez, Thomas Gleixner, Pawel Moll, Ian Campbell, Kumar Gala, linux-kernel, devicetree, Sebastian Frias On Wed, Jan 20, 2016 at 06:07:16PM +0000, Mans Rullgard wrote: > This adds a binding for the secondary interrupt controller in > Sigma Designs SMP86xx and SMP87xx chips. > > Signed-off-by: Mans Rullgard <mans@mansr.com> > --- > Changes: > - not included in v3 > --- > .../interrupt-controller/sigma,smp8642-intc.txt | 49 ++++++++++++++++++++++ > 1 file changed, 49 insertions(+) > create mode 100644 Documentation/devicetree/bindings/interrupt-controller/sigma,smp8642-intc.txt > > diff --git a/Documentation/devicetree/bindings/interrupt-controller/sigma,smp8642-intc.txt b/Documentation/devicetree/bindings/interrupt-controller/sigma,smp8642-intc.txt > new file mode 100644 > index 000000000000..2643f3466091 > --- /dev/null > +++ b/Documentation/devicetree/bindings/interrupt-controller/sigma,smp8642-intc.txt > @@ -0,0 +1,49 @@ > +Sigma Designs SMP86xx/SMP87xx secondary interrupt controller > + > +Required properties: > +- compatible: should be "sigma,smp8642-intc" > +- reg: physical address of MMIO region > +- ranges: address space mapping of child nodes > +- interrupt-parent: phandle of parent interrupt controller > +- interrupt-controller: boolean > +- #address-cells: should be <1> > +- #size-cells: should be <1> > + > +One child node per control block with properties: > +- reg: address of registers for this control block > +- interrupt-controller: boolean > +- #interrupt-cells: should be <2>, interrupt index and flags per interrupts.txt > +- interrupts: interrupt spec of primary interrupt controller > + > +Example: > + > +interrupt-controller@6e000 { > + compatible = "sigma,smp8642-intc"; > + reg = <0x6e000 0x400>; > + ranges = <0x0 0x6e000 0x400>; > + interrupt-parent = <&gic>; > + interrupt-controller; > + #address-cells = <1>; > + #size-cells = <1>; > + > + irq0: irq0 { Keeping with generic names, this should be interrupt-controller@0 (and 100, 300). Otherwise, Acked-by: Rob Herring <robh@kernel.org> > + reg = <0x000 0x100>; > + interrupt-controller; > + #interrupt-cells = <2>; > + interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; > + }; > + > + irq1: irq1 { > + reg = <0x100 0x100>; > + interrupt-controller; > + #interrupt-cells = <2>; > + interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>; > + }; > + > + irq2: irq2 { > + reg = <0x300 0x100>; > + interrupt-controller; > + #interrupt-cells = <2>; > + interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>; > + }; > +}; > -- > 2.7.0 > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4 1/2] devicetree: add binding for Sigma Designs SMP86xx interrupt controller 2016-01-22 16:06 ` [PATCH v4 1/2] devicetree: add binding for Sigma Designs SMP86xx " Rob Herring @ 2016-01-22 16:36 ` Måns Rullgård 0 siblings, 0 replies; 10+ messages in thread From: Måns Rullgård @ 2016-01-22 16:36 UTC (permalink / raw) To: Rob Herring Cc: Jason Cooper, Marc Zyngier, Mark Rutland, Marc Gonzalez, Thomas Gleixner, Pawel Moll, Ian Campbell, Kumar Gala, linux-kernel, devicetree, Sebastian Frias Rob Herring <robh@kernel.org> writes: > On Wed, Jan 20, 2016 at 06:07:16PM +0000, Mans Rullgard wrote: >> This adds a binding for the secondary interrupt controller in >> Sigma Designs SMP86xx and SMP87xx chips. >> >> Signed-off-by: Mans Rullgard <mans@mansr.com> >> --- >> Changes: >> - not included in v3 >> --- >> .../interrupt-controller/sigma,smp8642-intc.txt | 49 ++++++++++++++++++++++ >> 1 file changed, 49 insertions(+) >> create mode 100644 Documentation/devicetree/bindings/interrupt-controller/sigma,smp8642-intc.txt >> >> diff --git a/Documentation/devicetree/bindings/interrupt-controller/sigma,smp8642-intc.txt b/Documentation/devicetree/bindings/interrupt-controller/sigma,smp8642-intc.txt >> new file mode 100644 >> index 000000000000..2643f3466091 >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/interrupt-controller/sigma,smp8642-intc.txt >> @@ -0,0 +1,49 @@ >> +Sigma Designs SMP86xx/SMP87xx secondary interrupt controller >> + >> +Required properties: >> +- compatible: should be "sigma,smp8642-intc" >> +- reg: physical address of MMIO region >> +- ranges: address space mapping of child nodes >> +- interrupt-parent: phandle of parent interrupt controller >> +- interrupt-controller: boolean >> +- #address-cells: should be <1> >> +- #size-cells: should be <1> >> + >> +One child node per control block with properties: >> +- reg: address of registers for this control block >> +- interrupt-controller: boolean >> +- #interrupt-cells: should be <2>, interrupt index and flags per interrupts.txt >> +- interrupts: interrupt spec of primary interrupt controller >> + >> +Example: >> + >> +interrupt-controller@6e000 { >> + compatible = "sigma,smp8642-intc"; >> + reg = <0x6e000 0x400>; >> + ranges = <0x0 0x6e000 0x400>; >> + interrupt-parent = <&gic>; >> + interrupt-controller; >> + #address-cells = <1>; >> + #size-cells = <1>; >> + >> + irq0: irq0 { > > Keeping with generic names, this should be interrupt-controller@0 (and > 100, 300). I could've sworn I'd made that change. Too many versions of this patch floating about... > Otherwise, > > Acked-by: Rob Herring <robh@kernel.org> > >> + reg = <0x000 0x100>; >> + interrupt-controller; >> + #interrupt-cells = <2>; >> + interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; >> + }; >> + >> + irq1: irq1 { >> + reg = <0x100 0x100>; >> + interrupt-controller; >> + #interrupt-cells = <2>; >> + interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>; >> + }; >> + >> + irq2: irq2 { >> + reg = <0x300 0x100>; >> + interrupt-controller; >> + #interrupt-cells = <2>; >> + interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>; >> + }; >> +}; >> -- >> 2.7.0 >> -- Måns Rullgård ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4 1/2] devicetree: add binding for Sigma Designs SMP86xx interrupt controller 2016-01-20 18:07 [PATCH v4 1/2] devicetree: add binding for Sigma Designs SMP86xx interrupt controller Mans Rullgard 2016-01-20 18:07 ` [PATCH v4 2/2] irqchip: add support for Sigma Designs SMP86xx/SMP87xx " Mans Rullgard 2016-01-22 16:06 ` [PATCH v4 1/2] devicetree: add binding for Sigma Designs SMP86xx " Rob Herring @ 2016-02-18 1:33 ` Jason Cooper 2 siblings, 0 replies; 10+ messages in thread From: Jason Cooper @ 2016-02-18 1:33 UTC (permalink / raw) To: Mans Rullgard Cc: Marc Zyngier, Mark Rutland, Marc Gonzalez, Thomas Gleixner, Rob Herring, Pawel Moll, Ian Campbell, Kumar Gala, linux-kernel, devicetree, Sebastian Frias On Wed, Jan 20, 2016 at 06:07:16PM +0000, Mans Rullgard wrote: > This adds a binding for the secondary interrupt controller in > Sigma Designs SMP86xx and SMP87xx chips. > > Signed-off-by: Mans Rullgard <mans@mansr.com> > --- > Changes: > - not included in v3 > --- > .../interrupt-controller/sigma,smp8642-intc.txt | 49 ++++++++++++++++++++++ > 1 file changed, 49 insertions(+) > create mode 100644 Documentation/devicetree/bindings/interrupt-controller/sigma,smp8642-intc.txt Applied to irqchip/tango with Rob's Ack. Converted to 'interrupt-controller@XXX' as requested by Rob. thx, Jason. ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2016-02-18 1:50 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-01-20 18:07 [PATCH v4 1/2] devicetree: add binding for Sigma Designs SMP86xx interrupt controller Mans Rullgard 2016-01-20 18:07 ` [PATCH v4 2/2] irqchip: add support for Sigma Designs SMP86xx/SMP87xx " Mans Rullgard 2016-01-29 17:10 ` Marc Zyngier 2016-02-09 9:12 ` Marc Gonzalez 2016-02-09 9:33 ` Marc Zyngier 2016-02-09 9:56 ` Marc Gonzalez 2016-02-18 1:34 ` Jason Cooper 2016-01-22 16:06 ` [PATCH v4 1/2] devicetree: add binding for Sigma Designs SMP86xx " Rob Herring 2016-01-22 16:36 ` Måns Rullgård 2016-02-18 1:33 ` Jason Cooper
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).