mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 13:14:02 +02:00
Merge tag 'drm-intel-fixes-2026-09-17' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-fixes
drm/i915 fixes for 7.3-rc4: - Revert a commit touching registers that don't necessarily exist - Check for negative numbers before passing to BIT() Signed-off-by: Dave Airlie <airlied@redhat.com> From: Jani Nikula <jani.nikula@intel.com> Link: https://patch.msgid.link/3f86e0ede95fb3d52053934ac43c5271812428f5@intel.com
This commit is contained in:
commit
cd011719ba
|
|
@ -530,18 +530,13 @@ static int i9xx_check_cursor(struct intel_crtc_state *crtc_state,
|
|||
}
|
||||
|
||||
static void i9xx_cursor_disable_sel_fetch_arm(struct intel_dsb *dsb,
|
||||
struct intel_plane *plane)
|
||||
struct intel_plane *plane,
|
||||
const struct intel_crtc_state *crtc_state)
|
||||
{
|
||||
struct intel_display *display = to_intel_display(plane);
|
||||
enum pipe pipe = plane->pipe;
|
||||
|
||||
/*
|
||||
* Clear this whenever the hardware has selective fetch, not just when
|
||||
* the current state uses it. The cursor may have been enabled with
|
||||
* selective fetch earlier and had its enable bit orphaned when the
|
||||
* feature was switched off.
|
||||
*/
|
||||
if (!HAS_PSR2_SEL_FETCH(display))
|
||||
if (!crtc_state->enable_psr2_sel_fetch)
|
||||
return;
|
||||
|
||||
intel_de_write_dsb(display, dsb, SEL_FETCH_CUR_CTL(pipe), 0);
|
||||
|
|
@ -591,7 +586,7 @@ static void i9xx_cursor_update_sel_fetch_arm(struct intel_dsb *dsb,
|
|||
if (crtc_state->enable_psr2_su_region_et)
|
||||
wa_16021440873(dsb, plane, crtc_state, plane_state);
|
||||
else
|
||||
i9xx_cursor_disable_sel_fetch_arm(dsb, plane);
|
||||
i9xx_cursor_disable_sel_fetch_arm(dsb, plane, crtc_state);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -700,7 +695,7 @@ static void i9xx_cursor_update_arm(struct intel_dsb *dsb,
|
|||
if (plane_state)
|
||||
i9xx_cursor_update_sel_fetch_arm(dsb, plane, crtc_state, plane_state);
|
||||
else
|
||||
i9xx_cursor_disable_sel_fetch_arm(dsb, plane);
|
||||
i9xx_cursor_disable_sel_fetch_arm(dsb, plane, crtc_state);
|
||||
|
||||
if (plane->cursor.base != base ||
|
||||
plane->cursor.size != fbc_ctl ||
|
||||
|
|
|
|||
|
|
@ -426,12 +426,15 @@ calc_allowed_config_filter(struct intel_dp_link_caps *link_caps,
|
|||
const struct intel_dp_link_config *forced_params)
|
||||
{
|
||||
struct intel_dp_link_caps_filter allowed_configs = INTEL_DP_LINK_CAPS_FILTER_NONE;
|
||||
struct intel_display *display = to_intel_display(link_caps->dp);
|
||||
struct intel_dp_link_caps_order order = bw_desc_config_order();
|
||||
struct intel_dp_link_caps_iter iter;
|
||||
struct intel_dp_link_config config;
|
||||
|
||||
iter_start(&iter, link_caps, order, enabled_configs);
|
||||
for_each_dp_link_config(&iter, &config) {
|
||||
int config_idx;
|
||||
|
||||
if (forced_params->rate &&
|
||||
forced_params->rate != config.rate)
|
||||
continue;
|
||||
|
|
@ -446,7 +449,11 @@ calc_allowed_config_filter(struct intel_dp_link_caps *link_caps,
|
|||
if (config.lane_count > max_limits->lane_count)
|
||||
continue;
|
||||
|
||||
allowed_configs.config_mask |= BIT(iter_pos_to_idx(link_caps, order, iter.pos));
|
||||
config_idx = iter_pos_to_idx(link_caps, order, iter.pos);
|
||||
if (drm_WARN_ON(display->drm, config_idx < 0))
|
||||
continue;
|
||||
|
||||
allowed_configs.config_mask |= BIT(config_idx);
|
||||
}
|
||||
intel_dp_link_caps_iter_end(&iter);
|
||||
|
||||
|
|
|
|||
|
|
@ -879,18 +879,13 @@ skl_plane_disable_arm(struct intel_dsb *dsb,
|
|||
}
|
||||
|
||||
static void icl_plane_disable_sel_fetch_arm(struct intel_dsb *dsb,
|
||||
struct intel_plane *plane)
|
||||
struct intel_plane *plane,
|
||||
const struct intel_crtc_state *crtc_state)
|
||||
{
|
||||
struct intel_display *display = to_intel_display(plane);
|
||||
enum pipe pipe = plane->pipe;
|
||||
|
||||
/*
|
||||
* Clear this whenever the hardware has selective fetch, not just when
|
||||
* the current state uses it. The plane may have been enabled with
|
||||
* selective fetch earlier and had its enable bit orphaned when the
|
||||
* feature was switched off.
|
||||
*/
|
||||
if (!HAS_PSR2_SEL_FETCH(display))
|
||||
if (!crtc_state->enable_psr2_sel_fetch)
|
||||
return;
|
||||
|
||||
intel_de_write_dsb(display, dsb, SEL_FETCH_PLANE_CTL(pipe, plane->id), 0);
|
||||
|
|
@ -926,7 +921,7 @@ icl_plane_disable_arm(struct intel_dsb *dsb,
|
|||
|
||||
skl_write_plane_wm(dsb, plane, crtc_state);
|
||||
|
||||
icl_plane_disable_sel_fetch_arm(dsb, plane);
|
||||
icl_plane_disable_sel_fetch_arm(dsb, plane, crtc_state);
|
||||
|
||||
if (plane_has_normalizer(plane))
|
||||
intel_de_write_dsb(display, dsb,
|
||||
|
|
@ -1646,7 +1641,7 @@ static void icl_plane_update_sel_fetch_arm(struct intel_dsb *dsb,
|
|||
intel_de_write_dsb(display, dsb, SEL_FETCH_PLANE_CTL(pipe, plane->id),
|
||||
SEL_FETCH_PLANE_CTL_ENABLE);
|
||||
else
|
||||
icl_plane_disable_sel_fetch_arm(dsb, plane);
|
||||
icl_plane_disable_sel_fetch_arm(dsb, plane, crtc_state);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user