diff options
| author | Dave Airlie <airlied@redhat.com> | 2025-06-23 10:49:25 +1000 | 
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2025-06-23 10:49:27 +1000 | 
| commit | 36c52fb703e90388285963fc8f03cf60f76cbe4c (patch) | |
| tree | ad4ac082742408d54a7a165d9fb006d06f8d064a /include | |
| parent | 9356b50af547e872d9191754c72c83ff6be3b97c (diff) | |
| parent | b2f7e30d2e4a34fcee8111d713bef4f29dc23c77 (diff) | |
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 <airlied@redhat.com>
From: Jani Nikula <jani.nikula@intel.com>
Link: https://lore.kernel.org/r/fff9f231850ed410bd81b53de43eff0b98240d31@intel.com
Diffstat (limited to 'include')
| -rw-r--r-- | include/drm/display/drm_dp.h | 24 | ||||
| -rw-r--r-- | include/drm/display/drm_dp_helper.h | 6 | ||||
| -rw-r--r-- | include/drm/drm_connector.h | 4 | ||||
| -rw-r--r-- | include/drm/drm_edid.h | 8 | 
4 files changed, 35 insertions, 7 deletions
diff --git a/include/drm/display/drm_dp.h b/include/drm/display/drm_dp.h index 3001c0b6e7bb..811e9238a77c 100644 --- a/include/drm/display/drm_dp.h +++ b/include/drm/display/drm_dp.h @@ -547,16 +547,28 @@  /* DFP Capability Extension */  #define DP_DFP_CAPABILITY_EXTENSION_SUPPORT	0x0a3	/* 2.0 */ -#define DP_PANEL_REPLAY_CAP				0x0b0  /* DP 2.0 */ +#define DP_PANEL_REPLAY_CAP_SUPPORT			0x0b0  /* DP 2.0 */  # define DP_PANEL_REPLAY_SUPPORT			(1 << 0)  # define DP_PANEL_REPLAY_SU_SUPPORT			(1 << 1)  # define DP_PANEL_REPLAY_EARLY_TRANSPORT_SUPPORT	(1 << 2) /* eDP 1.5 */ -#define DP_PANEL_PANEL_REPLAY_CAPABILITY		0xb1 -# define DP_PANEL_PANEL_REPLAY_SU_GRANULARITY_REQUIRED	(1 << 5) - -#define DP_PANEL_PANEL_REPLAY_X_GRANULARITY		0xb2 -#define DP_PANEL_PANEL_REPLAY_Y_GRANULARITY		0xb4 +#define DP_PANEL_REPLAY_CAP_SIZE	7 + +#define DP_PANEL_REPLAY_CAP_CAPABILITY					0xb1 +# define DP_PANEL_REPLAY_DSC_DECODE_CAPABILITY_IN_PR_SHIFT			1 /* DP 2.1a */ +# define DP_PANEL_REPLAY_DSC_DECODE_CAPABILITY_IN_PR_MASK			(3 << DP_PANEL_REPLAY_DSC_DECODE_CAPABILITY_IN_PR_SHIFT) +# define DP_DSC_DECODE_CAPABILITY_IN_PR_SUPPORTED				0x00 +# define DP_DSC_DECODE_CAPABILITY_IN_PR_FULL_FRAME_ONLY				0x01 +# define DP_DSC_DECODE_CAPABILITY_IN_PR_NOT_SUPPORTED				0x02 +# define DP_DSC_DECODE_CAPABILITY_IN_PR_RESERVED				0x03 +# define DP_PANEL_REPLAY_ASYNC_VIDEO_TIMING_NOT_SUPPORTED_IN_PR			(1 << 3) +# define DP_PANEL_REPLAY_DSC_CRC_OF_MULTIPLE_SUS_SUPPORTED			(1 << 4) +# define DP_PANEL_REPLAY_SU_GRANULARITY_REQUIRED				(1 << 5) +# define DP_PANEL_REPLAY_SU_Y_GRANULARITY_EXTENDED_CAPABILITY_SUPPORTED		(1 << 6) +# define DP_PANEL_REPLAY_LINK_OFF_SUPPORTED_IN_PR_AFTER_ADAPTIVE_SYNC_SDP	(1 << 7) + +#define DP_PANEL_REPLAY_CAP_X_GRANULARITY		0xb2 +#define DP_PANEL_REPLAY_CAP_Y_GRANULARITY		0xb4  /* Link Configuration */  #define	DP_LINK_BW_SET		            0x100 diff --git a/include/drm/display/drm_dp_helper.h b/include/drm/display/drm_dp_helper.h index e4ca35143ff9..3e35a68b2b41 100644 --- a/include/drm/display/drm_dp_helper.h +++ b/include/drm/display/drm_dp_helper.h @@ -523,10 +523,16 @@ struct drm_dp_aux {  	 * @no_zero_sized: If the hw can't use zero sized transfers (NVIDIA)  	 */  	bool no_zero_sized; + +	/** +	 * @dpcd_probe_disabled: If probing before a DPCD access is disabled. +	 */ +	bool dpcd_probe_disabled;  };  int drm_dp_dpcd_probe(struct drm_dp_aux *aux, unsigned int offset);  void drm_dp_dpcd_set_powered(struct drm_dp_aux *aux, bool powered); +void drm_dp_dpcd_set_probe(struct drm_dp_aux *aux, bool enable);  ssize_t drm_dp_dpcd_read(struct drm_dp_aux *aux, unsigned int offset,  			 void *buffer, size_t size);  ssize_t drm_dp_dpcd_write(struct drm_dp_aux *aux, unsigned int offset, diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h index 73903c3c842f..137773dd138e 100644 --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h @@ -843,7 +843,9 @@ struct drm_display_info {  	int vics_len;  	/** -	 * @quirks: EDID based quirks. Internal to EDID parsing. +	 * @quirks: EDID based quirks. DRM core and drivers can query the +	 * @drm_edid_quirk quirks using drm_edid_has_quirk(), the rest of +	 * the quirks also tracked here are internal to EDID parsing.  	 */  	u32 quirks; diff --git a/include/drm/drm_edid.h b/include/drm/drm_edid.h index b38409670868..3d1aecfec9b2 100644 --- a/include/drm/drm_edid.h +++ b/include/drm/drm_edid.h @@ -109,6 +109,13 @@ struct detailed_data_string {  #define DRM_EDID_CVT_FLAGS_STANDARD_BLANKING (1 << 3)  #define DRM_EDID_CVT_FLAGS_REDUCED_BLANKING  (1 << 4) +enum drm_edid_quirk { +	/* Do a dummy read before DPCD accesses, to prevent corruption. */ +	DRM_EDID_QUIRK_DP_DPCD_PROBE, + +	DRM_EDID_QUIRK_NUM, +}; +  struct detailed_data_monitor_range {  	u8 min_vfreq;  	u8 max_vfreq; @@ -476,5 +483,6 @@ void drm_edid_print_product_id(struct drm_printer *p,  u32 drm_edid_get_panel_id(const struct drm_edid *drm_edid);  bool drm_edid_match(const struct drm_edid *drm_edid,  		    const struct drm_edid_ident *ident); +bool drm_edid_has_quirk(struct drm_connector *connector, enum drm_edid_quirk quirk);  #endif /* __DRM_EDID_H__ */  | 
