[PATCH v3 05/13] drm/msm/dpu: use devres-managed allocation for MDP TOP
Jessica Zhang
quic_jesszhan at quicinc.com
Fri Dec 1 18:57:56 UTC 2023
On 8/16/2023 12:27 AM, Dmitry Baryshkov wrote:
> Hi Jessica,
>
> On Tue, 15 Aug 2023 at 23:17, Jessica Zhang <quic_jesszhan at quicinc.com> wrote:
>>
>>
>>
>> On 7/29/2023 6:19 PM, Dmitry Baryshkov wrote:
>>> Use devm_kzalloc to create MDP TOP structure. This allows us to remove
>>> corresponding kfree and drop dpu_hw_mdp_destroy() function.
>>>
>>> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov at linaro.org>
>>> ---
>>> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c | 17 +++++++----------
>>> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.h | 8 +++++---
>>> drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 5 ++---
>>> 3 files changed, 14 insertions(+), 16 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c
>>> index cff48763ce25..481b373d9ccb 100644
>>> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c
>>> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c
>>> @@ -2,6 +2,8 @@
>>> /* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
>>> */
>>>
>>> +#include <drm/drm_managed.h>
>>
>> Hi Dmitry,
>>
>> Is it possible to put this #include in a common header? Since it seems
>> that this is a common change for a lot of patches in this series.
>
> I personally do not like putting unused includes into common headers.
> Each file should contain includes that are used by the particular file
> only. Header should include only the files required to process
> definitions in this header.
Acked. In that case, the rest of this LGTM:
Reviewed-by: Jessica Zhang <quic_jesszhan at quicinc.com>
Thanks,
Jessica Zhang
>
>>
>> Thanks,
>>
>> Jessica Zhang
>>
>>> +
>>> #include "dpu_hwio.h"
>>> #include "dpu_hw_catalog.h"
>>> #include "dpu_hw_top.h"
>>> @@ -268,16 +270,17 @@ static void _setup_mdp_ops(struct dpu_hw_mdp_ops *ops,
>>> ops->intf_audio_select = dpu_hw_intf_audio_select;
>>> }
>>>
>>> -struct dpu_hw_mdp *dpu_hw_mdptop_init(const struct dpu_mdp_cfg *cfg,
>>> - void __iomem *addr,
>>> - const struct dpu_mdss_cfg *m)
>>> +struct dpu_hw_mdp *dpu_hw_mdptop_init(struct drm_device *dev,
>>> + const struct dpu_mdp_cfg *cfg,
>>> + void __iomem *addr,
>>> + const struct dpu_mdss_cfg *m)
>>> {
>>> struct dpu_hw_mdp *mdp;
>>>
>>> if (!addr)
>>> return ERR_PTR(-EINVAL);
>>>
>>> - mdp = kzalloc(sizeof(*mdp), GFP_KERNEL);
>>> + mdp = drmm_kzalloc(dev, sizeof(*mdp), GFP_KERNEL);
>>> if (!mdp)
>>> return ERR_PTR(-ENOMEM);
>>>
>>> @@ -292,9 +295,3 @@ struct dpu_hw_mdp *dpu_hw_mdptop_init(const struct dpu_mdp_cfg *cfg,
>>>
>>> return mdp;
>>> }
>>> -
>>> -void dpu_hw_mdp_destroy(struct dpu_hw_mdp *mdp)
>>> -{
>>> - kfree(mdp);
>>> -}
>>> -
>>> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.h
>>> index 8b1463d2b2f0..6f3dc98087df 100644
>>> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.h
>>> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.h
>>> @@ -145,13 +145,15 @@ struct dpu_hw_mdp {
>>>
>>> /**
>>> * dpu_hw_mdptop_init - initializes the top driver for the passed config
>>> + * @dev: Corresponding device for devres management
>>> * @cfg: MDP TOP configuration from catalog
>>> * @addr: Mapped register io address of MDP
>>> * @m: Pointer to mdss catalog data
>>> */
>>> -struct dpu_hw_mdp *dpu_hw_mdptop_init(const struct dpu_mdp_cfg *cfg,
>>> - void __iomem *addr,
>>> - const struct dpu_mdss_cfg *m);
>>> +struct dpu_hw_mdp *dpu_hw_mdptop_init(struct drm_device *dev,
>>> + const struct dpu_mdp_cfg *cfg,
>>> + void __iomem *addr,
>>> + const struct dpu_mdss_cfg *m);
>>>
>>> void dpu_hw_mdp_destroy(struct dpu_hw_mdp *mdp);
>>>
>>> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
>>> index 6e0643ea4868..d4f4cb402663 100644
>>> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
>>> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
>>> @@ -820,8 +820,6 @@ static void _dpu_kms_hw_destroy(struct dpu_kms *dpu_kms)
>>>
>>> dpu_kms->catalog = NULL;
>>>
>>> - if (dpu_kms->hw_mdp)
>>> - dpu_hw_mdp_destroy(dpu_kms->hw_mdp);
>>> dpu_kms->hw_mdp = NULL;
>>> }
>>>
>>> @@ -1091,7 +1089,8 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
>>>
>>> dpu_kms->rm_init = true;
>>>
>>> - dpu_kms->hw_mdp = dpu_hw_mdptop_init(dpu_kms->catalog->mdp,
>>> + dpu_kms->hw_mdp = dpu_hw_mdptop_init(dev,
>>> + dpu_kms->catalog->mdp,
>>> dpu_kms->mmio,
>>> dpu_kms->catalog);
>>> if (IS_ERR(dpu_kms->hw_mdp)) {
>>> --
>>> 2.39.2
>>>
>
>
>
> --
> With best wishes
> Dmitry
More information about the dri-devel
mailing list