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