On Tue, Jul 14, 2020 at 8:08 AM 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> Just as a heads up. I started seeing boot failures (crashes really early before we get serial output) with db845c when testing with the android-mainline tree that pulled v5.8 in. I did some quick bisection and came down to this patch, and sure enough things boot again with this patch reverted. In my testing earlier today with v5.8 (+ just a few patches for db845c support), I didn't see this failure, but the configs in use are different there. I'll try to spend a bit of time to understand exactly what is failing, but if you have any initial suggestions for things to try, I'd appreciate it. thanks -john