Skip to content

Commit eb7205b

Browse files
committed
Merge tag 'drm-intel-next-2024-09-03' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next
- Fix probe on 'nomodeset and deprecate i915.modeset=0 (Jani) - Update new entries in VBT BDB block definitions (Dnyaneshwar) - Fix clang build (Andy Shevchenko) - More clean up on drvdata usage in display code (Jani) - Increase fastwake DP sync pulse count as a quirk (Jouni) Signed-off-by: Dave Airlie <[email protected]> From: Rodrigo Vivi <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
2 parents e066e9a + 963ed4e commit eb7205b

Some content is hidden

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

41 files changed

+1546
-1252
lines changed

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

Lines changed: 82 additions & 70 deletions
Large diffs are not rendered by default.

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ bool intel_alpm_compute_params(struct intel_dp *intel_dp,
228228
int tfw_exit_latency = 20; /* eDP spec */
229229
int phy_wake = 4; /* eDP spec */
230230
int preamble = 8; /* eDP spec */
231-
int precharge = intel_dp_aux_fw_sync_len() - preamble;
231+
int precharge = intel_dp_aux_fw_sync_len(intel_dp) - preamble;
232232
u8 max_wake_lines;
233233

234234
io_wake_time = max(precharge, io_buffer_wake_time(crtc_state)) +

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

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -980,7 +980,8 @@ static void glk_force_audio_cdclk(struct drm_i915_private *i915,
980980

981981
static unsigned long i915_audio_component_get_power(struct device *kdev)
982982
{
983-
struct drm_i915_private *i915 = kdev_to_i915(kdev);
983+
struct intel_display *display = to_intel_display(kdev);
984+
struct drm_i915_private *i915 = to_i915(display->drm);
984985
intel_wakeref_t ret;
985986

986987
/* Catch potential impedance mismatches before they occur! */
@@ -1012,7 +1013,8 @@ static unsigned long i915_audio_component_get_power(struct device *kdev)
10121013
static void i915_audio_component_put_power(struct device *kdev,
10131014
unsigned long cookie)
10141015
{
1015-
struct drm_i915_private *i915 = kdev_to_i915(kdev);
1016+
struct intel_display *display = to_intel_display(kdev);
1017+
struct drm_i915_private *i915 = to_i915(display->drm);
10161018

10171019
/* Stop forcing CDCLK to 2*BCLK if no need for audio to be powered. */
10181020
if (--i915->display.audio.power_refcount == 0)
@@ -1025,7 +1027,8 @@ static void i915_audio_component_put_power(struct device *kdev,
10251027
static void i915_audio_component_codec_wake_override(struct device *kdev,
10261028
bool enable)
10271029
{
1028-
struct drm_i915_private *i915 = kdev_to_i915(kdev);
1030+
struct intel_display *display = to_intel_display(kdev);
1031+
struct drm_i915_private *i915 = to_i915(display->drm);
10291032
unsigned long cookie;
10301033

10311034
if (DISPLAY_VER(i915) < 9)
@@ -1053,7 +1056,8 @@ static void i915_audio_component_codec_wake_override(struct device *kdev,
10531056
/* Get CDCLK in kHz */
10541057
static int i915_audio_component_get_cdclk_freq(struct device *kdev)
10551058
{
1056-
struct drm_i915_private *i915 = kdev_to_i915(kdev);
1059+
struct intel_display *display = to_intel_display(kdev);
1060+
struct drm_i915_private *i915 = to_i915(display->drm);
10571061

10581062
if (drm_WARN_ON_ONCE(&i915->drm, !HAS_DDI(i915)))
10591063
return -ENODEV;
@@ -1112,7 +1116,8 @@ static struct intel_audio_state *find_audio_state(struct drm_i915_private *i915,
11121116
static int i915_audio_component_sync_audio_rate(struct device *kdev, int port,
11131117
int cpu_transcoder, int rate)
11141118
{
1115-
struct drm_i915_private *i915 = kdev_to_i915(kdev);
1119+
struct intel_display *display = to_intel_display(kdev);
1120+
struct drm_i915_private *i915 = to_i915(display->drm);
11161121
struct i915_audio_component *acomp = i915->display.audio.component;
11171122
const struct intel_audio_state *audio_state;
11181123
struct intel_encoder *encoder;
@@ -1154,7 +1159,8 @@ static int i915_audio_component_get_eld(struct device *kdev, int port,
11541159
int cpu_transcoder, bool *enabled,
11551160
unsigned char *buf, int max_bytes)
11561161
{
1157-
struct drm_i915_private *i915 = kdev_to_i915(kdev);
1162+
struct intel_display *display = to_intel_display(kdev);
1163+
struct drm_i915_private *i915 = to_i915(display->drm);
11581164
const struct intel_audio_state *audio_state;
11591165
int ret = 0;
11601166

@@ -1189,24 +1195,25 @@ static const struct drm_audio_component_ops i915_audio_component_ops = {
11891195
.get_eld = i915_audio_component_get_eld,
11901196
};
11911197

1192-
static int i915_audio_component_bind(struct device *i915_kdev,
1198+
static int i915_audio_component_bind(struct device *drv_kdev,
11931199
struct device *hda_kdev, void *data)
11941200
{
1201+
struct intel_display *display = to_intel_display(drv_kdev);
1202+
struct drm_i915_private *i915 = to_i915(display->drm);
11951203
struct i915_audio_component *acomp = data;
1196-
struct drm_i915_private *i915 = kdev_to_i915(i915_kdev);
11971204
int i;
11981205

11991206
if (drm_WARN_ON(&i915->drm, acomp->base.ops || acomp->base.dev))
12001207
return -EEXIST;
12011208

12021209
if (drm_WARN_ON(&i915->drm,
1203-
!device_link_add(hda_kdev, i915_kdev,
1210+
!device_link_add(hda_kdev, drv_kdev,
12041211
DL_FLAG_STATELESS)))
12051212
return -ENOMEM;
12061213

12071214
drm_modeset_lock_all(&i915->drm);
12081215
acomp->base.ops = &i915_audio_component_ops;
1209-
acomp->base.dev = i915_kdev;
1216+
acomp->base.dev = drv_kdev;
12101217
BUILD_BUG_ON(MAX_PORTS != I915_MAX_PORTS);
12111218
for (i = 0; i < ARRAY_SIZE(acomp->aud_sample_rate); i++)
12121219
acomp->aud_sample_rate[i] = 0;
@@ -1216,19 +1223,20 @@ static int i915_audio_component_bind(struct device *i915_kdev,
12161223
return 0;
12171224
}
12181225

1219-
static void i915_audio_component_unbind(struct device *i915_kdev,
1226+
static void i915_audio_component_unbind(struct device *drv_kdev,
12201227
struct device *hda_kdev, void *data)
12211228
{
1229+
struct intel_display *display = to_intel_display(drv_kdev);
1230+
struct drm_i915_private *i915 = to_i915(display->drm);
12221231
struct i915_audio_component *acomp = data;
1223-
struct drm_i915_private *i915 = kdev_to_i915(i915_kdev);
12241232

12251233
drm_modeset_lock_all(&i915->drm);
12261234
acomp->base.ops = NULL;
12271235
acomp->base.dev = NULL;
12281236
i915->display.audio.component = NULL;
12291237
drm_modeset_unlock_all(&i915->drm);
12301238

1231-
device_link_remove(hda_kdev, i915_kdev);
1239+
device_link_remove(hda_kdev, drv_kdev);
12321240

12331241
if (i915->display.audio.power_refcount)
12341242
drm_err(&i915->drm, "audio power refcount %d after unbind\n",

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1400,15 +1400,15 @@ static void tgl_dkl_phy_set_signal_levels(struct intel_encoder *encoder,
14001400
static int translate_signal_level(struct intel_dp *intel_dp,
14011401
u8 signal_levels)
14021402
{
1403-
struct drm_i915_private *i915 = dp_to_i915(intel_dp);
1403+
struct intel_display *display = to_intel_display(intel_dp);
14041404
int i;
14051405

14061406
for (i = 0; i < ARRAY_SIZE(index_to_dp_signal_levels); i++) {
14071407
if (index_to_dp_signal_levels[i] == signal_levels)
14081408
return i;
14091409
}
14101410

1411-
drm_WARN(&i915->drm, 1,
1411+
drm_WARN(display->drm, 1,
14121412
"Unsupported voltage swing/pre-emphasis level: 0x%x\n",
14131413
signal_levels);
14141414

@@ -2211,14 +2211,14 @@ static void intel_dp_sink_set_msa_timing_par_ignore_state(struct intel_dp *intel
22112211
const struct intel_crtc_state *crtc_state,
22122212
bool enable)
22132213
{
2214-
struct drm_i915_private *i915 = dp_to_i915(intel_dp);
2214+
struct intel_display *display = to_intel_display(intel_dp);
22152215

22162216
if (!crtc_state->vrr.enable)
22172217
return;
22182218

22192219
if (drm_dp_dpcd_writeb(&intel_dp->aux, DP_DOWNSPREAD_CTRL,
22202220
enable ? DP_MSA_TIMING_PAR_IGNORE_EN : 0) <= 0)
2221-
drm_dbg_kms(&i915->drm,
2221+
drm_dbg_kms(display->drm,
22222222
"Failed to %s MSA_TIMING_PAR_IGNORE in the sink\n",
22232223
str_enable_disable(enable));
22242224
}
@@ -2227,20 +2227,20 @@ static void intel_dp_sink_set_fec_ready(struct intel_dp *intel_dp,
22272227
const struct intel_crtc_state *crtc_state,
22282228
bool enable)
22292229
{
2230-
struct drm_i915_private *i915 = dp_to_i915(intel_dp);
2230+
struct intel_display *display = to_intel_display(intel_dp);
22312231

22322232
if (!crtc_state->fec_enable)
22332233
return;
22342234

22352235
if (drm_dp_dpcd_writeb(&intel_dp->aux, DP_FEC_CONFIGURATION,
22362236
enable ? DP_FEC_READY : 0) <= 0)
2237-
drm_dbg_kms(&i915->drm, "Failed to set FEC_READY to %s in the sink\n",
2237+
drm_dbg_kms(display->drm, "Failed to set FEC_READY to %s in the sink\n",
22382238
enable ? "enabled" : "disabled");
22392239

22402240
if (enable &&
22412241
drm_dp_dpcd_writeb(&intel_dp->aux, DP_FEC_STATUS,
22422242
DP_FEC_DECODE_EN_DETECTED | DP_FEC_DECODE_DIS_DETECTED) <= 0)
2243-
drm_dbg_kms(&i915->drm, "Failed to clear FEC detected flags\n");
2243+
drm_dbg_kms(display->drm, "Failed to clear FEC detected flags\n");
22442244
}
22452245

22462246
static int read_fec_detected_status(struct drm_dp_aux *aux)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7793,7 +7793,7 @@ void intel_setup_outputs(struct drm_i915_private *dev_priv)
77937793
struct intel_encoder *encoder;
77947794
bool dpd_is_edp = false;
77957795

7796-
intel_pps_unlock_regs_wa(dev_priv);
7796+
intel_pps_unlock_regs_wa(display);
77977797

77987798
if (!HAS_DISPLAY(dev_priv))
77997799
return;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1071,7 +1071,7 @@ void intel_display_debugfs_register(struct drm_i915_private *i915)
10711071
intel_fbc_debugfs_register(display);
10721072
intel_hpd_debugfs_register(i915);
10731073
intel_opregion_debugfs_register(display);
1074-
intel_psr_debugfs_register(i915);
1074+
intel_psr_debugfs_register(display);
10751075
intel_wm_debugfs_register(i915);
10761076
intel_display_debugfs_params(display);
10771077
}

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@ int intel_display_driver_probe_nogem(struct drm_i915_private *i915)
428428

429429
intel_panel_sanitize_ssc(i915);
430430

431-
intel_pps_setup(i915);
431+
intel_pps_setup(display);
432432

433433
intel_gmbus_setup(i915);
434434

@@ -459,7 +459,7 @@ int intel_display_driver_probe_nogem(struct drm_i915_private *i915)
459459
intel_vga_disable(i915);
460460
intel_setup_outputs(i915);
461461

462-
ret = intel_dp_tunnel_mgr_init(i915);
462+
ret = intel_dp_tunnel_mgr_init(display);
463463
if (ret)
464464
goto err_hdcp;
465465

@@ -580,6 +580,8 @@ void intel_display_driver_remove(struct drm_i915_private *i915)
580580
/* part #2: call after irq uninstall */
581581
void intel_display_driver_remove_noirq(struct drm_i915_private *i915)
582582
{
583+
struct intel_display *display = &i915->display;
584+
583585
if (!HAS_DISPLAY(i915))
584586
return;
585587

@@ -600,7 +602,7 @@ void intel_display_driver_remove_noirq(struct drm_i915_private *i915)
600602

601603
intel_mode_config_cleanup(i915);
602604

603-
intel_dp_tunnel_mgr_cleanup(i915);
605+
intel_dp_tunnel_mgr_cleanup(display);
604606

605607
intel_overlay_cleanup(i915);
606608

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

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -576,6 +576,7 @@ void valleyview_pipestat_irq_handler(struct drm_i915_private *dev_priv,
576576

577577
static void ibx_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)
578578
{
579+
struct intel_display *display = &dev_priv->display;
579580
enum pipe pipe;
580581
u32 hotplug_trigger = pch_iir & SDE_HOTPLUG_MASK;
581582

@@ -589,7 +590,7 @@ static void ibx_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)
589590
}
590591

591592
if (pch_iir & SDE_AUX_MASK)
592-
intel_dp_aux_irq_handler(dev_priv);
593+
intel_dp_aux_irq_handler(display);
593594

594595
if (pch_iir & SDE_GMBUS)
595596
intel_gmbus_irq_handler(dev_priv);
@@ -664,6 +665,7 @@ static void cpt_serr_int_handler(struct drm_i915_private *dev_priv)
664665

665666
static void cpt_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)
666667
{
668+
struct intel_display *display = &dev_priv->display;
667669
enum pipe pipe;
668670
u32 hotplug_trigger = pch_iir & SDE_HOTPLUG_MASK_CPT;
669671

@@ -677,7 +679,7 @@ static void cpt_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)
677679
}
678680

679681
if (pch_iir & SDE_AUX_MASK_CPT)
680-
intel_dp_aux_irq_handler(dev_priv);
682+
intel_dp_aux_irq_handler(display);
681683

682684
if (pch_iir & SDE_GMBUS_CPT)
683685
intel_gmbus_irq_handler(dev_priv);
@@ -709,7 +711,7 @@ void ilk_display_irq_handler(struct drm_i915_private *dev_priv, u32 de_iir)
709711
ilk_hpd_irq_handler(dev_priv, hotplug_trigger);
710712

711713
if (de_iir & DE_AUX_CHANNEL_A)
712-
intel_dp_aux_irq_handler(dev_priv);
714+
intel_dp_aux_irq_handler(display);
713715

714716
if (de_iir & DE_GSE)
715717
intel_opregion_asle_intr(display);
@@ -775,7 +777,7 @@ void ivb_display_irq_handler(struct drm_i915_private *dev_priv, u32 de_iir)
775777
}
776778

777779
if (de_iir & DE_AUX_CHANNEL_A_IVB)
778-
intel_dp_aux_irq_handler(dev_priv);
780+
intel_dp_aux_irq_handler(display);
779781

780782
if (de_iir & DE_GSE_IVB)
781783
intel_opregion_asle_intr(display);
@@ -1065,6 +1067,7 @@ static void gen8_read_and_ack_pch_irqs(struct drm_i915_private *i915, u32 *pch_i
10651067

10661068
void gen8_de_irq_handler(struct drm_i915_private *dev_priv, u32 master_ctl)
10671069
{
1070+
struct intel_display *display = &dev_priv->display;
10681071
u32 iir;
10691072
enum pipe pipe;
10701073

@@ -1100,7 +1103,7 @@ void gen8_de_irq_handler(struct drm_i915_private *dev_priv, u32 master_ctl)
11001103
intel_uncore_write(&dev_priv->uncore, GEN8_DE_PORT_IIR, iir);
11011104

11021105
if (iir & gen8_de_port_aux_mask(dev_priv)) {
1103-
intel_dp_aux_irq_handler(dev_priv);
1106+
intel_dp_aux_irq_handler(display);
11041107
found = true;
11051108
}
11061109

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

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -861,6 +861,8 @@ void skl_enable_dc6(struct drm_i915_private *dev_priv)
861861

862862
void bxt_enable_dc9(struct drm_i915_private *dev_priv)
863863
{
864+
struct intel_display *display = &dev_priv->display;
865+
864866
assert_can_enable_dc9(dev_priv);
865867

866868
drm_dbg_kms(&dev_priv->drm, "Enabling DC9\n");
@@ -870,19 +872,21 @@ void bxt_enable_dc9(struct drm_i915_private *dev_priv)
870872
* because PPS registers are always on.
871873
*/
872874
if (!HAS_PCH_SPLIT(dev_priv))
873-
intel_pps_reset_all(dev_priv);
875+
intel_pps_reset_all(display);
874876
gen9_set_dc_state(dev_priv, DC_STATE_EN_DC9);
875877
}
876878

877879
void bxt_disable_dc9(struct drm_i915_private *dev_priv)
878880
{
881+
struct intel_display *display = &dev_priv->display;
882+
879883
assert_can_disable_dc9(dev_priv);
880884

881885
drm_dbg_kms(&dev_priv->drm, "Disabling DC9\n");
882886

883887
gen9_set_dc_state(dev_priv, DC_STATE_DISABLE);
884888

885-
intel_pps_unlock_regs_wa(dev_priv);
889+
intel_pps_unlock_regs_wa(display);
886890
}
887891

888892
static void hsw_power_well_sync_hw(struct drm_i915_private *dev_priv,
@@ -1184,6 +1188,7 @@ static void vlv_init_display_clock_gating(struct drm_i915_private *dev_priv)
11841188

11851189
static void vlv_display_power_well_init(struct drm_i915_private *dev_priv)
11861190
{
1191+
struct intel_display *display = &dev_priv->display;
11871192
struct intel_encoder *encoder;
11881193
enum pipe pipe;
11891194

@@ -1229,19 +1234,21 @@ static void vlv_display_power_well_init(struct drm_i915_private *dev_priv)
12291234

12301235
intel_vga_redisable_power_on(dev_priv);
12311236

1232-
intel_pps_unlock_regs_wa(dev_priv);
1237+
intel_pps_unlock_regs_wa(display);
12331238
}
12341239

12351240
static void vlv_display_power_well_deinit(struct drm_i915_private *dev_priv)
12361241
{
1242+
struct intel_display *display = &dev_priv->display;
1243+
12371244
spin_lock_irq(&dev_priv->irq_lock);
12381245
valleyview_disable_display_irqs(dev_priv);
12391246
spin_unlock_irq(&dev_priv->irq_lock);
12401247

12411248
/* make sure we're done processing display irqs */
12421249
intel_synchronize_irq(dev_priv);
12431250

1244-
intel_pps_reset_all(dev_priv);
1251+
intel_pps_reset_all(display);
12451252

12461253
/* Prevent us from re-enabling polling on accident in late suspend */
12471254
if (!dev_priv->drm.dev->power.is_suspended)

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ void intel_display_reset_prepare(struct drm_i915_private *dev_priv)
8383

8484
void intel_display_reset_finish(struct drm_i915_private *i915)
8585
{
86-
struct drm_modeset_acquire_ctx *ctx = &i915->display.restore.reset_ctx;
86+
struct intel_display *display = &i915->display;
87+
struct drm_modeset_acquire_ctx *ctx = &display->restore.reset_ctx;
8788
struct drm_atomic_state *state;
8889
int ret;
8990

@@ -94,7 +95,7 @@ void intel_display_reset_finish(struct drm_i915_private *i915)
9495
if (!test_bit(I915_RESET_MODESET, &to_gt(i915)->reset.flags))
9596
return;
9697

97-
state = fetch_and_zero(&i915->display.restore.modeset_state);
98+
state = fetch_and_zero(&display->restore.modeset_state);
9899
if (!state)
99100
goto unlock;
100101

@@ -112,7 +113,7 @@ void intel_display_reset_finish(struct drm_i915_private *i915)
112113
* The display has been reset as well,
113114
* so need a full re-initialization.
114115
*/
115-
intel_pps_unlock_regs_wa(i915);
116+
intel_pps_unlock_regs_wa(display);
116117
intel_display_driver_init_hw(i915);
117118
intel_clock_gating_init(i915);
118119
intel_hpd_init(i915);

0 commit comments

Comments
 (0)