All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sam Ravnborg <sam@ravnborg.org>
To: Claudiu.Beznea@microchip.com
Cc: lee.jones@linaro.org, robh+dt@kernel.org, mark.rutland@arm.com,
	Nicolas.Ferre@microchip.com, alexandre.belloni@bootlin.com,
	Ludovic.Desroches@microchip.com, bbrezillon@kernel.org,
	airlied@linux.ie, daniel@ffwll.ch, thierry.reding@gmail.com,
	devicetree@vger.kernel.org, linux-pwm@vger.kernel.org,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	Sandeep.Sheriker@microchip.com,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 6/7] drm: atmel-hlcdc: enable sys_clk during initalization.
Date: Thu, 28 Feb 2019 22:55:19 +0100	[thread overview]
Message-ID: <20190228215519.GE30188@ravnborg.org> (raw)
In-Reply-To: <1551284609-14594-7-git-send-email-claudiu.beznea@microchip.com>

Hi Claudiu

On Wed, Feb 27, 2019 at 04:24:40PM +0000, Claudiu.Beznea@microchip.com wrote:
> From: Sandeep Sheriker Mallikarjun <sandeepsheriker.mallikarjun@microchip.com>
> 
> For SAM9X60 SoC, sys_clk is through lcd_gclk clock source and this
> needs to be enabled before enabling lcd_clk.

We have "ownership" of the clocks in the mfd device.
So it would make more sense to let the mfd device handle
the base clocks.
In other words - what about pushing enable of perigh_clk and sys_clk to
the mfd driver.

This may have the nice side-effect that we avoid
that both the drm driver and the pwm driver enable/disable the periph_clk
as it is today.

Another comment - fixed_clksrc is used to determine if sys_clk is enabled.
But that flag is about the clksource selection, and it is just a coincidence
that the same flag can be used here.
Why we cannot always enable sys_clk? Do we need to do this only
for sam9x60?
IF yes, then add a new falg. If no, then skip the flag.

	Sam


> 
> Signed-off-by: Sandeep Sheriker Mallikarjun <sandeepsheriker.mallikarjun@microchip.com>
> [claudiu.beznea@microchip.com: add fixed_clksrc checks]
> Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
> ---
>  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 19 ++++++++++++++++++-
>  1 file changed, 18 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> index 0be13eceedba..8bf51f853721 100644
> --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> @@ -625,10 +625,18 @@ static int atmel_hlcdc_dc_load(struct drm_device *dev)
>  	dc->hlcdc = dev_get_drvdata(dev->dev->parent);
>  	dev->dev_private = dc;
>  
> +	if (dc->desc->fixed_clksrc) {
> +		ret = clk_prepare_enable(dc->hlcdc->sys_clk);
> +		if (ret) {
> +			dev_err(dev->dev, "failed to enable sys_clk\n");
> +			goto err_destroy_wq;
> +		}
> +	}
> +
>  	ret = clk_prepare_enable(dc->hlcdc->periph_clk);
>  	if (ret) {
>  		dev_err(dev->dev, "failed to enable periph_clk\n");
> -		goto err_destroy_wq;
> +		goto err_sys_clk_disable;
>  	}
>  
>  	pm_runtime_enable(dev->dev);
> @@ -664,6 +672,9 @@ static int atmel_hlcdc_dc_load(struct drm_device *dev)
>  err_periph_clk_disable:
>  	pm_runtime_disable(dev->dev);
>  	clk_disable_unprepare(dc->hlcdc->periph_clk);
> +err_sys_clk_disable:
> +	if (dc->desc->fixed_clksrc)
> +		clk_disable_unprepare(dc->hlcdc->sys_clk);
>  
>  err_destroy_wq:
>  	destroy_workqueue(dc->wq);
> @@ -688,6 +699,8 @@ static void atmel_hlcdc_dc_unload(struct drm_device *dev)
>  
>  	pm_runtime_disable(dev->dev);
>  	clk_disable_unprepare(dc->hlcdc->periph_clk);
> +	if (dc->desc->fixed_clksrc)
> +		clk_disable_unprepare(dc->hlcdc->sys_clk);
>  	destroy_workqueue(dc->wq);
>  }
>  
> @@ -805,6 +818,8 @@ static int atmel_hlcdc_dc_drm_suspend(struct device *dev)
>  	regmap_read(regmap, ATMEL_HLCDC_IMR, &dc->suspend.imr);
>  	regmap_write(regmap, ATMEL_HLCDC_IDR, dc->suspend.imr);
>  	clk_disable_unprepare(dc->hlcdc->periph_clk);
> +	if (dc->desc->fixed_clksrc)
> +		clk_disable_unprepare(dc->hlcdc->sys_clk);
>  
>  	return 0;
>  }
> @@ -814,6 +829,8 @@ static int atmel_hlcdc_dc_drm_resume(struct device *dev)
>  	struct drm_device *drm_dev = dev_get_drvdata(dev);
>  	struct atmel_hlcdc_dc *dc = drm_dev->dev_private;
>  
> +	if (dc->desc->fixed_clksrc)
> +		clk_prepare_enable(dc->hlcdc->sys_clk);
>  	clk_prepare_enable(dc->hlcdc->periph_clk);
>  	regmap_write(dc->hlcdc->regmap, ATMEL_HLCDC_IER, dc->suspend.imr);
>  
> -- 
> 2.7.4
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

