Skip to content

Commit 959294e

Browse files
committed
Merge tag 'drm-intel-next-2023-06-05' of git://anongit.freedesktop.org/drm/drm-intel into drm-next
drm/i915 features for v6.5: Features and functionality: - Meteorlake (MTL) display enabling (Mika, Radhakrishna, José, Ankit, Clint, Gustavo, Imre, Anusha, Juha-Pekka, Matt) - Allow VRR to be toggled during fastsets (Ville) - Allow arbitrary refresh rates with VRR eDP panels (Ville) - Support async flips on linear buffers on display ver 12+ (Arun) - New debugfs for display clock frequencies (Bhanuprakash) - Taint kernel when force probing unsupported devices (Jani) - Expose CRTC CTM property on ILK/SNB/VLV (Ville) DRM subsystem changes: - EDID changes to support further conversion to struct drm_edid (Jani) - Move i915 DSC parameter code to common DRM helpers (Dmitry Baryshkov) Refactoring and cleanups: - CSC color refactoring (Ville) - VRR cleanups (Ville) - Finish i915 conversion to struct drm_edid (Jani) - Start high level display driver file (Jani) - Hotplug refactoring (Ville) - Misc display refactoring and cleanups (Jani, Ville) - Use device based logging for state checker warnings (Jani) - Split out hotplug and display irq handling (Jani) - Move display device info and probe under display/ (Matt) - HDCP cleanups (Suraj) - Use localized warning ignores instead of per file (Jani) - Remove superfluous enum i915_drm_suspend_mode (Maarten) - PSR, pfit, scaler and chicken register definition cleanups (Ville) - Constify pointers to hwmon_channel_info (Krzysztof Kozlowski) - Replace all non-returning strlcpy with strscpy (Azeem Shaikh) - Refactor VBT aux channel and DDC pin mapping (Ville) - Include cleanups (Jani) Fixes: - Fix modeset locking issue in DP MST HDCP (Suraj) - Fix disconnected Type-C/DP-alt disable at probe (Imre) - Fix HDMI PCON DSC usage and color conversions (Ankit) - Fix g4x HDMI infoframe/audio transmission port usage (Ville) - Avoid use-after-free when DP connector init fails (Maarten) - Fix voltage level for 480 MHz CDCLK (Chaitanya) - Check HPD live state during eDP probe (Ville) - Fix active port PLL selection for secondary MST streams (Imre) - Check pipe source size when using SKL+ scalers (Ville) - Fix MIPI DSI sleep sequences (Hans de Goede) - Fix DPCD register write order to match 128b/132b requirement (Arun) - Increase AUX timeout for Type-C (Suraj) - Communicate display power demands to pcode (Stan) - Fix potential division by zero in DSC compute config (Nikita Zhandarovich) - Fix fast wake AUX sync length (Jouni) - Fix potential oops on intel_get_crtc_new_encoder() (Ville) Merges: - drm-next backmerges (Rodrigo, Jani) Signed-off-by: Dave Airlie <[email protected]> From: Jani Nikula <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
2 parents 45365b6 + 619a06d commit 959294e

File tree

147 files changed

+15470
-7367
lines changed

Some content is hidden

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

147 files changed

+15470
-7367
lines changed

drivers/gpu/drm/display/drm_dp_mst_topology.c

Lines changed: 43 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1823,7 +1823,7 @@ static void drm_dp_destroy_port(struct kref *kref)
18231823
return;
18241824
}
18251825

1826-
kfree(port->cached_edid);
1826+
drm_edid_free(port->cached_edid);
18271827

