• Tomi Valkeinen's avatar
    OMAPDSS: Use PM notifiers for system suspend · 2b8501d7
    Tomi Valkeinen authored
    The current way how omapdss handles system suspend and resume is that
    omapdss device (a platform device, which is not part of the device
    hierarchy of the DSS HW devices, like DISPC and DSI, or panels.) uses
    the suspend and resume callbacks from platform_driver to handle system
    suspend. It does this by disabling all enabled panels on suspend, and
    resuming the previously disabled panels on resume.
    
    This presents a few problems.
    
    One is that as omapdss device is not related to the panel devices or the
    DSS HW devices, there's no ordering in the suspend process. This means
    that suspend could be first ran for DSS HW devices and panels, and only
    then for omapdss device. Currently this is not a problem, as DSS HW
    devices and panels do not handle suspend.
    
    Another, more pressing problem, is that when suspending or resuming, the
    runtime PM functions return -EACCES as runtime PM is disabled during
    system suspend. This causes the driver to print warnings, and operations
    to fail as they think that they failed to bring up the HW.
    
    This patch changes the omapdss suspend handling to use PM notifiers,
    which are called before suspend and after resume. This way we have a
    normally functioning system when we are suspending and resuming the
    panels.
    
    This patch, I believe, creates a problem that somebody could enable or
    disable a panel between PM_SUSPEND_PREPARE and the system suspend, and
    similarly the other way around in resume. I choose to ignore the problem
    for now, as it sounds rather unlikely, and if it happens, it's not
    fatal.
    
    In the long run the system suspend handling of omapdss and panels should
    be thought out properly. The current approach feels rather hacky.
    Perhaps the panel drivers should handle system suspend, or the users of
    omapdss (omapfb, omapdrm) should handle system suspend.
    
    Note that after this patch we could probably revert
    0eaf9f52 (OMAPDSS: use sync versions of
    pm_runtime_put). But as I said, this patch may be temporary, so let's
    leave the sync version still in place.
    Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
    Reported-by: default avatarJassi Brar <jaswinder.singh@linaro.org>
    Tested-by: default avatarJassi Brar <jaswinder.singh@linaro.org>
    2b8501d7
core.c 14.1 KB