Skip to content

Commit 36c52fb

Browse files
committed
Merge tag 'drm-intel-next-2025-06-18' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next
drm/i915 feature pull for v6.17: Features and functionality: - Add support for DSC fractional link bpp on DP MST (Imre) - Add support for simultaneous Panel Replay and Adaptive Sync (Jouni) - Add support for PTL+ double buffered LUT registers (Chaitanya, Ville) - Add PIPEDMC event handling in preparation for flip queue (Ville) Refactoring and cleanups: - Rename lots of DPLL interfaces to unify them (Suraj) - Allocate struct intel_display dynamically (Jani) - Abstract VLV IOSF sideband better (Jani) - Use str_true_false() helper (Yumeng Fang) - Refactor DSB code in preparation for flip queue (Ville) - Use drm_modeset_lock_assert_held() instead of open coding (Luca) - Remove unused arg from skl_scaler_get_filter_select() (Luca) - Split out a separate display register header (Jani) - Abstract DRAM detection better (Jani) - Convert LPT/WPT SBI sideband to struct intel_display (Jani) Fixes: - Fix DSI HS command dispatch with forced pipeline flush (Gareth Yu) - Fix BMG and LNL+ DP adaptive sync SDP programming (Ankit) - Fix error path for xe display workqueue allocation (Haoxiang Li) - Disable DP AUX access probe where not required (Imre) - Fix DKL PHY access if the port is invalid (Luca) - Fix PSR2_SU_STATUS access on ADL+ (Jouni) - Add sanity checks for porch and sync on BXT/GLK DSI (Ville) DRM core changes: - Change AUX DPCD access probe address (Imre) - Refactor EDID quirks, amd make them available to drivers (Imre) - Add quirk for DPCD access probe (Imre) - Add DPCD definitions for Panel Replay capabilities (Jouni) Merges: - Backmerges to sync with v6.15-rcs and v6.16-rc1 (Jani) Signed-off-by: Dave Airlie <[email protected]> From: Jani Nikula <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2 parents 9356b50 + b2f7e30 commit 36c52fb

File tree

187 files changed

+6322
-5213
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

187 files changed

+6322
-5213
lines changed

drivers/gpu/drm/display/drm_dp_helper.c

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -692,6 +692,34 @@ void drm_dp_dpcd_set_powered(struct drm_dp_aux *aux, bool powered)
692692
}
693693
EXPORT_SYMBOL(drm_dp_dpcd_set_powered);
694694

695+
/**
696+
* drm_dp_dpcd_set_probe() - Set whether a probing before DPCD access is done
697+
* @aux: DisplayPort AUX channel
698+
* @enable: Enable the probing if required
699+
*/
700+
void drm_dp_dpcd_set_probe(struct drm_dp_aux *aux, bool enable)
701+
{
702+
WRITE_ONCE(aux->dpcd_probe_disabled, !enable);
703+
}
704+
EXPORT_SYMBOL(drm_dp_dpcd_set_probe);
705+
706+
static bool dpcd_access_needs_probe(struct drm_dp_aux *aux)
707+
{
708+
/*
709+
* HP ZR24w corrupts the first DPCD access after entering power save
710+
* mode. Eg. on a read, the entire buffer will be filled with the same
711+
* byte. Do a throw away read to avoid corrupting anything we care
712+
* about. Afterwards things will work correctly until the monitor
713+
* gets woken up and subsequently re-enters power save mode.
714+
*
715+
* The user pressing any button on the monitor is enough to wake it
716+
* up, so there is no particularly good place to do the workaround.
717+
* We just have to do it before any DPCD access and hope that the
718+
* monitor doesn't power down exactly after the throw away read.
719+
*/
720+
return !aux->is_remote && !READ_ONCE(aux->dpcd_probe_disabled);
721+
}
722+
695723
/**
696724
* drm_dp_dpcd_read() - read a series of bytes from the DPCD
697725
* @aux: DisplayPort AUX channel (SST or MST)
@@ -713,20 +741,8 @@ ssize_t drm_dp_dpcd_read(struct drm_dp_aux *aux, unsigned int offset,
713741
{
714742
int ret;
715743

716-
/*
717-
* HP ZR24w corrupts the first DPCD access after entering power save
718-
* mode. Eg. on a read, the entire buffer will be filled with the same
719-
* byte. Do a throw away read to avoid corrupting anything we care
720-
* about. Afterwards things will work correctly until the monitor
721-
* gets woken up and subsequently re-enters power save mode.
722-
*
723-
* The user pressing any button on the monitor is enough to wake it
724-
* up, so there is no particularly good place to do the workaround.
725-
* We just have to do it before any DPCD access and hope that the
726-
* monitor doesn't power down exactly after the throw away read.
727-
*/
728-
if (!aux->is_remote) {
729-
ret = drm_dp_dpcd_probe(aux, DP_DPCD_REV);
744+
if (dpcd_access_needs_probe(aux)) {
745+
ret = drm_dp_dpcd_probe(aux, DP_LANE0_1_STATUS);
730746
if (ret < 0)
731747
return ret;
732748
}

0 commit comments

Comments
 (0)