mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-09 17:17:04 -04:00
drm/i915: Extract mbus_ctl_join_update()
We'll be wanting to reprogram the MBUS_CTL register during an upcoming MBUS sanitation stage. Extract the reprogramming into a helper that doesn't depend on the full atomic state so that it can be reused. We'll stick to sturct drm_i915_private for now (instead of struct intel_display) since the rest of the skl wm code does the same, and we might need to bakport this. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20241031155646.15165-5-ville.syrjala@linux.intel.com Reviewed-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
@@ -3427,22 +3427,13 @@ static enum pipe intel_mbus_joined_pipe(struct intel_atomic_state *state,
|
||||
return INVALID_PIPE;
|
||||
}
|
||||
|
||||
static void intel_dbuf_mbus_join_update(struct intel_atomic_state *state,
|
||||
enum pipe pipe)
|
||||
static void mbus_ctl_join_update(struct drm_i915_private *i915,
|
||||
const struct intel_dbuf_state *dbuf_state,
|
||||
enum pipe pipe)
|
||||
{
|
||||
struct drm_i915_private *i915 = to_i915(state->base.dev);
|
||||
const struct intel_dbuf_state *old_dbuf_state =
|
||||
intel_atomic_get_old_dbuf_state(state);
|
||||
const struct intel_dbuf_state *new_dbuf_state =
|
||||
intel_atomic_get_new_dbuf_state(state);
|
||||
u32 mbus_ctl;
|
||||
|
||||
drm_dbg_kms(&i915->drm, "Changing mbus joined: %s -> %s (pipe: %c)\n",
|
||||
str_yes_no(old_dbuf_state->joined_mbus),
|
||||
str_yes_no(new_dbuf_state->joined_mbus),
|
||||
pipe != INVALID_PIPE ? pipe_name(pipe) : '*');
|
||||
|
||||
if (new_dbuf_state->joined_mbus)
|
||||
if (dbuf_state->joined_mbus)
|
||||
mbus_ctl = MBUS_HASHING_MODE_1x4 | MBUS_JOIN;
|
||||
else
|
||||
mbus_ctl = MBUS_HASHING_MODE_2x2;
|
||||
@@ -3457,6 +3448,23 @@ static void intel_dbuf_mbus_join_update(struct intel_atomic_state *state,
|
||||
MBUS_JOIN_PIPE_SELECT_MASK, mbus_ctl);
|
||||
}
|
||||
|
||||
static void intel_dbuf_mbus_join_update(struct intel_atomic_state *state,
|
||||
enum pipe pipe)
|
||||
{
|
||||
struct drm_i915_private *i915 = to_i915(state->base.dev);
|
||||
const struct intel_dbuf_state *old_dbuf_state =
|
||||
intel_atomic_get_old_dbuf_state(state);
|
||||
const struct intel_dbuf_state *new_dbuf_state =
|
||||
intel_atomic_get_new_dbuf_state(state);
|
||||
|
||||
drm_dbg_kms(&i915->drm, "Changing mbus joined: %s -> %s (pipe: %c)\n",
|
||||
str_yes_no(old_dbuf_state->joined_mbus),
|
||||
str_yes_no(new_dbuf_state->joined_mbus),
|
||||
pipe != INVALID_PIPE ? pipe_name(pipe) : '*');
|
||||
|
||||
mbus_ctl_join_update(i915, new_dbuf_state, pipe);
|
||||
}
|
||||
|
||||
void intel_dbuf_mbus_pre_ddb_update(struct intel_atomic_state *state)
|
||||
{
|
||||
const struct intel_dbuf_state *new_dbuf_state =
|
||||
|
||||
Reference in New Issue
Block a user