|
@@ -4873,6 +4873,7 @@ static int sde_crtc_atomic_check(struct drm_crtc *crtc,
|
|
struct sde_multirect_plane_states *multirect_plane = NULL;
|
|
struct sde_multirect_plane_states *multirect_plane = NULL;
|
|
struct drm_connector *conn;
|
|
struct drm_connector *conn;
|
|
struct drm_connector_list_iter conn_iter;
|
|
struct drm_connector_list_iter conn_iter;
|
|
|
|
+ struct drm_connector_state *conn_state;
|
|
|
|
|
|
if (!crtc) {
|
|
if (!crtc) {
|
|
SDE_ERROR("invalid crtc\n");
|
|
SDE_ERROR("invalid crtc\n");
|
|
@@ -4908,6 +4909,19 @@ static int sde_crtc_atomic_check(struct drm_crtc *crtc,
|
|
if (state->active_changed)
|
|
if (state->active_changed)
|
|
state->mode_changed = true;
|
|
state->mode_changed = true;
|
|
|
|
|
|
|
|
+ /* identify connectors attached to this crtc */
|
|
|
|
+ cstate->num_connectors = 0;
|
|
|
|
+ drm_connector_list_iter_begin(dev, &conn_iter);
|
|
|
|
+ drm_for_each_connector_iter(conn, &conn_iter) {
|
|
|
|
+ conn_state = drm_atomic_get_connector_state(state->state, conn);
|
|
|
|
+
|
|
|
|
+ if (conn_state && conn_state->crtc == crtc &&
|
|
|
|
+ cstate->num_connectors < MAX_CONNECTORS) {
|
|
|
|
+ cstate->connectors[cstate->num_connectors++] = conn;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ drm_connector_list_iter_end(&conn_iter);
|
|
|
|
+
|
|
rc = _sde_crtc_check_dest_scaler_data(crtc, state);
|
|
rc = _sde_crtc_check_dest_scaler_data(crtc, state);
|
|
if (rc) {
|
|
if (rc) {
|
|
SDE_ERROR("crtc%d failed dest scaler check %d\n",
|
|
SDE_ERROR("crtc%d failed dest scaler check %d\n",
|
|
@@ -4922,17 +4936,6 @@ static int sde_crtc_atomic_check(struct drm_crtc *crtc,
|
|
goto end;
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
|
|
- /* identify connectors attached to this crtc */
|
|
|
|
- cstate->num_connectors = 0;
|
|
|
|
-
|
|
|
|
- drm_connector_list_iter_begin(dev, &conn_iter);
|
|
|
|
- drm_for_each_connector_iter(conn, &conn_iter)
|
|
|
|
- if (conn->state && conn->state->crtc == crtc &&
|
|
|
|
- cstate->num_connectors < MAX_CONNECTORS) {
|
|
|
|
- cstate->connectors[cstate->num_connectors++] = conn;
|
|
|
|
- }
|
|
|
|
- drm_connector_list_iter_end(&conn_iter);
|
|
|
|
-
|
|
|
|
_sde_crtc_setup_is_ppsplit(state);
|
|
_sde_crtc_setup_is_ppsplit(state);
|
|
_sde_crtc_setup_lm_bounds(crtc, state);
|
|
_sde_crtc_setup_lm_bounds(crtc, state);
|
|
|
|
|