RE: [PATCH 1/3] dt-bindings/irq: add binding for NXP INTMUX interrupt multiplexer

From: Marc Zyngier
Date: Wed Dec 18 2019 - 06:49:20 EST


On 2019-12-18 11:34, Joakim Zhang wrote:
-----Original Message-----
From: Joakim Zhang <qiangqing.zhang@xxxxxxx>
Sent: 2019å12æ18æ 18:22
To: Marc Zyngier <maz@xxxxxxxxxx>
Cc: tglx@xxxxxxxxxxxxx; jason@xxxxxxxxxxxxxx; robh+dt@xxxxxxxxxx;
mark.rutland@xxxxxxx; shawnguo@xxxxxxxxxx; s.hauer@xxxxxxxxxxxxxx; S.j.
Wang <shengjiu.wang@xxxxxxx>; kernel@xxxxxxxxxxxxxx;
festevam@xxxxxxxxx; dl-linux-imx <linux-imx@xxxxxxx>;
linux-kernel@xxxxxxxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx;
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; Andy Duan <fugang.duan@xxxxxxx>;
Aisheng Dong <aisheng.dong@xxxxxxx>
Subject: RE: [PATCH 1/3] dt-bindings/irq: add binding for NXP INTMUX interrupt
multiplexer

[...]

> What I don't understand is how the interrupt descriptor can indicate
> which channel it is multiplexed on. The driver doesn't makes this
> clear either, and I strongly suspect that it was never tested with more than a
single channel...

Yes, to be frank, I tested with a signle channel, I will take this into
consideration. Thanks.
Hi Marc,

I tested channels from 1 to 8, and no issue found.

We register irq handler with irq_set_chained_handler_and_data(), so
the interrupt descriptor could find the controller's private data, and
channel index is one part of private data.
I think this can explain the interrupt descriptor how to indicate
which channel it is multiplexed.

But that doesn't explain how the driver can find which channel a given
interrupts is wired to. Nothing in your binding shows how you can extract
the channel number from the interrupt descriptor. Nothing in the driver
even *computes* a channel number.

As far as I can see, you register a bunch of domains, all with the same
OF node, so all your interrupts end-up with the same domain. Is it really
what you expect?

This driver looks terribly wrong.

M.
--
Jazz is not dead. It just smells funny...