mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-09 06:41:06 -04:00
drm/edid: Use GTF2 for inferred modes
For some reason we only use the secondary GTF curve for the standard timings. Use it for inferred modes as well. Reviewed-by: Jani Nikula <jani.nikula@intel.com> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20220927170006.27855-6-ville.syrjala@linux.intel.com
This commit is contained in:
@@ -3546,6 +3546,35 @@ static int drm_gtf_modes_for_range(struct drm_connector *connector,
|
||||
return modes;
|
||||
}
|
||||
|
||||
static int drm_gtf2_modes_for_range(struct drm_connector *connector,
|
||||
const struct drm_edid *drm_edid,
|
||||
const struct detailed_timing *timing)
|
||||
{
|
||||
int i, modes = 0;
|
||||
struct drm_display_mode *newmode;
|
||||
struct drm_device *dev = connector->dev;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(extra_modes); i++) {
|
||||
const struct minimode *m = &extra_modes[i];
|
||||
|
||||
newmode = drm_gtf2_mode(dev, drm_edid, m->w, m->h, m->r);
|
||||
if (!newmode)
|
||||
return modes;
|
||||
|
||||
drm_mode_fixup_1366x768(newmode);
|
||||
if (!mode_in_range(newmode, drm_edid, timing) ||
|
||||
!valid_inferred_mode(connector, newmode)) {
|
||||
drm_mode_destroy(dev, newmode);
|
||||
continue;
|
||||
}
|
||||
|
||||
drm_mode_probed_add(connector, newmode);
|
||||
modes++;
|
||||
}
|
||||
|
||||
return modes;
|
||||
}
|
||||
|
||||
static int drm_cvt_modes_for_range(struct drm_connector *connector,
|
||||
const struct drm_edid *drm_edid,
|
||||
const struct detailed_timing *timing)
|
||||
@@ -3594,7 +3623,11 @@ do_inferred_modes(const struct detailed_timing *timing, void *c)
|
||||
return; /* GTF not defined yet */
|
||||
|
||||
switch (range->flags) {
|
||||
case DRM_EDID_SECONDARY_GTF_SUPPORT_FLAG: /* XXX could do more */
|
||||
case DRM_EDID_SECONDARY_GTF_SUPPORT_FLAG:
|
||||
closure->modes += drm_gtf2_modes_for_range(closure->connector,
|
||||
closure->drm_edid,
|
||||
timing);
|
||||
break;
|
||||
case DRM_EDID_DEFAULT_GTF_SUPPORT_FLAG:
|
||||
closure->modes += drm_gtf_modes_for_range(closure->connector,
|
||||
closure->drm_edid,
|
||||
|
||||
Reference in New Issue
Block a user