Skip to content

Commit e5dc4f6

Browse files
committed
Merge tag 'drm-intel-next-2025-03-10' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next
drm/i915 feature pull #2 for v6.15: Features and functionality: - FBC dirty rectangle support for display version 30+ (Vinod) - Update plane scalers via DSB based commits (Ville) - Move runtime power status info to display power debugfs (Jani) Refactoring and cleanups: - Convert i915 and xe to DRM client setup (Thomas) - Refactor and clean up CDCLK/bw/dbuf readout/sanitation (Ville) - Conversions from drm_i915_private to struct intel_display (Jani, Suraj) - Refactor display reset for better separation between display and core (Jani) - Move panel fitter code together (Jani) - Add mst and hdcp sub-structs to display structs for clarity (Jani) - Header refactoring to clarify separation between display and i915 core (Jani) Fixes: - Fix DP MST max stream count to match number of pipes (Jani) - Fix encoder HW state readout of DP MST UHBR (Imre) - Fix ICL+ combo PHY cursor and coeff polarity programming (Ville) - Fix pipeDMC and ATS fault handling (Ville) - Display workarounds (Gustavo) - Remove duplicate forward declaration (Vinod) - Improve POWER_DOMAIN_*() macro type safety (Gustavo) - Move CDCLK post plane programming later (Ville) DRM core changes: - Add client-hotplug helper (Thomas) - Send pending hotplug events after client resume (Thomas) - Add fb_restore and fb_set_suspend fb helper hooks (Thomas) - Remove struct fb_probe fb helper hook (Thomas) - Add const qualifier to drm_atomic_helper_damage_merged() (Vinod) Xe driver changes: - Convert i915 and xe to DRM client setup (Thomas) - Refactor i915 compat headers (Jani) - Fix fbdev GGTT mapping handling (Maarten) - Figure out pxp instance from the gem object (Jani) Merges: - Backmerge drm-next to fix conflicts with drm-xe-next (Jani) Signed-off-by: Dave Airlie <airlied@redhat.com> From: Jani Nikula <jani.nikula@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/87o6y9gpub.fsf@intel.com
2 parents 11a5c64 + bb800b5 commit e5dc4f6

File tree

124 files changed

+2545
-2374
lines changed

Some content is hidden

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

124 files changed

+2545
-2374
lines changed

drivers/gpu/drm/drm_client_event.c

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,29 @@ void drm_client_dev_unregister(struct drm_device *dev)
4949
}
5050
EXPORT_SYMBOL(drm_client_dev_unregister);
5151