WARNING: multiple messages have this Message-ID (diff)
From: Sam Ravnborg <sam@ravnborg.org>
To: Claudiu.Beznea@microchip.com
Cc: mark.rutland@arm.com, devicetree@vger.kernel.org,
	alexandre.belloni@bootlin.com, bbrezillon@kernel.org,
	airlied@linux.ie, linux-pwm@vger.kernel.org,
	linux-kernel@vger.kernel.org, Ludovic.Desroches@microchip.com,
	robh+dt@kernel.org, thierry.reding@gmail.com,
	dri-devel@lists.freedesktop.org, daniel@ffwll.ch,
	Sandeep.Sheriker@microchip.com, lee.jones@linaro.org,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 6/7] drm: atmel-hlcdc: enable sys_clk during initalization.
Date: Thu, 28 Feb 2019 22:55:19 +0100	[thread overview]
Message-ID: <20190228215519.GE30188@ravnborg.org> (raw)
In-Reply-To: <1551284609-14594-7-git-send-email-claudiu.beznea@microchip.com>

Hi Claudiu

On Wed, Feb 27, 2019 at 04:24:40PM +0000, Claudiu.Beznea@microchip.com wrote:
> From: Sandeep Sheriker Mallikarjun <sandeepsheriker.mallikarjun@microchip.com>
> 
> For SAM9X60 SoC, sys_clk is through lcd_gclk clock source and this
> needs to be enabled before enabling lcd_clk.

We have "ownership" of the clocks in the mfd device.
So it would make more sense to let the mfd device handle
the base clocks.
In other words - what about pushing enable of perigh_clk and sys_clk to
the mfd driver.

This may have the nice side-effect that we avoid
that both the drm driver and the pwm driver enable/disable the periph_clk
as it is today.

Another comment - fixed_clksrc is used to determine if sys_clk is enabled.
But that flag is about the clksource selection, and it is just a coincidence
that the same flag can be used here.
Why we cannot always enable sys_clk? Do we need to do this only
for sam9x60?
IF yes, then add a new falg. If no, then skip the flag.

	Sam


