disp: msm: sde: add line insertion support for sspp

Add line insertion support for sspp, this is used to support
display with external splitter. Line insertion logic checks
the difference between screen logical height and physical
height. If any difference is observed adds dummy and active
lines on screen.

Change-Id: Ieec322273df000a53fb39e05174c2d67c3c2da81
Signed-off-by: Rajesh kv <quic_kvrajesh@quicinc.com>
Цей коміт міститься в:
Rajesh kv
2022-04-01 08:59:25 +05:30
джерело fdcfe00b0b
коміт 03aad2fdf9
16 змінених файлів з 420 додано та 1 видалено

Переглянути файл

@@ -499,6 +499,8 @@ struct dsi_split_link_config {
* cmd it points to the line after TE.
* @dma_sched_window: Determines the width of the window during the
* DSI command will be sent by the HW.
* @vpadding: panel stacking height.
* @line_insertion_enable: line insertion support enable.
*/
struct dsi_host_common_cfg {
enum dsi_pixel_format dst_format;
@@ -526,6 +528,8 @@ struct dsi_host_common_cfg {
u32 byte_intf_clk_div;
u32 dma_sched_line;
u32 dma_sched_window;
u32 vpadding;
bool line_insertion_enable;
};
/**

Переглянути файл

@@ -641,6 +641,12 @@ int dsi_conn_get_mode_info(struct drm_connector *connector,
mode_info->qsync_min_fps = dsi_mode->timing.qsync_min_fps;
mode_info->wd_jitter = dsi_mode->priv_info->wd_jitter;
if (dsi_display->panel)
mode_info->vpadding = dsi_display->panel->host_config.vpadding;
if (mode_info->vpadding < drm_mode->vdisplay) {
mode_info->vpadding = 0;
dsi_display->panel->host_config.line_insertion_enable = 0;
}
memcpy(&mode_info->topology, &dsi_mode->priv_info->topology,
sizeof(struct msm_display_topology));

Переглянути файл

@@ -1179,7 +1179,8 @@ static int dsi_panel_parse_misc_host_config(struct dsi_host_common_cfg *host,
host->dma_sched_window = 0;
else
host->dma_sched_window = window;
rc = utils->read_u32(utils->data, "qcom,vert-padding-value", &host->vpadding);
host->line_insertion_enable = (rc || host->vpadding <= 0) ? false : true;
DSI_DEBUG("[%s] DMA scheduling parameters Line: %d Window: %d\n", name,
host->dma_sched_line, host->dma_sched_window);
return 0;