linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
To: unlisted-recipients:; (no To-header on input)
Cc: linuxarm@huawei.com, mauro.chehab@huawei.com,
	Mauro Carvalho Chehab <mchehab+huawei@kernel.org>,
	Jean-Christophe Trotin <jean-christophe.trotin@st.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	linux-kernel@vger.kernel.org, linux-media@vger.kernel.org
Subject: [PATCH 10/78] media: sti/hva: use pm_runtime_resume_and_get()
Date: Sat, 24 Apr 2021 08:44:20 +0200	[thread overview]
Message-ID: <ea3f148150d98f19d3402202e18270b9977b1959.1619191723.git.mchehab+huawei@kernel.org> (raw)
In-Reply-To: <cover.1619191723.git.mchehab+huawei@kernel.org>

Commit dd8088d5a896 ("PM: runtime: Add pm_runtime_resume_and_get to deal with usage counter")
added pm_runtime_resume_and_get() in order to automatically handle
dev->power.usage_count decrement on errors.

While the hva driver does it right, there are lots of errors
on other drivers due to its misusage. So, let's change
this driver to also use pm_runtime_resume_and_get(), as we're
doing similar changes all over the media subsystem.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
 drivers/media/platform/sti/hva/hva-hw.c | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/drivers/media/platform/sti/hva/hva-hw.c b/drivers/media/platform/sti/hva/hva-hw.c
index f59811e27f51..77b8bfa5e0c5 100644
--- a/drivers/media/platform/sti/hva/hva-hw.c
+++ b/drivers/media/platform/sti/hva/hva-hw.c
@@ -270,9 +270,8 @@ static unsigned long int hva_hw_get_ip_version(struct hva_dev *hva)
 	struct device *dev = hva_to_dev(hva);
 	unsigned long int version;
 
