• Russell King's avatar
    ASoC: kirkwood: fix device remove ordering · dc39596a
    Russell King authored
    The devm conversion of kirkwood was incorrect; on removal, devm takes
    effect after the "remove" function has returned.  So, the effect of
    the conversion was to change the order during remove from:
    
      - snd_soc_unregister_component() (unpublishes interfaces)
      - clk_disable_unprepare()
      - cleanup resources
    
    After the conversion, this became:
    
      - clk_disable_unprepare() - while the device may still be active
      - snd_soc_unregister_component()
      - cleanup resources
    
    Hence, it introduces a bug, where the internal clock for the device
    may be shut down before the device itself has been shut down.  It is
    known that Marvell SoCs, including Dove, locks up if registers for a
    peripheral that has its clocks disabled are accessed.
    
    Fixes: f98fc0f8 ("ASoC: kirkwood: replace platform to component")
    Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
    Link: https://lore.kernel.org/r/E1iNGyP-0004oN-BA@rmk-PC.armlinux.org.ukSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    dc39596a
kirkwood-i2s.c 16.1 KB