> 
> Signed-off-by: Sandeep Sheriker Mallikarjun <sandeepsheriker.mallikarjun@microchip.com>
> [claudiu.beznea@microchip.com: add fixed_clksrc checks]
> Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
> ---
>  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 19 ++++++++++++++++++-
>  1 file changed, 18 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> index 0be13eceedba..8bf51f853721 100644
> --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> @@ -625,10 +625,18 @@ static int atmel_hlcdc_dc_load(struct drm_device *dev)
>  	dc->hlcdc = dev_get_drvdata(dev->dev->parent);
>  	dev->dev_private = dc;
>  
> +	if (dc->desc->fixed_clksrc) {
> +		ret = clk_prepare_enable(dc->hlcdc->sys_clk);
> +		if (ret) {
> +			dev_err(dev->dev, "failed to enable sys_clk\n");
> +			goto err_destroy_wq;
> +		}
> +	}
> +
>  	ret = clk_prepare_enable(dc->hlcdc->periph_clk);
>  	if (ret) {
>  		dev_err(dev->dev, "failed to enable periph_clk\n");
> -		goto err_destroy_wq;
> +		goto err_sys_clk_disable;
>  	}
>  
>  	pm_runtime_enable(dev->dev);
> @@ -664,6 +672,9 @@ static int atmel_hlcdc_dc_load(struct drm_device *dev)
>  err_periph_clk_disable:
>  	pm_runtime_disable(dev->dev);
>  	clk_disable_unprepare(dc->hlcdc->periph_clk);
> +err_sys_clk_disable:
> +	if (dc->desc->fixed_clksrc)
> +		clk_disable_unprepare(dc->hlcdc->sys_clk);
>  
>  err_destroy_wq:
>  	destroy_workqueue(dc->wq);
> @@ -688,6 +699,8 @@ static void atmel_hlcdc_dc_unload(struct drm_device *dev)
>  
>  	pm_runtime_disable(dev->dev);
>  	clk_disable_unprepare(dc->hlcdc->periph_clk);
> +	if (dc->desc->fixed_clksrc)
> +		clk_disable_unprepare(dc->hlcdc->sys_clk);
>  	destroy_workqueue(dc->wq);
>  }
>  
> @@ -805,6 +818,8 @@ static int atmel_hlcdc_dc_drm_suspend(struct device *dev)
>  	regmap_read(regmap, ATMEL_HLCDC_IMR, &dc->suspend.imr);
>  	regmap_write(regmap, ATMEL_HLCDC_IDR, dc->suspend.imr);
>  	clk_disable_unprepare(dc->hlcdc->periph_clk);
> +	if (dc->desc->fixed_clksrc)
> +		clk_disable_unprepare(dc->hlcdc->sys_clk);
>  
>  	return 0;
>  }
> @@ -814,6 +829,8 @@ static int atmel_hlcdc_dc_drm_resume(struct device *dev)
>  	struct drm_device *drm_dev = dev_get_drvdata(dev);
>  	struct atmel_hlcdc_dc *dc = drm_dev->dev_private;
>  
> +	if (dc->desc->fixed_clksrc)
> +		clk_prepare_enable(dc->hlcdc->sys_clk);
>  	clk_prepare_enable(dc->hlcdc->periph_clk);
>  	regmap_write(dc->hlcdc->regmap, ATMEL_HLCDC_IER, dc->suspend.imr);
>  
> -- 
> 2.7.4
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2019-02-28 21:55 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-27 16:24 [PATCH 0/7] add LCD support for SAM9X60 Claudiu.Beznea
2019-02-27 16:24 ` Claudiu.Beznea
2019-02-27 16:24 ` Claudiu.Beznea
2019-02-27 16:24 ` [PATCH 1/7] drm: atmel-hlcdc: add config option for clock selection Claudiu.Beznea
2019-02-27 16:24   ` Claudiu.Beznea
2019-02-27 16:24   ` Claudiu.Beznea
2019-02-28 21:25   ` Sam Ravnborg
2019-02-28 21:25     ` Sam Ravnborg
2019-03-01 10:07     ` Claudiu.Beznea
2019-03-01 10:07       ` Claudiu.Beznea
2019-03-01 10:07       ` Claudiu.Beznea
2019-02-28 21:38   ` Sam Ravnborg
2019-02-28 21:38     ` Sam Ravnborg
2019-03-01 10:06     ` Claudiu.Beznea
2019-03-01 10:06       ` Claudiu.Beznea
2019-03-01 10:06       ` Claudiu.Beznea
2019-02-27 16:24 ` [PATCH 2/7] drm: atmel-hlcdc: avoid initializing cfg with zero Claudiu.Beznea
2019-02-27 16:24   ` Claudiu.Beznea
2019-02-27 16:24   ` Claudiu.Beznea
2019-02-28 21:41   ` Sam Ravnborg
2019-02-28 21:41     ` Sam Ravnborg
2019-02-27 16:24 ` [PATCH 3/7] dt-bindings: mfd: add bindings for SAM9X60 HLCD controller Claudiu.Beznea
2019-02-27 16:24   ` Claudiu.Beznea
2019-02-27 16:24   ` Claudiu.Beznea
2019-02-27 16:24 ` [PATCH 4/7] mfd: atmel-hlcdc: add compatible " Claudiu.Beznea
2019-02-27 16:24   ` Claudiu.Beznea
2019-02-27 16:24   ` Claudiu.Beznea
2019-02-27 16:24 ` [PATCH 5/7] pwm: atmel-hlcdc: add compatible for SAM9X60 HLCDC's PWM Claudiu.Beznea
2019-02-27 16:24   ` Claudiu.Beznea
2019-02-27 16:24   ` Claudiu.Beznea
2019-03-04 11:05   ` Thierry Reding
2019-03-04 11:05     ` Thierry Reding
2019-03-04 11:05     ` Thierry Reding
2019-02-27 16:24 ` [PATCH 6/7] drm: atmel-hlcdc: enable sys_clk during initalization Claudiu.Beznea
2019-02-27 16:24   ` Claudiu.Beznea
2019-02-27 16:24   ` Claudiu.Beznea
2019-02-28 21:55   ` Sam Ravnborg [this message]
2019-02-28 21:55     ` Sam Ravnborg
2019-03-01 10:07     ` Claudiu.Beznea
2019-03-01 10:07       ` Claudiu.Beznea
2019-03-01 10:07       ` Claudiu.Beznea
2019-02-27 16:24 ` [PATCH 7/7] drm: atmel-hlcdc: add sam9x60 LCD controller Claudiu.Beznea
2019-02-27 16:24   ` Claudiu.Beznea
2019-02-27 16:24   ` Claudiu.Beznea
2019-02-28 18:21 ` [PATCH 0/7] add LCD support for SAM9X60 Sam Ravnborg
2019-02-28 18:21   ` Sam Ravnborg
2019-02-28 18:21   ` Sam Ravnborg
2019-02-28 20:52   ` Alexandre Belloni
2019-02-28 20:52     ` Alexandre Belloni
2019-02-28 21:13     ` Sam Ravnborg
2019-02-28 21:13       ` Sam Ravnborg
2019-02-28 21:13       ` Sam Ravnborg
2019-03-01 10:09       ` Claudiu.Beznea
2019-03-01 10:09         ` Claudiu.Beznea
2019-03-01 10:09         ` Claudiu.Beznea

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190228215519.GE30188@ravnborg.org \
    --to=sam@ravnborg.org \
    --cc=Claudiu.Beznea@microchip.com \
    --cc=Ludovic.Desroches@microchip.com \
    --cc=Nicolas.Ferre@microchip.com \
    --cc=Sandeep.Sheriker@microchip.com \
    --cc=airlied@linux.ie \
    --cc=alexandre.belloni@bootlin.com \
    --cc=bbrezillon@kernel.org \
    --cc=daniel@ffwll.ch \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=lee.jones@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=thierry.reding@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.