Re: [PATCH 08/42] drm: logicvc: Use devm_of_reserved_mem_device_init()

Paul Kocialkowski <[email protected]>
Newsgroups org.kernel.vger.linux-remoteproc,dev.linux.lists.imx,dev.linux.lists.linux-staging,dev.linux.lists.linux-sunxi,org.freedesktop.lists.dri-devel,org.infradead.lists.linux-mediatek,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel,org.kernel.vger.linux-media,org.kernel.vger.linux-mips,org.kernel.vger.linux-mmc,org.kernel.vger.linux-sound,org.kernel.vger.linux-tegra,org.ozlabs.lists.linux-aspeed,org.ozlabs.lists.linuxppc-dev,org.ozlabs.lists.openbmc
Message-ID <ak0I7AbfFITG1nyi@shepard>
Hi Mukesh,

On Sat 04 Jul 26, 01:08, Mukesh Ojha wrote:
> Switch to devm_of_reserved_mem_device_init() so the reserved memory
> region is released automatically on probe failure or device unbind.
> Replace all error paths that jumped to error_reserved_mem: with
> error_early: since the manual cleanup label is no longer needed, and
> remove the explicit of_reserved_mem_device_release() call in the remove
> function.
> 
> Signed-off-by: Mukesh Ojha <[email protected]>

Looks good to me, thanks!

Reviewed-by: Paul Kocialkowski <[email protected]>
Acked-by: Paul Kocialkowski <[email protected]>

All the best,

Paul

> ---
>  drivers/gpu/drm/logicvc/logicvc_drm.c | 21 ++++++++-------------
>  1 file changed, 8 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/gpu/drm/logicvc/logicvc_drm.c b/drivers/gpu/drm/logicvc/logicvc_drm.c
> index bbebf4fc7f51..d6dbe52ff0a9 100644
> --- a/drivers/gpu/drm/logicvc/logicvc_drm.c
> +++ b/drivers/gpu/drm/logicvc/logicvc_drm.c
> @@ -306,7 +306,7 @@ static int logicvc_drm_probe(struct platform_device *pdev)
>  	int irq;
>  	int ret;
>  
> -	ret = of_reserved_mem_device_init(dev);
> +	ret = devm_of_reserved_mem_device_init(dev);
>  	if (ret && ret != -ENODEV) {
>  		dev_err(dev, "Failed to init memory region\n");
>  		goto error_early;
> @@ -327,14 +327,14 @@ static int logicvc_drm_probe(struct platform_device *pdev)
>  		ret = of_address_to_resource(of_node, 0, &res);
>  		if (ret) {
>  			dev_err(dev, "Failed to get resource from address\n");
> -			goto error_reserved_mem;
> +			goto error_early;
>  		}
>  
>  		base = devm_ioremap_resource(dev, &res);
>  		if (IS_ERR(base)) {
>  			dev_err(dev, "Failed to map I/O base\n");
>  			ret = PTR_ERR(base);
> -			goto error_reserved_mem;
> +			goto error_early;
>  		}
>  
>  		logicvc_drm_regmap_config.max_register = resource_size(&res) -
> @@ -345,21 +345,21 @@ static int logicvc_drm_probe(struct platform_device *pdev)
>  		if (IS_ERR(regmap)) {
>  			dev_err(dev, "Failed to create regmap for I/O\n");
>  			ret = PTR_ERR(regmap);
> -			goto error_reserved_mem;
> +			goto error_early;
>  		}
>  	}
>  
>  	irq = platform_get_irq(pdev, 0);
>  	if (irq < 0) {
>  		ret = -ENODEV;
> -		goto error_reserved_mem;
> +		goto error_early;
>  	}
>  
>  	logicvc = devm_drm_dev_alloc(dev, &logicvc_drm_driver,
>  				     struct logicvc_drm, drm_dev);
>  	if (IS_ERR(logicvc)) {
>  		ret = PTR_ERR(logicvc);
> -		goto error_reserved_mem;
> +		goto error_early;
>  	}
>  
>  	platform_set_drvdata(pdev, logicvc);
> @@ -371,7 +371,7 @@ static int logicvc_drm_probe(struct platform_device *pdev)
>  	caps = logicvc_drm_caps_match(logicvc);
>  	if (!caps) {
>  		ret = -EINVAL;
> -		goto error_reserved_mem;
> +		goto error_early;
>  	}
>  
>  	logicvc->caps = caps;
> @@ -382,7 +382,7 @@ static int logicvc_drm_probe(struct platform_device *pdev)
>  	ret = logicvc_clocks_prepare(logicvc);
>  	if (ret) {
>  		drm_err(drm_dev, "Failed to prepare clocks\n");
> -		goto error_reserved_mem;
> +		goto error_early;
>  	}
>  
>  	ret = devm_request_irq(dev, irq, logicvc_drm_irq_handler, 0,
> @@ -450,9 +450,6 @@ static int logicvc_drm_probe(struct platform_device *pdev)
>  error_clocks:
>  	logicvc_clocks_unprepare(logicvc);
>  
> -error_reserved_mem:
> -	of_reserved_mem_device_release(dev);
> -
>  error_early:
>  	return ret;
>  }
> @@ -469,8 +466,6 @@ static void logicvc_drm_remove(struct platform_device *pdev)
>  	logicvc_mode_fini(logicvc);
>  
>  	logicvc_clocks_unprepare(logicvc);
> -
> -	of_reserved_mem_device_release(dev);
>  }
>  
>  static void logicvc_drm_shutdown(struct platform_device *pdev)
> -- 
> 2.53.0
> 

-- 
Paul Kocialkowski,

Independent contractor - sys-base - https://www.sys-base.io/
Free software developer - https://www.paulk.fr/

Expert in multimedia, graphics and embedded hardware support with Linux.
signature.asc (application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEAbcMXZQMtj1fphLChP3B6o/ulQwFAmpNCOwACgkQhP3B6o/u
lQyaPQ//f4pAYoEPe2VkBx5ziaC0VkGALJ8pMaCBZzEG6pnd2z1UBPK8Y2xJLlQP
5bkyAxCQjpN0fwzwtB+kdA0jp2iokJqDThaLYoql9R0Qvj2DyOy7x+SwRqbRzdyJ
npZtxXLCuF9oXL4YlUHBVPkgL9WsGf2cMpqkXAI/iPd0K+9zBfxT48xlRnuslCQF
gwlVwkghlca2EFVG0f4q4HVkGRcFkAM9pYpKZD4B4iS89SwzHmJo44SZWV0CsWfe
ysY5SERP+XL8EbiVlQxCWyqo9Yb//Ikc/EuIWFPMzPW7hp4ZTzjzYaRtVdWEM3Or
GQ8uFNoXZfWHzfBpHk1Ewfdr7JBtXM0vPIh650GS2SCdGaCS0Ud2UUv7QZdSluel
uGrsM82ZQ6ts4V8ct1O/dWG7TwYnc8BaFADG90JdKck+zb3fRnQ07aTNrF/bRDU1
gcnN0yfM/zPIZAc7GA+4Stzok5c+bj2Sb849b5S5g6LNETsScU+WPK5pvEjjWq9E
zsLawR41dclgUWujmQqflY1sbvVA3YsAADIxWAAsT1WDULfQ/c70/2rMIvNATzBN
VxbCWSZtk77xMlu6aje7HIbEQa9PGm52xeqNOqfwv/t5kGZxU1fqyAULXAfSYQ2R
jkjMhoWPkeb15z5Be0yQY0auFkEuIORZboIqn49NxQW0LVu7byA=
=tX4X
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.