Skip to content

Commit fad3dad

Browse files
committed
Merge tag 'drm-intel-next-2024-04-17-1' of https://anongit.freedesktop.org/git/drm/drm-intel into drm-next
Core Changes (DRM): - Fix documentation of DP tunnel functions (Imre) - DP MST read sideband messaging cap (Jani) - Preparation patches for Adaptive Sync SDP Support for DP (Mitul) Driver Changes: i915 core (non-display): - Documentation improvements (Nirmoy) - Add includes for BUG_ON/BUILD_BUG_ON in i915_memcpy.c (Joonas) - Do not print 'pxp init failed with 0' when it succeed (Jose) - Clean-up, including removal of dead code for unsupported platforms (Lucas) - Adding new DG2 PCI ID (Ravi) {i915,xe} display: - Spelling fix (Colin Ian) - Document CDCLK components (Gustavo) - Lunar Lake display enabling, including cdclk and other refactors (Gustavo, Bala) - BIOS/VBT/opregion related refactor (Jani, Ville, RK) - Save a few bytes of memory using {kstrdup,kfree}_const variant (Christophe) - Digital port related refactor/clean-up (Ville) - Fix 2s boot time regression on DP panel replay init (Animesh) - Remove redundant drm_rect_visible() overlay use (Arthur) - DSC HW state readout fixes (Imre) - Remove duplication on audio enable/disable on SDVO and g4x+ DP (Ville) - Disable AuxCCS framebuffers if built for Xe (Juha-Pekka) - Fix DSI init order (Ville) - DRRS related refactor and fixes (Bhanuprakash) - Fix DSB vblank waits with VRR (Ville) - General improvements on register name and use of REG_BIT (Ville) - Some display power well related improvements (Ville) - FBC changes for better w/a handling (Ville) - Make crtc disable more atomic (Ville) - Fix hwmon locking inversion in sysfs getter (Janusz) - Increase DP idle pattern wait timeout to 2ms (Shekhar) - PSR related fixes and improvents (Jouni) - Start using container_of_const() for some extra const safety (Ville) - Use drm_printer more on display code (Ville) - Fix Jasper Lake boot freeze (Jonathon) - Update Pipe src size check in skl_update_scaler (Ankit) - Enable MST mode for 128b/132b single-stream sideband (Jani) - Pass encoder around more for port/phy checks (Jani) - Some initial work to make display code more independent from i915 (Jani) - Pre-populate the cursor physical dma address (Ville) - Do not bump min backlight brightness to max on enable (Gareth) - Fix MTL supported DP rates - removal of UHBR13.5 (Arun) - Fix the computation for compressed_bpp for DISPLAY < 1 (Ankit) - Bigjoiner modeset sequence redesign and MST support (Ville) - Enable Adaptive Sync SDP Support for DP (Mitul) - Implemnt vblank sycnhronized mbus joining changes (Ville, Stanislav) - HDCP related fixes (Suraj) - Fix i915_display_info debugfs when connectors are not active (Ville) - Clean up on Xe compat layer (Jani) - Add jitter WAs for MST/FEC/DSC links (Imre) - DMC wakelock implementation (Luca) Signed-off-by: Dave Airlie <[email protected]> # -----BEGIN PGP SIGNATURE----- # # iQEzBAABCAAdFiEEbSBwaO7dZQkcLOKj+mJfZA7rE8oFAmYfzQEACgkQ+mJfZA7r # E8qYvAf/T8KrEewHOWz7NOaKcFRCNYaF4QTdVOfgHUYBX5NPDF/xzwFdHCL8QWQu # bwKwE2b94VEyruG3DYwTMd8GNcDxrsOrmU0IZe3PVkm+BvHLTmrOqL6BlCd85zXF # 02IuE+LCaWREmmpLMcsDMxsaaq8yp+cw9/F0jJDrH6LiyfxFriefxyZYpGYjRCuv # 8GP1fHXLFV2yys4rveR/+y9xIhgy82mVcg3/Kfk0+er7gALkY6Vc0N38wedET9MZ # ZPfVidBeaTkIKcCDFKnFzGjG+9rNQ7NFrXyS7Hl97VolGt2l03qGGPNW1PouDiUx # 7Y8CJOc+1k9wyBMKl0a/NQBRAqSZBQ== # =JvZN # -----END PGP SIGNATURE----- # gpg: Signature made Wed 17 Apr 2024 23:22:09 AEST # gpg: using RSA key 6D207068EEDD65091C2CE2A3FA625F640EEB13CA # gpg: Good signature from "Rodrigo Vivi <[email protected]>" [unknown] # gpg: aka "Rodrigo Vivi <[email protected]>" [unknown] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 6D20 7068 EEDD 6509 1C2C E2A3 FA62 5F64 0EEB 13CA From: Rodrigo Vivi <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
2 parents 3463315 + 700c340 commit fad3dad

