The clock gating init hooks in i915 are a bit jumbled. The current implementation includes a mix of GT workarounds (which really should have been in the GT workaround file instead), SoC/sgunit clock gating workarounds, and display workarounds (some of which are entirely unrelated to clock gating). Some of this confusion originates from really old platforms where the boundaries between GT/display/other IP blocks weren't as clear as they are today, but at least on modern platforms we should be able to do a better job of placing this programming now. Let's separate the display workarounds for gen11 and newer platforms into a dedicated file and apply the workarounds during actual display initialization, rather than having them applied indirectly during GEM init. This will help keep the clock gating hooks focused on actual SoC/sgunit clock gating going forward and avoid making them a dumping ground for assorted register programming. It will also ensure that when i915's display code is built into the Xe driver these workarounds will still get applied during device probe rather than being missed as they are today. Matt Roper (4): drm/i915: Stop forcing clock gating init for future platforms drm/i915/adlp: Stop calling gen12lp_init_clock_gating() drm/i915/display: Extract display workarounds from clock gating init drm/i915/display: Apply workarounds during display init drivers/gpu/drm/i915/Makefile | 1 + .../drm/i915/display/intel_display_driver.c | 2 + .../gpu/drm/i915/display/intel_display_wa.c | 47 ++++++++++++++++ .../gpu/drm/i915/display/intel_display_wa.h | 13 +++++ drivers/gpu/drm/i915/intel_clock_gating.c | 53 ++----------------- 5 files changed, 66 insertions(+), 50 deletions(-) create mode 100644 drivers/gpu/drm/i915/display/intel_display_wa.c create mode 100644 drivers/gpu/drm/i915/display/intel_display_wa.h -- 2.41.0