diff mbox series

[v3,12/19] media: venus: pm_helpers: Commonize core_power

Message ID 20230911-topic-mars-v3-12-79f23b81c261@linaro.org (mailing list archive)
State Not Applicable
Headers show
Series Venus cleanups | expand

Commit Message

Konrad Dybcio March 27, 2024, 6:08 p.m. UTC
core_power_v4 called with num_resets = 0 and core->pmdomains[0] == NULL
does exactly the same thing as core_power_v1. Unify them!

Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
---
 drivers/media/platform/qcom/venus/core.c       | 21 +++++++--------------
 drivers/media/platform/qcom/venus/pm_helpers.c | 17 +----------------
 drivers/media/platform/qcom/venus/pm_helpers.h |  2 +-
 3 files changed, 9 insertions(+), 31 deletions(-)

Comments

Dikshita Agarwal April 5, 2024, 8:12 a.m. UTC | #1
On 3/27/2024 11:38 PM, Konrad Dybcio wrote:
> core_power_v4 called with num_resets = 0 and core->pmdomains[0] == NULL
> does exactly the same thing as core_power_v1. Unify them!
> 
> Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
> ---
>  drivers/media/platform/qcom/venus/core.c       | 21 +++++++--------------
>  drivers/media/platform/qcom/venus/pm_helpers.c | 17 +----------------
>  drivers/media/platform/qcom/venus/pm_helpers.h |  2 +-
>  3 files changed, 9 insertions(+), 31 deletions(-)
> 
> diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c
> index b10d083b8b17..6bbb8153797c 100644
> --- a/drivers/media/platform/qcom/venus/core.c
> +++ b/drivers/media/platform/qcom/venus/core.c
> @@ -477,18 +477,15 @@ static void venus_core_shutdown(struct platform_device *pdev)
>  static __maybe_unused int venus_runtime_suspend(struct device *dev)
>  {
>  	struct venus_core *core = dev_get_drvdata(dev);
> -	const struct venus_pm_ops *pm_ops = core->pm_ops;
>  	int ret;
>  
>  	ret = hfi_core_suspend(core);
>  	if (ret)
>  		return ret;
>  
> -	if (pm_ops->core_power) {
> -		ret = pm_ops->core_power(core, POWER_OFF);
> -		if (ret)
> -			return ret;
> -	}
> +	ret = venus_core_power(core, POWER_OFF);
> +	if (ret)
> +		return ret;
>  
>  	ret = icc_set_bw(core->cpucfg_path, 0, 0);
>  	if (ret)
> @@ -503,8 +500,7 @@ static __maybe_unused int venus_runtime_suspend(struct device *dev)
>  err_video_path:
>  	icc_set_bw(core->cpucfg_path, kbps_to_icc(1000), 0);
>  err_cpucfg_path:
> -	if (pm_ops->core_power)
> -		pm_ops->core_power(core, POWER_ON);
> +	venus_core_power(core, POWER_ON);
>  
>  	return ret;
>  }
> @@ -512,7 +508,6 @@ static __maybe_unused int venus_runtime_suspend(struct device *dev)
>  static __maybe_unused int venus_runtime_resume(struct device *dev)
>  {
>  	struct venus_core *core = dev_get_drvdata(dev);
> -	const struct venus_pm_ops *pm_ops = core->pm_ops;
>  	int ret;
>  
>  	ret = icc_set_bw(core->video_path, kbps_to_icc(20000), 0);
> @@ -523,11 +518,9 @@ static __maybe_unused int venus_runtime_resume(struct device *dev)
>  	if (ret)
>  		return ret;
>  
> -	if (pm_ops->core_power) {
> -		ret = pm_ops->core_power(core, POWER_ON);
> -		if (ret)
> -			return ret;
> -	}
> +	ret = venus_core_power(core, POWER_ON);
> +	if (ret)
> +		return ret;
>  
>  	return hfi_core_resume(core, false);
>  }
> diff --git a/drivers/media/platform/qcom/venus/pm_helpers.c b/drivers/media/platform/qcom/venus/pm_helpers.c
> index ba63e6427eb9..3410039bb641 100644
> --- a/drivers/media/platform/qcom/venus/pm_helpers.c
> +++ b/drivers/media/platform/qcom/venus/pm_helpers.c
> @@ -322,22 +322,9 @@ static void core_put_v1(struct venus_core *core)
>  {
>  }
>  
> -static int core_power_v1(struct venus_core *core, int on)
> -{
> -	int ret = 0;
> -
> -	if (on == POWER_ON)
> -		ret = core_clks_enable(core);
> -	else
> -		core_clks_disable(core);
> -
> -	return ret;
> -}
> -
>  static const struct venus_pm_ops pm_ops_v1 = {
>  	.core_get = venus_clks_get,
>  	.core_put = core_put_v1,
> -	.core_power = core_power_v1,
>  	.load_scale = load_scale_v1,
>  };
>  
> @@ -410,7 +397,6 @@ static int venc_power_v3(struct device *dev, int on)
>  static const struct venus_pm_ops pm_ops_v3 = {
>  	.core_get = venus_clks_get,
>  	.core_put = core_put_v1,
> -	.core_power = core_power_v1,
>  	.vdec_get = vdec_get_v3,
>  	.vdec_power = vdec_power_v3,
>  	.venc_get = venc_get_v3,
> @@ -990,7 +976,7 @@ static void core_put_v4(struct venus_core *core)
>  	vcodec_domains_put(core);
>  }
>  
> -static int core_power_v4(struct venus_core *core, int on)
> +int venus_core_power(struct venus_core *core, int on)
>  {
>  	struct device *dev = core->dev;
>  	struct device *pmctrl = core->pmdomains ?
> @@ -1138,7 +1124,6 @@ static int load_scale_v4(struct venus_inst *inst)
>  static const struct venus_pm_ops pm_ops_v4 = {
>  	.core_get = core_get_v4,
>  	.core_put = core_put_v4,
> -	.core_power = core_power_v4,
>  	.vdec_get = vdec_get_v4,
>  	.vdec_put = vdec_put_v4,
>  	.vdec_power = vdec_power_v4,
> diff --git a/drivers/media/platform/qcom/venus/pm_helpers.h b/drivers/media/platform/qcom/venus/pm_helpers.h
> index a492c50c5543..77db940a265c 100644
> --- a/drivers/media/platform/qcom/venus/pm_helpers.h
> +++ b/drivers/media/platform/qcom/venus/pm_helpers.h
> @@ -12,7 +12,6 @@ struct venus_core;
>  struct venus_pm_ops {
>  	int (*core_get)(struct venus_core *core);
>  	void (*core_put)(struct venus_core *core);
> -	int (*core_power)(struct venus_core *core, int on);
>  
>  	int (*vdec_get)(struct device *dev);
>  	void (*vdec_put)(struct device *dev);
> @@ -28,6 +27,7 @@ struct venus_pm_ops {
>  };
>  
>  const struct venus_pm_ops *venus_pm_get(enum hfi_version version);
> +int venus_core_power(struct venus_core *core, int on);
>  
>  static inline int venus_pm_load_scale(struct venus_inst *inst)
>  {
> 
Reviewed-by: Dikshita Agarwal <quic_dikshita@quicinc.com>
diff mbox series

Patch

diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c
index b10d083b8b17..6bbb8153797c 100644
--- a/drivers/media/platform/qcom/venus/core.c
+++ b/drivers/media/platform/qcom/venus/core.c
@@ -477,18 +477,15 @@  static void venus_core_shutdown(struct platform_device *pdev)
 static __maybe_unused int venus_runtime_suspend(struct device *dev)
 {
 	struct venus_core *core = dev_get_drvdata(dev);
-	const struct venus_pm_ops *pm_ops = core->pm_ops;
 	int ret;
 
 	ret = hfi_core_suspend(core);
 	if (ret)
 		return ret;
 
-	if (pm_ops->core_power) {
-		ret = pm_ops->core_power(core, POWER_OFF);
-		if (ret)
-			return ret;
-	}
+	ret = venus_core_power(core, POWER_OFF);
+	if (ret)
+		return ret;
 
 	ret = icc_set_bw(core->cpucfg_path, 0, 0);
 	if (ret)
@@ -503,8 +500,7 @@  static __maybe_unused int venus_runtime_suspend(struct device *dev)
 err_video_path:
 	icc_set_bw(core->cpucfg_path, kbps_to_icc(1000), 0);
 err_cpucfg_path:
-	if (pm_ops->core_power)
-		pm_ops->core_power(core, POWER_ON);
+	venus_core_power(core, POWER_ON);
 
 	return ret;
 }
@@ -512,7 +508,6 @@  static __maybe_unused int venus_runtime_suspend(struct device *dev)
 static __maybe_unused int venus_runtime_resume(struct device *dev)
 {
 	struct venus_core *core = dev_get_drvdata(dev);
-	const struct venus_pm_ops *pm_ops = core->pm_ops;
 	int ret;
 
 	ret = icc_set_bw(core->video_path, kbps_to_icc(20000), 0);
@@ -523,11 +518,9 @@  static __maybe_unused int venus_runtime_resume(struct device *dev)
 	if (ret)
 		return ret;
 
-	if (pm_ops->core_power) {
-		ret = pm_ops->core_power(core, POWER_ON);
-		if (ret)
-			return ret;
-	}
+	ret = venus_core_power(core, POWER_ON);
+	if (ret)
+		return ret;
 
 	return hfi_core_resume(core, false);
 }
diff --git a/drivers/media/platform/qcom/venus/pm_helpers.c b/drivers/media/platform/qcom/venus/pm_helpers.c
index ba63e6427eb9..3410039bb641 100644
--- a/drivers/media/platform/qcom/venus/pm_helpers.c
+++ b/drivers/media/platform/qcom/venus/pm_helpers.c
@@ -322,22 +322,9 @@  static void core_put_v1(struct venus_core *core)
 {
 }
 
-static int core_power_v1(struct venus_core *core, int on)
-{
-	int ret = 0;
-
-	if (on == POWER_ON)
-		ret = core_clks_enable(core);
-	else
-		core_clks_disable(core);
-
-	return ret;
-}
-
 static const struct venus_pm_ops pm_ops_v1 = {
 	.core_get = venus_clks_get,
 	.core_put = core_put_v1,
-	.core_power = core_power_v1,
 	.load_scale = load_scale_v1,
 };
 
@@ -410,7 +397,6 @@  static int venc_power_v3(struct device *dev, int on)
 static const struct venus_pm_ops pm_ops_v3 = {
 	.core_get = venus_clks_get,
 	.core_put = core_put_v1,
-	.core_power = core_power_v1,
 	.vdec_get = vdec_get_v3,
 	.vdec_power = vdec_power_v3,
 	.venc_get = venc_get_v3,
@@ -990,7 +976,7 @@  static void core_put_v4(struct venus_core *core)
 	vcodec_domains_put(core);
 }
 
-static int core_power_v4(struct venus_core *core, int on)
+int venus_core_power(struct venus_core *core, int on)
 {
 	struct device *dev = core->dev;
 	struct device *pmctrl = core->pmdomains ?
@@ -1138,7 +1124,6 @@  static int load_scale_v4(struct venus_inst *inst)
 static const struct venus_pm_ops pm_ops_v4 = {
 	.core_get = core_get_v4,
 	.core_put = core_put_v4,
-	.core_power = core_power_v4,
 	.vdec_get = vdec_get_v4,
 	.vdec_put = vdec_put_v4,
 	.vdec_power = vdec_power_v4,
diff --git a/drivers/media/platform/qcom/venus/pm_helpers.h b/drivers/media/platform/qcom/venus/pm_helpers.h
index a492c50c5543..77db940a265c 100644
--- a/drivers/media/platform/qcom/venus/pm_helpers.h
+++ b/drivers/media/platform/qcom/venus/pm_helpers.h
@@ -12,7 +12,6 @@  struct venus_core;
 struct venus_pm_ops {
 	int (*core_get)(struct venus_core *core);
 	void (*core_put)(struct venus_core *core);
-	int (*core_power)(struct venus_core *core, int on);
 
 	int (*vdec_get)(struct device *dev);
 	void (*vdec_put)(struct device *dev);
@@ -28,6 +27,7 @@  struct venus_pm_ops {
 };
 
 const struct venus_pm_ops *venus_pm_get(enum hfi_version version);
+int venus_core_power(struct venus_core *core, int on);
 
 static inline int venus_pm_load_scale(struct venus_inst *inst)
 {