On Tue, Jul 14, 2020 at 5:04 PM Douglas Anderson <dianders@xxxxxxxxxxxx> wrote: > Depending on how you look at it, you can either say that: > a) There is a PDC hardware issue (with the specific IP rev that exists > on sc7180) that causes the PDC not to work properly when configured > to handle dual edges. > b) The dual edge feature of the PDC hardware was only added in later > HW revisions and thus isn't in all hardware. > > Regardless of how you look at it, let's work around the lack of dual > edge support by only ever letting our parent see requests for single > edge interrupts on affected hardware. > > NOTE: it's possible that a driver requesting a dual edge interrupt > might get several edges coalesced into a single IRQ. For instance if > a line starts low and then goes high and low again, the driver that > requested the IRQ is not guaranteed to be called twice. However, it > is guaranteed that once the driver's interrupt handler starts running > its first instruction that any new edges coming in will cause the > interrupt to fire again. This is relatively commonplace for dual-edge > gpio interrupts (many gpio controllers require software to emulate > dual edge with single edge) so client drivers should be setup to > handle it. > > Fixes: e35a6ae0eb3a ("pinctrl/msm: Setup GPIO chip in hierarchy") > Signed-off-by: Douglas Anderson <dianders@xxxxxxxxxxxx> > --- > As far as I can tell everything here should work and the limited > testing I'm able to give it shows that, in fact, I can detect both > edges. > > I specifically left off Reviewed-by and Tested-by tags from v2 becuase > I felt that the implementation had changed just enough to invalidate > previous reviews / testing. Hopefully it's not too much of a hassle > for folks to re-review and re-test. > > Changes in v3: > - Rate limit the warning. Tentatively applied this to the fixes branch in the pinctrl tree so we get some linux-next coverage. Would be nice to get Bjorn's ACK on it as well! Yours, Linus Walleij