disp: msm: dsi: move panel regulator votes from bind to probe

Add vote for panel regulators in dsi probe to make sure
panel regulators are ON until dsi bind is completed
for cont-splash enabled usecase. Remove this panel regulator
vote when dsi component bind is done.

Change-Id: I0b1d43fa1b16385712abc1d8aaa0e778f31ba634
Signed-off-by: Chandan Uddaraju <chandanu@codeaurora.org>
此提交包含在:
Chandan Uddaraju
2020-04-02 21:34:27 -07:00
父節點 d4566743e0
當前提交 fa8f623802
共有 2 個檔案被更改,包括 40 行新增11 行删除

查看文件

@@ -3280,6 +3280,13 @@ struct dsi_panel *dsi_panel_get(struct device *parent,
if (rc)
DSI_DEBUG("failed to parse esd config, rc=%d\n", rc);
rc = dsi_panel_vreg_get(panel);
if (rc) {
DSI_ERR("[%s] failed to get panel regulators, rc=%d\n",
panel->name, rc);
goto error;
}
panel->power_mode = SDE_MODE_DPMS_OFF;
drm_panel_init(&panel->drm_panel);
panel->drm_panel.dev = &panel->mipi_device.dev;
@@ -3287,11 +3294,13 @@ struct dsi_panel *dsi_panel_get(struct device *parent,
rc = drm_panel_add(&panel->drm_panel);
if (rc)
goto error;
goto error_vreg_put;
mutex_init(&panel->panel_lock);
return panel;
error_vreg_put:
(void)dsi_panel_vreg_put(panel);
error:
kfree(panel);
return ERR_PTR(rc);
@@ -3332,18 +3341,11 @@ int dsi_panel_drv_init(struct dsi_panel *panel,
dev->lanes = 4;
panel->host = host;
rc = dsi_panel_vreg_get(panel);
if (rc) {
DSI_ERR("[%s] failed to get panel regulators, rc=%d\n",
panel->name, rc);
goto exit;
}
rc = dsi_panel_pinctrl_init(panel);
if (rc) {
DSI_ERR("[%s] failed to init pinctrl, rc=%d\n",
panel->name, rc);
goto error_vreg_put;
goto exit;
}
rc = dsi_panel_gpio_request(panel);
@@ -3367,8 +3369,6 @@ error_gpio_release:
(void)dsi_panel_gpio_release(panel);
error_pinctrl_deinit:
(void)dsi_panel_pinctrl_deinit(panel);
error_vreg_put:
(void)dsi_panel_vreg_put(panel);
exit:
mutex_unlock(&panel->panel_lock);
return rc;