• Alex Elder's avatar
    net: ipa: use runtime PM core · 63de79f0
    Alex Elder authored
    Use the runtime power management core to cause hardware suspend and
    resume to occur.  Enable it in ipa_clock_init() (without autosuspend),
    and disable it in ipa_clock_exit().
    
    Use ipa_runtime_suspend() as the ->runtime_suspend power operation,
    and arrange for it to be called by having ipa_clock_get() call
    pm_runtime_get_sync() when the first clock reference is taken.
    Similarly, use ipa_runtime_resume() as the ->runtime_resume power
    operation, and pm_runtime_put() when the last IPA clock reference
    is dropped.
    
    Introduce ipa_runtime_idle() as the ->runtime_idle power operation,
    and have it return a non-zero value; this way suspend will never
    occur except when forced.
    
    Use pm_runtime_force_suspend() and pm_runtime_force_resume() as the
    system suspend and resume callbacks, and remove ipa_suspend() and
    ipa_resume().
    
    Store a pointer to the device structure passed to ipa_clock_init(),
    so it can be used by ipa_clock_exit() to disable runtime power
    management.
    
    For now we preserve IPA clock reference counting.
    Signed-off-by: default avatarAlex Elder <elder@linaro.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    63de79f0
ipa_clock.c 11.2 KB