Message ID | 20230911-topic-mars-v2-14-3dac84b88c4b@linaro.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Venus cleanups | expand |
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@linaro.org> > --- > 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) > { >
On 3/4/24 07:57, Dikshita Agarwal wrote: > > > 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@linaro.org> >> --- [...] >> -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? The base is specified in the cover letter. The code in question is indeed here since January, perhaps you're looking at something older than -next. Konrad
On 3/5/2024 4:22 AM, Konrad Dybcio wrote: > > > On 3/4/24 07:57, Dikshita Agarwal wrote: >> >> >> 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@linaro.org> >>> --- > > [...] > > >>> -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? > > The base is specified in the cover letter. > > The code in question is indeed here since January, perhaps > you're looking at something older than -next. > Thanks for the clarification, I was looking at media tree which surprisingly doesn't have the base change. > Konrad >
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); @@ -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) {
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@linaro.org> --- 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(-)