diff mbox series

drm/mxsfb: improve clk handling for axi clk

Message ID 20200720153254.18071-1-u.kleine-koenig@pengutronix.de (mailing list archive)
State Accepted, archived
Commit 6d6defd42185
Headers show
Series drm/mxsfb: improve clk handling for axi clk | expand

Commit Message

Uwe Kleine-König July 20, 2020, 3:32 p.m. UTC
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>
---
 drivers/gpu/drm/mxsfb/mxsfb_drv.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

Comments

Javier Martinez Canillas Jan. 10, 2023, 9:26 a.m. UTC | #1
Hello Uwe,

On 7/20/20 17:32, Uwe Kleine-König wrote:
> 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>

Patch looks good to me.

Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Javier Martinez Canillas Jan. 10, 2023, 10:06 a.m. UTC | #2
On 1/10/23 10:26, Javier Martinez Canillas wrote:
> Hello Uwe,
> 
> On 7/20/20 17:32, Uwe Kleine-König wrote:
>> 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>
> 
> Patch looks good to me.
> 
> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
>

I've pushed this to drm-misc (dri-misc-next) now. Thanks!
Marek Vasut Jan. 10, 2023, 10:33 a.m. UTC | #3
On 1/10/23 11:06, Javier Martinez Canillas wrote:
> On 1/10/23 10:26, Javier Martinez Canillas wrote:
>> Hello Uwe,
>>
>> On 7/20/20 17:32, Uwe Kleine-König wrote:
>>> 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>
>>
>> Patch looks good to me.
>>
>> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
>>
> 
> I've pushed this to drm-misc (dri-misc-next) now. Thanks!

Thanks, I admit, I missed the patch, sorry.

It does indeed look correct.

Reviewed-by: Marek Vasut <marex@denx.de>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
index fb972dd4f642..6e185ba74b4b 100644
--- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
@@ -77,14 +77,12 @@  drm_pipe_to_mxsfb_drm_private(struct drm_simple_display_pipe *pipe)
 
 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 const struct drm_mode_config_funcs mxsfb_mode_config_funcs = {
@@ -214,9 +212,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))