[Freedreno] [PATCH v2 04/13] drm/msm/dpu: use devres-managed allocation for VBIF data
Jessica Zhang
quic_jesszhan at quicinc.com
Wed Jul 19 01:03:32 UTC 2023
On 7/7/2023 4:12 PM, Dmitry Baryshkov wrote:
> Use devm_kzalloc to create VBIF data structure. This allows us to
> remove corresponding kfree and drop dpu_hw_intr_destroy() function.
Hi Dmitry,
Nit: I think you mean dpu_hw_vbif_destroy() here.
Reviewed-by: Jessica Zhang <quic_jesszhan at quicinc.com>
Thanks,
Jessica Zhang
>
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov at linaro.org>
> ---
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_vbif.c | 14 ++++++--------
> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_vbif.h | 8 ++++----
> drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 11 +++--------
> 3 files changed, 13 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_vbif.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_vbif.c
> index a5121a50b2bb..98e34afde2d2 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_vbif.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_vbif.c
> @@ -2,6 +2,8 @@
> /* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
> */
>
> +#include <drm/drm_managed.h>
> +
> #include "dpu_hwio.h"
> #include "dpu_hw_catalog.h"
> #include "dpu_hw_vbif.h"
> @@ -211,12 +213,13 @@ static void _setup_vbif_ops(struct dpu_hw_vbif_ops *ops,
> ops->set_write_gather_en = dpu_hw_set_write_gather_en;
> }
>
> -struct dpu_hw_vbif *dpu_hw_vbif_init(const struct dpu_vbif_cfg *cfg,
> - void __iomem *addr)
> +struct dpu_hw_vbif *dpu_hw_vbif_init(struct drm_device *dev,
> + const struct dpu_vbif_cfg *cfg,
> + void __iomem *addr)
> {
> struct dpu_hw_vbif *c;
>
> - c = kzalloc(sizeof(*c), GFP_KERNEL);
> + c = drmm_kzalloc(dev, sizeof(*c), GFP_KERNEL);
> if (!c)
> return ERR_PTR(-ENOMEM);
>
> @@ -234,8 +237,3 @@ struct dpu_hw_vbif *dpu_hw_vbif_init(const struct dpu_vbif_cfg *cfg,
>
> return c;
> }
> -
> -void dpu_hw_vbif_destroy(struct dpu_hw_vbif *vbif)
> -{
> - kfree(vbif);
> -}
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_vbif.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_vbif.h
> index 7e10d2a172b4..e2b4307500e4 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_vbif.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_vbif.h
> @@ -108,12 +108,12 @@ struct dpu_hw_vbif {
> /**
> * dpu_hw_vbif_init() - Initializes the VBIF driver for the passed
> * VBIF catalog entry.
> + * @dev: Corresponding device for devres management
> * @cfg: VBIF catalog entry for which driver object is required
> * @addr: Mapped register io address of MDSS
> */
> -struct dpu_hw_vbif *dpu_hw_vbif_init(const struct dpu_vbif_cfg *cfg,
> - void __iomem *addr);
> -
> -void dpu_hw_vbif_destroy(struct dpu_hw_vbif *vbif);
> +struct dpu_hw_vbif *dpu_hw_vbif_init(struct drm_device *dev,
> + const struct dpu_vbif_cfg *cfg,
> + void __iomem *addr);
>
> #endif /*_DPU_HW_VBIF_H */
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> index ef232dc838c7..f7723f89cbbc 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> @@ -812,13 +812,8 @@ static void _dpu_kms_hw_destroy(struct dpu_kms *dpu_kms)
> /* safe to call these more than once during shutdown */
> _dpu_kms_mmu_destroy(dpu_kms);
>
> - if (dpu_kms->catalog) {
> - for (i = 0; i < ARRAY_SIZE(dpu_kms->hw_vbif); i++) {
> - if (dpu_kms->hw_vbif[i]) {
> - dpu_hw_vbif_destroy(dpu_kms->hw_vbif[i]);
> - dpu_kms->hw_vbif[i] = NULL;
> - }
> - }
> + for (i = 0; i < ARRAY_SIZE(dpu_kms->hw_vbif); i++) {
> + dpu_kms->hw_vbif[i] = NULL;
> }
>
> if (dpu_kms->rm_init)
> @@ -1070,7 +1065,7 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
> struct dpu_hw_vbif *hw;
> const struct dpu_vbif_cfg *vbif = &dpu_kms->catalog->vbif[i];
>
> - hw = dpu_hw_vbif_init(vbif, dpu_kms->vbif[vbif->id]);
> + hw = dpu_hw_vbif_init(dev, vbif, dpu_kms->vbif[vbif->id]);
> if (IS_ERR(hw)) {
> rc = PTR_ERR(hw);
> DPU_ERROR("failed to init vbif %d: %d\n", vbif->id, rc);
> --
> 2.39.2
>
More information about the Freedreno
mailing list