18281828
/*
18291829
* we can't destroy the connector here, as we might be holding the
@@ -2272,8 +2272,8 @@ drm_dp_mst_port_add_connector(struct drm_dp_mst_branch *mstb,
22722272
if (port->pdt != DP_PEER_DEVICE_NONE &&
22732273
drm_dp_mst_is_end_device(port->pdt, port->mcs) &&
22742274
port->port_num >= DP_MST_LOGICAL_PORT_0)
2275-
port->cached_edid = drm_get_edid(port->connector,
2276-
&port->aux.ddc);
2275+
port->cached_edid = drm_edid_read_ddc(port->connector,
2276+
&port->aux.ddc);
22772277

22782278
drm_connector_register(port->connector);
22792279
return;
@@ -4133,7 +4133,7 @@ drm_dp_mst_detect_port(struct drm_connector *connector,
41334133
ret = connector_status_connected;
41344134
/* for logical ports - cache the EDID */
41354135
if (port->port_num >= DP_MST_LOGICAL_PORT_0 && !port->cached_edid)
4136-
port->cached_edid = drm_get_edid(connector, &port->aux.ddc);
4136+
port->cached_edid = drm_edid_read_ddc(connector, &port->aux.ddc);
41374137
break;
41384138
case DP_PEER_DEVICE_DP_LEGACY_CONV:
41394139
if (port->ldps)
@@ -4147,7 +4147,7 @@ drm_dp_mst_detect_port(struct drm_connector *connector,
41474147
EXPORT_SYMBOL(drm_dp_mst_detect_port);
41484148

41494149
/**
4150-
* drm_dp_mst_get_edid() - get EDID for an MST port
4150+
* drm_dp_mst_edid_read() - get EDID for an MST port
41514151
* @connector: toplevel connector to get EDID for
41524152
* @mgr: manager for this port
41534153
* @port: unverified pointer to a port.
@@ -4156,22 +4156,53 @@ EXPORT_SYMBOL(drm_dp_mst_detect_port);
41564156
* It validates the pointer still exists so the caller doesn't require a
41574157
* reference.
41584158
*/
4159-
struct edid *drm_dp_mst_get_edid(struct drm_connector *connector, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port)
4159+
const struct drm_edid *drm_dp_mst_edid_read(struct drm_connector *connector,
4160+
struct drm_dp_mst_topology_mgr *mgr,
4161+
struct drm_dp_mst_port *port)
41604162
{
4161-
struct edid *edid = NULL;
4163+
const struct drm_edid *drm_edid;
41624164

41634165
/* we need to search for the port in the mgr in case it's gone */
41644166
port = drm_dp_mst_topology_get_port_validated(mgr, port);
41654167
if (!port)
41664168
return NULL;
41674169

41684170
if (port->cached_edid)
4169-
edid = drm_edid_duplicate(port->cached_edid);
4170-
else {
4171-
edid = drm_get_edid(connector, &port->aux.ddc);
4172-
}
4173-
port->has_audio = drm_detect_monitor_audio(edid);
4171+
drm_edid = drm_edid_dup(port->cached_edid);
4172+
else
4173+
drm_edid = drm_edid_read_ddc(connector, &port->aux.ddc);
4174+
41744175
drm_dp_mst_topology_put_port(port);
4176+
4177+
return drm_edid;
4178+
}
4179+
EXPORT_SYMBOL(drm_dp_mst_edid_read);
4180+
4181+
/**
4182+
* drm_dp_mst_get_edid() - get EDID for an MST port
4183+
* @connector: toplevel connector to get EDID for
4184+
* @mgr: manager for this port
4185+
* @port: unverified pointer to a port.
4186+
*
4187+
* This function is deprecated; please use drm_dp_mst_edid_read() instead.
4188+
*
4189+
* This returns an EDID for the port connected to a connector,
4190+
* It validates the pointer still exists so the caller doesn't require a
4191+
* reference.
4192+
*/
4193+
struct edid *drm_dp_mst_get_edid(struct drm_connector *connector,
4194+
struct drm_dp_mst_topology_mgr *mgr,
4195+
struct drm_dp_mst_port *port)
4196+
{
4197+
const struct drm_edid *drm_edid;
4198+
struct edid *edid;
4199+
4200+
drm_edid = drm_dp_mst_edid_read(connector, mgr, port);
4201+
4202+
edid = drm_edid_duplicate(drm_edid_raw(drm_edid));
4203+
4204+
drm_edid_free(drm_edid);
4205+
41754206
return edid;
41764207
}
41774208
EXPORT_SYMBOL(drm_dp_mst_get_edid);

0 commit comments

Comments
 (0)