memory: renesas-rpc-if: Improve Runtime PM handling
authorGeert Uytterhoeven <geert+renesas@glider.be>
Wed, 23 Nov 2022 14:41:20 +0000 (15:41 +0100)
committerKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Mon, 23 Jan 2023 10:48:00 +0000 (11:48 +0100)
Convert from the deprecated pm_runtime_get_sync() to the new
pm_runtime_resume_and_get(), and add error checking.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Link: https://lore.kernel.org/r/6f2bd3b2b3d98c5bed541d969900b2ad04f93943.1669213027.git.geert+renesas@glider.be
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
drivers/memory/renesas-rpc-if.c

index 26ea557..7c9c7d9 100644 (file)
@@ -304,12 +304,13 @@ int rpcif_hw_init(struct rpcif *rpcif, bool hyperflash)
 {
        struct rpcif_priv *rpc = dev_get_drvdata(rpcif->dev);
        u32 dummy;
+       int ret;
 
-       pm_runtime_get_sync(rpc->dev);
+       ret = pm_runtime_resume_and_get(rpc->dev);
+       if (ret)
+               return ret;
 
        if (rpc->type == RPCIF_RZ_G2L) {
-               int ret;
-
                ret = reset_control_reset(rpc->rstc);
                if (ret)
                        return ret;
@@ -482,7 +483,9 @@ int rpcif_manual_xfer(struct rpcif *rpcif)
        u32 smenr, smcr, pos = 0, max = rpc->bus_size == 2 ? 8 : 4;
        int ret = 0;
 
-       pm_runtime_get_sync(rpc->dev);
+       ret = pm_runtime_resume_and_get(rpc->dev);
+       if (ret < 0)
+               return ret;
 
        regmap_update_bits(rpc->regmap, RPCIF_PHYCNT,
                           RPCIF_PHYCNT_CAL, RPCIF_PHYCNT_CAL);
@@ -650,11 +653,14 @@ ssize_t rpcif_dirmap_read(struct rpcif *rpcif, u64 offs, size_t len, void *buf)
        struct rpcif_priv *rpc = dev_get_drvdata(rpcif->dev);
        loff_t from = offs & (rpc->size - 1);
        size_t size = rpc->size - from;
+       int ret;
 
        if (len > size)
                len = size;
 
-       pm_runtime_get_sync(rpc->dev);
+       ret = pm_runtime_resume_and_get(rpc->dev);
+       if (ret < 0)
+               return ret;
 
        regmap_update_bits(rpc->regmap, RPCIF_CMNCR, RPCIF_CMNCR_MD, 0);
        regmap_write(rpc->regmap, RPCIF_DRCR, 0);