Messages in this thread | | | From | John Stultz <> | Date | Mon, 3 Aug 2020 14:06:24 -0700 | Subject | Re: [PATCH v3] pinctrl: qcom: Handle broken/missing PDC dual edge IRQs on sc7180 |
| |
On Tue, Jul 14, 2020 at 8:08 AM Douglas Anderson <dianders@chromium.org> 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@chromium.org>
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
| |