aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/display
Commit message (Collapse)AuthorAgeFilesLines
* drm/i915/dp_mst: Work around Thunderbolt sink disconnect after ↵Imre Deak2025-05-221-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | SINK_COUNT_ESI read Due to a problem in the iTBT DP-in adapter's firmware the sink on a TBT link may get disconnected inadvertently if the SINK_COUNT_ESI and the DP_LINK_SERVICE_IRQ_VECTOR_ESI0 registers are read in a single AUX transaction. Work around the issue by reading these registers in separate transactions. The issue affects MTL+ platforms and will be fixed in the DP-in adapter firmware, however releasing that firmware fix may take some time and is not guaranteed to be available for all systems. Based on this apply the workaround on affected platforms. See HSD #13013007775. v2: Cc'ing Mika Westerberg. Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13760 Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14147 Cc: Mika Westerberg <[email protected]> Cc: [email protected] Reviewed-by: Mika Westerberg <[email protected]> Signed-off-by: Imre Deak <[email protected]> Link: https://lore.kernel.org/r/[email protected] (cherry picked from commit c3a48363cf1f76147088b1adb518136ac5df86a0) Signed-off-by: Joonas Lahtinen <[email protected]>
* drm/i915/ptl: Use everywhere the correct DDI port clock select maskImre Deak2025-05-222-21/+21
| | | | | | | | | | | | | | | | The PTL XELPDP_PORT_CLOCK_CTL register XELPDP_DDI_CLOCK_SELECT field's size is 5 bits vs. the earlier platforms where its size is 4 bits. Make sure the field is read-out/programmed everywhere correctly, according to the above. Cc: Mika Kahola <[email protected]> Cc: [email protected] # v6.13+ Tested-by: Mika Kahola <[email protected]> Reviewed-by: Mika Kahola <[email protected]> Signed-off-by: Imre Deak <[email protected]> Link: https://lore.kernel.org/r/[email protected] (cherry picked from commit d0bf684bd42db22e7d131a038f8f78927fa6a72a) Signed-off-by: Joonas Lahtinen <[email protected]>
* Merge tag 'drm-intel-next-fixes-2025-05-15' of ↵Dave Airlie2025-05-166-12/+24
|\ | | | | | | | | | | | | | | | | | | | | https://gitlab.freedesktop.org/drm/i915/kernel into drm-next - Stop writing ALPM registers when PSR is enabled - Use the correct connector while computing the link BPP limit on MST Signed-off-by: Dave Airlie <[email protected]> From: Joonas Lahtinen <[email protected]> Link: https://lore.kernel.org/r/aCWlWk5rTE7TH1pN@jlahtine-mobl
| * drm/i915/alpm: Stop writing ALPM registers when PSR is enabledJouni Högander2025-05-142-5/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently we are seeing these on PTL: xe 0000:00:02.0: [drm] *ERROR* Timeout waiting for DDI BUF A to get active These seem to be caused by writing ALPM registers while Panel Replay is enabled. Fix this by writing ALPM registers only when Panel Replay is about to be enabled. v4: improve comment on intel_psr_panel_replay_enable_sink call v3: enable/disable ALPM from PSR code Fixes: 172757acd6f6 ("drm/i915/lobf: Add lobf enablement in post plane update") Signed-off-by: Jouni Högander <[email protected]> Reviewed-by: Suraj Kandpal <[email protected]> Link: https://lore.kernel.org/r/[email protected] (cherry picked from commit a8eb102ce0944a9de2a62aa9d195861b7f26668a) Signed-off-by: Joonas Lahtinen <[email protected]>
| * drm/i915/alpm: Make intel_alpm_enable_sink available for PSRJouni Högander2025-05-142-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | We want to enable sink ALPM from PSR code. Make intel_alpm_enable_sink available for PSR. v2: do not add kerneldoc comments Reviewed-by: Suraj Kandpal <[email protected]> Signed-off-by: Jouni Högander <[email protected]> Link: https://lore.kernel.org/r/[email protected] (cherry picked from commit 2d278488761f0b5be651a3db41e615a964123d6c) Signed-off-by: Joonas Lahtinen <[email protected]>
| * drm/i915/dp_mst: Use the correct connector while computing the link BPP ↵Imre Deak2025-05-133-5/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | limit on MST Atm, on an MST link in DSC mode intel_dp_compute_config_link_bpp_limits() calculates the maximum link bpp limit using the MST root connector's DSC capabilities. That's not correct in general: the decompression could be performed by a branch device downstream of the root branch device or the sink itself. Fix the above by passing to intel_dp_compute_config_link_bpp_limits() the actual connector being modeset, containing the correct DSC capabilities. Cc: Ankit Nautiyal <[email protected]> Fixes: 1c5b72daff46 ("drm/i915/dp: Set the DSC link limits in intel_dp_compute_config_link_bpp_limits") Reviewed-by: Ankit Nautiyal <[email protected]> Reviewed-by: Luca Coelho <[email protected]> Signed-off-by: Imre Deak <[email protected]> Link: https://lore.kernel.org/r/[email protected] (cherry picked from commit 266e2fcfe2ea0d062ea392cd22f6250ae0d11c04) Signed-off-by: Joonas Lahtinen <[email protected]>
* | Merge tag 'drm-misc-next-2025-05-12' of ↵Dave Airlie2025-05-155-15/+34
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://gitlab.freedesktop.org/drm/misc/kernel into drm-next drm-misc-next for v6.16-rc1: Once more, with async flips. UAPI Changes: - Add IN_FORMATS_ASYNC property, use in i915. Cross-subsystem Changes: - Remove some unused debug code in dma-buf. Core Changes: Driver Changes: - Add Novatek NT37801 panel. - Allow submitting empty commands in amdxdna. - Convert cirrus to use managed request_all_regions. - Move Sitronix from tiny to their own place. Signed-off-by: Dave Airlie <[email protected]> From: Maarten Lankhorst <[email protected]> Link: https://lore.kernel.org/r/[email protected]
| * drm/i915/display: Indexed 8bit format does not support async flipArun R Murthy2025-05-091-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | Async flip is not supported with Indexed 8 bit format as it depends on LUT and can't be updated atomically. Note: This may change the alignment for C8 framebuffers on some platforms. Signed-off-by: Arun R Murthy <[email protected]> Reviewed-by: Ville Syrjälä <[email protected]> Signed-off-by: Suraj Kandpal <[email protected]> Link: https://lore.kernel.org/r/[email protected]
| * drm/i915/display: Add i915 hook for format_mod_supported_asyncArun R Murthy2025-05-094-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Hook up the newly added plane function pointer format_mod_supported_async to populate the modifiers/formats supported by asynchronous flips. v5: Correct the if condition for modifier support check (Chaitanya) v6: Replace uint32_t/uint64_t with u32/u64 (Jani) v7: Move plannar check from intel_async_flip_check_hw() to intel_plane_format_mod_supported_async() (Ville) v8: In case of error print format/modifier (Chaitanya) v9: Exclude C8 format as its not supported by hardware v10: filter only planar formats move changes in can_async_flip to new patch (Ville) Signed-off-by: Arun R Murthy <[email protected]> Reviewed-by: Ville Syrjälä <[email protected]> Signed-off-by: Suraj Kandpal <[email protected]> Link: https://lore.kernel.org/r/[email protected]
| * drm/i915/display: Acomodate format check in intel_plane_can_async_flip()Arun R Murthy2025-05-095-15/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The function intel_plane_can_async_flip() checks for async supported modifier, add format support check also in the same function. Note: on ADL the surface base addr is required to be 16k aligned and if not might generate DMAR and GGTT faults leading to glitches. This patch changes the 16k alignment to 4k for planar formats. v11: Move filtering Indexed 8bit to a separate patch (Ville) v12: correct the commit msg and remove unwanted debug print (Ville) Signed-off-by: Arun R Murthy <[email protected]> Reviewed-by: Ville Syrjälä <[email protected]> Signed-off-by: Suraj Kandpal <[email protected]> Link: https://lore.kernel.org/r/[email protected]
* | Merge tag 'drm-intel-next-2025-05-08' of ↵Dave Airlie2025-05-0992-1531/+2491
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://gitlab.freedesktop.org/drm/i915/kernel into drm-next Non-display related: - Fix undefined reference to `intel_pxp_gsccs_is_ready_for_sessions' Display related: - More work towards display separation (Jani) - Stop writing VRR_CTL_IGN_MAX_SHIFT for MTL onwards (Jouni) - DSC checks for 3 engines (Ankit) - Add link rate and lane count to i915_display_info (Khaled) - PSR fixes and workaround for underrun on idle (Jouni) - LOBF enablement and ALMP fixes (Animesh) - Clean up VGA plane handling (Ville) - Use an intel_connector pointer everywhere (Imre) - Fix warning for coffeelake on SunrisePoint PCH (Jiajia) - Rework/Correction on minimum hblank calculation (Arun) - Dmesg clean up (Jani) - Add a couple of simple display workarounds (Ankit, Vinod) - Refactor HDCP GSC (Jani) Signed-off-by: Dave Airlie <[email protected]> From: Rodrigo Vivi <[email protected]> Link: https://lore.kernel.org/r/[email protected]
| * drm/i915/irq: move i915->irq_lock to display->irq.lockJani Nikula2025-05-0712-245/+169
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Observe that i915->irq_lock is no longer used to protect anything outside of display. Make it a display thing. This allows us to remove the ugly #define irq_lock irq.lock hack from xe compat header. Note that this is slightly more subtle than it first looks. For i915, there's no functional change here. The lock is moved. However, for xe, we'll now have *two* locks, xe->irq.lock and display->irq.lock. These should protect different things, though. Indeed, nesting in the past would've lead to a deadlock because they were the same lock. With the i915 references gone, we can make a handful more files independent of i915_drv.h. Reviewed-by: Gustavo Sousa <[email protected]> Link: https://lore.kernel.org/r/6d8d2ce0f34a9c7361a5e2fcf96bb32a34c57e76.1746536745.git.jani.nikula@intel.com [Jani: Fixed a comment while applying.] Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/rps: refactor display rps supportJani Nikula2025-05-073-3/+53
| | | | | | | | | | | | | | | | | | | | | | | | Make the gt rps code and display irq code interact via intel_display_rps.[ch], instead of direct access. Add no-op static inline stubs for xe instead of having a separate build unit doing nothing. All of this clarifies the interfaces between i915 core and display. Reviewed-by: Gustavo Sousa <[email protected]> Link: https://lore.kernel.org/r/ef2a46dc8f30b72282494f54e98cb5fed7523b58.1746536745.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/irq: make i915_enable_asle_pipestat() staticJani Nikula2025-05-072-6/+2
| | | | | | | | | | | | | | | | | | With all users of i915_enable_asle_pipestat() inside intel_display_irq.c, we can make the function static. Reviewed-by: Gustavo Sousa <[email protected]> Link: https://lore.kernel.org/r/9511e368c5244aaa04cc45f46e2425737acd29fb.1746536745.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/irq: split out i965_display_irq_postinstall()Jani Nikula2025-05-072-0/+18
| | | | | | | | | | | | | | | | Split out i965_display_irq_postinstall() similar to other platforms. Reviewed-by: Gustavo Sousa <[email protected]> Link: https://lore.kernel.org/r/5d404dcd0c606d1cb11f2e09c45e151a75b5b2c6.1746536745.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/irq: split out i915_display_irq_postinstall()Jani Nikula2025-05-072-0/+17
| | | | | | | | | | | | | | | | Split out i915_display_irq_postinstall() similar to other platforms. Reviewed-by: Gustavo Sousa <[email protected]> Link: https://lore.kernel.org/r/11de06206ff10c27104b0ac3efda085bf4c1f1a6.1746536745.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/irq: move locking inside vlv_display_irq_postinstall()Jani Nikula2025-05-071-5/+12
| | | | | | | | | | | | | | | | | | | | | | All users of vlv_display_irq_postinstall() outside of intel_display_irq.c have a lock/unlock pair. Move the locking inside the function. Add an unlocked variant for internal use, similar to the _vlv_display_irq_reset() and vlv_display_irq_reset() functions. Reviewed-by: Gustavo Sousa <[email protected]> Link: https://lore.kernel.org/r/93ea785d2d9bdb4e18328aa42a00a492d9d783c0.1746536745.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/irq: move locking inside valleyview_{enable, disable}_display_irqs()Jani Nikula2025-05-072-9/+9
| | | | | | | | | | | | | | | | | | | | All users of valleyview_enable_display_irqs() and valleyview_disable_display_irqs() have a lock/unlock pair. Move the locking inside the functions. Reviewed-by: Gustavo Sousa <[email protected]> Link: https://lore.kernel.org/r/bb6d941c47260aea11e4af5d52572b0e5f139929.1746536745.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/irq: move locking inside vlv_display_irq_reset()Jani Nikula2025-05-071-0/+4
| | | | | | | | | | | | | | | | | | All users of vlv_display_irq_reset() have a lock/unlock pair. Move the locking inside the function. Reviewed-by: Gustavo Sousa <[email protected]> Link: https://lore.kernel.org/r/0f8176b777fa24921458996f7d6f982f955a52f6.1746536745.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/crtc: pass struct intel_display to DISPLAY_VER()Jani Nikula2025-05-071-2/+1
| | | | | | | | | | | | | | | | Drop another reference to struct drm_i915_private. Reviewed-by: Gustavo Sousa <[email protected]> Link: https://lore.kernel.org/r/cb84073ff92a99e74ff6dfb8e395365b7cbb5332.1746529001.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/bios: fix a comment referencing struct drm_i915_privateJani Nikula2025-05-071-1/+1
| | | | | | | | | | | | | | | | | | struct intel_vbt_data is within struct intel_display nowadays, not struct drm_i915_private. Reviewed-by: Gustavo Sousa <[email protected]> Link: https://lore.kernel.org/r/b7a9a7c64f41cf61749a42ed4102e04b500fde83.1746529001.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/display: remove struct drm_i915_private forward declarationJani Nikula2025-05-071-3/+1
| | | | | | | | | | | | | | | | | | Remove unused struct drm_i915_private forward declaration from intel_display_core.h. Sort and group forward declarations while at it. Reviewed-by: Gustavo Sousa <[email protected]> Link: https://lore.kernel.org/r/fbccf45339a61711b377b35fd479a67b378c5571.1746529001.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/dsi: remove dependency on i915_drv.hJani Nikula2025-05-071-3/+4
| | | | | | | | | | | | | | | | | | Remove final references to struct drm_i915_private and drop dependency on i915_drv.h. Reviewed-by: Gustavo Sousa <[email protected]> Link: https://lore.kernel.org/r/2cee3cd9d7d9bec8dfe9c21fe5d172b1843b3d97.1746529001.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/display: implement wa_14022269668Vinod Govindapillai2025-05-051-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | As per the WA, fbc stride need to be programmed always for bmg. Display driver handles the need to program the fbc stride using the override stride. So ensure that we always get the override stride in case of bmg v2: re-phrase the commit message. Bspec: 74212 Signed-off-by: Vinod Govindapillai <[email protected]> Reviewed-by: Juha-Pekka Heikkila <[email protected]> Link: https://lore.kernel.org/r/[email protected]
| * drm/i915/de: drop drm_i915_private compat wrappers from intel_de_*()Jani Nikula2025-05-021-10/+4
| | | | | | | | | | | | | | | | | | | | All the users of intel_de_*() functions now pass in struct intel_display, and we can remove the __to_intel_display() _Generic() compat wrappers. Reviewed-by: Chaitanya Kumar Borah <[email protected]> Link: https://lore.kernel.org/r/3aac42eab7b03c791afee940d0a647770afc99c5.1746175756.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/hdmi: convert rest of intel_hdmi.c to struct intel_displayJani Nikula2025-05-021-6/+6
| | | | | | | | | | | | | | | | | | | | | | Remove the last uses of struct drm_i915_private from intel_hdmi.c, and drop the dependency on i915_drv.h. v2: Rebase Reviewed-by: Chaitanya Kumar Borah <[email protected]> Link: https://lore.kernel.org/r/24183605ac919ca115b1b25fa386643409814c82.1746175756.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/dpt: convert intel_dpt_common.c to struct intel_displayJani Nikula2025-05-021-8/+7
| | | | | | | | | | | | | | | | | | Remove the last uses of struct drm_i915_private from intel_dpt_common.c, and drop the dependency on i915_drv.h. Reviewed-by: Chaitanya Kumar Borah <[email protected]> Link: https://lore.kernel.org/r/7bc340e05c535479b0f0698372835ba04fd5c8f8.1746175756.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/hdcp: drop unnecessary include from intel_hdcp_gsc.hJani Nikula2025-05-021-1/+0
| | | | | | | | | | | | | | | | | | Nothing in intel_hdcp_gsc.c needs linux/err.h. Remove it. Cc: Suraj Kandpal <[email protected]> Reviewed-by: Suraj Kandpal <[email protected]> Link: https://lore.kernel.org/r/26ae2c04554fc8dd76d2fdb0f2b0a63cb1fed98f.1745524803.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/hdcp: pass struct drm_device to driver specific HDCP GSC codeJani Nikula2025-05-024-11/+11
| | | | | | | | | | | | | | | | | | | | | | The driver specific HDCP GSC code will eventually be part of the driver cores rather than display. Remove the struct intel_display references from them, and pass struct drm_device instead. Cc: Suraj Kandpal <[email protected]> Reviewed-by: Suraj Kandpal <[email protected]> Link: https://lore.kernel.org/r/bf9aa8e44e18eef41e3077a2966935b4e2649b62.1745524803.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/hdcp: simplify HDCP GSC firmware usage selectionJani Nikula2025-05-023-10/+6
| | | | | | | | | | | | | | | | | | | | Just localize the GSC decision inside intel_hdcp.c, and deduplicate the conditions. Cc: Suraj Kandpal <[email protected]> Reviewed-by: Suraj Kandpal <[email protected]> Link: https://lore.kernel.org/r/a1d031bfbff7073e576dfe8d3d3d5a28d7bb2c15.1745524803.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/hdcp: switch the HDCP GSC message interface from u8* to void*Jani Nikula2025-05-023-26/+26
| | | | | | | | | | | | | | | | | | | | The in/out buffers are just opaque data, and don't need to be considered u8*. Switching to void* lets us drop a ton of unnecessary casts. Cc: Suraj Kandpal <[email protected]> Reviewed-by: Suraj Kandpal <[email protected]> Link: https://lore.kernel.org/r/ea005adb713e85b797d83204c80de0a2a8e5ab47.1745524803.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/hdcp: pass the context to the HDCP GSC message interfaceJani Nikula2025-05-023-43/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The opaque HDCP GSC context nicely abstracts the differences between drivers. Pass that instead of struct drm_i915_private or struct xe_device to intel_hdcp_gsc_msg_send(). We can store the driver specific data in the context. This lets us drop the dependency on i915_drv.h from intel_hdcp_gsc_message.c. Cc: Suraj Kandpal <[email protected]> Reviewed-by: Suraj Kandpal <[email protected]> Link: https://lore.kernel.org/r/df1653212f9014e717701b017e78e0017884b870.1745524803.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/hdcp: rename HDCP GSC context alloc/free functionsJani Nikula2025-05-023-6/+6
| | | | | | | | | | | | | | | | | | | | Name the functions intel_hdcp_gsc_context_alloc() and intel_hdcp_gsc_context_free() for consistency. Cc: Suraj Kandpal <[email protected]> Reviewed-by: Suraj Kandpal <[email protected]> Link: https://lore.kernel.org/r/c6e25686ed20b5fdea9a59faf6a64a7312a075b0.1745524803.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/hdcp: rename struct intel_hdcp_gsc_message to intel_hdcp_gsc_contextJani Nikula2025-05-024-37/+37
| | | | | | | | | | | | | | | | | | It's really about the context more than about the message. Cc: Suraj Kandpal <[email protected]> Reviewed-by: Suraj Kandpal <[email protected]> Link: https://lore.kernel.org/r/ca0a802a81ba4e96e7c40646a32386d4351d6ff4.1745524803.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/hdcp: split HDCP GSC message alloc/save responsibilitiesJani Nikula2025-05-023-18/+20
| | | | | | | | | | | | | | | | | | | | | | | | Allocate and initialize the HDCP GSC message in intel_hdcp_gsc_hdcp2_init() as before, but store the pointer to display->hdcp.hdcp_message in the caller. Similarly, pass in the pointer to intel_hdcp_gsc_free_message(). Cc: Suraj Kandpal <[email protected]> Reviewed-by: Suraj Kandpal <[email protected]> Link: https://lore.kernel.org/r/a74fcc941126bf92d12115b5faf4f75099e26242.1745524803.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/hdcp: deduplicate and refactor HDCP GSC ops initializationJani Nikula2025-05-025-118/+76
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The gsc_hdcp_ops is duplicated and initialized exactly the same way in two different places (for i915 and xe), and requires forward declarations for all the hooks. Deduplicate, and make the functions static. There are slight differences in the i915 and xe implementations of intel_hdcp_gsc_init() and intel_hdcp_gsc_fini(). Take the best of both, and improve. We need to expose intel_hdcp_gsc_hdcp2_init() and intel_hdcp_gsc_free_message() for this, and create the latter for xe. Cc: Suraj Kandpal <[email protected]> Reviewed-by: Suraj Kandpal <[email protected]> Link: https://lore.kernel.org/r/21e7871b35d4c7d13f016b5ecb4f10e5be72c531.1745524803.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/hdcp: remove duplicate declarationsJani Nikula2025-05-022-5/+1
| | | | | | | | | | | | | | | | | | | | intel_hdcp_gsc_msg_send() and intel_hdcp_gsc_check_status() are declared in intel_hdcp_gsc.h. Cc: Suraj Kandpal <[email protected]> Reviewed-by: Suraj Kandpal <[email protected]> Link: https://lore.kernel.org/r/f300d7cdb2af681291df938194f575f05c2c41bc.1745524803.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/display: Implement wa_14024400148Nemesa Garg2025-05-021-5/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | Workaround recommend use polling method for pm_demand to finish as to avoid timeout. v2: Add polling method within pmdemand_wait. Update error message[Jani] Signed-off-by: Nemesa Garg <[email protected]> Reviewed-by: Mika Kahola <[email protected]> Signed-off-by: Ankit Nautiyal <[email protected]> Link: https://lore.kernel.org/r/[email protected]
| * drm/i915/backlight: drop dmesg suggestion to file bugsJani Nikula2025-05-021-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | Drop the FDO_BUG_URL from the source, and stop suggesting to file bugs on DPCD backlight issues. We don't do this anywhere else in display, this isn't a special snowflake. As a consequence, also drop the dependency on i915_utils.h from intel_dp_aux_backlight.c. Acked-by: Tvrtko Ursulin <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jani Nikula <[email protected]>
| * drm/i915/display: move min_hblank from dp_mst.c to dp.cArun R Murthy2025-04-304-51/+100
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Minimum HBlank is programmed to address jitter for high resolutions with high refresh rates that have small Hblank, specifically where Hblank is smaller than one MTP. TODO: Add the min_hblank calculation for hdmi as well. v2: move from intel_audio.c to intel_dp.c some correction in link_bpp_x16 (Imre) v3: min_hblank for 8b/10b MST and 128b/132b SST/MST handle error for intel_dp_mst_dsc_get_slice_count reset min_hblank before disabling transcoder (Imre) v4: compute link_bpp_x16 within compute_min_hblank, return error in case of compute failure call compute_min_hblank() before vrr_compute_config (Imre) v5: readout MIN_HBLAN reg for Xe3+ Signed-off-by: Arun R Murthy <[email protected]> Reviewed-by: Imre Deak <[email protected]> Signed-off-by: Imre Deak <[email protected]> Link: https://lore.kernel.org/r/[email protected]
| * drm/i915/pch: fix warning for coffeelake on SunrisePoint PCHJiajia Liu2025-04-291-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i915/pch reports a warning on a mini PC which has a CoffeeLake-S GT2 [UHD Graphics 630] [8086:3e92] and an ISA bridge - H110 LPC Controller [8086:a143]. [5.608723] i915 0000:00:02.0: [drm] Found coffeelake (device ID 3e92) integrated display version 9.00 stepping N/A [5.608969] ------------[ cut here ]------------ [5.608972] i915 0000:00:02.0: [drm] drm_WARN_ON(!display->platform.skylake && !display->platform.kabylake) [5.608995] WARNING: CPU: 3 PID: 440 at drivers/gpu/drm/i915/display/intel_pch.c:126 intel_pch_type+0x1af/0xae0 [i915] [5.609317] CPU: 3 UID: 0 PID: 440 Comm: (udev-worker) Not tainted 6.15.0-rc3-drm-tip-2fa6469c618d #3 PREEMPT(voluntary) Signed-off-by: Jiajia Liu <[email protected]> Reviewed-by: Rodrigo Vivi <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Rodrigo Vivi <[email protected]>
| * drm/i915/hdmi: Use an intel_connector pointer everywhereImre Deak2025-04-291-86/+103
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Following the convention, convert intel_hdmi.c to use an intel_connector pointer everywhere, calling this pointer connector. If the intel connector must be casted from a drm_connector, call this pointer _connector and use this pointer only for the casting. v2: Use for_each_new_intel_connector_in_state(). (Jani) Cc: Jani Nikula <[email protected]> Reviewed-by: Jani Nikula <[email protected]> Signed-off-by: Imre Deak <[email protected]> Link: https://lore.kernel.org/r/[email protected]
| * drm/i915/dp: Use an intel_connector pointer everywhereImre Deak2025-04-291-49/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Following the convention, convert intel_dp.c to use an intel_connector pointer everywhere, calling this pointer connector. If the intel connector must be casted from a drm_connector, call this pointer _connector and use this pointer only for the casting. v2: Use for_each_intel_connector_iter(). (Jani) Cc: Jani Nikula <[email protected]> Reviewed-by: Jani Nikula <[email protected]> Signed-off-by: Imre Deak <[email protected]> Link: https://lore.kernel.org/r/[email protected]
| * drm/i915/psr: Move PSR workaround to intel_psr.cJouni Högander2025-04-282-13/+10
| | | | | | | | | | | | | | | | | | Logical place for PSR workaround needing vblank delay is in intel_psr_min_vblank_delay. Move it there. Signed-off-by: Jouni Högander <[email protected]> Reviewed-by: Arun R Murthy <[email protected]> Link: https://lore.kernel.org/r/[email protected]
| * drm/i915/display: Ensure enough lines between delayed VBlank and VBlankJouni Högander2025-04-283-0/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To deterministically capture the transition of the state machine going from SRDOFFACK to IDLE, the delayed V. Blank should be at least one line after the non-delayed V. Blank. Ensure this by adding new interface into intel_psr to query number of lines needed for vblank delay and call it from intel_crtc_vblank_delay. v3: use existing intel_crtc_vblank_delay mechanism v2: apply limits only when needed (VRR TG vs. Legacy TG) Bspec: 69897 Signed-off-by: Jouni Högander <[email protected]> Reviewed-by: Arun R Murthy <[email protected]> Link: https://lore.kernel.org/r/[email protected]
| * drm/i915/alpm: Check for alpm support before accessing alpm registerAnimesh Manna2025-04-281-1/+1
| | | | | | | | | | | | | | | | | | | | Currently, only EDP supports alpm. So, check for alpm support and prevent the DP connector from accessing the alpm register if doing so is unsupported. Fixes: acff6d6bded3 ("drm/i915/lobf: Add mutex for alpm update") Signed-off-by: Animesh Manna <[email protected]> Reviewed-by: Jonathan Cavitt <[email protected]> Link: https://lore.kernel.org/r/[email protected]
| * drm/i915/vga: Consolidate intel_vga_disable() callsVille Syrjälä2025-04-254-26/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently we disable the VGA plane from various places, sometimes multiple times in the same init/resume sequence. Get rid of all this mess and do it just once. The most correct place seems to be just after intel_early_display_was() as that one applies various workarounds that need to be in place before we touch any planes (including the VGA plane). Actually, we do still have a second caller in vlv_display_power_well_init(). I think we still need that as the reset value of VGACNTR is 0x0 and thus technically the VGA plane will be (at least partially) enabled after the power well has been toggled. In both cases we have the necessary power reference already held (INIT power domain for load/resume case, and the display power well itself being what we need for vlv_display_power_well_init()). Signed-off-by: Ville Syrjälä <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] Reviewed-by: Jani Nikula <[email protected]>
| * drm/i915/vga: Nuke vga_redisable_power_on()Ville Syrjälä2025-04-253-14/+2
| | | | | | | | | | | | | | | | | | | | Now that intel_vga_disable() itself will print a debug message, intel_vga_redisable_power_on() is completely redundant. Get rid of it. Signed-off-by: Ville Syrjälä <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] Reviewed-by: Jani Nikula <[email protected]>
| * drm/i915/vga: Include the current pipe in the VGA disable debug messageVille Syrjälä2025-04-251-1/+28
| | | | | | | | | | | | | | | | | | | | | | | | Add some debugs to the VGA plane disable so that we can at least see from the logs when it happens (and on which pipe). I was curious about this at some point when I was seeing some random underruns near the time when we disable the VGA plane, but I think in the end that turned out to be a red herring. Signed-off-by: Ville Syrjälä <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] Reviewed-by: Jani Nikula <[email protected]>
| * drm/i915/vga: Extract intel_vga_regs.hVille Syrjälä2025-04-252-0/+37
| | | | | | | | | | | | | | | | | | | | | | Extract the VGACNTR register definitions into their own header file, to declutter i915_reg.h a bit. v2: Group the register offst definitions together (Jani) Signed-off-by: Ville Syrjälä <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] Reviewed-by: Jani Nikula <[email protected]>