Use the devres-managed devm_of_reserved_mem_device_init() instead of the manual of_reserved_mem_device_init()/of_reserved_mem_device_release() pair, letting the device resource manager handle cleanup automatically. Also simplify the IRQ error path since the release before init was a no-op.
Signed-off-by: Mukesh Ojha <[email protected]> --- drivers/gpu/drm/kmb/kmb_drv.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/kmb/kmb_drv.c b/drivers/gpu/drm/kmb/kmb_drv.c index 7c2eb1152fc2..88fe377940f3 100644 --- a/drivers/gpu/drm/kmb/kmb_drv.c +++ b/drivers/gpu/drm/kmb/kmb_drv.c @@ -140,13 +140,12 @@ static int kmb_hw_init(struct drm_device *drm, unsigned long flags) /* Allocate LCD interrupt resources */ irq_lcd = platform_get_irq(pdev, 0); if (irq_lcd < 0) { - ret = irq_lcd; drm_err(&kmb->drm, "irq_lcd not found"); - goto setup_fail; + return irq_lcd; } /* Get the optional framebuffer memory resource */ - ret = of_reserved_mem_device_init(drm->dev); + ret = devm_of_reserved_mem_device_init(drm->dev); if (ret && ret != -ENODEV) return ret; @@ -155,11 +154,6 @@ static int kmb_hw_init(struct drm_device *drm, unsigned long flags) kmb->irq_lcd = irq_lcd; return 0; - - setup_fail: - of_reserved_mem_device_release(drm->dev); - - return ret; } static const struct drm_mode_config_funcs kmb_mode_config_funcs = { @@ -465,8 +459,6 @@ static void kmb_remove(struct platform_device *pdev) pm_runtime_put_sync(drm->dev); pm_runtime_disable(drm->dev); - of_reserved_mem_device_release(drm->dev); - /* Release clks */ kmb_display_clk_disable(kmb); -- 2.53.0