File tree

140 files changed

+3622
-2989
lines changed

Some content is hidden

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

140 files changed

+3622
-2989
lines changed

Documentation/gpu/i915.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,15 @@ DMC Firmware Support
204204
.. kernel-doc:: drivers/gpu/drm/i915/display/intel_dmc.c
205205
:internal:
206206

207+
DMC wakelock support
208+
--------------------
209+
210+
.. kernel-doc:: drivers/gpu/drm/i915/display/intel_dmc_wl.c
211+
:doc: DMC wakelock support
212+
213+
.. kernel-doc:: drivers/gpu/drm/i915/display/intel_dmc_wl.c
214+
:internal:
215+
207216
Video BIOS Table (VBT)
208217
----------------------
209218

Documentation/gpu/rfc/i915_vm_bind.h

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,11 @@ struct drm_i915_gem_timeline_fence {
9393
* Multiple VA mappings can be created to the same section of the object
9494
* (aliasing).
9595
*
96-
* The @start, @offset and @length must be 4K page aligned. However the DG2
97-
* and XEHPSDV has 64K page size for device local memory and has compact page
98-
* table. On those platforms, for binding device local-memory objects, the
99-
* @start, @offset and @length must be 64K aligned. Also, UMDs should not mix
100-
* the local memory 64K page and the system memory 4K page bindings in the same
101-
* 2M range.
96+
* The @start, @offset and @length must be 4K page aligned. However the DG2 has
97+
* 64K page size for device local memory and has compact page table. On that
98+
* platform, for binding device local-memory objects, the @start, @offset and
99+
* @length must be 64K aligned. Also, UMDs should not mix the local memory 64K
100+
* page and the system memory 4K page bindings in the same 2M range.
102101
*
103102
* Error code -EINVAL will be returned if @start, @offset and @length are not
104103
* properly aligned. In version 1 (See I915_PARAM_VM_BIND_VERSION), error code

drivers/gpu/drm/display/drm_dp_helper.c

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2948,6 +2948,43 @@ void drm_dp_vsc_sdp_log(struct drm_printer *p, const struct drm_dp_vsc_sdp *vsc)
29482948
}
29492949
EXPORT_SYMBOL(drm_dp_vsc_sdp_log);
29502950

