Merge "disp: msm: dsi: Update mode population logic for POMS feature"
Tento commit je obsažen v:

odevzdal
Gerrit - the friendly Code Review server

revize
5b628350cf
@@ -5967,6 +5967,10 @@ void dsi_display_adjust_mode_timing(
|
||||
{
|
||||
u64 new_htotal, new_vtotal, htotal, vtotal, old_htotal, div;
|
||||
|
||||
/* Constant FPS is not supported on command mode */
|
||||
if (dsi_mode->panel_mode == DSI_OP_CMD_MODE)
|
||||
return;
|
||||
|
||||
if (!dyn_clk_caps->maintain_const_fps)
|
||||
return;
|
||||
/*
|
||||
@@ -6130,8 +6134,6 @@ int dsi_display_get_modes(struct dsi_display *display,
|
||||
|
||||
dyn_clk_caps = &(display->panel->dyn_clk_caps);
|
||||
|
||||
num_dfps_rates = !dfps_caps.dfps_support ? 1 : dfps_caps.dfps_list_len;
|
||||
|
||||
timing_mode_count = display->panel->num_timing_nodes;
|
||||
|
||||
for (mode_idx = 0; mode_idx < timing_mode_count; mode_idx++) {
|
||||
@@ -6158,6 +6160,8 @@ int dsi_display_get_modes(struct dsi_display *display,
|
||||
/* Setup widebus support */
|
||||
display_mode.priv_info->widebus_support =
|
||||
ctrl->ctrl->hw.widebus_support;
|
||||
num_dfps_rates = ((!dfps_caps.dfps_support ||
|
||||
is_cmd_mode) ? 1 : dfps_caps.dfps_list_len);
|
||||
|
||||
/* Calculate dsi frame transfer time */
|
||||
if (is_cmd_mode) {
|
||||
@@ -6220,9 +6224,16 @@ int dsi_display_get_modes(struct dsi_display *display,
|
||||
}
|
||||
end = array_idx;
|
||||
/*
|
||||
* if dynamic clk switch is supported then update all the bit
|
||||
* clk rates.
|
||||
* if POMS is enabled and boot up mode is video mode,
|
||||
* skip bit clk rates update for command mode,
|
||||
* else if dynamic clk switch is supported then update all
|
||||
* the bit clk rates.
|
||||
*/
|
||||
|
||||
if (is_cmd_mode &&
|
||||
(display->panel->panel_mode == DSI_OP_VIDEO_MODE))
|
||||
continue;
|
||||
|
||||
_dsi_display_populate_bit_clks(display, start, end, &array_idx);
|
||||
}
|
||||
|
||||
|
@@ -825,8 +825,8 @@ int dsi_connector_get_modes(struct drm_connector *connector, void *data,
|
||||
struct drm_display_mode drm_mode;
|
||||
struct dsi_display *display = data;
|
||||
struct edid edid;
|
||||
u8 width_mm = connector->display_info.width_mm;
|
||||
u8 height_mm = connector->display_info.height_mm;
|
||||
unsigned int width_mm = connector->display_info.width_mm;
|
||||
unsigned int height_mm = connector->display_info.height_mm;
|
||||
const u8 edid_buf[EDID_LENGTH] = {
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x44, 0x6D,
|
||||
0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1B, 0x10, 0x01, 0x03,
|
||||
|
@@ -3425,7 +3425,6 @@ int dsi_panel_get_mode_count(struct dsi_panel *panel)
|
||||
int num_dfps_rates, num_bit_clks;
|
||||
int num_video_modes = 0, num_cmd_modes = 0;
|
||||
int count, rc = 0;
|
||||
void *utils_data = NULL;
|
||||
|
||||
if (!panel) {
|
||||
DSI_ERR("invalid params\n");
|
||||
@@ -3462,10 +3461,9 @@ int dsi_panel_get_mode_count(struct dsi_panel *panel)
|
||||
|
||||
panel->num_timing_nodes = count;
|
||||
dsi_for_each_child_node(timings_np, child_np) {
|
||||
utils_data = child_np;
|
||||
if (utils->read_bool(utils->data, "qcom,mdss-dsi-video-mode"))
|
||||
if (utils->read_bool(child_np, "qcom,mdss-dsi-video-mode"))
|
||||
num_video_modes++;
|
||||
else if (utils->read_bool(utils->data,
|
||||
else if (utils->read_bool(child_np,
|
||||
"qcom,mdss-dsi-cmd-mode"))
|
||||
num_cmd_modes++;
|
||||
else if (panel->panel_mode == DSI_OP_VIDEO_MODE)
|
||||
@@ -3480,9 +3478,20 @@ int dsi_panel_get_mode_count(struct dsi_panel *panel)
|
||||
num_bit_clks = !panel->dyn_clk_caps.dyn_clk_support ? 1 :
|
||||
panel->dyn_clk_caps.bit_clk_list_len;
|
||||
|
||||
/* Inflate num_of_modes by fps and bit clks in dfps */
|
||||
panel->num_display_modes = (num_cmd_modes * num_bit_clks) +
|
||||
(num_video_modes * num_bit_clks * num_dfps_rates);
|
||||
/*
|
||||
* Inflate num_of_modes by fps and bit clks in dfps.
|
||||
* Single command mode for video mode panels supporting
|
||||
* panel operating mode switch.
|
||||
*/
|
||||
num_video_modes = num_video_modes * num_bit_clks * num_dfps_rates;
|
||||
|
||||
if ((panel->panel_mode == DSI_OP_VIDEO_MODE) &&
|
||||
(panel->panel_mode_switch_enabled))
|
||||
num_cmd_modes = 1;
|
||||
else
|
||||
num_cmd_modes = num_cmd_modes * num_bit_clks;
|
||||
|
||||
panel->num_display_modes = num_video_modes + num_cmd_modes;
|
||||
|
||||
error:
|
||||
return rc;
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele