]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob
d8ed38ed4ffb14535119308320a938178d15f4b9
[thirdparty/kernel/stable-queue.git] /
1 From 651e4769ba2a9f20c4b8a823ae2727bf7fa9c9f0 Mon Sep 17 00:00:00 2001
2 From: John Stultz <john.stultz@linaro.org>
3 Date: Mon, 16 Jan 2017 16:52:50 -0800
4 Subject: drm/bridge: adv7511: Rework adv7511_power_on/off() so they can be reused internally
5
6 From: John Stultz <john.stultz@linaro.org>
7
8 commit 651e4769ba2a9f20c4b8a823ae2727bf7fa9c9f0 upstream.
9
10 In chasing down issues with EDID probing, I found some
11 duplicated but incomplete logic used to power the chip on and
12 off.
13
14 This patch refactors the adv7511_power_on/off functions, so
15 they can be used for internal needs.
16
17 Cc: David Airlie <airlied@linux.ie>
18 Cc: Archit Taneja <architt@codeaurora.org>
19 Cc: Wolfram Sang <wsa+renesas@sang-engineering.com>
20 Cc: Lars-Peter Clausen <lars@metafoo.de>
21 Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
22 Cc: dri-devel@lists.freedesktop.org
23 Signed-off-by: John Stultz <john.stultz@linaro.org>
24 Signed-off-by: Archit Taneja <architt@codeaurora.org>
25 Link: http://patchwork.freedesktop.org/patch/msgid/1484614372-15342-5-git-send-email-john.stultz@linaro.org
26 Signed-off-by: Nhan Nguyen <nhan.nguyen.yb@renesas.com>
27 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
28
29 ---
30 drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 15 +++++++++++----
31 1 file changed, 11 insertions(+), 4 deletions(-)
32
33 --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
34 +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
35 @@ -325,7 +325,7 @@ static void adv7511_set_link_config(stru
36 adv7511->rgb = config->input_colorspace == HDMI_COLORSPACE_RGB;
37 }
38
39 -static void adv7511_power_on(struct adv7511 *adv7511)
40 +static void __adv7511_power_on(struct adv7511 *adv7511)
41 {
42 adv7511->current_edid_segment = -1;
43
44 @@ -354,6 +354,11 @@ static void adv7511_power_on(struct adv7
45 regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER2,
46 ADV7511_REG_POWER2_HPD_SRC_MASK,
47 ADV7511_REG_POWER2_HPD_SRC_NONE);
48 +}
49 +
50 +static void adv7511_power_on(struct adv7511 *adv7511)
51 +{
52 + __adv7511_power_on(adv7511);
53
54 /*
55 * Most of the registers are reset during power down or when HPD is low.
56 @@ -362,21 +367,23 @@ static void adv7511_power_on(struct adv7
57
58 if (adv7511->type == ADV7533)
59 adv7533_dsi_power_on(adv7511);
60 -
61 adv7511->powered = true;
62 }
63
64 -static void adv7511_power_off(struct adv7511 *adv7511)
65 +static void __adv7511_power_off(struct adv7511 *adv7511)
66 {
67 /* TODO: setup additional power down modes */
68 regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER,
69 ADV7511_POWER_POWER_DOWN,
70 ADV7511_POWER_POWER_DOWN);
71 regcache_mark_dirty(adv7511->regmap);
72 +}
73
74 +static void adv7511_power_off(struct adv7511 *adv7511)
75 +{
76 + __adv7511_power_off(adv7511);
77 if (adv7511->type == ADV7533)
78 adv7533_dsi_power_off(adv7511);
79 -
80 adv7511->powered = false;
81 }
82