From: Andrzej Hajda Date: Wed, 19 Oct 2016 11:25:21 +0000 (+0200) Subject: drm/bridge/sii8620: improve on/off sequence X-Git-Tag: accepted/tizen/common/20161219.151653~83 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2eec2a75d4e69deb9041eee18d122fa9087784c2;p=platform%2Fkernel%2Flinux-exynos.git drm/bridge/sii8620: improve on/off sequence The patch puts clock management into on/off functions and adds neccessary delay after regulator enable. Change-Id: I4fc052eb21058e787355a8f2dfeb75b05a5d5341 Signed-off-by: Andrzej Hajda --- diff --git a/drivers/gpu/drm/bridge/sii8620.c b/drivers/gpu/drm/bridge/sii8620.c index f4b3056..9c2303f 100644 --- a/drivers/gpu/drm/bridge/sii8620.c +++ b/drivers/gpu/drm/bridge/sii8620.c @@ -619,12 +619,13 @@ static int sii8620_hw_on(struct sii8620 *ctx) ret = regulator_bulk_enable(ARRAY_SIZE(ctx->supplies), ctx->supplies); if (ret) return ret; - - return 0; + usleep_range(10000, 20000); + return clk_prepare_enable(ctx->clk_xtal); } static int sii8620_hw_off(struct sii8620 *ctx) { + clk_disable_unprepare(ctx->clk_xtal); gpiod_set_value(ctx->gpio_reset, 1); return regulator_bulk_disable(ARRAY_SIZE(ctx->supplies), ctx->supplies); } @@ -1403,7 +1404,6 @@ static void sii8620_cable_in(struct sii8620 *ctx) int ret; sii8620_hw_on(ctx); - clk_prepare_enable(ctx->clk_xtal); sii8620_hw_reset(ctx); msleep(100); @@ -1443,7 +1443,6 @@ static void sii8620_cable_in(struct sii8620 *ctx) static void sii8620_cable_out(struct sii8620 *ctx) { disable_irq(to_i2c_client(ctx->dev)->irq); - clk_disable_unprepare(ctx->clk_xtal); sii8620_hw_off(ctx); }