On 2/10/2024 2:39 AM, Konrad Dybcio wrote: > Without an OPP table and with vcodec_pmdomains_num (so, v1, v3 and > sdm845_legacy targets), core_put_v4 is a NOP, jut like core_put_v1. > Unify them! > > Signed-off-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxx> > --- > drivers/media/platform/qcom/venus/core.c | 8 +++----- > drivers/media/platform/qcom/venus/pm_helpers.c | 17 +---------------- > drivers/media/platform/qcom/venus/pm_helpers.h | 2 +- > 3 files changed, 5 insertions(+), 22 deletions(-) > > diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c > index 9bfd2a30084b..666adc5aac38 100644 > --- a/drivers/media/platform/qcom/venus/core.c > +++ b/drivers/media/platform/qcom/venus/core.c > @@ -426,15 +426,14 @@ static int venus_probe(struct platform_device *pdev) > err_core_deinit: > hfi_core_deinit(core, false); > err_core_put: > - if (core->pm_ops->core_put) > - core->pm_ops->core_put(core); > + vcodec_domains_put(core); > + > return ret; > } > > static void venus_remove(struct platform_device *pdev) > { > struct venus_core *core = platform_get_drvdata(pdev); > - const struct venus_pm_ops *pm_ops = core->pm_ops; > struct device *dev = core->dev; > int ret; > > @@ -452,8 +451,7 @@ static void venus_remove(struct platform_device *pdev) > pm_runtime_put_sync(dev); > pm_runtime_disable(dev); > > - if (pm_ops->core_put) > - pm_ops->core_put(core); > + vcodec_domains_put(core); > > v4l2_device_unregister(&core->v4l2_dev); > > diff --git a/drivers/media/platform/qcom/venus/pm_helpers.c b/drivers/media/platform/qcom/venus/pm_helpers.c > index 6f6de9ef1c6c..32f9ccfa9d8a 100644 > --- a/drivers/media/platform/qcom/venus/pm_helpers.c > +++ b/drivers/media/platform/qcom/venus/pm_helpers.c > @@ -318,13 +318,8 @@ static int load_scale_v1(struct venus_inst *inst) > return ret; > } > > -static void core_put_v1(struct venus_core *core) > -{ > -} > - > static const struct venus_pm_ops pm_ops_v1 = { > .core_get = venus_clks_get, > - .core_put = core_put_v1, > .load_scale = load_scale_v1, > }; > > @@ -396,7 +391,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, > .vdec_get = vdec_get_v3, > .vdec_power = vdec_power_v3, > .venc_get = venc_get_v3, > @@ -893,7 +887,7 @@ static int vcodec_domains_get(struct venus_core *core) > return ret; > } > > -static void vcodec_domains_put(struct venus_core *core) > +void vcodec_domains_put(struct venus_core *core) > { > dev_pm_domain_detach_list(core->pmdomains); > what is the base of this change? I don't see dev_pm_domain_detach_list in mainline code. Am I missing anything here? > @@ -968,14 +962,6 @@ static int core_get_v4(struct venus_core *core) > return 0; > } > > -static void core_put_v4(struct venus_core *core) > -{ > - if (legacy_binding) > - return; > - > - vcodec_domains_put(core); > -} > - > int venus_core_power(struct venus_core *core, int on) > { > struct device *dev = core->dev; > @@ -1123,7 +1109,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, > .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 77db940a265c..3014b39aa6e3 100644 > --- a/drivers/media/platform/qcom/venus/pm_helpers.h > +++ b/drivers/media/platform/qcom/venus/pm_helpers.h > @@ -11,7 +11,6 @@ struct venus_core; > > struct venus_pm_ops { > int (*core_get)(struct venus_core *core); > - void (*core_put)(struct venus_core *core); > > 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); > +void vcodec_domains_put(struct venus_core *core); > > static inline int venus_pm_load_scale(struct venus_inst *inst) > { >