• Charles Keepax's avatar
    ASoC: arizona: Poll for FLL clock OK rather than use interrupts · 0e765971
    Charles Keepax authored
    The extcon driver takes the DAPM mutex from within the interrupt thread
    in several places, which makes it possible to get into a situation where
    the interrupt thread is blocked waiting on the DAPM mutex whilst a DAPM
    sequence is running which is attempting to configure the FLL. In this
    case the FLL completion can't be completed as as the IRQ handler is
    ONE_SHOT, which cause the FLL lock to use the full time out (250mS) and
    report that the process timed out.
    
    It is not really practical to make the extcon driver not take the DAPM
    mutex from within the interrupt thread, at least not without extensive
    modification. So this patch fixes the issue by switching the wait for
    the FLL lock to polling. A few fast polls are done first as the FLL
    should lock quickly for a good quality reference clock, (indeed it hits
    on the first poll on my system) and it will poll every 20mS after that
    until it times out.
    Signed-off-by: default avatarCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    Cc: stable@vger.kernel.org
    0e765971
arizona.c 54.5 KB