From 053474e9f45cfb8ee6565e0118db6eecc7120993 Mon Sep 17 00:00:00 2001 From: Kuogee Hsieh Date: Mon, 22 Sep 2014 11:11:45 -0700 Subject: [PATCH] msm: mdss: add 5v-boost-gpio to dsi panel node Certain DSI panels need 5v boost gpio to be configured to work. Add support to define and enable 5v boost gpio as a panel property. These panels in older targets were relying on the platform enable gpio to enable the 5v boost on the panel. This maintains back compatibility for those targets which use the same panels. Change-Id: I0410a83044e17648e67a9e8556c5620c75472e62 Signed-off-by: Kuogee Hsieh --- .../devicetree/bindings/fb/mdss-dsi-panel.txt | 2 ++ drivers/video/fbdev/msm/mdss_dsi.c | 18 +++++++++++++----- drivers/video/fbdev/msm/mdss_dsi_panel.c | 10 ++++++++++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/Documentation/devicetree/bindings/fb/mdss-dsi-panel.txt b/Documentation/devicetree/bindings/fb/mdss-dsi-panel.txt index d7f5709c0b7b..476d1e57703c 100644 --- a/Documentation/devicetree/bindings/fb/mdss-dsi-panel.txt +++ b/Documentation/devicetree/bindings/fb/mdss-dsi-panel.txt @@ -173,6 +173,7 @@ Optional properties: - qcom,mdss-dsi-panel-type: Specifies the panel operating mode. "dsi_video_mode" = enable video mode (default). "dsi_cmd_mode" = enable command mode. +- qcom,5v-boost-gpio: Specifies the panel gpio for display 5v boost. - qcom,mdss-dsi-te-check-enable: Boolean to enable Tear Check configuration. - qcom,mdss-dsi-te-using-te-pin: Boolean to specify whether using hardware vsync. - qcom,mdss-dsi-te-pin-select: Specifies TE operating mode. @@ -450,6 +451,7 @@ Example: qcom,mdss-dsi-bl-pmic-bank-select = <0>; qcom,mdss-dsi-bl-pmic-pwm-frequency = <0>; qcom,mdss-dsi-pwm-gpio = <&pm8941_mpps 5 0>; + qcom,5v-boost-gpio = <&pm8994_gpios 14 0>; qcom,mdss-pan-physical-width-dimension = <60>; qcom,mdss-pan-physical-height-dimension = <140>; qcom,mdss-dsi-panel-mode-gpio-state = "low"; diff --git a/drivers/video/fbdev/msm/mdss_dsi.c b/drivers/video/fbdev/msm/mdss_dsi.c index 94f0806562a4..296a02aac124 100644 --- a/drivers/video/fbdev/msm/mdss_dsi.c +++ b/drivers/video/fbdev/msm/mdss_dsi.c @@ -1729,12 +1729,20 @@ int dsi_panel_device_register(struct device_node *pan_node, pinfo->panel_max_fps = mdss_panel_get_framerate(pinfo); pinfo->panel_max_vtotal = mdss_panel_get_vtotal(pinfo); - ctrl_pdata->disp_en_gpio = of_get_named_gpio(ctrl_pdev->dev.of_node, - "qcom,platform-enable-gpio", 0); - if (!gpio_is_valid(ctrl_pdata->disp_en_gpio)) - pr_err("%s:%d, Disp_en gpio not specified\n", - __func__, __LINE__); + /* + * If disp_en_gpio has been set previously (disp_en_gpio > 0) + * while parsing the panel node, then do not override it + */ + if (ctrl_pdata->disp_en_gpio <= 0) { + ctrl_pdata->disp_en_gpio = of_get_named_gpio( + ctrl_pdev->dev.of_node, + "qcom,platform-enable-gpio", 0); + + if (!gpio_is_valid(ctrl_pdata->disp_en_gpio)) + pr_err("%s:%d, Disp_en gpio not specified\n", + __func__, __LINE__); + } ctrl_pdata->bklt_en_gpio = of_get_named_gpio(ctrl_pdev->dev.of_node, "qcom,platform-bklight-en-gpio", 0); diff --git a/drivers/video/fbdev/msm/mdss_dsi_panel.c b/drivers/video/fbdev/msm/mdss_dsi_panel.c index a3ad9b1f3359..412b34acc5a4 100644 --- a/drivers/video/fbdev/msm/mdss_dsi_panel.c +++ b/drivers/video/fbdev/msm/mdss_dsi_panel.c @@ -1110,6 +1110,16 @@ static int mdss_dsi_parse_panel_features(struct device_node *np, pinfo->esd_check_enabled = false; } + if (ctrl->disp_en_gpio <= 0) { + ctrl->disp_en_gpio = of_get_named_gpio( + np, + "qcom,5v-boost-gpio", 0); + + if (!gpio_is_valid(ctrl->disp_en_gpio)) + pr_err("%s:%d, Disp_en gpio not specified\n", + __func__, __LINE__); + } + return 0; }