Skip to content

Commit f186423

Browse files
committed
Merge tag 'drm-intel-next-2024-10-11' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next
drm/i915 features for v6.13: [airlied: fixed build problem xe->display] Features and functionality: - Enable BMG and LNL+ ultra joiner support to join 2+2 pipes (Ankit, Stan) - Enable 10bpc+CCS scanout for ICL+ and fp16+CCS scanout for TGL+ (Ville) - Use DSB for plane/color management commits (Ville) - Expose package temperature in hwmon (Raag) - Add more Arrow Lake (ARL) PCI IDs (Dnyaneshwar) - Add intel_display_caps debugfs for display capabilities and params (Jani) - Debug log detected LTTPR PHY descriptors (Imre) Refactoring and cleanups: - Add intel_bo abstraction to remove drm/xe -Ddrm_i915_gem_object=xe_bo hack (Jani) - IRQ enable/disable/suspend/resume cleanups (Rodrigo) - Pre-SKL watermark/CxSR cleanups (Ville) - Joiner refactoring and cleanups (Ankit, Stan) - Unify PCI ROM vs. SPI flash VBT read code paths (Ville) - Use the common gen3+ irq code for gen2 (Ville) - Display include cleanups (Jani) - Conversions from drm_i915_private to struct intel_display (Jani, Ville, Suraj) - Convert wakeref_t underlying type to struct ref_tracker * (Jani) - Hide VLV/CHV/BXT/GLK specific PPS handling better (Jani) - Split out DP test request handling to a separate file (Jani) - Add display snapshot abstraction for error state (Jani) - Register macro cleanups (Jani) - Add irq IMR/IER/IIR register triplet abstraction (Jani) - Remove IS_LP() (Jani) - Remove xe compat raw reg read/write support (Jani) - Remove unused macro parameter (He Lugang) - Fix typos and spelling (Yan Zhen, Shen Lichuan, Colin Ian King) - Minor code fixes (Yuesong Li, Chen Ni) - Minor modeset refactoring (Ville) Fixes: - Fix a number of DP 2.1 Panel Replay issues (Jouni) - Fix drm/xe display lockdep issues on runtime suspend/resume (Suraj) - Fix MTL C20 PHY PLL values for UHBR20 (Dnyaneshwar) - Fix DP FEC enabling for UHBR rates (Chaitanya) - Fix BMG supported UHBR rates (10 and 13.5) (Arun) - Fix BMG CCS modifiers (Juha-Pekka) - Fix AUX IO power enabling for eDP PSR (Imre) - Add PSR workarounds (Jouni) - Check for too low DSC BPC (Suraj) - Improve HDCP wakeup robustness after suspend/resume (Suraj) - Reduce ICP+ hotplug filter to 250 us to match DP spec (Suraj) - Fix PSR sink enable sequence (Ville) - Fix DP colorimetry detection (Ville) - Apply i915gm/i945gm irq C-state workaround to CRC interrupts (Ville) Merges: - Backmerge to fix cross-tree conflicts (Jani) - Backmerge to get v6.12-rc1 (Jani) Signed-off-by: Dave Airlie <[email protected]> From: Jani Nikula <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
2 parents 26bb2dc + 388629a commit f186423

File tree

192 files changed

+6404
-4728
lines changed

Some content is hidden

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

192 files changed

+6404
-4728
lines changed

Documentation/ABI/testing/sysfs-driver-intel-i915-hwmon

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,3 +83,11 @@ Contact: [email protected]
8383
Description: RO. Fan speed of device in RPM.
8484

8585
Only supported for particular Intel i915 graphics platforms.
86+
87+
What: /sys/bus/pci/drivers/i915/.../hwmon/hwmon<i>/temp1_input
88+
Date: November 2024
89+
KernelVersion: 6.12
90+
91+
Description: RO. GPU package temperature in millidegree Celsius.
92+
93+
Only supported for particular Intel i915 graphics platforms.

drivers/gpu/drm/i915/Makefile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ i915-y += \
5151
i915-y += \
5252
soc/intel_dram.o \
5353
soc/intel_gmch.o \
54-
soc/intel_pch.o
54+
soc/intel_pch.o \
55+
soc/intel_rom.o
5556

