Check mode before adding to EDID
parent
8bfe29d9e4
commit
1a959a2095
|
@ -223,9 +223,11 @@ static int add_established_modes(struct drm_output *output, struct edid *edid)
|
||||||
if (est_bits & (1<<i)) {
|
if (est_bits & (1<<i)) {
|
||||||
struct drm_display_mode *newmode;
|
struct drm_display_mode *newmode;
|
||||||
newmode = drm_mode_duplicate(dev, &edid_est_modes[i]);
|
newmode = drm_mode_duplicate(dev, &edid_est_modes[i]);
|
||||||
|
if (newmode) {
|
||||||
drm_mode_probed_add(output, newmode);
|
drm_mode_probed_add(output, newmode);
|
||||||
modes++;
|
modes++;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return modes;
|
return modes;
|
||||||
}
|
}
|
||||||
|
@ -251,9 +253,11 @@ static int add_standard_modes(struct drm_output *output, struct edid *edid)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
newmode = drm_mode_std(dev, &edid->standard_timings[i]);
|
newmode = drm_mode_std(dev, &edid->standard_timings[i]);
|
||||||
|
if (newmode) {
|
||||||
drm_mode_probed_add(output, newmode);
|
drm_mode_probed_add(output, newmode);
|
||||||
modes++;
|
modes++;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return modes;
|
return modes;
|
||||||
}
|
}
|
||||||
|
@ -283,11 +287,13 @@ static int add_detailed_info(struct drm_output *output, struct edid *edid)
|
||||||
if (timing->pixel_clock) {
|
if (timing->pixel_clock) {
|
||||||
newmode = drm_mode_detailed(dev, timing);
|
newmode = drm_mode_detailed(dev, timing);
|
||||||
/* First detailed mode is preferred */
|
/* First detailed mode is preferred */
|
||||||
|
if (newmode) {
|
||||||
if (i == 0 && edid->preferred_timing)
|
if (i == 0 && edid->preferred_timing)
|
||||||
newmode->type |= DRM_MODE_TYPE_PREFERRED;
|
newmode->type |= DRM_MODE_TYPE_PREFERRED;
|
||||||
drm_mode_probed_add(output, newmode);
|
drm_mode_probed_add(output, newmode);
|
||||||
|
|
||||||
modes++;
|
modes++;
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -312,9 +318,11 @@ static int add_detailed_info(struct drm_output *output, struct edid *edid)
|
||||||
|
|
||||||
std = &data->data.timings[j];
|
std = &data->data.timings[j];
|
||||||
newmode = drm_mode_std(dev, std);
|
newmode = drm_mode_std(dev, std);
|
||||||
|
if (newmode) {
|
||||||
drm_mode_probed_add(output, newmode);
|
drm_mode_probed_add(output, newmode);
|
||||||
modes++;
|
modes++;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue