diff options
author | Beeresh Gopal <gbeeresh@codeaurora.org> | 2014-07-31 11:48:49 -0400 |
---|---|---|
committer | Rob Clark <robdclark@gmail.com> | 2014-08-04 11:55:30 -0400 |
commit | 1930f38a5d8724f6e5cdb75157d09e9a430bd68f (patch) | |
tree | 3b504b472d4c2e0991c2e856d04e5ca1be79e5e4 | |
parent | 3d47fd47f28903f5a9167e95f32a906bd53e13e6 (diff) |
drm/msm/hdmi: enable lpm-mux if it is present
lpm-mux is programmed to enable HDMI connector
on the docking station for S805 chipset based
devices.
Signed-off-by: Beeresh Gopal <gbeeresh@codeaurora.org>
Signed-off-by: Stephane Viau <sviau@codeaurora.org>
Signed-off-by: Rob Clark <robdclark@gmail.com>
-rw-r--r-- | drivers/gpu/drm/msm/hdmi/hdmi.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/msm/hdmi/hdmi.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/msm/hdmi/hdmi_connector.c | 21 |
3 files changed, 23 insertions, 0 deletions
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdmi.c index 041c2fca2225..a125a7e32742 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c | |||
@@ -317,6 +317,7 @@ static int hdmi_bind(struct device *dev, struct device *master, void *data) | |||
317 | config.hpd_gpio = get_gpio("qcom,hdmi-tx-hpd"); | 317 | config.hpd_gpio = get_gpio("qcom,hdmi-tx-hpd"); |
318 | config.mux_en_gpio = get_gpio("qcom,hdmi-tx-mux-en"); | 318 | config.mux_en_gpio = get_gpio("qcom,hdmi-tx-mux-en"); |
319 | config.mux_sel_gpio = get_gpio("qcom,hdmi-tx-mux-sel"); | 319 | config.mux_sel_gpio = get_gpio("qcom,hdmi-tx-mux-sel"); |
320 | config.mux_lpm_gpio = get_gpio("qcom,hdmi-tx-mux-lpm"); | ||
320 | 321 | ||
321 | #else | 322 | #else |
322 | static const char *hpd_clk_names[] = { | 323 | static const char *hpd_clk_names[] = { |
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.h b/drivers/gpu/drm/msm/hdmi/hdmi.h index 9d7723c6528a..b981995410b5 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.h +++ b/drivers/gpu/drm/msm/hdmi/hdmi.h | |||
@@ -96,6 +96,7 @@ struct hdmi_platform_config { | |||
96 | 96 | ||
97 | /* gpio's: */ | 97 | /* gpio's: */ |
98 | int ddc_clk_gpio, ddc_data_gpio, hpd_gpio, mux_en_gpio, mux_sel_gpio; | 98 | int ddc_clk_gpio, ddc_data_gpio, hpd_gpio, mux_en_gpio, mux_sel_gpio; |
99 | int mux_lpm_gpio; | ||
99 | 100 | ||
100 | /* older devices had their own irq, mdp5+ it is shared w/ mdp: */ | 101 | /* older devices had their own irq, mdp5+ it is shared w/ mdp: */ |
101 | bool shared_irq; | 102 | bool shared_irq; |
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_connector.c b/drivers/gpu/drm/msm/hdmi/hdmi_connector.c index 76960faae38f..67245b79375f 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi_connector.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi_connector.c | |||
@@ -78,6 +78,19 @@ static int gpio_config(struct hdmi *hdmi, bool on) | |||
78 | } | 78 | } |
79 | gpio_set_value_cansleep(config->mux_sel_gpio, 0); | 79 | gpio_set_value_cansleep(config->mux_sel_gpio, 0); |
80 | } | 80 | } |
81 | |||
82 | if (config->mux_lpm_gpio != -1) { | ||
83 | ret = gpio_request(config->mux_lpm_gpio, | ||
84 | "HDMI_MUX_LPM"); | ||
85 | if (ret) { | ||
86 | dev_err(dev->dev, | ||
87 | "'%s'(%d) gpio_request failed: %d\n", | ||
88 | "HDMI_MUX_LPM", | ||
89 | config->mux_lpm_gpio, ret); | ||
90 | goto error6; | ||
91 | } | ||
92 | gpio_set_value_cansleep(config->mux_lpm_gpio, 1); | ||
93 | } | ||
81 | DBG("gpio on"); | 94 | DBG("gpio on"); |
82 | } else { | 95 | } else { |
83 | gpio_free(config->ddc_clk_gpio); | 96 | gpio_free(config->ddc_clk_gpio); |
@@ -93,11 +106,19 @@ static int gpio_config(struct hdmi *hdmi, bool on) | |||
93 | gpio_set_value_cansleep(config->mux_sel_gpio, 1); | 106 | gpio_set_value_cansleep(config->mux_sel_gpio, 1); |
94 | gpio_free(config->mux_sel_gpio); | 107 | gpio_free(config->mux_sel_gpio); |
95 | } | 108 | } |
109 | |||
110 | if (config->mux_lpm_gpio != -1) { | ||
111 | gpio_set_value_cansleep(config->mux_lpm_gpio, 0); | ||
112 | gpio_free(config->mux_lpm_gpio); | ||
113 | } | ||
96 | DBG("gpio off"); | 114 | DBG("gpio off"); |
97 | } | 115 | } |
98 | 116 | ||
99 | return 0; | 117 | return 0; |
100 | 118 | ||
119 | error6: | ||
120 | if (config->mux_sel_gpio != -1) | ||
121 | gpio_free(config->mux_sel_gpio); | ||
101 | error5: | 122 | error5: |
102 | if (config->mux_en_gpio != -1) | 123 | if (config->mux_en_gpio != -1) |
103 | gpio_free(config->mux_en_gpio); | 124 | gpio_free(config->mux_en_gpio); |