• Thomas Petazzoni's avatar
    bus: mvebu-mbus: suspend/resume support · a0e89c02
    Thomas Petazzoni authored
    This commit extends the mvebu-mbus driver to provide suspend/resume
    support. Since mvebu-mbus is not a platform_driver, the syscore_ops
    mechanism is used to get ->suspend() and ->resume() hooks called into
    the driver.
    
    In those hooks, we save and restore the MBus windows state, to make
    sure after resume all Mbus windows are properly restored. Note that
    while the state of some windows could be gathered by looking again at
    the Device Tree (for statically described windows), it is not the case
    of dynamically described windows such as the PCIe memory and I/O
    windows. Therefore, we take the simple approach of saving and
    restoring the registers for all MBus windows.
    
    In addition, the commit extends the Device Tree binding of the MBus
    controller, to control the MBus bridge registers (which define which
    parts of the physical address space is routed to MBus windows
    vs. normal RAM memory). Those registers must be saved and restored
    during suspend/resume. The Device Tree binding extension is made is a
    backward compatible fashion, but of course, suspend/resume will not
    work without the Device Tree update.
    Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Link: https://lkml.kernel.org/r/1416585613-2113-7-git-send-email-thomas.petazzoni@free-electrons.comSigned-off-by: default avatarJason Cooper <jason@lakedaemon.net>
    a0e89c02
mvebu-mbus.c 27.7 KB