[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20210315085855.23730-1-mark-pk.tsai@mediatek.com>
Date: Mon, 15 Mar 2021 16:58:55 +0800
From: Mark-PK Tsai <mark-pk.tsai@...iatek.com>
To: <daniel@...f.com>, Mark-PK Tsai <mark-pk.tsai@...iatek.com>
CC: <daniel@...ngy.jp>, <linux-arm-kernel@...ts.infradead.org>,
<linux-kernel@...r.kernel.org>,
<linux-mediatek@...ts.infradead.org>, <matthias.bgg@...il.com>,
<maz@...nel.org>, <tglx@...utronix.de>, <yj.chiang@...iatek.com>
Subject: Re: [PATCH v2] irqchip/irq-mst: Support polarity configuration
From: Daniel Palmer <daniel@...f.com>
> On Fri, 12 Mar 2021 at 01:11, Mark-PK Tsai <mark-pk.tsai@...iatek.com> wrote:
> > Why irq could accept either?
>
> As the irq intc has no way to clear it's triggered state (no eoi) it
> must just pass the signal through instead of latching it?
> Otherwise it would latch once and never again right? That's what I
> really didn't understand.
> If it just passes the signal through and maybe inverts it then the GIC
> can use edge or level I think.
Yes, but if we accidentally loss a irq and the interrupt is edge triggered which is
latch to level by mst-intc, we will miss all the follow irqs because the driver
didn't reset the interrupt status.
Actually, I'm not sure if it's possible.
But even if it's not, I think use level for parent GIC can better match
the hardware signal processing.
>
> > So maybe we don't need to do extra work to check the type for an fiq or irq controller?
>
> I think without the eoi callback for the fiq it would only ever fire
> once. I don't think doing the same eoi callback for the irq intc hurts
> anything but it wouldn't do anything either from what I can tell.
The reason why I don't do the same eoi callback for irq intc is that
it's not ont spec.
And some of MTK TV SoC use it for certain debug function which
may cause unexpected result.
>
> > And I will update the patch as following:
>
> I think maybe Marc or someone else that knows better than I do should
> comment on what needs to happen.
> My input is just that the fiq controller seems to trigger on an edge,
> holds it's signal to the GIC high until eoi happens and then only
> triggers again on an edge.
> I guess it doesn't matter if it's an edge or level if that's how it
> works but you'd only get one interrupt out of it per edge even if
> configured as a level interrupt.
>
> The main thing I didn't want was filtering out edge interrupts
> entirely as that breaks using edge interrupts with gpios i.e. using
> gpiomon.
> With the changes to set the polarity it can now detect rising or
> falling edge gpio events. :)
Thanks for your feedback and I will send patch v4 which includes the
change I proposed in this thread.
Powered by blists - more mailing lists