Skip to content

Commit f886261

Browse files
committed
drm/i915/edp: always add fixed mode to probed modes in ->get_modes()
Unconditionally add fixed mode to probed modes even if EDID is present and has modes. Prepare for cases where the fixed mode is not present in EDID (such as eDP MSO). Cc: Nischal Varide <[email protected]> Reviewed-by: Uma Shankar <[email protected]> Signed-off-by: Jani Nikula <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/6979f123f3e4ed948333f1b181202bbced3c3e85.1613054234.git.jani.nikula@intel.com
1 parent 8733932 commit f886261

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

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

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5547,19 +5547,18 @@ static int intel_dp_get_modes(struct drm_connector *connector)
55475547
{
55485548
struct intel_connector *intel_connector = to_intel_connector(connector);
55495549
struct edid *edid;
5550+
int num_modes = 0;
55505551

55515552
edid = intel_connector->detect_edid;
55525553
if (edid) {
5553-
int ret = intel_connector_update_modes(connector, edid);
5554+
num_modes = intel_connector_update_modes(connector, edid);
55545555

55555556
if (intel_vrr_is_capable(connector))
55565557
drm_connector_set_vrr_capable_property(connector,
55575558
true);
5558-
if (ret)
5559-
return ret;
55605559
}
55615560

5562-
/* if eDP has no EDID, fall back to fixed mode */
5561+
/* Also add fixed mode, which may or may not be present in EDID */
55635562
if (intel_dp_is_edp(intel_attached_dp(intel_connector)) &&
55645563
intel_connector->panel.fixed_mode) {
55655564
struct drm_display_mode *mode;
@@ -5568,10 +5567,13 @@ static int intel_dp_get_modes(struct drm_connector *connector)
55685567
intel_connector->panel.fixed_mode);
55695568
if (mode) {
55705569
drm_mode_probed_add(connector, mode);
5571-
return 1;
5570+
num_modes++;
55725571
}
55735572
}
55745573

5574+
if (num_modes)
5575+
return num_modes;
5576+
55755577
if (!edid) {
55765578
struct intel_dp *intel_dp = intel_attached_dp(intel_connector);
55775579
struct drm_display_mode *mode;
@@ -5581,11 +5583,11 @@ static int intel_dp_get_modes(struct drm_connector *connector)
55815583
intel_dp->downstream_ports);
55825584
if (mode) {
55835585
drm_mode_probed_add(connector, mode);
5584-
return 1;
5586+
num_modes++;
55855587
}
55865588
}
55875589

5588-
return 0;
5590+
return num_modes;
55895591
}
55905592

55915593
static int

0 commit comments

Comments
 (0)