[PATCH] drm/rockchip: Cleanup dangling devm pointers

Daniel Kurtz djkurtz at chromium.org
Wed Sep 21 01:55:56 PDT 2016


On Wed, Sep 21, 2016 at 3:36 PM, Sean Paul <seanpaul at chromium.org> wrote:
> On Mon, Sep 19, 2016 at 7:14 AM, Daniel Kurtz <djkurtz at chromium.org> wrote:
>> Hi Sean,
>>
>> On Sat, Sep 17, 2016 at 2:22 AM, Sean Paul <seanpaul at chromium.org> wrote:
>>>
>>> Instead of assigning device managed resources to local variables,
>>> keep track of them in the vop struct.
>>
>> Why this patch?
>> Is it fixing an issue?
>> Or, is it preparing for some future use of ahb_rst outside of vop_initial?
>>
>
> Nah, this is just me being pedantic.
>
>> I thought that one of the nice features of using devm is you do not
>> need to carry around pointers to devm allocated resources in the
>> driver local device struct.
>>
>
> True, but it feels a bit weird to allocate something on driver load
> and intentionally abandon it for the lifetime of the driver. I'd feel
> better either keeping it around, or perhaps it should be put once
> we're done using it in vop_initial.

Yeah... if we don't ever use it again, I agree - no reason to devm it,
just use reset_control_get / _put here in vop_initial.

>
> Sean
>
>
>> -Dan
>>
>>>
>>> Signed-off-by: Sean Paul <seanpaul at chromium.org>
>>> ---
>>>  drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 12 ++++++------
>>>  1 file changed, 6 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
>>> index 131ae0f..bed782e 100644
>>> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
>>> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
>>> @@ -142,6 +142,7 @@ struct vop {
>>>
>>>         /* vop dclk reset */
>>>         struct reset_control *dclk_rst;
>>> +       struct reset_control *ahb_rst;
>>>
>>>         struct vop_win win[];
>>>  };
>>> @@ -1333,7 +1334,6 @@ static int vop_initial(struct vop *vop)
>>>  {
>>>         const struct vop_data *vop_data = vop->data;
>>>         const struct vop_reg_data *init_table = vop_data->init_table;
>>> -       struct reset_control *ahb_rst;
>>>         int i, ret;
>>>
>>>         vop->hclk = devm_clk_get(vop->dev, "hclk_vop");
>>> @@ -1374,15 +1374,15 @@ static int vop_initial(struct vop *vop)
>>>         /*
>>>          * do hclk_reset, reset all vop registers.
>>>          */
>>> -       ahb_rst = devm_reset_control_get(vop->dev, "ahb");
>>> -       if (IS_ERR(ahb_rst)) {
>>> +       vop->ahb_rst = devm_reset_control_get(vop->dev, "ahb");
>>> +       if (IS_ERR(vop->ahb_rst)) {
>>>                 dev_err(vop->dev, "failed to get ahb reset\n");
>>> -               ret = PTR_ERR(ahb_rst);
>>> +               ret = PTR_ERR(vop->ahb_rst);
>>>                 goto err_disable_aclk;
>>>         }
>>> -       reset_control_assert(ahb_rst);
>>> +       reset_control_assert(vop->ahb_rst);
>>>         usleep_range(10, 20);
>>> -       reset_control_deassert(ahb_rst);
>>> +       reset_control_deassert(vop->ahb_rst);
>>>
>>>         memcpy(vop->regsbak, vop->regs, vop->len);
>>>
>>> --
>>> 2.8.0.rc3.226.g39d4020
>>>
>>> _______________________________________________
>>> dri-devel mailing list
>>> dri-devel at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel



More information about the Linux-rockchip mailing list