Merge "disp: msm: dsi: follow the HPG guidelines for DATABUS_WIDEN"
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

commit
34cfc1c19a
@@ -569,7 +569,7 @@ void dsi_ctrl_hw_cmn_setup_cmd_stream(struct dsi_ctrl_hw *ctrl,
|
||||
this_frame_slices = pic_width / dsc.config.slice_width;
|
||||
intf_ip_w = this_frame_slices * dsc.config.slice_width;
|
||||
|
||||
sde_dsc_populate_dsc_private_params(&dsc, intf_ip_w);
|
||||
sde_dsc_populate_dsc_private_params(&dsc, intf_ip_w, ctrl->widebus_support);
|
||||
|
||||
width_final = dsc.bytes_per_pkt * dsc.pkt_per_line;
|
||||
stride_final = dsc.bytes_per_pkt;
|
||||
|
@@ -7097,12 +7097,23 @@ int dsi_display_get_modes_helper(struct dsi_display *display,
|
||||
|
||||
memset(&display_mode, 0, sizeof(display_mode));
|
||||
|
||||
display_mode.priv_info = kzalloc(sizeof(*display_mode.priv_info), GFP_KERNEL);
|
||||
if (!display_mode.priv_info) {
|
||||
rc = -ENOMEM;
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Setup widebus support */
|
||||
display_mode.priv_info->widebus_support = ctrl->ctrl->hw.widebus_support;
|
||||
|
||||
rc = dsi_panel_get_mode(display->panel, mode_idx,
|
||||
&display_mode,
|
||||
topology_override);
|
||||
if (rc) {
|
||||
DSI_ERR("[%s] failed to get mode idx %d from panel\n",
|
||||
display->name, mode_idx);
|
||||
kfree(display_mode.priv_info);
|
||||
display_mode.priv_info = NULL;
|
||||
rc = -EINVAL;
|
||||
return rc;
|
||||
}
|
||||
@@ -7120,9 +7131,18 @@ int dsi_display_get_modes_helper(struct dsi_display *display,
|
||||
else
|
||||
nondsc_modes++;
|
||||
|
||||
/* Setup widebus support */
|
||||
display_mode.priv_info->widebus_support =
|
||||
ctrl->ctrl->hw.widebus_support;
|
||||
/*
|
||||
* Update the host_config.dst_format for compressed RGB101010 pixel format
|
||||
* when there is no widebus support.
|
||||
*/
|
||||
if (host->dst_format == DSI_PIXEL_FORMAT_RGB101010 &&
|
||||
display_mode.timing.dsc_enabled &&
|
||||
!display_mode.priv_info->widebus_support) {
|
||||
host->dst_format = DSI_PIXEL_FORMAT_RGB888;
|
||||
DSI_DEBUG("updated dst_format from %d to %d\n",
|
||||
DSI_PIXEL_FORMAT_RGB101010, host->dst_format);
|
||||
}
|
||||
|
||||
num_dfps_rates = ((!dfps_caps.dfps_support ||
|
||||
!support_video_mode) ? 1 : dfps_caps.dfps_list_len);
|
||||
|
||||
|
@@ -695,7 +695,7 @@ int dsi_conn_get_mode_info(struct drm_connector *connector,
|
||||
if (mode_info->comp_info.comp_type) {
|
||||
tar_bpp = dsi_mode->priv_info->pclk_scale.numer;
|
||||
src_bpp = dsi_mode->priv_info->pclk_scale.denom;
|
||||
mode_info->comp_info.comp_ratio = mult_frac(1, src_bpp,
|
||||
mode_info->comp_info.comp_ratio = mult_frac(100, src_bpp,
|
||||
tar_bpp);
|
||||
mode_info->wide_bus_en = dsi_mode->priv_info->widebus_support;
|
||||
}
|
||||
|
@@ -2826,7 +2826,8 @@ static int dsi_panel_parse_dsc_params(struct dsi_display_mode *mode,
|
||||
goto error;
|
||||
}
|
||||
|
||||
rc = sde_dsc_populate_dsc_private_params(&priv_info->dsc, intf_width);
|
||||
rc = sde_dsc_populate_dsc_private_params(&priv_info->dsc, intf_width,
|
||||
priv_info->widebus_support);
|
||||
if (rc) {
|
||||
DSI_DEBUG("failed populating other dsc params\n");
|
||||
rc = -EINVAL;
|
||||
@@ -4224,12 +4225,6 @@ int dsi_panel_get_mode(struct dsi_panel *panel,
|
||||
mutex_lock(&panel->panel_lock);
|
||||
utils = &panel->utils;
|
||||
|
||||
mode->priv_info = kzalloc(sizeof(*mode->priv_info), GFP_KERNEL);
|
||||
if (!mode->priv_info) {
|
||||
rc = -ENOMEM;
|
||||
goto done;
|
||||
}
|
||||
|
||||
prv_info = mode->priv_info;
|
||||
|
||||
timings_np = utils->get_child_by_name(utils->data,
|
||||
@@ -4334,12 +4329,8 @@ int dsi_panel_get_mode(struct dsi_panel *panel,
|
||||
if (rc)
|
||||
DSI_ERR("failed to partial update caps, rc=%d\n", rc);
|
||||
}
|
||||
goto done;
|
||||
|
||||
parse_fail:
|
||||
kfree(mode->priv_info);
|
||||
mode->priv_info = NULL;
|
||||
done:
|
||||
utils->data = utils_data;
|
||||
mutex_unlock(&panel->panel_lock);
|
||||
return rc;
|
||||
|
Reference in New Issue
Block a user