[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