2951+
void drm_dp_as_sdp_log(struct drm_printer *p, const struct drm_dp_as_sdp *as_sdp)
2952+
{
2953+
drm_printf(p, "DP SDP: AS_SDP, revision %u, length %u\n",
2954+
as_sdp->revision, as_sdp->length);
2955+
drm_printf(p, " vtotal: %d\n", as_sdp->vtotal);
2956+
drm_printf(p, " target_rr: %d\n", as_sdp->target_rr);
2957+
drm_printf(p, " duration_incr_ms: %d\n", as_sdp->duration_incr_ms);
2958+
drm_printf(p, " duration_decr_ms: %d\n", as_sdp->duration_decr_ms);
2959+
drm_printf(p, " operation_mode: %d\n", as_sdp->mode);
2960+
}
2961+
EXPORT_SYMBOL(drm_dp_as_sdp_log);
2962+
2963+
/**
2964+
* drm_dp_as_sdp_supported() - check if adaptive sync sdp is supported
2965+
* @aux: DisplayPort AUX channel
2966+
* @dpcd: DisplayPort configuration data
2967+
*
2968+
* Returns true if adaptive sync sdp is supported, else returns false
2969+
*/
2970+
bool drm_dp_as_sdp_supported(struct drm_dp_aux *aux, const u8 dpcd[DP_RECEIVER_CAP_SIZE])
2971+
{
2972+
u8 rx_feature;
2973+
2974+
if (dpcd[DP_DPCD_REV] < DP_DPCD_REV_13)
2975+
return false;
2976+
2977+
if (drm_dp_dpcd_readb(aux, DP_DPRX_FEATURE_ENUMERATION_LIST_CONT_1,
2978+
&rx_feature) != 1) {
2979+
drm_dbg_dp(aux->drm_dev,
2980+
"Failed to read DP_DPRX_FEATURE_ENUMERATION_LIST_CONT_1\n");
2981+
return false;
2982+
}
2983+
2984+
return (rx_feature & DP_ADAPTIVE_SYNC_SDP_SUPPORTED);
2985+
}
2986+
EXPORT_SYMBOL(drm_dp_as_sdp_supported);
2987+
29512988
/**
29522989
* drm_dp_vsc_sdp_supported() - check if vsc sdp is supported
29532990
* @aux: DisplayPort AUX channel

drivers/gpu/drm/display/drm_dp_mst_topology.c

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3608,24 +3608,30 @@ fixed20_12 drm_dp_get_vc_payload_bw(const struct drm_dp_mst_topology_mgr *mgr,
36083608
EXPORT_SYMBOL(drm_dp_get_vc_payload_bw);
36093609

36103610
/**
3611-
* drm_dp_read_mst_cap() - check whether or not a sink supports MST
3611+
* drm_dp_read_mst_cap() - Read the sink's MST mode capability
36123612
* @aux: The DP AUX channel to use
36133613
* @dpcd: A cached copy of the DPCD capabilities for this sink
36143614
*
3615-
* Returns: %True if the sink supports MST, %false otherwise
3615+
* Returns: enum drm_dp_mst_mode to indicate MST mode capability
36163616
*/
3617-
bool drm_dp_read_mst_cap(struct drm_dp_aux *aux,
3618-
const u8 dpcd[DP_RECEIVER_CAP_SIZE])
3617+
enum drm_dp_mst_mode drm_dp_read_mst_cap(struct drm_dp_aux *aux,
3618+
const u8 dpcd[DP_RECEIVER_CAP_SIZE])
36193619
{
36203620
u8 mstm_cap;
36213621

36223622
if (dpcd[DP_DPCD_REV] < DP_DPCD_REV_12)
3623-
return false;
3623+
return DRM_DP_SST;
36243624

36253625
if (drm_dp_dpcd_readb(aux, DP_MSTM_CAP, &mstm_cap) != 1)
3626-
return false;
3626+
return DRM_DP_SST;
3627+
3628+
if (mstm_cap & DP_MST_CAP)
3629+
return DRM_DP_MST;
3630+
3631+
if (mstm_cap & DP_SINGLE_STREAM_SIDEBAND_MSG)
3632+
return DRM_DP_SST_SIDEBAND_MSG;
36273633

3628-
return mstm_cap & DP_MST_CAP;
3634+
return DRM_DP_SST;
36293635
}
36303636
EXPORT_SYMBOL(drm_dp_read_mst_cap);
36313637

drivers/gpu/drm/display/drm_dp_tunnel.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -436,8 +436,8 @@ EXPORT_SYMBOL(drm_dp_tunnel_get);
436436

