@@ -5547,19 +5547,18 @@ static int intel_dp_get_modes(struct drm_connector *connector)
5547
5547
{
5548
5548
struct intel_connector * intel_connector = to_intel_connector (connector );
5549
5549
struct edid * edid ;
5550
+ int num_modes = 0 ;
5550
5551
5551
5552
edid = intel_connector -> detect_edid ;
5552
5553
if (edid ) {
5553
- int ret = intel_connector_update_modes (connector , edid );
5554
+ num_modes = intel_connector_update_modes (connector , edid );
5554
5555
5555
5556
if (intel_vrr_is_capable (connector ))
5556
5557
drm_connector_set_vrr_capable_property (connector ,
5557
5558
true);
5558
- if (ret )
5559
- return ret ;
5560
5559
}
5561
5560
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 */
5563
5562
if (intel_dp_is_edp (intel_attached_dp (intel_connector )) &&
5564
5563
intel_connector -> panel .fixed_mode ) {
5565
5564
struct drm_display_mode * mode ;
@@ -5568,10 +5567,13 @@ static int intel_dp_get_modes(struct drm_connector *connector)
5568
5567
intel_connector -> panel .fixed_mode );
5569
5568
if (mode ) {
5570
5569
drm_mode_probed_add (connector , mode );
5571
- return 1 ;
5570
+ num_modes ++ ;
5572
5571
}
5573
5572
}
5574
5573
5574
+ if (num_modes )
5575
+ return num_modes ;
5576
+
5575
5577
if (!edid ) {
5576
5578
struct intel_dp * intel_dp = intel_attached_dp (intel_connector );
5577
5579
struct drm_display_mode * mode ;
@@ -5581,11 +5583,11 @@ static int intel_dp_get_modes(struct drm_connector *connector)
5581
5583
intel_dp -> downstream_ports );
5582
5584
if (mode ) {
5583
5585
drm_mode_probed_add (connector , mode );
5584
- return 1 ;
5586
+ num_modes ++ ;
5585
5587
}
5586
5588
}
5587
5589
5588
- return 0 ;
5590
+ return num_modes ;
5589
5591
}
5590
5592
5591
5593
static int
0 commit comments