[Linux-stm32] STM32MP1 level triggered interrupts
Alexandre Torgue
alexandre.torgue at st.com
Thu Jan 23 08:27:15 UTC 2020
On 1/22/20 8:29 PM, Marek Vasut wrote:
> On 1/22/20 6:19 PM, Alexandre Torgue wrote:
>
> Hi,
>
> [...]
>
>>>> Concerning, your question:
>>>>
>>>> Setting your gpioC interruption as "falling edge" should be enough. On
>>>> gpioCx falling edge, a high-level signal is generated by exti and sent
>>>> to GIC (which triggers GIC interrupt). This signal remains high until
>>>> stm32_irq_ack is called.
>>>>
>>>> So you only need: (ex for gpioc 1).
>>>>
>>>> interrupt-parent = <&gpioc>;
>>>> interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
>>>
>>> How does this deal with the case where the device holds the interrupt
>>> line low (since it's level-sensitive, active low) after the driver
>>> interrupt handler finishes ? Does such condition generate another
>>> interrupt and call the driver interrupt handler again ? I would expect
>>> the answer is no, because the interrupt is edge-triggered and there is
>>> no edge.
>>
>> Your assumption is good. If your device continue to hold the line to low
>> at the end of your interrupt handler, no more interrupt will be generated.
>
> But does that basically mean that such a device cannot be used with
> STM32MP1 or am I fundamentally mistaken and don't understand how a
> level-triggered interrupt works ? :)
You need to release the line in your device interrupt handler. If not,
yes, you will miss interrupts :$
>
More information about the Linux-stm32
mailing list