lkml.org 
[lkml]   [2021]   [Dec]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 012/128] bus: sunxi-rsb: Fix shutdown
    Date
    From: Jernej Skrabec <jernej.skrabec@gmail.com>

    [ Upstream commit 017a716e7b0e9d4ac06a4d7779bd04fca009bbc9 ]

    Function sunxi_rsb_hw_exit() is sometimes called with pm runtime
    disabled, so in such cases pm_runtime_resume() will fail with -EACCES.

    Instead of doing whole dance of enabling pm runtime and thus clock just
    to disable it again immediately, just check if disabling clock is
    needed. That way calling pm_runtime_resume() is not needed at all.

    Fixes: 4a0dbc12e618 ("bus: sunxi-rsb: Implement runtime power management")
    Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://lore.kernel.org/r/20211121083537.612473-1-jernej.skrabec@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/bus/sunxi-rsb.c | 8 ++++----
    1 file changed, 4 insertions(+), 4 deletions(-)

    diff --git a/drivers/bus/sunxi-rsb.c b/drivers/bus/sunxi-rsb.c
    index 6f225dddc74f4..4566e730ef2b8 100644
    --- a/drivers/bus/sunxi-rsb.c
    +++ b/drivers/bus/sunxi-rsb.c
    @@ -687,11 +687,11 @@ err_clk_disable:

    static void sunxi_rsb_hw_exit(struct sunxi_rsb *rsb)
    {
    - /* Keep the clock and PM reference counts consistent. */
    - if (pm_runtime_status_suspended(rsb->dev))
    - pm_runtime_resume(rsb->dev);
    reset_control_assert(rsb->rstc);
    - clk_disable_unprepare(rsb->clk);
    +
    + /* Keep the clock and PM reference counts consistent. */
    + if (!pm_runtime_status_suspended(rsb->dev))
    + clk_disable_unprepare(rsb->clk);
    }

    static int __maybe_unused sunxi_rsb_runtime_suspend(struct device *dev)
    --
    2.34.1


    \
     
     \ /
      Last update: 2021-12-27 16:47    [W:7.144 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site