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

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

Merge "disp: msm: update seamless check for connector"

parents e9fb233c 977e4bd2
Loading
Loading
Loading
Loading
+4 −18
Original line number Diff line number Diff line
@@ -11,7 +11,6 @@
#include "sde_connector.h"
#include "dsi_drm.h"
#include "sde_trace.h"
#include "sde_encoder.h"

#define to_dsi_bridge(x)     container_of((x), struct dsi_bridge, base)
#define to_dsi_state(x)      container_of((x), struct dsi_connector_state, base)
@@ -341,8 +340,6 @@ static bool dsi_bridge_mode_fixup(struct drm_bridge *bridge,
	struct dsi_display *display;
	struct dsi_display_mode dsi_mode, cur_dsi_mode, *panel_dsi_mode;
	struct drm_crtc_state *crtc_state;
	bool clone_mode = false;
	struct drm_encoder *encoder;

	crtc_state = container_of(mode, struct drm_crtc_state, mode);

@@ -407,14 +404,6 @@ static bool dsi_bridge_mode_fixup(struct drm_bridge *bridge,
			return false;
		}

		drm_for_each_encoder(encoder, crtc_state->crtc->dev) {
			if (encoder->crtc != crtc_state->crtc)
				continue;

			if (sde_encoder_in_clone_mode(encoder))
				clone_mode = true;
		}

		/* No panel mode switch when drm pipeline is changing */
		if ((dsi_mode.panel_mode != cur_dsi_mode.panel_mode) &&
			(!(dsi_mode.dsi_mode_flags & DSI_MODE_FLAG_VRR)) &&
@@ -431,16 +420,13 @@ static bool dsi_bridge_mode_fixup(struct drm_bridge *bridge,
			dsi_mode.dsi_mode_flags |= DSI_MODE_FLAG_DMS;
	}

	/* Reject seamless transition when active/connectors changed */
	if ((crtc_state->active_changed ||
		(crtc_state->connectors_changed && clone_mode)) &&
	/* Reject seamless transition when active changed */
	if (crtc_state->active_changed &&
		((dsi_mode.dsi_mode_flags & DSI_MODE_FLAG_VRR) ||
		(dsi_mode.dsi_mode_flags & DSI_MODE_FLAG_POMS) ||
		(dsi_mode.dsi_mode_flags & DSI_MODE_FLAG_DYN_CLK))) {
		DSI_ERR("seamless on active/conn(%d/%d) changed 0x%x\n",
			crtc_state->active_changed,
			crtc_state->connectors_changed,
			dsi_mode.dsi_mode_flags);
		DSI_ERR("seamless upon active changed 0x%x %d\n",
			dsi_mode.dsi_mode_flags, crtc_state->active_changed);
		return false;
	}

+5 −1
Original line number Diff line number Diff line
/*
 * Copyright (c) 2016-2019, The Linux Foundation. All rights reserved.
 * Copyright (c) 2016-2020, The Linux Foundation. All rights reserved.
 * Copyright (C) 2014 Red Hat
 * Author: Rob Clark <robdclark@gmail.com>
 *
@@ -82,6 +82,10 @@ static inline bool _msm_seamless_for_conn(struct drm_connector *connector,
	if (enable)
		return false;

	if (!connector->state->crtc &&
		old_conn_state->crtc->state->connectors_changed)
		return false;

	if (msm_is_mode_seamless(&connector->encoder->crtc->state->mode))
		return true;