Re: [PATCH] drm/tilcdc: request and mapp iomem with devres

2023-12-28 Thread jyri . sarha
December 22, 2023 at 1:52 PM, "Philipp Stanner" mailto:pstan...@redhat.com?to=%22Philipp%20Stanner%22%20%3Cpstanner%40redhat.com%3E
 > wrote:

> 
> tilcdc currently just ioremaps its iomem, without doing the (a bit more
> robust) request on the memory first. The devm_ functions provide a handy
> way to both request and ioremap the memory with automatic cleanup.
> 
> Replace the manual ioremap with the devm_ version.
> 
> Suggested-by: Thomas Zimmermann 
> Signed-off-by: Philipp Stanner 

Reviewed-by: Jyri Sarha 
Tested-by: Jyri Sarha 

I'll apply this shortly to drm-misc-next.

Thanks,
Jyri

> ---
> drivers/gpu/drm/tilcdc/tilcdc_drv.c | 19 ---
> 1 file changed, 4 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c 
> b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> index 8ebd7134ee21..2ad3f44a6e2d 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> @@ -182,9 +182,6 @@ static void tilcdc_fini(struct drm_device *dev)
>  if (priv->clk)
>  clk_put(priv->clk);
> 
> - if (priv->mmio)
> - iounmap(priv->mmio);
> -
>  if (priv->wq)
>  destroy_workqueue(priv->wq);
> 
> @@ -201,7 +198,6 @@ static int tilcdc_init(const struct drm_driver *ddrv, 
> struct device *dev)
>  struct platform_device *pdev = to_platform_device(dev);
>  struct device_node *node = dev->of_node;
>  struct tilcdc_drm_private *priv;
> - struct resource *res;
>  u32 bpp = 0;
>  int ret;
> 
> @@ -226,17 +222,10 @@ static int tilcdc_init(const struct drm_driver *ddrv, 
> struct device *dev)
>  goto init_failed;
>  }
> 
> - res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> - if (!res) {
> - dev_err(dev, "failed to get memory resource\n");
> - ret = -EINVAL;
> - goto init_failed;
> - }
> -
> - priv->mmio = ioremap(res->start, resource_size(res));
> - if (!priv->mmio) {
> - dev_err(dev, "failed to ioremap\n");
> - ret = -ENOMEM;
> + priv->mmio = devm_platform_ioremap_resource(pdev, 0);
> + if (IS_ERR(priv->mmio)) {
> + dev_err(dev, "failed to request / ioremap\n");
> + ret = PTR_ERR(priv->mmio);
>  goto init_failed;
>  }
> 
> -- 
> 2.43.0
>


[PATCH] drm/tilcdc: request and mapp iomem with devres

2023-12-22 Thread Philipp Stanner
tilcdc currently just ioremaps its iomem, without doing the (a bit more
robust) request on the memory first. The devm_ functions provide a handy
way to both request and ioremap the memory with automatic cleanup.

Replace the manual ioremap with the devm_ version.

Suggested-by: Thomas Zimmermann 
Signed-off-by: Philipp Stanner 
---
 drivers/gpu/drm/tilcdc/tilcdc_drv.c | 19 ---
 1 file changed, 4 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c 
b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
index 8ebd7134ee21..2ad3f44a6e2d 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
@@ -182,9 +182,6 @@ static void tilcdc_fini(struct drm_device *dev)
if (priv->clk)
clk_put(priv->clk);
 
-   if (priv->mmio)
-   iounmap(priv->mmio);
-
if (priv->wq)
destroy_workqueue(priv->wq);
 
@@ -201,7 +198,6 @@ static int tilcdc_init(const struct drm_driver *ddrv, 
struct device *dev)
struct platform_device *pdev = to_platform_device(dev);
struct device_node *node = dev->of_node;
struct tilcdc_drm_private *priv;
-   struct resource *res;
u32 bpp = 0;
int ret;
 
@@ -226,17 +222,10 @@ static int tilcdc_init(const struct drm_driver *ddrv, 
struct device *dev)
goto init_failed;
}
 
-   res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-   if (!res) {
-   dev_err(dev, "failed to get memory resource\n");
-   ret = -EINVAL;
-   goto init_failed;
-   }
-
-   priv->mmio = ioremap(res->start, resource_size(res));
-   if (!priv->mmio) {
-   dev_err(dev, "failed to ioremap\n");
-   ret = -ENOMEM;
+   priv->mmio = devm_platform_ioremap_resource(pdev, 0);
+   if (IS_ERR(priv->mmio)) {
+   dev_err(dev, "failed to request / ioremap\n");
+   ret = PTR_ERR(priv->mmio);
goto init_failed;
}
 
-- 
2.43.0