5657
# core library code
5758
i915-y += \
@@ -225,6 +226,7 @@ i915-y += \
225226
display/intel_atomic_plane.o \
226227
display/intel_audio.o \
227228
display/intel_bios.o \
229+
display/intel_bo.o \
228230
display/intel_bw.o \
229231
display/intel_cdclk.o \
230232
display/intel_color.o \
@@ -242,6 +244,7 @@ i915-y += \
242244
display/intel_display_power_well.o \
243245
display/intel_display_reset.o \
244246
display/intel_display_rps.o \
247+
display/intel_display_snapshot.o \
245248
display/intel_display_wa.o \
246249
display/intel_dmc.o \
247250
display/intel_dmc_wl.o \
@@ -325,6 +328,7 @@ i915-y += \
325328
display/intel_dp_hdcp.o \
326329
display/intel_dp_link_training.o \
327330
display/intel_dp_mst.o \
331+
display/intel_dp_test.o \
328332
display/intel_dsi.o \
329333
display/intel_dsi_dcs_backlight.o \
330334
display/intel_dsi_vbt.o \

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

Lines changed: 7 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "intel_dp.h"
2020
#include "intel_dp_aux.h"
2121
#include "intel_dp_link_training.h"
22+
#include "intel_dp_test.h"
2223
#include "intel_dpio_phy.h"
2324
#include "intel_encoder.h"
2425
#include "intel_fifo_underrun.h"
@@ -477,12 +478,8 @@ intel_dp_link_down(struct intel_encoder *encoder,
477478

478479
msleep(intel_dp->pps.panel_power_down_delay);
479480

480-
if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
481-
intel_wakeref_t wakeref;
482-
483-
with_intel_pps_lock(intel_dp, wakeref)
484-
intel_dp->pps.active_pipe = INVALID_PIPE;
485-
}
481+
if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
482+
vlv_pps_port_disable(encoder, old_crtc_state);
486483
}
487484

