• Charles Keepax's avatar
    mfd: arizona: Use suspend_noirq inplace of suspend_late · 3612b27c
    Charles Keepax authored
    As runtime PM doesn't function whilst processing system suspend/resume
    operations and the Arizona IRQ handlers need runtime PM to function
    we must disable IRQs during these operations. Whilst this is
    already done in the driver we are using suspend/suspend_late and
    resume/resume_noirq to do so which has two problems. Firstly, as
    suspend_late is before suspend_noirq that means we still have a
    small window where an IRQ can cause issues.  Secondly, if another
    suspend_late handler fails after ours has run then (as resume_noirq
    will not run) we will make unbalanced calls to enable_irq.
    
    This is all simply fixed by using the suspend_noirq callback rather
    than suspend_late. Whilst we are doing this tidy the code up a little,
    and use the appropriate helper macros.
    Signed-off-by: default avatarCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
    Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
    3612b27c
arizona-core.c 36.6 KB