drm/mxsfb: improve clk handling for axi clk
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Tue, 10 Jan 2023 09:38:20 +0000 (10:38 +0100)
committerJavier Martinez Canillas <javierm@redhat.com>
Tue, 10 Jan 2023 10:04:56 +0000 (11:04 +0100)
Ignoring errors from devm_clk_get() is wrong. To handle not all platforms
having an axi clk use devm_clk_get_optional() instead and do proper error
handling.

Also the clk API handles NULL as a dummy clk (which is also returned by
devm_clk_get_optional() if there is no clk) so there is no need to check
for NULL before calling clk_prepare_enable() or its counter part.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200720153254.18071-1-u.kleine-koenig@pengutronix.de
drivers/gpu/drm/mxsfb/mxsfb_drv.c

index 810edea0a31e5b157e7c743a4cab92974bd5ced9..b3ab86ad1b36d1cc93c8890925454d21c69e15a7 100644 (file)
@@ -78,14 +78,12 @@ static const struct mxsfb_devdata mxsfb_devdata[] = {
 
 void mxsfb_enable_axi_clk(struct mxsfb_drm_private *mxsfb)
 {
-       if (mxsfb->clk_axi)
-               clk_prepare_enable(mxsfb->clk_axi);
+       clk_prepare_enable(mxsfb->clk_axi);
 }
 
 void mxsfb_disable_axi_clk(struct mxsfb_drm_private *mxsfb)
 {
-       if (mxsfb->clk_axi)
-               clk_disable_unprepare(mxsfb->clk_axi);
+       clk_disable_unprepare(mxsfb->clk_axi);
 }
 
 static struct drm_framebuffer *
@@ -235,9 +233,9 @@ static int mxsfb_load(struct drm_device *drm,
        if (IS_ERR(mxsfb->clk))
                return PTR_ERR(mxsfb->clk);
 
-       mxsfb->clk_axi = devm_clk_get(drm->dev, "axi");
+       mxsfb->clk_axi = devm_clk_get_optional(drm->dev, "axi");
        if (IS_ERR(mxsfb->clk_axi))
-               mxsfb->clk_axi = NULL;
+               return PTR_ERR(mxsfb->clk_axi);
 
        mxsfb->clk_disp_axi = devm_clk_get(drm->dev, "disp_axi");
        if (IS_ERR(mxsfb->clk_disp_axi))