disp: msm: sde: correct num_datapath during PM resume with CWB

In PM resume with CWB concurrency usecase, crtc pointer in
conn->state is NULL since drm_mode_config_reset operation is
performed on pm_resume. This change relies on conn_mask in
new_crtc_state for primary connector retrieval and also adds
get_num_lm_from_mode callback to DSI for LM count retrieval
from dsi panel topology. Existing get_mode_info api cannot
retrieve the topology info because mode->priv_info is NULL.
This occurs as WB encoder is added in the drm encoder_list
before primary encoder, introduced as part of commit d28ebf05f4
("disp: msm: sde: populate WB display encoder list before dsi").

Change-Id: I55358fd88ab778bd81475cf3628be13335de1cb5
Signed-off-by: Jayaprakash Madisetty <jmadiset@codeaurora.org>
Signed-off-by: Samantha Tran <samtran@codeaurora.org>
此提交包含在:
Jayaprakash Madisetty
2021-04-01 18:04:32 +05:30
提交者 Samantha Tran
父節點 6a01182c1e
當前提交 a29369e224
共有 8 個檔案被更改,包括 95 行新增13 行删除

查看文件

@@ -422,6 +422,14 @@ struct sde_connector_ops {
*/
void (*set_submode_info)(struct drm_connector *conn,
void *info, void *display, struct drm_display_mode *drm_mode);
/*
* get_num_lm_from_mode - Get LM count from topology for this drm mode
* @display: Pointer to private display structure
* @mode: Pointer to drm mode info structure
*/
int (*get_num_lm_from_mode)(void *display, const struct drm_display_mode *mode);
};
/**
@@ -1063,6 +1071,15 @@ int sde_connector_helper_reset_custom_properties(
int sde_connector_state_get_mode_info(struct drm_connector_state *conn_state,
struct msm_mode_info *mode_info);
/**
* sde_connector_get_lm_cnt_from_topology - retrieves the topology info
* from the panel mode and returns the lm count.
* conn: Pointer to DRM connector object
* drm_mode: Pointer to the drm mode structure
*/
int sde_connector_get_lm_cnt_from_topology(struct drm_connector *conn,
const struct drm_display_mode *drm_mode);
/**
* sde_connector_state_get_topology - get topology from given connector state
* conn_state: Pointer to the DRM connector state object