52+
static void drm_client_hotplug(struct drm_client_dev *client)
53+
{
54+
struct drm_device *dev = client->dev;
55+
int ret;
56+
57+
if (!client->funcs || !client->funcs->hotplug)
58+
return;
59+
60+
if (client->hotplug_failed)
61+
return;
62+
63+
if (client->suspended) {
64+
client->hotplug_pending = true;
65+
return;
66+
}
67+
68+
client->hotplug_pending = false;
69+
ret = client->funcs->hotplug(client);
70+
drm_dbg_kms(dev, "%s: ret=%d\n", client->name, ret);
71+
if (ret)
72+
client->hotplug_failed = true;
73+
}
74+
5275
/**
5376
* drm_client_dev_hotplug - Send hotplug event to clients
5477
* @dev: DRM device
@@ -61,7 +84,6 @@ EXPORT_SYMBOL(drm_client_dev_unregister);
6184
void drm_client_dev_hotplug(struct drm_device *dev)
6285
{
6386
struct drm_client_dev *client;
64-
int ret;
6587

6688
if (!drm_core_check_feature(dev, DRIVER_MODESET))
6789
return;
@@ -72,18 +94,8 @@ void drm_client_dev_hotplug(struct drm_device *dev)
7294
}
7395

7496
mutex_lock(&dev->clientlist_mutex);
75-
list_for_each_entry(client, &dev->clientlist, list) {
76-
if (!client->funcs || !client->funcs->hotplug)
77-
continue;
78-
79-
if (client->hotplug_failed)
80-
continue;
81-
82-
ret = client->funcs->hotplug(client);
83-
drm_dbg_kms(dev, "%s: ret=%d\n", client->name, ret);
84-
if (ret)
85-
client->hotplug_failed = true;
86-
}
97+
list_for_each_entry(client, &dev->clientlist, list)
98+
drm_client_hotplug(client);
8799
mutex_unlock(&dev->clientlist_mutex);
88100
}
89101
EXPORT_SYMBOL(drm_client_dev_hotplug);
@@ -153,6 +165,9 @@ static int drm_client_resume(struct drm_client_dev *client, bool holds_console_l
153165

154166
client->suspended = false;
155167

168+
if (client->hotplug_pending)
169+
drm_client_hotplug(client);
170+
156171
return ret;
157172
}
158173

drivers/gpu/drm/drm_damage_helper.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ EXPORT_SYMBOL(drm_atomic_helper_damage_iter_next);
308308
* True if there is valid plane damage otherwise false.
309309
*/
310310
bool drm_atomic_helper_damage_merged(const struct drm_plane_state *old_state,
311-
struct drm_plane_state *state,
311+
const struct drm_plane_state *state,
312312
struct drm_rect *rect)
313313
{
314314
struct drm_atomic_helper_damage_iter iter;

drivers/gpu/drm/drm_fb_helper.c

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,9 @@ __drm_fb_helper_restore_fbdev_mode_unlocked(struct drm_fb_helper *fb_helper,
245245
if (do_delayed)
246246
drm_fb_helper_hotplug_event(fb_helper);
247247

248+
if (fb_helper->funcs->fb_restore)
249+
fb_helper->funcs->fb_restore(fb_helper);
250+
248251
return ret;
249252
}
250253

@@ -754,7 +757,12 @@ EXPORT_SYMBOL(drm_fb_helper_deferred_io);
754757
*/
755758
void drm_fb_helper_set_suspend(struct drm_fb_helper *fb_helper, bool suspend)
756759
{
757-
if (fb_helper && fb_helper->info)
760+
if (!fb_helper || !fb_helper->info)
761+
return;
762+
763+
if (fb_helper->funcs->fb_set_suspend)
764+
fb_helper->funcs->fb_set_suspend(fb_helper, suspend);
765+
else
758766
fb_set_suspend(fb_helper->info, suspend);
759767
}
760768
EXPORT_SYMBOL(drm_fb_helper_set_suspend);
@@ -800,7 +808,7 @@ void drm_fb_helper_set_suspend_unlocked(struct drm_fb_helper *fb_helper,
800808
}
801809
}
802810

803-
fb_set_suspend(fb_helper->info, suspend);
811+
drm_fb_helper_set_suspend(fb_helper, suspend);
804812
console_unlock();
805813
}
806814
EXPORT_SYMBOL(drm_fb_helper_set_suspend_unlocked);
@@ -1626,6 +1634,9 @@ static int drm_fb_helper_single_fb_probe(struct drm_fb_helper *fb_helper)
16261634
struct fb_info *info;
16271635
int ret;
16281636

1637+
if (drm_WARN_ON(dev, !dev->driver->fbdev_probe))
1638+
return -EINVAL;
1639+
16291640
ret = drm_fb_helper_find_sizes(fb_helper, &sizes);
16301641
if (ret) {
16311642
/* First time: disable all crtc's.. */
@@ -1635,10 +1646,7 @@ static int drm_fb_helper_single_fb_probe(struct drm_fb_helper *fb_helper)
16351646
}
16361647

