summaryrefslogtreecommitdiff
path: root/drivers/video
diff options
context:
space:
mode:
authorMohan Pallaka <mpallaka@codeaurora.org>2013-10-24 11:06:54 +0530
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:22:38 -0700
commit743d5ec77e1e81df875ddb0e32c7935657271114 (patch)
treecce4d5b07a2c7bc9f6f755dc766ada16b1b5c08d /drivers/video
parent0991d5ecc3184c3e7def3cd8d4638e0c5e7e98d7 (diff)
msm: mdss: Add support for backlight gpio
Backlight gpio is used to support display backlight. Parse the gpio from dts and request. Change-Id: I776373029e96526710406f6820472ad9319952c7 Signed-off-by: Mohan Pallaka <mpallaka@codeaurora.org>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/fbdev/msm/dsi_v2.c21
-rw-r--r--drivers/video/fbdev/msm/mdss_dsi.h1
2 files changed, 22 insertions, 0 deletions
diff --git a/drivers/video/fbdev/msm/dsi_v2.c b/drivers/video/fbdev/msm/dsi_v2.c
index 65cca0ed5a51..0b93740e3199 100644
--- a/drivers/video/fbdev/msm/dsi_v2.c
+++ b/drivers/video/fbdev/msm/dsi_v2.c
@@ -173,6 +173,13 @@ static int dsi_parse_gpio(struct platform_device *pdev,
pr_info("%s:%d, reset gpio not specified\n",
__func__, __LINE__);
}
+
+ ctrl_pdata->bklt_en_gpio = of_get_named_gpio(np,
+ "qcom,platform-bklight-en-gpio", 0);
+ if (!gpio_is_valid(ctrl_pdata->bklt_en_gpio))
+ pr_err("%s:%d, bklt_en gpio not specified\n",
+ __func__, __LINE__);
+
return 0;
}
@@ -228,8 +235,18 @@ int dsi_ctrl_gpio_request(struct mdss_dsi_ctrl_pdata *ctrl_pdata)
ctrl_pdata->mode_gpio_requested = 1;
}
+ if (gpio_is_valid(ctrl_pdata->bklt_en_gpio)) {
+ rc = gpio_request(ctrl_pdata->bklt_en_gpio, "bklt_enable");
+ if (rc)
+ goto gpio_request_err0;
+ ctrl_pdata->bklt_en_gpio_requested = 1;
+ }
+
return rc;
+gpio_request_err0:
+ if (gpio_is_valid(ctrl_pdata->mode_gpio))
+ gpio_free(ctrl_pdata->mode_gpio);
gpio_request_err1:
if (gpio_is_valid(ctrl_pdata->disp_te_gpio))
gpio_free(ctrl_pdata->disp_te_gpio);
@@ -265,6 +282,10 @@ void dsi_ctrl_gpio_free(struct mdss_dsi_ctrl_pdata *ctrl_pdata)
gpio_free(ctrl_pdata->mode_gpio);
ctrl_pdata->mode_gpio_requested = 0;
}
+ if (ctrl_pdata->bklt_en_gpio_requested) {
+ gpio_free(ctrl_pdata->bklt_en_gpio);
+ ctrl_pdata->bklt_en_gpio_requested = 0;
+ }
}
static int dsi_parse_vreg(struct device *dev, struct dss_module_power *mp)
diff --git a/drivers/video/fbdev/msm/mdss_dsi.h b/drivers/video/fbdev/msm/mdss_dsi.h
index 460ed2407e04..54e4d49569ff 100644
--- a/drivers/video/fbdev/msm/mdss_dsi.h
+++ b/drivers/video/fbdev/msm/mdss_dsi.h
@@ -338,6 +338,7 @@ struct mdss_dsi_ctrl_pdata {
int disp_en_gpio_requested;
int disp_te_gpio_requested;
int mode_gpio_requested;
+ int bklt_en_gpio_requested;
int bklt_ctrl; /* backlight ctrl */
int pwm_period;
int pwm_pmic_gpio;