[PATCH 1/4] drm/exynos: Prepare/Unprepare HDMI subsystem clocks

Inki Dae inki.dae at samsung.com
Thu Jun 13 21:46:08 EST 2013


Applied.

Thanks,
Inki Dae

> -----Original Message-----
> From: Rahul Sharma [mailto:rahul.sharma at samsung.com]
> Sent: Tuesday, June 11, 2013 3:54 PM
> To: linux-samsung-soc at vger.kernel.org;
devicetree-discuss at lists.ozlabs.org;
> dri-devel at lists.freedesktop.org
> Cc: kgene.kim at samsung.com; sw0312.kim at samsung.com; inki.dae at samsung.com;
> seanpaul at chromium.org; joshi at samsung.com; r.sh.open at gmail.com; Rahul
> Sharma
> Subject: [PATCH 1/4] drm/exynos: Prepare/Unprepare HDMI subsystem clocks
> 
> From: Sean Paul <seanpaul at chromium.org>
> 
> Change the clk_enable/clk_disable calls in mixer and hdmi drivers into
> clk_prepare_enable/clk_disable_unprepare, respectively.
> 
> Signed-off-by: Sean Paul <seanpaul at chromium.org>
> Signed-off-by: Rahul Sharma <rahul.sharma at samsung.com>
> ---
>  drivers/gpu/drm/exynos/exynos_hdmi.c  |   24 ++++++++++++------------
>  drivers/gpu/drm/exynos/exynos_mixer.c |   12 ++++++------
>  2 files changed, 18 insertions(+), 18 deletions(-)
> 
> diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c
> b/drivers/gpu/drm/exynos/exynos_hdmi.c
> index 04255fe..5a98194 100644
> --- a/drivers/gpu/drm/exynos/exynos_hdmi.c
> +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
> @@ -1117,9 +1117,9 @@ static void hdmi_v13_mode_apply(struct hdmi_context
> *hdata)
>  		hdmi_regs_dump(hdata, "timing apply");
>  	}
> 
> -	clk_disable(hdata->res.sclk_hdmi);
> +	clk_disable_unprepare(hdata->res.sclk_hdmi);
>  	clk_set_parent(hdata->res.sclk_hdmi, hdata->res.sclk_hdmiphy);
> -	clk_enable(hdata->res.sclk_hdmi);
> +	clk_prepare_enable(hdata->res.sclk_hdmi);
> 
>  	/* enable HDMI and timing generator */
>  	hdmi_reg_writemask(hdata, HDMI_CON_0, ~0, HDMI_EN);
> @@ -1284,9 +1284,9 @@ static void hdmi_v14_mode_apply(struct hdmi_context
> *hdata)
>  		hdmi_regs_dump(hdata, "timing apply");
>  	}
> 
> -	clk_disable(hdata->res.sclk_hdmi);
> +	clk_disable_unprepare(hdata->res.sclk_hdmi);
>  	clk_set_parent(hdata->res.sclk_hdmi, hdata->res.sclk_hdmiphy);
> -	clk_enable(hdata->res.sclk_hdmi);
> +	clk_prepare_enable(hdata->res.sclk_hdmi);
> 
>  	/* enable HDMI and timing generator */
>  	hdmi_reg_writemask(hdata, HDMI_CON_0, ~0, HDMI_EN);
> @@ -1310,9 +1310,9 @@ static void hdmiphy_conf_reset(struct hdmi_context
> *hdata)
>  	u8 buffer[2];
>  	u32 reg;
> 
> -	clk_disable(hdata->res.sclk_hdmi);
> +	clk_disable_unprepare(hdata->res.sclk_hdmi);
>  	clk_set_parent(hdata->res.sclk_hdmi, hdata->res.sclk_pixel);
> -	clk_enable(hdata->res.sclk_hdmi);
> +	clk_prepare_enable(hdata->res.sclk_hdmi);
> 
>  	/* operation mode */
>  	buffer[0] = 0x1f;
> @@ -1701,9 +1701,9 @@ static void hdmi_poweron(struct hdmi_context *hdata)
>  	if (regulator_bulk_enable(res->regul_count, res->regul_bulk))
>  		DRM_DEBUG_KMS("failed to enable regulator bulk\n");
> 
> -	clk_enable(res->hdmiphy);
> -	clk_enable(res->hdmi);
> -	clk_enable(res->sclk_hdmi);
> +	clk_prepare_enable(res->hdmiphy);
> +	clk_prepare_enable(res->hdmi);
> +	clk_prepare_enable(res->sclk_hdmi);
> 
>  	hdmiphy_poweron(hdata);
>  }
> @@ -1726,9 +1726,9 @@ static void hdmi_poweroff(struct hdmi_context
*hdata)
>  	hdmiphy_conf_reset(hdata);
>  	hdmiphy_poweroff(hdata);
> 
> -	clk_disable(res->sclk_hdmi);
> -	clk_disable(res->hdmi);
> -	clk_disable(res->hdmiphy);
> +	clk_disable_unprepare(res->sclk_hdmi);
> +	clk_disable_unprepare(res->hdmi);
> +	clk_disable_unprepare(res->hdmiphy);
>  	regulator_bulk_disable(res->regul_count, res->regul_bulk);
> 
>  	mutex_lock(&hdata->hdmi_mutex);
> diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c
> b/drivers/gpu/drm/exynos/exynos_mixer.c
> index b0882b3..978894e 100644
> --- a/drivers/gpu/drm/exynos/exynos_mixer.c
> +++ b/drivers/gpu/drm/exynos/exynos_mixer.c
> @@ -900,10 +900,10 @@ static void mixer_poweron(struct mixer_context *ctx)
>  	ctx->powered = true;
>  	mutex_unlock(&ctx->mixer_mutex);
> 
> -	clk_enable(res->mixer);
> +	clk_prepare_enable(res->mixer);
>  	if (ctx->vp_enabled) {
> -		clk_enable(res->vp);
> -		clk_enable(res->sclk_mixer);
> +		clk_prepare_enable(res->vp);
> +		clk_prepare_enable(res->sclk_mixer);
>  	}
> 
>  	mixer_reg_write(res, MXR_INT_EN, ctx->int_en);
> @@ -927,10 +927,10 @@ static void mixer_poweroff(struct mixer_context
*ctx)
> 
>  	ctx->int_en = mixer_reg_read(res, MXR_INT_EN);
> 
> -	clk_disable(res->mixer);
> +	clk_disable_unprepare(res->mixer);
>  	if (ctx->vp_enabled) {
> -		clk_disable(res->vp);
> -		clk_disable(res->sclk_mixer);
> +		clk_disable_unprepare(res->vp);
> +		clk_disable_unprepare(res->sclk_mixer);
>  	}
> 
>  	mutex_lock(&ctx->mixer_mutex);
> --
> 1.7.10.4



More information about the devicetree-discuss mailing list