16371648
/* push down into drivers */
1638-
if (dev->driver->fbdev_probe)
1639-
ret = dev->driver->fbdev_probe(fb_helper, &sizes);
1640-
else if (fb_helper->funcs)
1641-
ret = fb_helper->funcs->fb_probe(fb_helper, &sizes);
1649+
ret = dev->driver->fbdev_probe(fb_helper, &sizes);
16421650
if (ret < 0)
16431651
return ret;
16441652

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1311,7 +1311,7 @@ bool g4x_dp_init(struct intel_display *display,
13111311

13121312
intel_encoder->devdata = devdata;
13131313

1314-
mutex_init(&dig_port->hdcp_mutex);
1314+
mutex_init(&dig_port->hdcp.mutex);
13151315

13161316
if (drm_encoder_init(display->drm, &intel_encoder->base,
13171317
&intel_dp_enc_funcs, DRM_MODE_ENCODER_TMDS,

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -715,7 +715,7 @@ bool g4x_hdmi_init(struct intel_display *display,
715715

716716
intel_encoder->devdata = devdata;
717717

718-
mutex_init(&dig_port->hdcp_mutex);
718+
mutex_init(&dig_port->hdcp.mutex);
719719

720720
if (drm_encoder_init(display->drm, &intel_encoder->base,
721721
&intel_hdmi_enc_funcs, DRM_MODE_ENCODER_TMDS,

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

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3902,12 +3902,6 @@ static void g4x_wm_sanitize(struct drm_i915_private *dev_priv)
39023902
mutex_unlock(&dev_priv->display.wm.wm_mutex);
39033903
}
39043904

3905-
static void g4x_wm_get_hw_state_and_sanitize(struct drm_i915_private *i915)
3906-
{
3907-
g4x_wm_get_hw_state(i915);
3908-
g4x_wm_sanitize(i915);
3909-
}
3910-
39113905
static void vlv_wm_get_hw_state(struct drm_i915_private *dev_priv)
39123906
{
39133907
struct vlv_wm_values *wm = &dev_priv->display.wm.vlv;
@@ -4055,12 +4049,6 @@ static void vlv_wm_sanitize(struct drm_i915_private *dev_priv)
40554049
mutex_unlock(&dev_priv->display.wm.wm_mutex);
40564050
}
40574051

4058-
static void vlv_wm_get_hw_state_and_sanitize(struct drm_i915_private *i915)
4059-
{
4060-
vlv_wm_get_hw_state(i915);
4061-
vlv_wm_sanitize(i915);
4062-
}
4063-
40644052
/*
40654053
* FIXME should probably kill this and improve
40664054
* the real watermark readout/sanitation instead
@@ -4122,14 +4110,16 @@ static const struct intel_wm_funcs vlv_wm_funcs = {
41224110
.initial_watermarks = vlv_initial_watermarks,
41234111
.optimize_watermarks = vlv_optimize_watermarks,
41244112
.atomic_update_watermarks = vlv_atomic_update_fifo,
4125-
.get_hw_state = vlv_wm_get_hw_state_and_sanitize,
4113+
.get_hw_state = vlv_wm_get_hw_state,
4114+
.sanitize = vlv_wm_sanitize,
41264115
};
41274116

41284117
static const struct intel_wm_funcs g4x_wm_funcs = {
41294118
.compute_watermarks = g4x_compute_watermarks,
41304119
.initial_watermarks = g4x_initial_watermarks,
41314120
.optimize_watermarks = g4x_optimize_watermarks,
4132-
.get_hw_state = g4x_wm_get_hw_state_and_sanitize,
4121+
.get_hw_state = g4x_wm_get_hw_state,
4122+
.sanitize = g4x_wm_sanitize,
41334123
};
41344124

41354125
static const struct intel_wm_funcs pnv_wm_funcs = {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1647,7 +1647,7 @@ static int gen11_dsi_compute_config(struct intel_encoder *encoder,
16471647
if (ret)
16481648
return ret;
16491649

1650-
ret = intel_panel_fitting(pipe_config, conn_state);
1650+
ret = intel_pfit_compute_config(pipe_config, conn_state);
16511651
if (ret)
16521652
return ret;
16531653

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
#include <linux/acpi.h>
1010
#include <acpi/video.h>
1111

12+
#include <drm/drm_print.h>
13+
1214
#include "i915_utils.h"
1315
#include "intel_acpi.h"
1416
#include "intel_display_core.h"

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ struct drm_connector_state;
1414
struct drm_crtc;
1515
struct drm_crtc_state;
1616
struct drm_device;
17-
struct drm_i915_private;
1817
struct drm_property;
1918
struct intel_atomic_state;
2019
struct intel_connector;

0 commit comments

Comments
 (0)