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

Commit d7a2f55f authored by Yuan Zhao's avatar Yuan Zhao Committed by Gerrit - the friendly Code Review server
Browse files

drm/msm/dsi-staging: only set nolp command when panel in LP1/LP2 mode



DSI driver sends nolp commands when DSI connector power
modes is set SDE_MODE_DPMS_ON or SDE_MODE_DPMS_OFF. This
is invalid panel configuration. It should only send nolp
commmand to panel when it is in LP1/LP2 mode.

Change-Id: Ie94eaef6899d292fd20f42c1b7ef2c7a99178d13
Signed-off-by: default avatarYuan Zhao <yzhao@codeaurora.org>
parent 92f4c23f
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -1071,10 +1071,22 @@ int dsi_display_set_power(struct drm_connector *connector,
	case SDE_MODE_DPMS_LP2:
		rc = dsi_panel_set_lp2(display->panel);
		break;
	default:
	case SDE_MODE_DPMS_ON:
		if (display->panel->power_mode == SDE_MODE_DPMS_LP1 ||
			display->panel->power_mode == SDE_MODE_DPMS_LP2)
			rc = dsi_panel_set_nolp(display->panel);
		break;
	case SDE_MODE_DPMS_OFF:
	default:
		return rc;
	}

	pr_debug("Power mode transition from %d to %d %s",
		 display->panel->power_mode, power_mode,
		 rc ? "failed" : "successful");
	if (!rc)
		display->panel->power_mode = power_mode;

	return rc;
}

+1 −0
Original line number Diff line number Diff line
@@ -3221,6 +3221,7 @@ struct dsi_panel *dsi_panel_get(struct device *parent,
	if (rc)
		pr_debug("failed to parse esd config, rc=%d\n", rc);

	panel->power_mode = SDE_MODE_DPMS_OFF;
	drm_panel_init(&panel->drm_panel);
	mutex_init(&panel->panel_lock);

+1 −0
Original line number Diff line number Diff line
@@ -203,6 +203,7 @@ struct dsi_panel {
	enum dsi_dms_mode dms_mode;

	bool sync_broadcast_en;
	int power_mode;
};

static inline bool dsi_panel_ulps_feature_enabled(struct dsi_panel *panel)