437437
/**
438438
* drm_dp_tunnel_put - Put a reference for a DP tunnel
439-
* @tunnel - Tunnel object
440-
* @tracker - Debug tracker for the reference
439+
* @tunnel: Tunnel object
440+
* @tracker: Debug tracker for the reference
441441
*
442442
* Put a reference for @tunnel along with its debug *@tracker, which
443443
* was obtained with drm_dp_tunnel_get().
@@ -1170,7 +1170,7 @@ int drm_dp_tunnel_alloc_bw(struct drm_dp_tunnel *tunnel, int bw)
11701170
EXPORT_SYMBOL(drm_dp_tunnel_alloc_bw);
11711171

11721172
/**
1173-
* drm_dp_tunnel_atomic_get_allocated_bw - Get the BW allocated for a DP tunnel
1173+
* drm_dp_tunnel_get_allocated_bw - Get the BW allocated for a DP tunnel
11741174
* @tunnel: Tunnel object
11751175
*
11761176
* Get the current BW allocated for @tunnel. After the tunnel is created /
@@ -1892,6 +1892,7 @@ static void destroy_mgr(struct drm_dp_tunnel_mgr *mgr)
18921892
/**
18931893
* drm_dp_tunnel_mgr_create - Create a DP tunnel manager
18941894
* @dev: DRM device object
1895+
* @max_group_count: Maximum number of tunnel groups
18951896
*
18961897
* Creates a DP tunnel manager for @dev.
18971898
*

drivers/gpu/drm/i915/Makefile

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,6 @@ endif
3232
# Enable -Werror in CI and development
3333
subdir-ccflags-$(CONFIG_DRM_I915_WERROR) += -Werror
3434

35-
# Fine grained warnings disable
36-
CFLAGS_i915_pci.o = -Wno-override-init
37-
CFLAGS_display/intel_display_device.o = -Wno-override-init
38-
CFLAGS_display/intel_fbdev.o = -Wno-override-init
39-
4035
# Support compiling the display code separately for both i915 and xe
4136
# drivers. Define I915 when building i915.
4237
subdir-ccflags-y += -DI915
@@ -270,6 +265,7 @@ i915-y += \
270265
display/intel_display_rps.o \
271266
display/intel_display_wa.o \
272267
display/intel_dmc.o \
268+
display/intel_dmc_wl.o \
273269
display/intel_dpio_phy.o \
274270
display/intel_dpll.o \
275271
display/intel_dpll_mgr.o \

drivers/gpu/drm/i915/display/icl_dsi.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1616,8 +1616,7 @@ static int gen11_dsi_compute_config(struct intel_encoder *encoder,
16161616
struct drm_connector_state *conn_state)
16171617
{
16181618
struct drm_i915_private *i915 = to_i915(encoder->base.dev);
1619-
struct intel_dsi *intel_dsi = container_of(encoder, struct intel_dsi,
1620-
base);
1619+
struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
16211620
struct intel_connector *intel_connector = intel_dsi->attached_connector;
16221621
struct drm_display_mode *adjusted_mode =
16231622
&pipe_config->hw.adjusted_mode;

drivers/gpu/drm/i915/display/intel_atomic.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ int intel_digital_connector_atomic_get_property(struct drm_connector *connector,
6262
{
6363
struct drm_device *dev = connector->dev;
6464
struct drm_i915_private *dev_priv = to_i915(dev);
65-
struct intel_digital_connector_state *intel_conn_state =
65+
const struct intel_digital_connector_state *intel_conn_state =
6666
to_intel_digital_connector_state(state);
6767

6868
if (property == dev_priv->display.properties.force_audio)

drivers/gpu/drm/i915/display/intel_backlight.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -761,8 +761,8 @@ static void __intel_backlight_enable(const struct intel_crtc_state *crtc_state,
761761

762762
WARN_ON(panel->backlight.max == 0);
763763

764-
if (panel->backlight.level <= panel->backlight.min) {
765-
panel->backlight.level = panel->backlight.max;
764+
if (panel->backlight.level < panel->backlight.min) {
765+
panel->backlight.level = panel->backlight.min;
766766
if (panel->backlight.device)
767767
panel->backlight.device->props.brightness =
768768
scale_hw_to_user(connector,
@@ -949,7 +949,7 @@ int intel_backlight_device_register(struct intel_connector *connector)
949949
else
950950
props.power = FB_BLANK_POWERDOWN;
951951

952-
name = kstrdup("intel_backlight", GFP_KERNEL);
952+
name = kstrdup_const("intel_backlight", GFP_KERNEL);
953953
if (!name)
954954
return -ENOMEM;
955955

@@ -963,7 +963,7 @@ int intel_backlight_device_register(struct intel_connector *connector)
963963
* compatibility. Use unique names for subsequent backlight devices as a
964964
* fallback when the default name already exists.
965965
*/
966-
kfree(name);
966+
kfree_const(name);
967967
name = kasprintf(GFP_KERNEL, "card%d-%s-backlight",
968968
i915->drm.primary->index, connector->base.name);
969969
if (!name)
@@ -987,7 +987,7 @@ int intel_backlight_device_register(struct intel_connector *connector)
987987
connector->base.base.id, connector->base.name, name);
988988

989989
out:
990-
kfree(name);
990+
kfree_const(name);
991991

992992
return ret;
993993
}

0 commit comments

Comments
 (0)