• Thomas Petazzoni's avatar
    clk: mvebu: add suspend/resume for gatable clocks · f5710531
    Thomas Petazzoni authored
    This commit adds suspend/resume support for the gatable clock driver
    used on Marvell EBU platforms. When getting out of suspend, the
    Marvell EBU platforms go through the bootloader, which re-enables all
    gatable clocks. However, upon resume, the clock framework will not
    disable again all gatable clocks that are not used.
    
    Therefore, if the clock driver does not save/restore the state of the
    gatable clocks, all gatable clocks that are not claimed by any device
    driver will remain enabled after a resume. This is why this driver
    saves and restores the state of those clocks.
    
    Since clocks aren't real devices, we don't have the normal ->suspend()
    and ->resume() of the device model, and have to use the ->suspend()
    and ->resume() hooks of the syscore_ops mechanism. This mechanism has
    the unfortunate idea of not providing a way of passing private data,
    which requires us to change the driver to make the assumption that
    there is only once instance of the gatable clock control structure.
    Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Cc: Mike Turquette <mturquette@linaro.org>
    Cc: linux-kernel@vger.kernel.org
    Acked-by: default avatarGregory CLEMENT <gregory.clement@free-electrons.com>
    Link: https://lkml.kernel.org/r/1416585613-2113-9-git-send-email-thomas.petazzoni@free-electrons.comSigned-off-by: default avatarJason Cooper <jason@lakedaemon.net>
    f5710531
common.c 6.58 KB