From: Paul Cercueil <paul@crapouillou.net>
To: Marc Zyngier <marc.zyngier@arm.com>
Cc: Michael Turquette <mturquette@baylibre.com>,
Stephen Boyd <sboyd@codeaurora.org>,
Rob Herring <robh+dt@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Thomas Gleixner <tglx@linutronix.de>,
Jason Cooper <jason@lakedaemon.net>,
Daniel Lezcano <daniel.lezcano@linaro.org>,
Lee Jones <lee.jones@linaro.org>,
linux-clk@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 6/9] irqchip: Add the ingenic-tcu-intc driver
Date: Thu, 11 Jan 2018 17:25:45 +0100 [thread overview]
Message-ID: <1515687945.2170.1@smtp.crapouillou.net> (raw)
In-Reply-To: <58349291-93cd-f803-52a9-f88120ace4dc@arm.com>
Hi Marc,
>> +static int __init ingenic_tcu_intc_of_init(struct device_node
>> *node,
>> + struct device_node *parent)
>> +{
>> + struct irq_domain *domain;
>> + struct irq_chip_generic *gc;
>> + struct irq_chip_type *ct;
>> + int err, i, num_parent_irqs;
>> + unsigned int parent_irqs[3];
>
> 3 parent interrupts? Really? How do you pick one? Also, given the
> useage
> model below, "int" is the wrong type. Probably should be u32.
See below.
>> + struct regmap *map;
>> +
>> + num_parent_irqs = of_property_count_elems_of_size(
>> + node, "interrupts", 4);
>
> Nit: on a single line, as here is nothing that hurts my eyes more than
> reading something like(
> this). Also, 4 is better expressed as sizeof(u32).
That will make checkpatch.pl unhappy :(
>> + if (num_parent_irqs < 0 || num_parent_irqs >
>> ARRAY_SIZE(parent_irqs))
>> + return -EINVAL;
>> +
>> + map = syscon_node_to_regmap(node->parent);
>> + if (IS_ERR(map))
>> + return PTR_ERR(map);
>> +
>> + domain = irq_domain_add_linear(node, 32, &irq_generic_chip_ops,
>> NULL);
>> + if (!domain)
>> + return -ENOMEM;
>> +
>> + err = irq_alloc_domain_generic_chips(domain, 32, 1, "TCU",
>> + handle_level_irq, 0, IRQ_NOPROBE | IRQ_LEVEL, 0);
>> + if (err)
>> + goto out_domain_remove;
>> +
>> + gc = irq_get_domain_generic_chip(domain, 0);
>> + ct = gc->chip_types;
>> +
>> + gc->wake_enabled = IRQ_MSK(32);
>> + gc->private = map;
>> +
>> + ct->regs.disable = TCU_REG_TMSR;
>> + ct->regs.enable = TCU_REG_TMCR;
>> + ct->regs.ack = TCU_REG_TFCR;
>> + ct->chip.irq_unmask = ingenic_tcu_gc_unmask_enable_reg;
>> + ct->chip.irq_mask = ingenic_tcu_gc_mask_disable_reg;
>> + ct->chip.irq_mask_ack = ingenic_tcu_gc_mask_disable_reg_and_ack;
>> + ct->chip.flags = IRQCHIP_MASK_ON_SUSPEND | IRQCHIP_SKIP_SET_WAKE;
>> +
>> + /* Mask all IRQs by default */
>> + regmap_write(map, TCU_REG_TMSR, IRQ_MSK(32));
>> +
>> + for (i = 0; i < num_parent_irqs; i++) {
>> + parent_irqs[i] = irq_of_parse_and_map(node, i);
>> + if (!parent_irqs[i]) {
>> + err = -EINVAL;
>> + goto out_unmap_irqs;
>> + }
>> +
>> + irq_set_chained_handler_and_data(parent_irqs[i],
>> + ingenic_tcu_intc_cascade, domain);
>> + }
>
> I don't get the multiple parent irq at all. How are the source
> interrupt
> routed to the various cascades?
On JZ4740, channels 0 and 1 have their own interrupt, and channels 2-7
share
one interrupt line.
On JZ4770 and JZ4780, the OST (OS timer) channel has its own interrupt,
channel 5 has its own interrupt, and channels 0-4 and 6-7 share one
interrupt line.
To keep things simple, we register the same interrupt handler for the
three
parent interrupts.
-Paul
next prev parent reply other threads:[~2018-01-11 16:25 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-29 12:59 [PATCH 0/6] Ingenic JZ47xx TCU drivers Paul Cercueil
2017-12-29 12:59 ` [PATCH 1/6] mfd: syscon: Add ingenic-tcu.h header Paul Cercueil
2018-01-01 14:33 ` [PATCH v2 " Paul Cercueil
2018-01-01 14:33 ` [PATCH v2 2/6] dt-bindings: ingenic: Add DT bindings for TCU clocks Paul Cercueil
2018-01-03 20:49 ` Rob Herring
2018-01-01 14:33 ` [PATCH v2 3/6] irqchip: Add the ingenic-tcu-intc driver Paul Cercueil
2018-01-03 20:58 ` Rob Herring
2018-01-03 21:50 ` Paul Cercueil
2018-01-01 14:33 ` [PATCH v2 4/6] clk: ingenic: Add JZ47xx TCU clocks driver Paul Cercueil
2018-01-02 19:13 ` Stephen Boyd
2018-01-02 20:08 ` Paul Cercueil
2018-01-02 22:59 ` Stephen Boyd
2018-01-01 14:33 ` [PATCH v2 5/6] clocksource: Add a new timer-ingenic driver Paul Cercueil
2018-01-03 21:08 ` Rob Herring
2018-01-03 21:56 ` Paul Cercueil
2018-01-05 23:27 ` Rob Herring
2018-01-05 23:48 ` Paul Cercueil
2018-01-09 1:09 ` Rob Herring
2018-01-01 14:33 ` [PATCH v2 6/6] MAINTAINERS: Add myself as maintainer for Ingenic TCU drivers Paul Cercueil
2018-01-02 15:51 ` [PATCH v2 1/6] mfd: syscon: Add ingenic-tcu.h header Lee Jones
2018-01-10 22:48 ` [PATCH v3 1/9] " Paul Cercueil
2018-01-10 22:48 ` [PATCH v3 2/9] dt-bindings: ingenic: Add DT bindings for TCU clocks Paul Cercueil
2018-03-17 23:28 ` [PATCH v4 0/8] Ingenic JZ47xx Timer/Counter Unit drivers Paul Cercueil
2018-03-17 23:28 ` [PATCH v4 1/8] mfd: syscon: Add ingenic-tcu.h header Paul Cercueil
2018-03-17 23:28 ` [PATCH v4 2/8] dt-bindings: ingenic: Add DT bindings for TCU clocks Paul Cercueil
2018-03-19 21:27 ` Stephen Boyd
2018-03-20 7:15 ` Mathieu Malaterre
2018-03-28 15:04 ` [PATCH v4 2/8] dt-bindings: ingenic: Add DT bindings for TCU clocks, Paul Cercueil
2018-03-28 18:35 ` [PATCH v4 2/8] dt-bindings: ingenic: Add DT bindings for TCU clocks Mathieu Malaterre
2018-03-17 23:28 ` [PATCH v4 3/8] doc: Add doc for the Ingenic TCU hardware Paul Cercueil
2018-03-17 23:52 ` Randy Dunlap
2018-03-28 14:59 ` [PATCH v4 3/8] doc: Add doc for the Ingenic TCU hardware, Paul Cercueil
2018-03-17 23:28 ` [PATCH v4 4/8] dt-bindings: Add doc for the Ingenic TCU drivers Paul Cercueil
2018-03-20 8:52 ` Marc Zyngier
2018-03-28 15:09 ` [PATCH v4 4/8] dt-bindings: Add doc for the Ingenic TCU drivers, Paul Cercueil
2018-03-27 14:46 ` [PATCH v4 4/8] dt-bindings: Add doc for the Ingenic TCU drivers Rob Herring
2018-03-28 15:33 ` [PATCH v4 4/8] dt-bindings: Add doc for the Ingenic TCU drivers, Paul Cercueil
2018-03-28 16:28 ` [PATCH v4 4/8] dt-bindings: Add doc for the Ingenic TCU drivers Rob Herring
2018-03-29 15:59 ` Paul Cercueil
2018-03-17 23:28 ` [PATCH v4 5/8] irqchip: Add the ingenic-tcu-intc driver Paul Cercueil
2018-03-17 23:28 ` [PATCH v4 6/8] clk: ingenic: Add JZ47xx TCU clocks driver Paul Cercueil
2018-03-17 23:29 ` [PATCH v4 7/8] clocksource: Add a new timer-ingenic driver Paul Cercueil
2018-03-24 6:26 ` Daniel Lezcano
2018-03-28 15:15 ` [PATCH v4 7/8] clocksource: Add a new timer-ingenic driver, Paul Cercueil
2018-03-28 16:25 ` [PATCH v4 7/8] clocksource: Add a new timer-ingenic driver Daniel Lezcano
2018-03-29 14:52 ` Paul Cercueil
2018-03-31 8:10 ` Daniel Lezcano
2018-03-31 17:46 ` [PATCH v4 7/8] clocksource: Add a new timer-ingenic driver, Paul Cercueil
2018-04-03 9:59 ` [PATCH v4 7/8] clocksource: Add a new timer-ingenic driver Daniel Lezcano
2018-03-17 23:29 ` [PATCH v4 8/8] MAINTAINERS: Add myself as maintainer for Ingenic TCU drivers Paul Cercueil
2018-03-18 22:13 ` [PATCH v4 0/8] Ingenic JZ47xx Timer/Counter Unit drivers Daniel Lezcano
2018-03-28 15:01 ` [PATCH v4 0/8] Ingenic JZ47xx Timer/Counter Unit drivers, Paul Cercueil
2018-03-28 15:10 ` [PATCH v4 0/8] Ingenic JZ47xx Timer/Counter Unit drivers Daniel Lezcano
2018-01-10 22:48 ` [PATCH v3 3/9] doc: dt-bindings: Add doc for Ingenic TCU IRQ driver Paul Cercueil
2018-01-19 21:05 ` Rob Herring
2018-01-10 22:48 ` [PATCH v3 4/9] doc: dt-bindings: Add doc for the Ingenic TCU clocks driver Paul Cercueil
2018-01-19 21:11 ` Rob Herring
2018-01-10 22:48 ` [PATCH v3 5/9] doc: dt-bindings: Add doc for the Ingenic TCU timers driver Paul Cercueil
2018-01-19 21:12 ` Rob Herring
2018-01-10 22:48 ` [PATCH v3 6/9] irqchip: Add the ingenic-tcu-intc driver Paul Cercueil
2018-01-11 15:38 ` Marc Zyngier
2018-01-11 16:25 ` Paul Cercueil [this message]
2018-01-20 13:06 ` Marc Zyngier
2018-01-22 9:26 ` Lee Jones
2018-01-22 9:55 ` Marc Zyngier
2018-01-22 11:46 ` Lee Jones
2018-01-10 22:48 ` [PATCH v3 7/9] clk: ingenic: Add JZ47xx TCU clocks driver Paul Cercueil
2018-01-27 0:37 ` Stephen Boyd
2018-01-10 22:48 ` [PATCH v3 8/9] clocksource: Add a new timer-ingenic driver Paul Cercueil
2018-01-11 14:53 ` Rob Herring
2018-01-11 16:16 ` Paul Cercueil
2018-01-10 22:48 ` [PATCH v3 9/9] MAINTAINERS: Add myself as maintainer for Ingenic TCU drivers Paul Cercueil
2018-01-23 9:52 ` [PATCH v3 1/9] mfd: syscon: Add ingenic-tcu.h header Lee Jones
2017-12-29 12:59 ` [PATCH 2/6] dt-bindings: ingenic: Add DT bindings for TCU clocks Paul Cercueil
2017-12-29 12:59 ` [PATCH 3/6] irqchip: Add the ingenic-tcu-intc driver Paul Cercueil
2017-12-29 12:59 ` [PATCH 4/6] clk: ingenic: Add JZ47xx TCU clocks driver Paul Cercueil
2017-12-29 14:02 ` Paul Cercueil
2018-01-01 12:47 ` kbuild test robot
2017-12-29 12:59 ` [PATCH 5/6] clocksource: Add a new timer-ingenic driver Paul Cercueil
2017-12-29 12:59 ` [PATCH 6/6] MAINTAINERS: Add myself as maintainer for Ingenic TCU drivers Paul Cercueil
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1515687945.2170.1@smtp.crapouillou.net \
--to=paul@crapouillou.net \
--cc=daniel.lezcano@linaro.org \
--cc=devicetree@vger.kernel.org \
--cc=jason@lakedaemon.net \
--cc=lee.jones@linaro.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=marc.zyngier@arm.com \
--cc=mark.rutland@arm.com \
--cc=mturquette@baylibre.com \
--cc=robh+dt@kernel.org \
--cc=sboyd@codeaurora.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).