488485
static void g4x_dp_audio_enable(struct intel_encoder *encoder,
@@ -694,7 +691,7 @@ static void intel_enable_dp(struct intel_atomic_state *state,
694691

695692
with_intel_pps_lock(intel_dp, wakeref) {
696693
if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
697-
vlv_pps_init(encoder, pipe_config);
694+
vlv_pps_port_enable_unlocked(encoder, pipe_config);
698695

699696
intel_dp_enable_port(intel_dp, pipe_config);
700697

@@ -1172,12 +1169,8 @@ intel_dp_hotplug(struct intel_encoder *encoder,
11721169
struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
11731170
enum intel_hotplug_state state;
11741171

1175-
if (intel_dp->compliance.test_active &&
1176-
intel_dp->compliance.test_type == DP_TEST_LINK_PHY_TEST_PATTERN) {
1177-
intel_dp_phy_test(encoder);
1178-
/* just do the PHY test and nothing else */
1172+
if (intel_dp_test_phy(intel_dp))
11791173
return INTEL_HOTPLUG_UNCHANGED;
1180-
}
11811174

11821175
state = intel_encoder_hotplug(encoder, connector);
11831176

@@ -1249,20 +1242,6 @@ static void intel_dp_encoder_destroy(struct drm_encoder *encoder)
12491242
kfree(enc_to_dig_port(to_intel_encoder(encoder)));
12501243
}
12511244

1252-
enum pipe vlv_active_pipe(struct intel_dp *intel_dp)
1253-
{
1254-
struct intel_display *display = to_intel_display(intel_dp);
1255-
struct drm_i915_private *dev_priv = to_i915(display->drm);
1256-
struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base;
1257-
enum pipe pipe;
1258-
1259-
if (g4x_dp_port_enabled(dev_priv, intel_dp->output_reg,
1260-
encoder->port, &pipe))
1261-
return pipe;
1262-
1263-
return INVALID_PIPE;
1264-
}
1265-
12661245
static void intel_dp_encoder_reset(struct drm_encoder *encoder)
12671246
{
12681247
struct intel_display *display = to_intel_display(encoder->dev);
@@ -1273,12 +1252,8 @@ static void intel_dp_encoder_reset(struct drm_encoder *encoder)
12731252

12741253
intel_dp->reset_link_params = true;
12751254

1276-
if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
1277-
intel_wakeref_t wakeref;
1278-
1279-
with_intel_pps_lock(intel_dp, wakeref)
1280-
intel_dp->pps.active_pipe = vlv_active_pipe(intel_dp);
1281-
}
1255+
if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
1256+
vlv_pps_pipe_reset(intel_dp);
12821257

12831258
intel_pps_encoder_reset(intel_dp);
12841259
}

drivers/gpu/drm/i915/display/g4x_dp.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ struct intel_encoder;
1919

2020
#ifdef I915
2121
const struct dpll *vlv_get_dpll(struct drm_i915_private *i915);
22-
enum pipe vlv_active_pipe(struct intel_dp *intel_dp);
2322
void g4x_dp_set_clock(struct intel_encoder *encoder,
2423
struct intel_crtc_state *pipe_config);
2524
bool g4x_dp_port_enabled(struct drm_i915_private *dev_priv,
@@ -32,10 +31,6 @@ static inline const struct dpll *vlv_get_dpll(struct drm_i915_private *i915)
3231
{
3332
return NULL;
3433
}
35-
static inline int vlv_active_pipe(struct intel_dp *intel_dp)
36-
{
37-
return 0;
38-
}
3934
static inline void g4x_dp_set_clock(struct intel_encoder *encoder,
4035
struct intel_crtc_state *pipe_config)
4136
{

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
* Copyright © 2022 Intel Corporation
44
*/
55

6+
#include <linux/debugfs.h>
7+
68
#include "hsw_ips.h"
79
#include "i915_drv.h"
810
#include "i915_reg.h"

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

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,8 @@ static int i9xx_plane_min_cdclk(const struct intel_crtc_state *crtc_state,
416416
return DIV_ROUND_UP(pixel_rate * num, den);
417417
}
418418

419-
static void i9xx_plane_update_noarm(struct intel_plane *plane,
419+
static void i9xx_plane_update_noarm(struct intel_dsb *dsb,
420+
struct intel_plane *plane,
420421
const struct intel_crtc_state *crtc_state,
421422
const struct intel_plane_state *plane_state)
422423
{
@@ -444,7 +445,8 @@ static void i9xx_plane_update_noarm(struct intel_plane *plane,
444445
}
445446
}
446447

447-
static void i9xx_plane_update_arm(struct intel_plane *plane,
448+
static void i9xx_plane_update_arm(struct intel_dsb *dsb,
449+
struct intel_plane *plane,
448450
const struct intel_crtc_state *crtc_state,
449451
const struct intel_plane_state *plane_state)
450452
{
@@ -507,7 +509,8 @@ static void i9xx_plane_update_arm(struct intel_plane *plane,
507509
intel_plane_ggtt_offset(plane_state) + dspaddr_offset);
508510
}
509511

510-
static void i830_plane_update_arm(struct intel_plane *plane,
512+
static void i830_plane_update_arm(struct intel_dsb *dsb,
513+
struct intel_plane *plane,
511514
const struct intel_crtc_state *crtc_state,
512515
const struct intel_plane_state *plane_state)
513516
{
@@ -517,11 +520,12 @@ static void i830_plane_update_arm(struct intel_plane *plane,
517520
* Additional breakage on i830 causes register reads to return
518521
* the last latched value instead of the last written value [ALM026].
519522
*/
520-
i9xx_plane_update_noarm(plane, crtc_state, plane_state);
521-
i9xx_plane_update_arm(plane, crtc_state, plane_state);
523+
i9xx_plane_update_noarm(dsb, plane, crtc_state, plane_state);
524+
i9xx_plane_update_arm(dsb, plane, crtc_state, plane_state);
522525
}
523526

524-
static void i9xx_plane_disable_arm(struct intel_plane *plane,
527+
static void i9xx_plane_disable_arm(struct intel_dsb *dsb,
528+
struct intel_plane *plane,
525529
const struct intel_crtc_state *crtc_state)
526530
{
527531
struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
@@ -549,7 +553,8 @@ static void i9xx_plane_disable_arm(struct intel_plane *plane,
549553
}
550554

551555
static void
552-
g4x_primary_async_flip(struct intel_plane *plane,
556+
g4x_primary_async_flip(struct intel_dsb *dsb,
557+
struct intel_plane *plane,
553558
const struct intel_crtc_state *crtc_state,
554559
const struct intel_plane_state *plane_state,
555560
bool async_flip)
@@ -569,7 +574,8 @@ g4x_primary_async_flip(struct intel_plane *plane,
569574
}
570575

571576
static void
572-
vlv_primary_async_flip(struct intel_plane *plane,
577+
vlv_primary_async_flip(struct intel_dsb *dsb,
578+
struct intel_plane *plane,
573579
const struct intel_crtc_state *crtc_state,
574580
const struct intel_plane_state *plane_state,
575581
bool async_flip)

0 commit comments

Comments
 (0)