Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ee16fbb0 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "disp: msm: sde: update avr mode config during commit prepare"

parents cf2991ac aad3dd45
Loading
Loading
Loading
Loading
+23 −10
Original line number Diff line number Diff line
@@ -7019,21 +7019,11 @@ int dsi_display_pre_kickoff(struct drm_connector *connector,
{
	int rc = 0;
	int i;
	bool enable;

	/* check and setup MISR */
	if (display->misr_enable)
		_dsi_display_setup_misr(display);

	if (params->qsync_update) {
		enable = (params->qsync_mode > 0) ? true : false;
		rc = dsi_display_qsync(display, enable);
		if (rc)
			DSI_ERR("%s failed to send qsync commands\n",
				__func__);
		SDE_EVT32(params->qsync_mode, rc);
	}

	rc = dsi_display_set_roi(display, params->rois);

	/* dynamic DSI clock setting */
@@ -7114,6 +7104,29 @@ int dsi_display_config_ctrl_for_cont_splash(struct dsi_display *display)
	return rc;
}

int dsi_display_pre_commit(void *display,
		struct msm_display_conn_params *params)
{
	bool enable = false;
	int rc = 0;

	if (!display || !params) {
		pr_err("Invalid params\n");
		return -EINVAL;
	}

	if (params->qsync_update) {
		enable = (params->qsync_mode > 0) ? true : false;
		rc = dsi_display_qsync(display, enable);
		if (rc)
			pr_err("%s failed to send qsync commands\n",
				__func__);
		SDE_EVT32(params->qsync_mode, rc);
	}

	return rc;
}

int dsi_display_enable(struct dsi_display *display)
{
	int rc = 0;
+10 −0
Original line number Diff line number Diff line
@@ -679,6 +679,16 @@ int dsi_display_set_power(struct drm_connector *connector,
int dsi_display_pre_kickoff(struct drm_connector *connector,
		struct dsi_display *display,
		struct msm_display_kickoff_params *params);

/*
 * dsi_display_pre_commit - program pre commit features
 * @display: Pointer to private display structure
 * @params: Parameters for pre commit time programming
 * Returns: Zero on success
 */
int dsi_display_pre_commit(void *display,
		struct msm_display_conn_params *params);

/**
 * dsi_display_get_dst_format() - get dst_format from DSI display
 * @connector:        Pointer to drm connector structure
+20 −1
Original line number Diff line number Diff line
@@ -911,6 +911,17 @@ int dsi_conn_pre_kickoff(struct drm_connector *connector,
	return dsi_display_pre_kickoff(connector, display, params);
}

int dsi_conn_prepare_commit(void *display,
		struct msm_display_conn_params *params)
{
	if (!display || !params) {
		pr_err("Invalid params\n");
		return -EINVAL;
	}

	return dsi_display_pre_commit(display, params);
}

void dsi_conn_enable_event(struct drm_connector *connector,
		uint32_t event_idx, bool enable, void *display)
{
@@ -925,7 +936,8 @@ void dsi_conn_enable_event(struct drm_connector *connector,
			event_idx, &event_info, enable);
}

int dsi_conn_post_kickoff(struct drm_connector *connector)
int dsi_conn_post_kickoff(struct drm_connector *connector,
	struct msm_display_conn_params *params)
{
	struct drm_encoder *encoder;
	struct dsi_bridge *c_bridge;
@@ -933,6 +945,7 @@ int dsi_conn_post_kickoff(struct drm_connector *connector)
	struct dsi_display *display;
	struct dsi_display_ctrl *m_ctrl, *ctrl;
	int i, rc = 0;
	bool enable;

	if (!connector || !connector->state) {
		DSI_ERR("invalid connector or connector state\n");
@@ -978,6 +991,12 @@ int dsi_conn_post_kickoff(struct drm_connector *connector)
	/* ensure dynamic clk switch flag is reset */
	c_bridge->dsi_mode.dsi_mode_flags &= ~DSI_MODE_FLAG_DYN_CLK;

	if (params->qsync_update) {
		enable = (params->qsync_mode > 0) ? true : false;
		display_for_each_ctrl(i, display)
			dsi_ctrl_setup_avr(display->ctrl[i].ctrl, enable);
	}

	return 0;
}

+13 −1
Original line number Diff line number Diff line
@@ -120,9 +120,11 @@ int dsi_conn_pre_kickoff(struct drm_connector *connector,
/**
 * dsi_display_post_kickoff - program post kickoff-time features
 * @connector: Pointer to drm connector structure
 * @params: Parameters for post kickoff programming
 * Returns: Zero on success
 */
int dsi_conn_post_kickoff(struct drm_connector *connector);
int dsi_conn_post_kickoff(struct drm_connector *connector,
		struct msm_display_conn_params *params);

/**
 * dsi_convert_to_drm_mode - Update drm mode with dsi mode information
@@ -134,4 +136,14 @@ void dsi_convert_to_drm_mode(const struct dsi_display_mode *dsi_mode,

u64 dsi_drm_find_bit_clk_rate(void *display,
			      const struct drm_display_mode *drm_mode);

/**
 * dsi_conn_prepare_commit - program pre commit time features
 * @display: Pointer to private display structure
 * @params: Parameters for pre commit programming
 * Returns: Zero on success
 */
int dsi_conn_prepare_commit(void *display,
		struct msm_display_conn_params *params);

#endif /* _DSI_DRM_H_ */
+8 −7
Original line number Diff line number Diff line
@@ -3257,13 +3257,14 @@ struct dsi_panel *dsi_panel_get(struct device *parent,
	if (rc)
		DSI_ERR("failed to parse dfps configuration, rc=%d\n", rc);

	if (!(panel->dfps_caps.dfps_support)) {
		/* qsync and dfps are mutually exclusive features */
	rc = dsi_panel_parse_qsync_caps(panel, of_node);
	if (rc)
			DSI_DEBUG("failed to parse qsync features, rc=%d\n",
					rc);
	}
		DSI_DEBUG("failed to parse qsync features, rc=%d\n", rc);

	/* allow qsync support only if DFPS is with VFP approach */
	if ((panel->dfps_caps.dfps_support) &&
	    !(panel->dfps_caps.type == DSI_DFPS_IMMEDIATE_VFP))
		panel->qsync_min_fps = 0;

	rc = dsi_panel_parse_dyn_clk_caps(panel);
	if (rc)
Loading