Loading msm/dsi/dsi_display.c +26 −27 Original line number Diff line number Diff line Loading @@ -6009,12 +6009,14 @@ int dsi_display_find_mode(struct dsi_display *display, } /** * dsi_display_validate_mode_change() - Validate if varaible refresh case. * dsi_display_validate_mode_change() - Validate mode change case. * @display: DSI display handle. * @cur_dsi_mode: Current DSI mode. * @mode: Mode value structure to be validated. * @cur_mode: Current mode. * @adj_mode: Mode to be set. * MSM_MODE_FLAG_SEAMLESS_VRR flag is set if there * is change in fps but vactive and hactive are same. * DSI_MODE_FLAG_DYN_CLK flag is set if there * is change in clk but vactive and hactive are same. * Return: error code. */ int dsi_display_validate_mode_change(struct dsi_display *display, Loading Loading @@ -6043,11 +6045,7 @@ int dsi_display_validate_mode_change(struct dsi_display *display, if (cur_mode->timing.refresh_rate != adj_mode->timing.refresh_rate) { dsi_panel_get_dfps_caps(display->panel, &dfps_caps); if (!dfps_caps.dfps_support) { pr_err("invalid mode dfps not supported\n"); rc = -ENOTSUPP; goto error; } if (dfps_caps.dfps_support) { pr_debug("Mode switch is seamless variable refresh\n"); adj_mode->dsi_mode_flags |= DSI_MODE_FLAG_VRR; SDE_EVT32(cur_mode->timing.refresh_rate, Loading @@ -6055,26 +6053,27 @@ int dsi_display_validate_mode_change(struct dsi_display *display, cur_mode->timing.h_front_porch, adj_mode->timing.h_front_porch); } } /* dynamic clk change use case */ if (cur_mode->pixel_clk_khz != adj_mode->pixel_clk_khz) { dyn_clk_caps = &(display->panel->dyn_clk_caps); if (!dyn_clk_caps->dyn_clk_support) { pr_err("dyn clk change not supported\n"); rc = -ENOTSUPP; goto error; } if (adj_mode->dsi_mode_flags & DSI_MODE_FLAG_VRR) { if (dyn_clk_caps->dyn_clk_support) { pr_debug("dynamic clk change detected\n"); if (adj_mode->dsi_mode_flags & DSI_MODE_FLAG_VRR) { pr_err("dfps and dyn clk not supported in same commit\n"); rc = -ENOTSUPP; goto error; } pr_debug("dynamic clk change detected\n"); adj_mode->dsi_mode_flags |= DSI_MODE_FLAG_DYN_CLK; adj_mode->dsi_mode_flags |= DSI_MODE_FLAG_DYN_CLK; SDE_EVT32(cur_mode->pixel_clk_khz, adj_mode->pixel_clk_khz); } } } error: mutex_unlock(&display->display_lock); Loading Loading
msm/dsi/dsi_display.c +26 −27 Original line number Diff line number Diff line Loading @@ -6009,12 +6009,14 @@ int dsi_display_find_mode(struct dsi_display *display, } /** * dsi_display_validate_mode_change() - Validate if varaible refresh case. * dsi_display_validate_mode_change() - Validate mode change case. * @display: DSI display handle. * @cur_dsi_mode: Current DSI mode. * @mode: Mode value structure to be validated. * @cur_mode: Current mode. * @adj_mode: Mode to be set. * MSM_MODE_FLAG_SEAMLESS_VRR flag is set if there * is change in fps but vactive and hactive are same. * DSI_MODE_FLAG_DYN_CLK flag is set if there * is change in clk but vactive and hactive are same. * Return: error code. */ int dsi_display_validate_mode_change(struct dsi_display *display, Loading Loading @@ -6043,11 +6045,7 @@ int dsi_display_validate_mode_change(struct dsi_display *display, if (cur_mode->timing.refresh_rate != adj_mode->timing.refresh_rate) { dsi_panel_get_dfps_caps(display->panel, &dfps_caps); if (!dfps_caps.dfps_support) { pr_err("invalid mode dfps not supported\n"); rc = -ENOTSUPP; goto error; } if (dfps_caps.dfps_support) { pr_debug("Mode switch is seamless variable refresh\n"); adj_mode->dsi_mode_flags |= DSI_MODE_FLAG_VRR; SDE_EVT32(cur_mode->timing.refresh_rate, Loading @@ -6055,26 +6053,27 @@ int dsi_display_validate_mode_change(struct dsi_display *display, cur_mode->timing.h_front_porch, adj_mode->timing.h_front_porch); } } /* dynamic clk change use case */ if (cur_mode->pixel_clk_khz != adj_mode->pixel_clk_khz) { dyn_clk_caps = &(display->panel->dyn_clk_caps); if (!dyn_clk_caps->dyn_clk_support) { pr_err("dyn clk change not supported\n"); rc = -ENOTSUPP; goto error; } if (adj_mode->dsi_mode_flags & DSI_MODE_FLAG_VRR) { if (dyn_clk_caps->dyn_clk_support) { pr_debug("dynamic clk change detected\n"); if (adj_mode->dsi_mode_flags & DSI_MODE_FLAG_VRR) { pr_err("dfps and dyn clk not supported in same commit\n"); rc = -ENOTSUPP; goto error; } pr_debug("dynamic clk change detected\n"); adj_mode->dsi_mode_flags |= DSI_MODE_FLAG_DYN_CLK; adj_mode->dsi_mode_flags |= DSI_MODE_FLAG_DYN_CLK; SDE_EVT32(cur_mode->pixel_clk_khz, adj_mode->pixel_clk_khz); } } } error: mutex_unlock(&display->display_lock); Loading