Re: [PATCH 06/13] drm/sun4i: tcon: Drop TCON TOP device reference
Chen-Yu Tsai <[email protected]> Tue, 4 Aug 2026 00:49:52 +0800
| Newsgroups | dev.linux.lists.linux-sunxi,org.freedesktop.lists.dri-devel,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <CAGb2v65cakBH2F9UzFez7oaSR+FdaEE9jd8=EVwqYppEv+vT_A@mail.gmail.com> |
On Tue, Aug 4, 2026 at 12:11=E2=80=AFAM Jernej Skrabec <jernej.skrabec@gmai=
l.com> wrote:
>
> of_find_device_by_node() takes a device reference. Drop it after mux
> configuration succeeds.
>
> Fixes: 0305189afb32 ("drm/sun4i: tcon: Add support for R40 TCON")
> Signed-off-by: Jernej Skrabec <[email protected]>
Acked-by: Chen-Yu Tsai <[email protected]>
Though I'd probably rewrite it with
struct platform_device *pdev __free(platform_device_put) =3D
of_find_device_by_node();
and then all paths can just return instead of needing the goto.
> ---
> drivers/gpu/drm/sun4i/sun4i_tcon.c | 19 +++++++++----------
> 1 file changed, 9 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/gpu/drm/sun4i/sun4i_tcon.c b/drivers/gpu/drm/sun4i/s=
un4i_tcon.c
> index ea7c90fef316..de2d66623f7a 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_tcon.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_tcon.c
> @@ -1409,7 +1409,7 @@ static int sun8i_r40_tcon_tv_set_mux(struct sun4i_t=
con *tcon,
> {
> struct device_node *port, *remote;
> struct platform_device *pdev;
> - int id, ret;
> + int id, ret =3D 0;
>
> /* find TCON TOP platform device and TCON id */
>
> @@ -1432,21 +1432,20 @@ static int sun8i_r40_tcon_tv_set_mux(struct sun4i=
_tcon *tcon,
> if (IS_ENABLED(CONFIG_DRM_SUN8I_TCON_TOP) &&
> encoder->encoder_type =3D=3D DRM_MODE_ENCODER_TMDS) {
> ret =3D sun8i_tcon_top_set_hdmi_src(&pdev->dev, id);
> - if (ret) {
> - put_device(&pdev->dev);
> - return ret;
> - }
> + if (ret)
> + goto out_put_device;
> }
>
> if (IS_ENABLED(CONFIG_DRM_SUN8I_TCON_TOP)) {
> ret =3D sun8i_tcon_top_de_config(&pdev->dev, tcon->id, id=
);
> - if (ret) {
> - put_device(&pdev->dev);
> - return ret;
> - }
> + if (ret)
> + goto out_put_device;
> }
>
> - return 0;
> +out_put_device:
> + put_device(&pdev->dev);
> +
> + return ret;
> }
>
> static const struct sun4i_tcon_quirks sun4i_a10_quirks =3D {
> --
> 2.43.0
>
>