[PATCH 33/36] drm/i915: Abstract scaler_users a bit

Ville Syrjala ville.syrjala at linux.intel.com
Wed Dec 18 16:10:50 UTC 2019


From: Ville Syrjälä <ville.syrjala at linux.intel.com>

Instead of forcing everyone to know what magic bits we need to set
in the scaler_users bitmask provide two functions to abstract it
away.

Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_atomic.c  | 10 ++++++++++
 drivers/gpu/drm/i915/display/intel_atomic.h  |  4 +++-
 drivers/gpu/drm/i915/display/intel_display.c | 12 +++++-------
 3 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_atomic.c b/drivers/gpu/drm/i915/display/intel_atomic.c
index e6364a978cfe..5ade7c1a6114 100644
--- a/drivers/gpu/drm/i915/display/intel_atomic.c
+++ b/drivers/gpu/drm/i915/display/intel_atomic.c
@@ -262,6 +262,16 @@ intel_crtc_destroy_state(struct drm_crtc *crtc,
 	kfree(crtc_state);
 }
 
+int intel_plane_scaler_user(struct intel_plane *plane)
+{
+	return drm_plane_index(&plane->base);
+}
+
+int intel_crtc_scaler_user(void)
+{
+	return SKL_CRTC_INDEX;
+}
+
 bool skl_can_use_hq_scaler(const struct intel_crtc_state *crtc_state)
 {
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
diff --git a/drivers/gpu/drm/i915/display/intel_atomic.h b/drivers/gpu/drm/i915/display/intel_atomic.h
index 0e0b6f6cd5f9..4cb565fd9c9b 100644
--- a/drivers/gpu/drm/i915/display/intel_atomic.h
+++ b/drivers/gpu/drm/i915/display/intel_atomic.h
@@ -19,6 +19,7 @@ struct drm_property;
 struct intel_atomic_state;
 struct intel_crtc;
 struct intel_crtc_state;
+struct intel_plane;
 
 int intel_digital_connector_atomic_get_property(struct drm_connector *connector,
 						const struct drm_connector_state *state,
@@ -49,9 +50,10 @@ int intel_atomic_setup_scalers(struct drm_i915_private *dev_priv,
 			       struct intel_crtc *intel_crtc,
 			       struct intel_crtc_state *crtc_state);
 bool skl_can_use_hq_scaler(const struct intel_crtc_state *crtc_state);
+int intel_plane_scaler_user(struct intel_plane *plane);
+int intel_crtc_scaler_user(void);
 
 int intel_atomic_lock_global_state(struct intel_atomic_state *state);
-
 int intel_atomic_serialize_global_state(struct intel_atomic_state *state);
 
 #endif /* __INTEL_ATOMIC_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 3994f230b126..b38c2d8ffde2 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -5754,7 +5754,7 @@ skl_update_scaler(struct intel_crtc_state *crtc_state, bool force_detach,
 	 */
 	if (force_detach || !need_scaler) {
 		if (*scaler_id != INVALID_SCALER) {
-			scaler_state->scaler_users &= ~(1 << scaler_user);
+			scaler_state->scaler_users &= ~BIT(scaler_user);
 			scaler_state->scalers[*scaler_id].in_use = false;
 
 			DRM_DEBUG_KMS("scaler_user index %u.%u: "
@@ -5781,7 +5781,7 @@ skl_update_scaler(struct intel_crtc_state *crtc_state, bool force_detach,
 		return ret;
 
 	/* mark this pipe/plane as a scaler user in crtc_state */
-	scaler_state->scaler_users |= (1 << scaler_user);
+	scaler_state->scaler_users |= BIT(scaler_user);
 	DRM_DEBUG_KMS("scaler_user index %u.%u: "
 		"staged scaling request for %ux%u->%ux%u scaler_users = 0x%x\n",
 		intel_crtc->pipe, scaler_user, src_w, src_h, dst_w, dst_h,
@@ -5805,7 +5805,7 @@ static int skl_update_scaler_crtc(struct intel_crtc_state *crtc_state)
 	}
 
 	return skl_update_scaler(crtc_state, !crtc_state->hw.active,
-				 SKL_CRTC_INDEX,
+				 intel_crtc_scaler_user(),
 				 &crtc_state->pch_pfit.scaler_id,
 				 crtc_state->pipe_src_w, crtc_state->pipe_src_h,
 				 width, height, NULL,
@@ -5838,7 +5838,7 @@ static int skl_update_scaler_plane(struct intel_crtc_state *crtc_state,
 		need_scaler = true;
 
 	ret = skl_update_scaler(crtc_state, force_detach,
-				drm_plane_index(&intel_plane->base),
+				intel_plane_scaler_user(intel_plane),
 				&plane_state->scaler_id,
 				drm_rect_width(&plane_state->uapi.src) >> 16,
 				drm_rect_height(&plane_state->uapi.src) >> 16,
@@ -10064,9 +10064,7 @@ static void skylake_get_pfit_config(struct intel_crtc_state *crtc_state)
 	}
 
 	if (crtc_state->pch_pfit.scaler_id != INVALID_SCALER)
-		scaler_state->scaler_users |= (1 << SKL_CRTC_INDEX);
-	else
-		scaler_state->scaler_users &= ~(1 << SKL_CRTC_INDEX);
+		scaler_state->scaler_users |= BIT(intel_crtc_scaler_user());
 }
 
 static void
-- 
2.23.0



More information about the Intel-gfx-trybot mailing list