diff --git a/msm/dsi/dsi_panel.c b/msm/dsi/dsi_panel.c index 2bb185888a..49dcfd36ae 100644 --- a/msm/dsi/dsi_panel.c +++ b/msm/dsi/dsi_panel.c @@ -477,6 +477,14 @@ static int dsi_panel_pinctrl_init(struct dsi_panel *panel) goto error; } + panel->pinctrl.pwm_pin = + pinctrl_lookup_state(panel->pinctrl.pinctrl, "pwm_pin"); + + if (IS_ERR_OR_NULL(panel->pinctrl.pwm_pin)) { + panel->pinctrl.pwm_pin = NULL; + DSI_DEBUG("failed to get pinctrl pwm_pin"); + } + error: return rc; } @@ -649,6 +657,14 @@ static int dsi_panel_pwm_register(struct dsi_panel *panel) return rc; } + if (panel->pinctrl.pwm_pin) { + rc = pinctrl_select_state(panel->pinctrl.pinctrl, + panel->pinctrl.pwm_pin); + if (rc) + DSI_ERR("[%s] failed to set pwm pinctrl, rc=%d\n", + panel->name, rc); + } + return 0; } diff --git a/msm/dsi/dsi_panel.h b/msm/dsi/dsi_panel.h index d5f08704b8..58c19ee1f3 100644 --- a/msm/dsi/dsi_panel.h +++ b/msm/dsi/dsi_panel.h @@ -97,6 +97,7 @@ struct dsi_pinctrl_info { struct pinctrl *pinctrl; struct pinctrl_state *active; struct pinctrl_state *suspend; + struct pinctrl_state *pwm_pin; }; struct dsi_panel_phy_props {