diff --git a/msm/dsi/dsi_display.c b/msm/dsi/dsi_display.c index a9e0d3cac4..55cc9d8032 100644 --- a/msm/dsi/dsi_display.c +++ b/msm/dsi/dsi_display.c @@ -4147,10 +4147,8 @@ static bool dsi_display_validate_panel_resources(struct dsi_display *display) DSI_ERR("invalid reset gpio for the panel\n"); return false; } - } else { - display->panel->power_info.count = 0; - DSI_DEBUG("no dir set and no request for gpios in sim panel\n"); } + return true; } @@ -4195,8 +4193,10 @@ static int dsi_display_res_init(struct dsi_display *display) display->panel->te_using_watchdog_timer |= display->sw_te_using_wd; - if (!dsi_display_validate_panel_resources(display)) - goto error_ctrl_put; + if (!dsi_display_validate_panel_resources(display)) { + rc = -EINVAL; + goto error_panel_put; + } display_for_each_ctrl(i, display) { struct msm_dsi_phy *phy = display->ctrl[i].phy; @@ -4223,13 +4223,13 @@ static int dsi_display_res_init(struct dsi_display *display) rc = dsi_display_parse_lane_map(display); if (rc) { DSI_ERR("Lane map not found, rc=%d\n", rc); - goto error_ctrl_put; + goto error_panel_put; } rc = dsi_display_clocks_init(display); if (rc) { DSI_ERR("Failed to parse clock data, rc=%d\n", rc); - goto error_ctrl_put; + goto error_panel_put; } /** @@ -4245,6 +4245,8 @@ static int dsi_display_res_init(struct dsi_display *display) } return 0; +error_panel_put: + dsi_panel_put(display->panel); error_ctrl_put: for (i = i - 1; i >= 0; i--) { ctrl = &display->ctrl[i]; diff --git a/msm/dsi/dsi_panel.c b/msm/dsi/dsi_panel.c index 4948fee514..0141415065 100644 --- a/msm/dsi/dsi_panel.c +++ b/msm/dsi/dsi_panel.c @@ -247,6 +247,9 @@ static int dsi_panel_reset(struct dsi_panel *panel) struct dsi_panel_reset_config *r_config = &panel->reset_config; int i; + if (!gpio_is_valid(r_config->reset_gpio)) + goto skip_reset_gpio; + if (gpio_is_valid(panel->reset_config.disp_en_gpio)) { rc = gpio_direction_output(panel->reset_config.disp_en_gpio, 1); if (rc) { @@ -274,6 +277,7 @@ static int dsi_panel_reset(struct dsi_panel *panel) (r_config->sequence[i].sleep_ms * 1000) + 100); } +skip_reset_gpio: if (gpio_is_valid(panel->bl_config.en_gpio)) { rc = gpio_direction_output(panel->bl_config.en_gpio, 1); if (rc)