-	if (pm_runtime_get_sync(dev) < 0) {
+	if (pm_runtime_resume_and_get(dev) < 0) {
 		dev_err(dev, "%s     failed to get pm_runtime\n", HVA_PREFIX);
-		pm_runtime_put_noidle(dev);
 		mutex_unlock(&hva->protect_mutex);
 		return -EFAULT;
 	}
@@ -386,10 +385,10 @@ int hva_hw_probe(struct platform_device *pdev, struct hva_dev *hva)
 	pm_runtime_set_suspended(dev);
 	pm_runtime_enable(dev);
 
-	ret = pm_runtime_get_sync(dev);
+	ret = pm_runtime_resume_and_get(dev);
 	if (ret < 0) {
 		dev_err(dev, "%s     failed to set PM\n", HVA_PREFIX);
-		goto err_pm;
+		goto err_clk;
 	}
 
 	/* check IP hardware version */
@@ -462,6 +461,7 @@ int hva_hw_execute_task(struct hva_ctx *ctx, enum hva_hw_cmd_type cmd,
 	u8 client_id = ctx->id;
 	int ret;
 	u32 reg = 0;
+	bool got_pm = false;
 
 	mutex_lock(&hva->protect_mutex);
 
@@ -469,12 +469,13 @@ int hva_hw_execute_task(struct hva_ctx *ctx, enum hva_hw_cmd_type cmd,
 	enable_irq(hva->irq_its);
 	enable_irq(hva->irq_err);
 
-	if (pm_runtime_get_sync(dev) < 0) {
+	if (pm_runtime_resume_and_get(dev) < 0) {
 		dev_err(dev, "%s     failed to get pm_runtime\n", ctx->name);
 		ctx->sys_errors++;
 		ret = -EFAULT;
 		goto out;
 	}
+	got_pm = true;
 
 	reg = readl_relaxed(hva->regs + HVA_HIF_REG_CLK_GATING);
 	switch (cmd) {
@@ -537,7 +538,8 @@ int hva_hw_execute_task(struct hva_ctx *ctx, enum hva_hw_cmd_type cmd,
 		dev_dbg(dev, "%s     unknown command 0x%x\n", ctx->name, cmd);
 	}
 
-	pm_runtime_put_autosuspend(dev);
+	if (got_pm)
+		pm_runtime_put_autosuspend(dev);
 	mutex_unlock(&hva->protect_mutex);
 
 	return ret;
@@ -553,9 +555,8 @@ void hva_hw_dump_regs(struct hva_dev *hva, struct seq_file *s)
 
 	mutex_lock(&hva->protect_mutex);
 
-	if (pm_runtime_get_sync(dev) < 0) {
+	if (pm_runtime_resume_and_get(dev) < 0) {
 		seq_puts(s, "Cannot wake up IP\n");
-		pm_runtime_put_noidle(dev);
 		mutex_unlock(&hva->protect_mutex);
 		return;
 	}
-- 
2.30.2


  parent reply	other threads:[~2021-04-24  6:45 UTC|newest]

Thread overview: 127+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-24  6:44 [PATCH 00/78] media: use pm_runtime_resume_and_get() instead of pm_runtime_get_sync() Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 01/78] media: atmel: properly get pm_runtime Mauro Carvalho Chehab
2021-04-24  9:36   ` kernel test robot
2021-04-24  6:44 ` [PATCH 02/78] media: marvel-ccic: fix some issues when getting pm_runtime Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 03/78] media: mdk-mdp: fix pm_runtime_get_sync() usage count Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 04/78] media: rcar_fdp1: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 05/78] media: mdk-mdp: " Mauro Carvalho Chehab
2021-04-24 18:23   ` Ezequiel Garcia
2021-04-24  6:44 ` [PATCH 06/78] media: renesas-ceu: " Mauro Carvalho Chehab
2021-04-24  8:11   ` Jacopo Mondi
2021-04-24  6:44 ` [PATCH 07/78] media: s5p: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 08/78] media: am437x:: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 09/78] media: sh_vou: " Mauro Carvalho Chehab
2021-04-24  6:44 ` Mauro Carvalho Chehab [this message]
2021-04-24  6:44 ` [PATCH 11/78] staging: media: rkvdec: " Mauro Carvalho Chehab
2021-04-24 23:20   ` Ezequiel Garcia
2021-04-24  6:44 ` [PATCH 12/78] staging: media: atomisp_fops: use pm_runtime_resume_and_get() Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 13/78] staging: media: hantro_drv: " Mauro Carvalho Chehab
2021-04-24 23:23   ` Ezequiel Garcia
2021-04-26 12:33     ` Mauro Carvalho Chehab
2021-04-26 12:42       ` Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 14/78] staging: media: imx7-mipi-csis: " Mauro Carvalho Chehab
2021-04-26 10:11   ` Rui Miguel Silva
2021-04-24  6:44 ` [PATCH 15/78] staging: media: ipu3: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 16/78] staging: media: cedrus_video: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 17/78] staging: media: vde: " Mauro Carvalho Chehab
2021-04-24  7:35   ` Dmitry Osipenko
2021-04-27  9:22     ` Mauro Carvalho Chehab
2021-04-27 12:34       ` Johan Hovold
2021-04-24  6:44 ` [PATCH 18/78] staging: media: csi: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 19/78] staging: media: vi: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 20/78] media: mtk-vcodec: fix pm_runtime_get_sync() usage count Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 21/78] media: s5p-jpeg: " Mauro Carvalho Chehab
2021-04-27  9:14   ` Sylwester Nawrocki
2021-04-24  6:44 ` [PATCH 22/78] media: delta-v4l2: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 23/78] media: sun8i_rotate: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 24/78] media: i2c: ak7375: use pm_runtime_resume_and_get() Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 25/78] media: i2c: ccs-core: " Mauro Carvalho Chehab
2021-04-25 18:55   ` Sakari Ailus
2021-04-26 14:01     ` Mauro Carvalho Chehab
2021-04-26 14:09       ` Sakari Ailus
2021-04-26 14:16         ` Mauro Carvalho Chehab
2021-04-26 14:29           ` Sakari Ailus
2021-04-26 17:32             ` Mauro Carvalho Chehab
2021-04-27  7:02               ` Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 26/78] media: i2c: dw9714: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 27/78] media: i2c: dw9768: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 28/78] media: i2c: dw9807-vcm: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 29/78] media: i2c: hi556: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 30/78] media: i2c: imx214: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 31/78] media: i2c: imx219: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 32/78] media: i2c: imx258: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 33/78] media: i2c: imx274: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 34/78] media: i2c: imx290: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 35/78] media: i2c: imx319: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 36/78] media: i2c: imx334: " Mauro Carvalho Chehab
2021-04-26  9:06   ` Alessandrelli, Daniele
2021-04-24  6:44 ` [PATCH 37/78] media: i2c: imx355: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 38/78] media: i2c: mt9m001: " Mauro Carvalho Chehab
2021-04-24  8:24   ` Jacopo Mondi
2021-04-24 10:00     ` Johan Hovold
2021-04-26 14:38       ` Mauro Carvalho Chehab
2021-04-27 12:23         ` Johan Hovold
2021-04-28  8:31           ` Mauro Carvalho Chehab
2021-04-28 10:05             ` Johan Hovold
2021-04-28 11:28               ` Mauro Carvalho Chehab
2021-04-28 11:56                 ` Johan Hovold
2021-04-24  6:44 ` [PATCH 39/78] media: i2c: ov02a10: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 40/78] media: i2c: ov13858: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 41/78] media: i2c: ov2659: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 42/78] media: i2c: ov2685: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 43/78] media: i2c: ov2740: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 44/78] media: i2c: ov5647: " Mauro Carvalho Chehab
2021-04-24  8:30   ` Jacopo Mondi
2021-04-24  6:44 ` [PATCH 45/78] media: i2c: ov5648: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 46/78] media: i2c: ov5670: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 47/78] media: i2c: ov5675: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 48/78] media: i2c: ov5695: " Mauro Carvalho Chehab
2021-04-24  6:44 ` [PATCH 49/78] media: i2c: ov7740: " Mauro Carvalho Chehab
2021-04-24  6:45 ` [PATCH 50/78] media: i2c: ov8856: " Mauro Carvalho Chehab
2021-04-24  6:45 ` [PATCH 51/78] media: i2c: ov8865: " Mauro Carvalho Chehab
2021-04-24  6:45 ` [PATCH 52/78] media: i2c: ov9734: " Mauro Carvalho Chehab
2021-04-24  6:45 ` [PATCH 53/78] media: i2c: tvp5150: " Mauro Carvalho Chehab
2021-04-24  6:45 ` [PATCH 54/78] media: i2c: video-i2c: " Mauro Carvalho Chehab
2021-04-24  6:45 ` [PATCH 55/78] media: ipu3: " Mauro Carvalho Chehab
2021-04-24  6:45 ` [PATCH 56/78] media: coda: " Mauro Carvalho Chehab
2021-04-26  6:53   ` Philipp Zabel
2021-04-24  6:45 ` [PATCH 57/78] media: exynos4-is: " Mauro Carvalho Chehab
2021-04-25 20:57   ` Sylwester Nawrocki
2021-04-26 13:12     ` Mauro Carvalho Chehab
2021-04-27  8:06       ` Sylwester Nawrocki
2021-04-24  6:45 ` [PATCH 58/78] media: exynos-gsc: " Mauro Carvalho Chehab
2021-04-27  8:18   ` Sylwester Nawrocki
2021-04-27  9:30     ` Mauro Carvalho Chehab
2021-04-27  9:42       ` Mauro Carvalho Chehab
2021-04-27 11:50         ` Sylwester Nawrocki
2021-04-28  7:13           ` Mauro Carvalho Chehab
2021-04-28  7:17             ` Mauro Carvalho Chehab
2021-04-28  8:27               ` Sylwester Nawrocki
2021-04-24  6:45 ` [PATCH 59/78] media: mtk-jpeg: " Mauro Carvalho Chehab
2021-04-24  6:45 ` [PATCH 60/78] media: camss-csid: " Mauro Carvalho Chehab
2021-04-24  6:45 ` [PATCH 61/78] media: camss-csiphy: " Mauro Carvalho Chehab
2021-04-24  6:45 ` [PATCH 62/78] media: camss-ispif: " Mauro Carvalho Chehab
2021-04-24  6:45 ` [PATCH 63/78] media: camss-vfe: " Mauro Carvalho Chehab
2021-04-24  6:45 ` [PATCH 64/78] media: core: " Mauro Carvalho Chehab
2021-04-24  6:45 ` [PATCH 65/78] media: pm_helpers: " Mauro Carvalho Chehab
2021-04-24  6:45 ` [PATCH 66/78] media: vdec: " Mauro Carvalho Chehab
2021-04-24  6:45 ` [PATCH 67/78] media: venc: " Mauro Carvalho Chehab
2021-04-24  6:45 ` [PATCH 68/78] media: rcar-fcp: " Mauro Carvalho Chehab
2021-04-24  6:45 ` [PATCH 69/78] media: rcar-vin: " Mauro Carvalho Chehab
2021-04-24  8:33   ` Niklas Söderlund
2021-04-24  9:12   ` Geert Uytterhoeven
2021-04-26 13:33     ` Mauro Carvalho Chehab
2021-04-24  6:45 ` [PATCH 70/78] media: rga-buf: " Mauro Carvalho Chehab
2021-04-28 17:09   ` Ezequiel Garcia
2021-04-24  6:45 ` [PATCH 71/78] media: rkisp1-capture: " Mauro Carvalho Chehab
2021-04-24  6:45 ` [PATCH 72/78] media: s3c-camif: " Mauro Carvalho Chehab
2021-04-25 19:36   ` Sylwester Nawrocki
2021-04-24  6:45 ` [PATCH 73/78] media: s5p-mfc: " Mauro Carvalho Chehab
2021-04-27  9:36   ` Sylwester Nawrocki
2021-04-24  6:45 ` [PATCH 74/78] media: bdisp-v4l2: " Mauro Carvalho Chehab
2021-04-24  6:45 ` [PATCH 75/78] media: stm32: " Mauro Carvalho Chehab
2021-04-24  6:45 ` [PATCH 76/78] media: sun4i_v4l2: " Mauro Carvalho Chehab
2021-04-24 10:21   ` kernel test robot
2021-04-24  6:45 ` [PATCH 77/78] media: ti-vpe: " Mauro Carvalho Chehab
2021-04-24  6:45 ` [PATCH 78/78] media: vsp1: " Mauro Carvalho Chehab
2021-04-28 10:13 ` [PATCH 00/78] media: use pm_runtime_resume_and_get() instead of pm_runtime_get_sync() Dan Carpenter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ea3f148150d98f19d3402202e18270b9977b1959.1619191723.git.mchehab+huawei@kernel.org \
    --to=mchehab+huawei@kernel.org \
    --cc=jean-christophe.trotin@st.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linuxarm@huawei.com \
    --cc=mauro.chehab@huawei.com \
    --cc=mchehab@kernel.org \
    --subject='Re: [PATCH 10/78] media: sti/hva: use pm_runtime_resume_and_get()' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
on how to clone and mirror all data and code used for this inbox