| From d353ad784f84b18975bc5d256fa79c883fbca75e Mon Sep 17 00:00:00 2001 |
| From: John Stultz <john.stultz@linaro.org> |
| Date: Mon, 16 Jan 2017 16:52:50 -0800 |
| Subject: [PATCH 005/255] drm/bridge: adv7511: Rework adv7511_power_on/off() so |
| they can be reused internally |
| |
| In chasing down issues with EDID probing, I found some |
| duplicated but incomplete logic used to power the chip on and |
| off. |
| |
| This patch refactors the adv7511_power_on/off functions, so |
| they can be used for internal needs. |
| |
| Cc: David Airlie <airlied@linux.ie> |
| Cc: Archit Taneja <architt@codeaurora.org> |
| Cc: Wolfram Sang <wsa+renesas@sang-engineering.com> |
| Cc: Lars-Peter Clausen <lars@metafoo.de> |
| Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> |
| Cc: dri-devel@lists.freedesktop.org |
| Signed-off-by: John Stultz <john.stultz@linaro.org> |
| Signed-off-by: Archit Taneja <architt@codeaurora.org> |
| Link: http://patchwork.freedesktop.org/patch/msgid/1484614372-15342-5-git-send-email-john.stultz@linaro.org |
| (cherry picked from commit 651e4769ba2a9f20c4b8a823ae2727bf7fa9c9f0) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 15 +++++++++++---- |
| 1 file changed, 11 insertions(+), 4 deletions(-) |
| |
| --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c |
| +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c |
| @@ -325,7 +325,7 @@ static void adv7511_set_link_config(stru |
| adv7511->rgb = config->input_colorspace == HDMI_COLORSPACE_RGB; |
| } |
| |
| -static void adv7511_power_on(struct adv7511 *adv7511) |
| +static void __adv7511_power_on(struct adv7511 *adv7511) |
| { |
| adv7511->current_edid_segment = -1; |
| |
| @@ -354,6 +354,11 @@ static void adv7511_power_on(struct adv7 |
| regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER2, |
| ADV7511_REG_POWER2_HPD_SRC_MASK, |
| ADV7511_REG_POWER2_HPD_SRC_NONE); |
| +} |
| + |
| +static void adv7511_power_on(struct adv7511 *adv7511) |
| +{ |
| + __adv7511_power_on(adv7511); |
| |
| /* |
| * Most of the registers are reset during power down or when HPD is low. |
| @@ -362,21 +367,23 @@ static void adv7511_power_on(struct adv7 |
| |
| if (adv7511->type == ADV7533) |
| adv7533_dsi_power_on(adv7511); |
| - |
| adv7511->powered = true; |
| } |
| |
| -static void adv7511_power_off(struct adv7511 *adv7511) |
| +static void __adv7511_power_off(struct adv7511 *adv7511) |
| { |
| /* TODO: setup additional power down modes */ |
| regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER, |
| ADV7511_POWER_POWER_DOWN, |
| ADV7511_POWER_POWER_DOWN); |
| regcache_mark_dirty(adv7511->regmap); |
| +} |
| |
| +static void adv7511_power_off(struct adv7511 *adv7511) |
| +{ |
| + __adv7511_power_off(adv7511); |
| if (adv7511->type == ADV7533) |
| adv7533_dsi_power_off(adv7511); |
| - |
| adv7511->powered = false; |
| } |
| |