• Charles Keepax's avatar
    spi: cadence: Correct initialisation of runtime PM · 734882a8
    Charles Keepax authored
    Currently the driver calls pm_runtime_put_autosuspend but without ever
    having done a pm_runtime_get, this causes the reference count in the pm
    runtime core to become -1. The bad reference count causes the core to
    sometimes suspend whilst an active SPI transfer is in progress.
    
    arizona spi0.1: SPI transfer timed out
    spi_master spi0: failed to transfer one message from queue
    
    The correct proceedure is to do all the initialisation that requires the
    hardware to be powered up before enabling the PM runtime, then enable
    the PM runtime having called pm_runtime_set_active to inform it that the
    hardware is currently powered up. The core will then power it down at
    it's leisure and no explicit pm_runtime_put is required.
    
    Fixes: d36ccd9f ("spi: cadence: Runtime pm adaptation")
    Signed-off-by: default avatarCharles Keepax <ckeepax@opensource.cirrus.com>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    734882a8
spi-cadence.c 21.1 KB