Message ID | 3903b2b60acb895478cd0dd407ca9b719fb8172c.1490203284.git.joabreu@synopsys.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 22.03.2017 18:35, Jose Abreu wrote: > This patch completes CEA table of video modes so that VIC 1-107 > are now available. Use the HDMI 2.0+ flag to signal these are > modes for HDMI 2.0 onwards. edid_cea_modes array is used in different contexts, simple extensions of the array with modes not present in HDMI < 2.0 can result in different behavior of drivers. There should be put sentinels somewhere to limit table lookup to old VICs if device/driver/receiver is not HDMI2.0 compliant. The only situation I am aware of at the moment is infoframe generation code. For TVs not supporting 4K modes but not HDMI 2.0 compatible, VIC field in AVI infoframe should be 0 for 4K modes and vendor infoframe should be generated with proper HDMI-VIC. With current infoframe helpers and this patch it will not work this way. Regards Andrzej > > Signed-off-by: Jose Abreu <joabreu@synopsys.com> > Cc: Carlos Palminha <palminha@synopsys.com> > Cc: dri-devel@lists.freedesktop.org > --- > drivers/gpu/drm/drm_edid.c | 258 +++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 258 insertions(+) > > diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c > index fad3d44..90080368 100644 > --- a/drivers/gpu/drm/drm_edid.c > +++ b/drivers/gpu/drm/drm_edid.c > @@ -1001,6 +1001,264 @@ struct minimode { > 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, > DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), > .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, > + /* 65 - 1280x720@24Hz */ > + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 59400, 1280, 3040, > + 3080, 3300, 0, 720, 725, 730, 750, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 66 - 1280x720@25Hz */ > + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3700, > + 3740, 3960, 0, 720, 725, 730, 750, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 67 - 1280x720@30Hz */ > + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3040, > + 3080, 3300, 0, 720, 725, 730, 750, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 68 - 1280x720@50Hz */ > + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1720, > + 1760, 1980, 0, 720, 725, 730, 750, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 69 - 1280x720@60Hz */ > + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390, > + 1430, 1650, 0, 720, 725, 730, 750, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 70 - 1280x720@100Hz */ > + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1720, > + 1760, 1980, 0, 720, 725, 730, 750, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 71 - 1280x720@120Hz */ > + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1390, > + 1430, 1650, 0, 720, 725, 730, 750, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 72 - 1920x1080@24Hz */ > + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2558, > + 2602, 2750, 0, 1080, 1084, 1089, 1125, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 73 - 1920x1080@25Hz */ > + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2448, > + 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 74 - 1920x1080@30Hz */ > + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2008, > + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 75 - 1920x1080@50Hz */ > + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2448, > + 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 76 - 1920x1080@60Hz */ > + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2008, > + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 77 - 1920x1080@100Hz */ > + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2448, > + 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 78 - 1920x1080@120Hz */ > + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2008, > + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 79 - 1680x720@24Hz */ > + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 3040, > + 3080, 3300, 0, 720, 725, 730, 750, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 80 - 1680x720@25Hz */ > + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 2908, > + 2948, 3168, 0, 720, 725, 730, 750, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 81 - 1680x720@30Hz */ > + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 2380, > + 2420, 2640, 0, 720, 725, 730, 750, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 82 - 1680x720@50Hz */ > + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 82500, 1680, 1940, > + 1980, 2200, 0, 720, 725, 730, 750, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 83 - 1680x720@60Hz */ > + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 99000, 1680, 1940, > + 1980, 2200, 0, 720, 725, 730, 750, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 84 - 1680x720@100Hz */ > + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 165000, 1680, 1740, > + 1780, 2000, 0, 720, 725, 730, 825, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 85 - 1680x720@120Hz */ > + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 198000, 1680, 1740, > + 1780, 2000, 0, 720, 725, 730, 825, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 86 - 2560x1080@24Hz */ > + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 99000, 2560, 3558, > + 3602, 3750, 0, 1080, 1084, 1089, 1100, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 87 - 2560x1080@25Hz */ > + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 90000, 2560, 3008, > + 3052, 3200, 0, 1080, 1084, 1089, 1125, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 88 - 2560x1080@30Hz */ > + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 118800, 2560, 3328, > + 3372, 3520, 0, 1080, 1084, 1089, 1125, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 89 - 2560x1080@50Hz */ > + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 185625, 2560, 3108, > + 3152, 3300, 0, 1080, 1084, 1089, 1125, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 90 - 2560x1080@60Hz */ > + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 198000, 2560, 2808, > + 2852, 3000, 0, 1080, 1084, 1089, 1100, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 91 - 2560x1080@100Hz */ > + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 371250, 2560, 2778, > + 2822, 2970, 0, 1080, 1084, 1089, 1250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 92 - 2560x1080@120Hz */ > + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 495000, 2560, 3108, > + 3152, 3300, 0, 1080, 1084, 1089, 1250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, > + /* 93 - 3840x2160p@24Hz 16:9 */ > + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 5116, > + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9,}, > + /* 94 - 3840x2160p@25Hz 16:9 */ > + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4896, > + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, > + /* 95 - 3840x2160p@30Hz 16:9 */ > + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4016, > + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, > + /* 96 - 3840x2160p@50Hz 16:9 */ > + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4896, > + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, > + /* 97 - 3840x2160p@60Hz 16:9 */ > + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4016, > + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, > + /* 98 - 4096x2160p@24Hz 256:135 */ > + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 5116, > + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, > + /* 99 - 4096x2160p@25Hz 256:135 */ > + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 5064, > + 5152, 5280, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, > + /* 100 - 4096x2160p@30Hz 256:135 */ > + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 4184, > + 4272, 4400, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, > + /* 101 - 4096x2160p@50Hz 256:135 */ > + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 594000, 4096, 5064, > + 5152, 5280, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, > + /* 102 - 4096x2160p@60Hz 256:135 */ > + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 594000, 4096, 4184, > + 4272, 4400, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, > + /* 103 - 3840x2160p@24Hz 64:27 */ > + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 5116, > + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, > + /* 104 - 3840x2160p@25Hz 64:27 */ > + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4016, > + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, > + /* 105 - 3840x2160p@30Hz 64:27 */ > + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4016, > + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, > + /* 106 - 3840x2160p@50Hz 64:27 */ > + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4896, > + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, > + /* 107 - 3840x2160p@60Hz 64:27 */ > + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4016, > + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, > + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | > + DRM_MODE_FLAG_HDMI2), > + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, > }; > > /*
Hi Andrzej, Thanks for the feedback! On 23-03-2017 08:11, Andrzej Hajda wrote: > On 22.03.2017 18:35, Jose Abreu wrote: >> This patch completes CEA table of video modes so that VIC 1-107 >> are now available. Use the HDMI 2.0+ flag to signal these are >> modes for HDMI 2.0 onwards. > edid_cea_modes array is used in different contexts, simple extensions of > the array with modes not present in HDMI < 2.0 can result in different > behavior of drivers. > There should be put sentinels somewhere to limit table lookup to old > VICs if device/driver/receiver is not HDMI2.0 compliant. > The only situation I am aware of at the moment is infoframe generation > code. For TVs not supporting 4K modes but not HDMI 2.0 compatible, VIC > field in AVI infoframe should be 0 for 4K modes and vendor infoframe > should be generated with proper HDMI-VIC. With current infoframe helpers > and this patch it will not work this way. But this is what I do in patch 5/5 (see https://patchwork.kernel.org/patch/9640205/), unless drivers ask to I don't expose the new modes. Best regards, Jose Miguel Abreu > > Regards > Andrzej >> Signed-off-by: Jose Abreu <joabreu@synopsys.com> >> Cc: Carlos Palminha <palminha@synopsys.com> >> Cc: dri-devel@lists.freedesktop.org >> --- >> drivers/gpu/drm/drm_edid.c | 258 +++++++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 258 insertions(+) >> >> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c >> index fad3d44..90080368 100644 >> --- a/drivers/gpu/drm/drm_edid.c >> +++ b/drivers/gpu/drm/drm_edid.c >> @@ -1001,6 +1001,264 @@ struct minimode { >> 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, >> DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), >> .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, >> + /* 65 - 1280x720@24Hz */ >> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 59400, 1280, 3040, >> + 3080, 3300, 0, 720, 725, 730, 750, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 66 - 1280x720@25Hz */ >> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3700, >> + 3740, 3960, 0, 720, 725, 730, 750, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 67 - 1280x720@30Hz */ >> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3040, >> + 3080, 3300, 0, 720, 725, 730, 750, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 68 - 1280x720@50Hz */ >> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1720, >> + 1760, 1980, 0, 720, 725, 730, 750, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 69 - 1280x720@60Hz */ >> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390, >> + 1430, 1650, 0, 720, 725, 730, 750, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 70 - 1280x720@100Hz */ >> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1720, >> + 1760, 1980, 0, 720, 725, 730, 750, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 71 - 1280x720@120Hz */ >> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1390, >> + 1430, 1650, 0, 720, 725, 730, 750, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 72 - 1920x1080@24Hz */ >> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2558, >> + 2602, 2750, 0, 1080, 1084, 1089, 1125, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 73 - 1920x1080@25Hz */ >> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2448, >> + 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 74 - 1920x1080@30Hz */ >> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2008, >> + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 75 - 1920x1080@50Hz */ >> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2448, >> + 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 76 - 1920x1080@60Hz */ >> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2008, >> + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 77 - 1920x1080@100Hz */ >> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2448, >> + 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 78 - 1920x1080@120Hz */ >> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2008, >> + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 79 - 1680x720@24Hz */ >> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 3040, >> + 3080, 3300, 0, 720, 725, 730, 750, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 80 - 1680x720@25Hz */ >> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 2908, >> + 2948, 3168, 0, 720, 725, 730, 750, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 81 - 1680x720@30Hz */ >> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 2380, >> + 2420, 2640, 0, 720, 725, 730, 750, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 82 - 1680x720@50Hz */ >> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 82500, 1680, 1940, >> + 1980, 2200, 0, 720, 725, 730, 750, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 83 - 1680x720@60Hz */ >> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 99000, 1680, 1940, >> + 1980, 2200, 0, 720, 725, 730, 750, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 84 - 1680x720@100Hz */ >> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 165000, 1680, 1740, >> + 1780, 2000, 0, 720, 725, 730, 825, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 85 - 1680x720@120Hz */ >> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 198000, 1680, 1740, >> + 1780, 2000, 0, 720, 725, 730, 825, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 86 - 2560x1080@24Hz */ >> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 99000, 2560, 3558, >> + 3602, 3750, 0, 1080, 1084, 1089, 1100, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 87 - 2560x1080@25Hz */ >> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 90000, 2560, 3008, >> + 3052, 3200, 0, 1080, 1084, 1089, 1125, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 88 - 2560x1080@30Hz */ >> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 118800, 2560, 3328, >> + 3372, 3520, 0, 1080, 1084, 1089, 1125, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 89 - 2560x1080@50Hz */ >> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 185625, 2560, 3108, >> + 3152, 3300, 0, 1080, 1084, 1089, 1125, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 90 - 2560x1080@60Hz */ >> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 198000, 2560, 2808, >> + 2852, 3000, 0, 1080, 1084, 1089, 1100, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 91 - 2560x1080@100Hz */ >> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 371250, 2560, 2778, >> + 2822, 2970, 0, 1080, 1084, 1089, 1250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 92 - 2560x1080@120Hz */ >> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 495000, 2560, 3108, >> + 3152, 3300, 0, 1080, 1084, 1089, 1250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 93 - 3840x2160p@24Hz 16:9 */ >> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 5116, >> + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9,}, >> + /* 94 - 3840x2160p@25Hz 16:9 */ >> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4896, >> + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, >> + /* 95 - 3840x2160p@30Hz 16:9 */ >> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4016, >> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, >> + /* 96 - 3840x2160p@50Hz 16:9 */ >> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4896, >> + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, >> + /* 97 - 3840x2160p@60Hz 16:9 */ >> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4016, >> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, >> + /* 98 - 4096x2160p@24Hz 256:135 */ >> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 5116, >> + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >> + /* 99 - 4096x2160p@25Hz 256:135 */ >> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 5064, >> + 5152, 5280, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >> + /* 100 - 4096x2160p@30Hz 256:135 */ >> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 4184, >> + 4272, 4400, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >> + /* 101 - 4096x2160p@50Hz 256:135 */ >> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 594000, 4096, 5064, >> + 5152, 5280, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >> + /* 102 - 4096x2160p@60Hz 256:135 */ >> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 594000, 4096, 4184, >> + 4272, 4400, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >> + /* 103 - 3840x2160p@24Hz 64:27 */ >> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 5116, >> + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >> + /* 104 - 3840x2160p@25Hz 64:27 */ >> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4016, >> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >> + /* 105 - 3840x2160p@30Hz 64:27 */ >> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4016, >> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >> + /* 106 - 3840x2160p@50Hz 64:27 */ >> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4896, >> + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >> + /* 107 - 3840x2160p@60Hz 64:27 */ >> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4016, >> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >> }; >> >> /* >
Regards Shashank On 3/23/2017 10:11 AM, Andrzej Hajda wrote: > On 22.03.2017 18:35, Jose Abreu wrote: >> This patch completes CEA table of video modes so that VIC 1-107 >> are now available. Use the HDMI 2.0+ flag to signal these are >> modes for HDMI 2.0 onwards. > edid_cea_modes array is used in different contexts, simple extensions of > the array with modes not present in HDMI < 2.0 can result in different > behavior of drivers. > There should be put sentinels somewhere to limit table lookup to old > VICs if device/driver/receiver is not HDMI2.0 compliant. > The only situation I am aware of at the moment is infoframe generation > code. For TVs not supporting 4K modes but not HDMI 2.0 compatible, VIC > field in AVI infoframe should be 0 for 4K modes and vendor infoframe > should be generated with proper HDMI-VIC. With current infoframe helpers > and this patch it will not work this way. > > Regards > Andrzej I had a small discussion with Ville on this, and we were thinking on adding monitor info before VIC calculation in match_cea_modes() function, so that it should give a VIC of 0 for HDMI 1.4 sinks but appropriate VIC for HDMI 2.0 sink. Consider WIP. - Shashank >> Signed-off-by: Jose Abreu <joabreu@synopsys.com> >> Cc: Carlos Palminha <palminha@synopsys.com> >> Cc: dri-devel@lists.freedesktop.org >> --- >> drivers/gpu/drm/drm_edid.c | 258 +++++++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 258 insertions(+) >> >> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c >> index fad3d44..90080368 100644 >> --- a/drivers/gpu/drm/drm_edid.c >> +++ b/drivers/gpu/drm/drm_edid.c >> @@ -1001,6 +1001,264 @@ struct minimode { >> 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, >> DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), >> .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, >> + /* 65 - 1280x720@24Hz */ >> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 59400, 1280, 3040, >> + 3080, 3300, 0, 720, 725, 730, 750, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 66 - 1280x720@25Hz */ >> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3700, >> + 3740, 3960, 0, 720, 725, 730, 750, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 67 - 1280x720@30Hz */ >> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3040, >> + 3080, 3300, 0, 720, 725, 730, 750, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 68 - 1280x720@50Hz */ >> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1720, >> + 1760, 1980, 0, 720, 725, 730, 750, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 69 - 1280x720@60Hz */ >> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390, >> + 1430, 1650, 0, 720, 725, 730, 750, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 70 - 1280x720@100Hz */ >> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1720, >> + 1760, 1980, 0, 720, 725, 730, 750, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 71 - 1280x720@120Hz */ >> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1390, >> + 1430, 1650, 0, 720, 725, 730, 750, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 72 - 1920x1080@24Hz */ >> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2558, >> + 2602, 2750, 0, 1080, 1084, 1089, 1125, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 73 - 1920x1080@25Hz */ >> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2448, >> + 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 74 - 1920x1080@30Hz */ >> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2008, >> + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 75 - 1920x1080@50Hz */ >> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2448, >> + 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 76 - 1920x1080@60Hz */ >> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2008, >> + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 77 - 1920x1080@100Hz */ >> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2448, >> + 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 78 - 1920x1080@120Hz */ >> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2008, >> + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 79 - 1680x720@24Hz */ >> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 3040, >> + 3080, 3300, 0, 720, 725, 730, 750, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 80 - 1680x720@25Hz */ >> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 2908, >> + 2948, 3168, 0, 720, 725, 730, 750, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 81 - 1680x720@30Hz */ >> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 2380, >> + 2420, 2640, 0, 720, 725, 730, 750, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 82 - 1680x720@50Hz */ >> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 82500, 1680, 1940, >> + 1980, 2200, 0, 720, 725, 730, 750, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 83 - 1680x720@60Hz */ >> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 99000, 1680, 1940, >> + 1980, 2200, 0, 720, 725, 730, 750, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 84 - 1680x720@100Hz */ >> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 165000, 1680, 1740, >> + 1780, 2000, 0, 720, 725, 730, 825, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 85 - 1680x720@120Hz */ >> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 198000, 1680, 1740, >> + 1780, 2000, 0, 720, 725, 730, 825, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 86 - 2560x1080@24Hz */ >> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 99000, 2560, 3558, >> + 3602, 3750, 0, 1080, 1084, 1089, 1100, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 87 - 2560x1080@25Hz */ >> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 90000, 2560, 3008, >> + 3052, 3200, 0, 1080, 1084, 1089, 1125, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 88 - 2560x1080@30Hz */ >> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 118800, 2560, 3328, >> + 3372, 3520, 0, 1080, 1084, 1089, 1125, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 89 - 2560x1080@50Hz */ >> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 185625, 2560, 3108, >> + 3152, 3300, 0, 1080, 1084, 1089, 1125, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 90 - 2560x1080@60Hz */ >> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 198000, 2560, 2808, >> + 2852, 3000, 0, 1080, 1084, 1089, 1100, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 91 - 2560x1080@100Hz */ >> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 371250, 2560, 2778, >> + 2822, 2970, 0, 1080, 1084, 1089, 1250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 92 - 2560x1080@120Hz */ >> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 495000, 2560, 3108, >> + 3152, 3300, 0, 1080, 1084, 1089, 1250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >> + /* 93 - 3840x2160p@24Hz 16:9 */ >> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 5116, >> + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9,}, >> + /* 94 - 3840x2160p@25Hz 16:9 */ >> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4896, >> + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, >> + /* 95 - 3840x2160p@30Hz 16:9 */ >> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4016, >> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, >> + /* 96 - 3840x2160p@50Hz 16:9 */ >> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4896, >> + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, >> + /* 97 - 3840x2160p@60Hz 16:9 */ >> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4016, >> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, >> + /* 98 - 4096x2160p@24Hz 256:135 */ >> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 5116, >> + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >> + /* 99 - 4096x2160p@25Hz 256:135 */ >> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 5064, >> + 5152, 5280, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >> + /* 100 - 4096x2160p@30Hz 256:135 */ >> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 4184, >> + 4272, 4400, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >> + /* 101 - 4096x2160p@50Hz 256:135 */ >> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 594000, 4096, 5064, >> + 5152, 5280, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >> + /* 102 - 4096x2160p@60Hz 256:135 */ >> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 594000, 4096, 4184, >> + 4272, 4400, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >> + /* 103 - 3840x2160p@24Hz 64:27 */ >> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 5116, >> + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >> + /* 104 - 3840x2160p@25Hz 64:27 */ >> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4016, >> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >> + /* 105 - 3840x2160p@30Hz 64:27 */ >> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4016, >> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >> + /* 106 - 3840x2160p@50Hz 64:27 */ >> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4896, >> + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >> + /* 107 - 3840x2160p@60Hz 64:27 */ >> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4016, >> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >> + DRM_MODE_FLAG_HDMI2), >> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >> }; >> >> /* > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel
On 23.03.2017 12:04, Jose Abreu wrote: > Hi Andrzej, > > > Thanks for the feedback! > > On 23-03-2017 08:11, Andrzej Hajda wrote: >> On 22.03.2017 18:35, Jose Abreu wrote: >>> This patch completes CEA table of video modes so that VIC 1-107 >>> are now available. Use the HDMI 2.0+ flag to signal these are >>> modes for HDMI 2.0 onwards. >> edid_cea_modes array is used in different contexts, simple extensions of >> the array with modes not present in HDMI < 2.0 can result in different >> behavior of drivers. >> There should be put sentinels somewhere to limit table lookup to old >> VICs if device/driver/receiver is not HDMI2.0 compliant. >> The only situation I am aware of at the moment is infoframe generation >> code. For TVs not supporting 4K modes but not HDMI 2.0 compatible, VIC >> field in AVI infoframe should be 0 for 4K modes and vendor infoframe >> should be generated with proper HDMI-VIC. With current infoframe helpers >> and this patch it will not work this way. > But this is what I do in patch 5/5 (see > https://patchwork.kernel.org/patch/9640205/), unless drivers ask > to I don't expose the new modes. I do not see how it is related to infoframe generation. Look at body of drm_hdmi_avi_infoframe_from_display_mode, it calls drm_match_cea_mode, which looks for given mode in edid_cea_modes array. Anyway if there is or will be a patch which deals with it, it should be applied before extending edid_cea_modes array, not after. Regards Andrzej > > Best regards, > Jose Miguel Abreu > >> Regards >> Andrzej >>> Signed-off-by: Jose Abreu <joabreu@synopsys.com> >>> Cc: Carlos Palminha <palminha@synopsys.com> >>> Cc: dri-devel@lists.freedesktop.org >>> --- >>> drivers/gpu/drm/drm_edid.c | 258 +++++++++++++++++++++++++++++++++++++++++++++ >>> 1 file changed, 258 insertions(+) >>> >>> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c >>> index fad3d44..90080368 100644 >>> --- a/drivers/gpu/drm/drm_edid.c >>> +++ b/drivers/gpu/drm/drm_edid.c >>> @@ -1001,6 +1001,264 @@ struct minimode { >>> 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, >>> DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), >>> .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, >>> + /* 65 - 1280x720@24Hz */ >>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 59400, 1280, 3040, >>> + 3080, 3300, 0, 720, 725, 730, 750, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 66 - 1280x720@25Hz */ >>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3700, >>> + 3740, 3960, 0, 720, 725, 730, 750, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 67 - 1280x720@30Hz */ >>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3040, >>> + 3080, 3300, 0, 720, 725, 730, 750, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 68 - 1280x720@50Hz */ >>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1720, >>> + 1760, 1980, 0, 720, 725, 730, 750, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 69 - 1280x720@60Hz */ >>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390, >>> + 1430, 1650, 0, 720, 725, 730, 750, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 70 - 1280x720@100Hz */ >>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1720, >>> + 1760, 1980, 0, 720, 725, 730, 750, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 71 - 1280x720@120Hz */ >>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1390, >>> + 1430, 1650, 0, 720, 725, 730, 750, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 72 - 1920x1080@24Hz */ >>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2558, >>> + 2602, 2750, 0, 1080, 1084, 1089, 1125, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 73 - 1920x1080@25Hz */ >>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2448, >>> + 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 74 - 1920x1080@30Hz */ >>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2008, >>> + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 75 - 1920x1080@50Hz */ >>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2448, >>> + 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 76 - 1920x1080@60Hz */ >>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2008, >>> + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 77 - 1920x1080@100Hz */ >>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2448, >>> + 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 78 - 1920x1080@120Hz */ >>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2008, >>> + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 79 - 1680x720@24Hz */ >>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 3040, >>> + 3080, 3300, 0, 720, 725, 730, 750, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 80 - 1680x720@25Hz */ >>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 2908, >>> + 2948, 3168, 0, 720, 725, 730, 750, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 81 - 1680x720@30Hz */ >>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 2380, >>> + 2420, 2640, 0, 720, 725, 730, 750, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 82 - 1680x720@50Hz */ >>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 82500, 1680, 1940, >>> + 1980, 2200, 0, 720, 725, 730, 750, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 83 - 1680x720@60Hz */ >>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 99000, 1680, 1940, >>> + 1980, 2200, 0, 720, 725, 730, 750, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 84 - 1680x720@100Hz */ >>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 165000, 1680, 1740, >>> + 1780, 2000, 0, 720, 725, 730, 825, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 85 - 1680x720@120Hz */ >>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 198000, 1680, 1740, >>> + 1780, 2000, 0, 720, 725, 730, 825, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 86 - 2560x1080@24Hz */ >>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 99000, 2560, 3558, >>> + 3602, 3750, 0, 1080, 1084, 1089, 1100, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 87 - 2560x1080@25Hz */ >>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 90000, 2560, 3008, >>> + 3052, 3200, 0, 1080, 1084, 1089, 1125, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 88 - 2560x1080@30Hz */ >>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 118800, 2560, 3328, >>> + 3372, 3520, 0, 1080, 1084, 1089, 1125, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 89 - 2560x1080@50Hz */ >>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 185625, 2560, 3108, >>> + 3152, 3300, 0, 1080, 1084, 1089, 1125, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 90 - 2560x1080@60Hz */ >>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 198000, 2560, 2808, >>> + 2852, 3000, 0, 1080, 1084, 1089, 1100, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 91 - 2560x1080@100Hz */ >>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 371250, 2560, 2778, >>> + 2822, 2970, 0, 1080, 1084, 1089, 1250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 92 - 2560x1080@120Hz */ >>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 495000, 2560, 3108, >>> + 3152, 3300, 0, 1080, 1084, 1089, 1250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 93 - 3840x2160p@24Hz 16:9 */ >>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 5116, >>> + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9,}, >>> + /* 94 - 3840x2160p@25Hz 16:9 */ >>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4896, >>> + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, >>> + /* 95 - 3840x2160p@30Hz 16:9 */ >>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4016, >>> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, >>> + /* 96 - 3840x2160p@50Hz 16:9 */ >>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4896, >>> + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, >>> + /* 97 - 3840x2160p@60Hz 16:9 */ >>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4016, >>> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, >>> + /* 98 - 4096x2160p@24Hz 256:135 */ >>> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 5116, >>> + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >>> + /* 99 - 4096x2160p@25Hz 256:135 */ >>> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 5064, >>> + 5152, 5280, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >>> + /* 100 - 4096x2160p@30Hz 256:135 */ >>> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 4184, >>> + 4272, 4400, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >>> + /* 101 - 4096x2160p@50Hz 256:135 */ >>> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 594000, 4096, 5064, >>> + 5152, 5280, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >>> + /* 102 - 4096x2160p@60Hz 256:135 */ >>> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 594000, 4096, 4184, >>> + 4272, 4400, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >>> + /* 103 - 3840x2160p@24Hz 64:27 */ >>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 5116, >>> + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >>> + /* 104 - 3840x2160p@25Hz 64:27 */ >>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4016, >>> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >>> + /* 105 - 3840x2160p@30Hz 64:27 */ >>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4016, >>> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >>> + /* 106 - 3840x2160p@50Hz 64:27 */ >>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4896, >>> + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >>> + /* 107 - 3840x2160p@60Hz 64:27 */ >>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4016, >>> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >>> }; >>> >>> /* > >
Hi Andrzej, On 23-03-2017 11:17, Andrzej Hajda wrote: > On 23.03.2017 12:04, Jose Abreu wrote: >> Hi Andrzej, >> >> >> Thanks for the feedback! >> >> On 23-03-2017 08:11, Andrzej Hajda wrote: >>> On 22.03.2017 18:35, Jose Abreu wrote: >>>> This patch completes CEA table of video modes so that VIC 1-107 >>>> are now available. Use the HDMI 2.0+ flag to signal these are >>>> modes for HDMI 2.0 onwards. >>> edid_cea_modes array is used in different contexts, simple extensions of >>> the array with modes not present in HDMI < 2.0 can result in different >>> behavior of drivers. >>> There should be put sentinels somewhere to limit table lookup to old >>> VICs if device/driver/receiver is not HDMI2.0 compliant. >>> The only situation I am aware of at the moment is infoframe generation >>> code. For TVs not supporting 4K modes but not HDMI 2.0 compatible, VIC >>> field in AVI infoframe should be 0 for 4K modes and vendor infoframe >>> should be generated with proper HDMI-VIC. With current infoframe helpers >>> and this patch it will not work this way. >> But this is what I do in patch 5/5 (see >> https://urldefense.proofpoint.com/v2/url?u=https-3A__patchwork.kernel.org_patch_9640205_&d=DwICaQ&c=DPL6_X_6JkXFx7AXWqB0tg&r=WHDsc6kcWAl4i96Vm5hJ_19IJiuxx_p_Rzo2g-uHDKw&m=c7Qf9lk2pdXRbmjFNPSsZsy7LKiZWrqGlE72r-OTA-M&s=37RkfhQjJpjdKmQniKnhZwb1vtwb6HXSxY2Y7HrNlp4&e= ), unless drivers ask >> to I don't expose the new modes. > I do not see how it is related to infoframe generation. Look at body of > drm_hdmi_avi_infoframe_from_display_mode, it calls drm_match_cea_mode, > which looks for given mode in edid_cea_modes array. Yes but drm_hdmi_avi_infoframe_from_display_mode is called from driver context, so the mode bust be previously probed by the drm core, and it isn't if the hdmi2_allowed flag is not set so the mode will never reach the driver and the infoframe will never be built. And also if the receiver is not HDMI 2.0 compliant then the mode will not also be probed. But I see a flaw here: If the user specify manually the mode then it will be passed to driver which will try to match with CEA table. Is this the scenario you were thinking about? I think with the new DRM_MODE_FLAG_HDMI2 flag this will not happen, see this: - Modesetting X driver (for example) does not set HDMI 2 cap - As the flag is not set HDMI 2 modes will not be exposed to userspace - If the user specifies the mode the modesetting driver will not set HDMI 2 flag - As the flag is not set then drm_mode_equal_no_clocks_no_stereo will not match the mode Of course this needs patches to modesetting X driver, which are not in this series. What do you think? > Anyway if there is or will be a patch which deals with it, it should be > applied before extending edid_cea_modes array, not after. Right, I will correct this :) Best regards, Jose Miguel Abreu > > > Regards > Andrzej > >> Best regards, >> Jose Miguel Abreu >> >>> Regards >>> Andrzej >>>> Signed-off-by: Jose Abreu <joabreu@synopsys.com> >>>> Cc: Carlos Palminha <palminha@synopsys.com> >>>> Cc: dri-devel@lists.freedesktop.org >>>> --- >>>> drivers/gpu/drm/drm_edid.c | 258 +++++++++++++++++++++++++++++++++++++++++++++ >>>> 1 file changed, 258 insertions(+) >>>> >>>> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c >>>> index fad3d44..90080368 100644 >>>> --- a/drivers/gpu/drm/drm_edid.c >>>> +++ b/drivers/gpu/drm/drm_edid.c >>>> @@ -1001,6 +1001,264 @@ struct minimode { >>>> 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, >>>> DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), >>>> .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, >>>> + /* 65 - 1280x720@24Hz */ >>>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 59400, 1280, 3040, >>>> + 3080, 3300, 0, 720, 725, 730, 750, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 66 - 1280x720@25Hz */ >>>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3700, >>>> + 3740, 3960, 0, 720, 725, 730, 750, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 67 - 1280x720@30Hz */ >>>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3040, >>>> + 3080, 3300, 0, 720, 725, 730, 750, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 68 - 1280x720@50Hz */ >>>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1720, >>>> + 1760, 1980, 0, 720, 725, 730, 750, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 69 - 1280x720@60Hz */ >>>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390, >>>> + 1430, 1650, 0, 720, 725, 730, 750, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 70 - 1280x720@100Hz */ >>>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1720, >>>> + 1760, 1980, 0, 720, 725, 730, 750, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 71 - 1280x720@120Hz */ >>>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1390, >>>> + 1430, 1650, 0, 720, 725, 730, 750, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 72 - 1920x1080@24Hz */ >>>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2558, >>>> + 2602, 2750, 0, 1080, 1084, 1089, 1125, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 73 - 1920x1080@25Hz */ >>>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2448, >>>> + 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 74 - 1920x1080@30Hz */ >>>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2008, >>>> + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 75 - 1920x1080@50Hz */ >>>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2448, >>>> + 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 76 - 1920x1080@60Hz */ >>>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2008, >>>> + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 77 - 1920x1080@100Hz */ >>>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2448, >>>> + 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 78 - 1920x1080@120Hz */ >>>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2008, >>>> + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 79 - 1680x720@24Hz */ >>>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 3040, >>>> + 3080, 3300, 0, 720, 725, 730, 750, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 80 - 1680x720@25Hz */ >>>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 2908, >>>> + 2948, 3168, 0, 720, 725, 730, 750, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 81 - 1680x720@30Hz */ >>>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 2380, >>>> + 2420, 2640, 0, 720, 725, 730, 750, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 82 - 1680x720@50Hz */ >>>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 82500, 1680, 1940, >>>> + 1980, 2200, 0, 720, 725, 730, 750, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 83 - 1680x720@60Hz */ >>>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 99000, 1680, 1940, >>>> + 1980, 2200, 0, 720, 725, 730, 750, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 84 - 1680x720@100Hz */ >>>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 165000, 1680, 1740, >>>> + 1780, 2000, 0, 720, 725, 730, 825, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 85 - 1680x720@120Hz */ >>>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 198000, 1680, 1740, >>>> + 1780, 2000, 0, 720, 725, 730, 825, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 86 - 2560x1080@24Hz */ >>>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 99000, 2560, 3558, >>>> + 3602, 3750, 0, 1080, 1084, 1089, 1100, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 87 - 2560x1080@25Hz */ >>>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 90000, 2560, 3008, >>>> + 3052, 3200, 0, 1080, 1084, 1089, 1125, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 88 - 2560x1080@30Hz */ >>>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 118800, 2560, 3328, >>>> + 3372, 3520, 0, 1080, 1084, 1089, 1125, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 89 - 2560x1080@50Hz */ >>>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 185625, 2560, 3108, >>>> + 3152, 3300, 0, 1080, 1084, 1089, 1125, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 90 - 2560x1080@60Hz */ >>>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 198000, 2560, 2808, >>>> + 2852, 3000, 0, 1080, 1084, 1089, 1100, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 91 - 2560x1080@100Hz */ >>>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 371250, 2560, 2778, >>>> + 2822, 2970, 0, 1080, 1084, 1089, 1250, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 92 - 2560x1080@120Hz */ >>>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 495000, 2560, 3108, >>>> + 3152, 3300, 0, 1080, 1084, 1089, 1250, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>> + /* 93 - 3840x2160p@24Hz 16:9 */ >>>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 5116, >>>> + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9,}, >>>> + /* 94 - 3840x2160p@25Hz 16:9 */ >>>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4896, >>>> + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, >>>> + /* 95 - 3840x2160p@30Hz 16:9 */ >>>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4016, >>>> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, >>>> + /* 96 - 3840x2160p@50Hz 16:9 */ >>>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4896, >>>> + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, >>>> + /* 97 - 3840x2160p@60Hz 16:9 */ >>>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4016, >>>> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, >>>> + /* 98 - 4096x2160p@24Hz 256:135 */ >>>> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 5116, >>>> + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >>>> + /* 99 - 4096x2160p@25Hz 256:135 */ >>>> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 5064, >>>> + 5152, 5280, 0, 2160, 2168, 2178, 2250, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >>>> + /* 100 - 4096x2160p@30Hz 256:135 */ >>>> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 4184, >>>> + 4272, 4400, 0, 2160, 2168, 2178, 2250, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >>>> + /* 101 - 4096x2160p@50Hz 256:135 */ >>>> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 594000, 4096, 5064, >>>> + 5152, 5280, 0, 2160, 2168, 2178, 2250, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >>>> + /* 102 - 4096x2160p@60Hz 256:135 */ >>>> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 594000, 4096, 4184, >>>> + 4272, 4400, 0, 2160, 2168, 2178, 2250, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >>>> + /* 103 - 3840x2160p@24Hz 64:27 */ >>>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 5116, >>>> + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >>>> + /* 104 - 3840x2160p@25Hz 64:27 */ >>>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4016, >>>> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >>>> + /* 105 - 3840x2160p@30Hz 64:27 */ >>>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4016, >>>> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >>>> + /* 106 - 3840x2160p@50Hz 64:27 */ >>>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4896, >>>> + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >>>> + /* 107 - 3840x2160p@60Hz 64:27 */ >>>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4016, >>>> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>> + DRM_MODE_FLAG_HDMI2), >>>> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >>>> }; >>>> >>>> /* >>
On 23.03.2017 12:35, Jose Abreu wrote: > Hi Andrzej, > > > On 23-03-2017 11:17, Andrzej Hajda wrote: >> On 23.03.2017 12:04, Jose Abreu wrote: >>> Hi Andrzej, >>> >>> >>> Thanks for the feedback! >>> >>> On 23-03-2017 08:11, Andrzej Hajda wrote: >>>> On 22.03.2017 18:35, Jose Abreu wrote: >>>>> This patch completes CEA table of video modes so that VIC 1-107 >>>>> are now available. Use the HDMI 2.0+ flag to signal these are >>>>> modes for HDMI 2.0 onwards. >>>> edid_cea_modes array is used in different contexts, simple extensions of >>>> the array with modes not present in HDMI < 2.0 can result in different >>>> behavior of drivers. >>>> There should be put sentinels somewhere to limit table lookup to old >>>> VICs if device/driver/receiver is not HDMI2.0 compliant. >>>> The only situation I am aware of at the moment is infoframe generation >>>> code. For TVs not supporting 4K modes but not HDMI 2.0 compatible, VIC >>>> field in AVI infoframe should be 0 for 4K modes and vendor infoframe >>>> should be generated with proper HDMI-VIC. With current infoframe helpers >>>> and this patch it will not work this way. >>> But this is what I do in patch 5/5 (see >>> https://urldefense.proofpoint.com/v2/url?u=https-3A__patchwork.kernel.org_patch_9640205_&d=DwICaQ&c=DPL6_X_6JkXFx7AXWqB0tg&r=WHDsc6kcWAl4i96Vm5hJ_19IJiuxx_p_Rzo2g-uHDKw&m=c7Qf9lk2pdXRbmjFNPSsZsy7LKiZWrqGlE72r-OTA-M&s=37RkfhQjJpjdKmQniKnhZwb1vtwb6HXSxY2Y7HrNlp4&e= ), unless drivers ask >>> to I don't expose the new modes. >> I do not see how it is related to infoframe generation. Look at body of >> drm_hdmi_avi_infoframe_from_display_mode, it calls drm_match_cea_mode, >> which looks for given mode in edid_cea_modes array. > Yes but drm_hdmi_avi_infoframe_from_display_mode is called from > driver context, so the mode bust be previously probed by the drm > core, and it isn't if the hdmi2_allowed flag is not set so the > mode will never reach the driver and the infoframe will never be > built. And also if the receiver is not HDMI 2.0 compliant then > the mode will not also be probed. > > But I see a flaw here: If the user specify manually the mode then > it will be passed to driver which will try to match with CEA > table. Is this the scenario you were thinking about? I think with > the new DRM_MODE_FLAG_HDMI2 flag this will not happen, see this: > > - Modesetting X driver (for example) does not set HDMI 2 cap > - As the flag is not set HDMI 2 modes will not be exposed to > userspace > - If the user specifies the mode the modesetting driver will > not set HDMI 2 flag > - As the flag is not set then > drm_mode_equal_no_clocks_no_stereo will not match the mode OK I see, HDMI2 flag in mode will distinguish between 4K modes in HDMI1.4 and HDMI2.0, even if all other fields are the same. For now it looks safe indeed in case of HDMI<2 devices. I am not sure if this approach will not generate problems with drivers supporting both HDMI2 and 4K modes, but this 'issue' is already raised by Daniel. Regards Andrzej > > Of course this needs patches to modesetting X driver, which are > not in this series. What do you think? > >> Anyway if there is or will be a patch which deals with it, it should be >> applied before extending edid_cea_modes array, not after. > Right, I will correct this :) > > Best regards, > Jose Miguel Abreu > >> >> Regards >> Andrzej >> >>> Best regards, >>> Jose Miguel Abreu >>> >>>> Regards >>>> Andrzej >>>>> Signed-off-by: Jose Abreu <joabreu@synopsys.com> >>>>> Cc: Carlos Palminha <palminha@synopsys.com> >>>>> Cc: dri-devel@lists.freedesktop.org >>>>> --- >>>>> drivers/gpu/drm/drm_edid.c | 258 +++++++++++++++++++++++++++++++++++++++++++++ >>>>> 1 file changed, 258 insertions(+) >>>>> >>>>> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c >>>>> index fad3d44..90080368 100644 >>>>> --- a/drivers/gpu/drm/drm_edid.c >>>>> +++ b/drivers/gpu/drm/drm_edid.c >>>>> @@ -1001,6 +1001,264 @@ struct minimode { >>>>> 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, >>>>> DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), >>>>> .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, >>>>> + /* 65 - 1280x720@24Hz */ >>>>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 59400, 1280, 3040, >>>>> + 3080, 3300, 0, 720, 725, 730, 750, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 66 - 1280x720@25Hz */ >>>>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3700, >>>>> + 3740, 3960, 0, 720, 725, 730, 750, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 67 - 1280x720@30Hz */ >>>>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3040, >>>>> + 3080, 3300, 0, 720, 725, 730, 750, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 68 - 1280x720@50Hz */ >>>>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1720, >>>>> + 1760, 1980, 0, 720, 725, 730, 750, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 69 - 1280x720@60Hz */ >>>>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390, >>>>> + 1430, 1650, 0, 720, 725, 730, 750, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 70 - 1280x720@100Hz */ >>>>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1720, >>>>> + 1760, 1980, 0, 720, 725, 730, 750, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 71 - 1280x720@120Hz */ >>>>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1390, >>>>> + 1430, 1650, 0, 720, 725, 730, 750, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 72 - 1920x1080@24Hz */ >>>>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2558, >>>>> + 2602, 2750, 0, 1080, 1084, 1089, 1125, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 73 - 1920x1080@25Hz */ >>>>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2448, >>>>> + 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 74 - 1920x1080@30Hz */ >>>>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2008, >>>>> + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 75 - 1920x1080@50Hz */ >>>>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2448, >>>>> + 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 76 - 1920x1080@60Hz */ >>>>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2008, >>>>> + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 77 - 1920x1080@100Hz */ >>>>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2448, >>>>> + 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 78 - 1920x1080@120Hz */ >>>>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2008, >>>>> + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 79 - 1680x720@24Hz */ >>>>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 3040, >>>>> + 3080, 3300, 0, 720, 725, 730, 750, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 80 - 1680x720@25Hz */ >>>>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 2908, >>>>> + 2948, 3168, 0, 720, 725, 730, 750, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 81 - 1680x720@30Hz */ >>>>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 2380, >>>>> + 2420, 2640, 0, 720, 725, 730, 750, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 82 - 1680x720@50Hz */ >>>>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 82500, 1680, 1940, >>>>> + 1980, 2200, 0, 720, 725, 730, 750, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 83 - 1680x720@60Hz */ >>>>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 99000, 1680, 1940, >>>>> + 1980, 2200, 0, 720, 725, 730, 750, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 84 - 1680x720@100Hz */ >>>>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 165000, 1680, 1740, >>>>> + 1780, 2000, 0, 720, 725, 730, 825, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 85 - 1680x720@120Hz */ >>>>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 198000, 1680, 1740, >>>>> + 1780, 2000, 0, 720, 725, 730, 825, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 86 - 2560x1080@24Hz */ >>>>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 99000, 2560, 3558, >>>>> + 3602, 3750, 0, 1080, 1084, 1089, 1100, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 87 - 2560x1080@25Hz */ >>>>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 90000, 2560, 3008, >>>>> + 3052, 3200, 0, 1080, 1084, 1089, 1125, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 88 - 2560x1080@30Hz */ >>>>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 118800, 2560, 3328, >>>>> + 3372, 3520, 0, 1080, 1084, 1089, 1125, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 89 - 2560x1080@50Hz */ >>>>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 185625, 2560, 3108, >>>>> + 3152, 3300, 0, 1080, 1084, 1089, 1125, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 90 - 2560x1080@60Hz */ >>>>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 198000, 2560, 2808, >>>>> + 2852, 3000, 0, 1080, 1084, 1089, 1100, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 91 - 2560x1080@100Hz */ >>>>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 371250, 2560, 2778, >>>>> + 2822, 2970, 0, 1080, 1084, 1089, 1250, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 92 - 2560x1080@120Hz */ >>>>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 495000, 2560, 3108, >>>>> + 3152, 3300, 0, 1080, 1084, 1089, 1250, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, >>>>> + /* 93 - 3840x2160p@24Hz 16:9 */ >>>>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 5116, >>>>> + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9,}, >>>>> + /* 94 - 3840x2160p@25Hz 16:9 */ >>>>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4896, >>>>> + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, >>>>> + /* 95 - 3840x2160p@30Hz 16:9 */ >>>>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4016, >>>>> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, >>>>> + /* 96 - 3840x2160p@50Hz 16:9 */ >>>>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4896, >>>>> + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, >>>>> + /* 97 - 3840x2160p@60Hz 16:9 */ >>>>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4016, >>>>> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, >>>>> + /* 98 - 4096x2160p@24Hz 256:135 */ >>>>> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 5116, >>>>> + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >>>>> + /* 99 - 4096x2160p@25Hz 256:135 */ >>>>> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 5064, >>>>> + 5152, 5280, 0, 2160, 2168, 2178, 2250, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >>>>> + /* 100 - 4096x2160p@30Hz 256:135 */ >>>>> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 4184, >>>>> + 4272, 4400, 0, 2160, 2168, 2178, 2250, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >>>>> + /* 101 - 4096x2160p@50Hz 256:135 */ >>>>> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 594000, 4096, 5064, >>>>> + 5152, 5280, 0, 2160, 2168, 2178, 2250, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >>>>> + /* 102 - 4096x2160p@60Hz 256:135 */ >>>>> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 594000, 4096, 4184, >>>>> + 4272, 4400, 0, 2160, 2168, 2178, 2250, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, >>>>> + /* 103 - 3840x2160p@24Hz 64:27 */ >>>>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 5116, >>>>> + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >>>>> + /* 104 - 3840x2160p@25Hz 64:27 */ >>>>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4016, >>>>> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >>>>> + /* 105 - 3840x2160p@30Hz 64:27 */ >>>>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4016, >>>>> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >>>>> + /* 106 - 3840x2160p@50Hz 64:27 */ >>>>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4896, >>>>> + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >>>>> + /* 107 - 3840x2160p@60Hz 64:27 */ >>>>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4016, >>>>> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >>>>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>>>> + DRM_MODE_FLAG_HDMI2), >>>>> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, >>>>> }; >>>>> >>>>> /* > >
You guys might wanna use this series, to solve this problem. https://patchwork.freedesktop.org/series/21773/ Patch 1: completes the CEA modes 1-107 Patch 2: Protects HDMI 1.4 monitors from HDMI 2.0 VICs Regards Shashank On 3/23/2017 1:07 PM, Sharma, Shashank wrote: > Regards > > Shashank > > > On 3/23/2017 10:11 AM, Andrzej Hajda wrote: >> On 22.03.2017 18:35, Jose Abreu wrote: >>> This patch completes CEA table of video modes so that VIC 1-107 >>> are now available. Use the HDMI 2.0+ flag to signal these are >>> modes for HDMI 2.0 onwards. >> edid_cea_modes array is used in different contexts, simple extensions of >> the array with modes not present in HDMI < 2.0 can result in different >> behavior of drivers. >> There should be put sentinels somewhere to limit table lookup to old >> VICs if device/driver/receiver is not HDMI2.0 compliant. >> The only situation I am aware of at the moment is infoframe generation >> code. For TVs not supporting 4K modes but not HDMI 2.0 compatible, VIC >> field in AVI infoframe should be 0 for 4K modes and vendor infoframe >> should be generated with proper HDMI-VIC. With current infoframe helpers >> and this patch it will not work this way. >> >> Regards >> Andrzej > I had a small discussion with Ville on this, and we were thinking on > adding monitor info before > VIC calculation in match_cea_modes() function, so that it should give > a VIC of 0 for HDMI 1.4 sinks > but appropriate VIC for HDMI 2.0 sink. Consider WIP. > > - Shashank >>> Signed-off-by: Jose Abreu <joabreu@synopsys.com> >>> Cc: Carlos Palminha <palminha@synopsys.com> >>> Cc: dri-devel@lists.freedesktop.org >>> --- >>> drivers/gpu/drm/drm_edid.c | 258 >>> +++++++++++++++++++++++++++++++++++++++++++++ >>> 1 file changed, 258 insertions(+) >>> >>> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c >>> index fad3d44..90080368 100644 >>> --- a/drivers/gpu/drm/drm_edid.c >>> +++ b/drivers/gpu/drm/drm_edid.c >>> @@ -1001,6 +1001,264 @@ struct minimode { >>> 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, >>> DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), >>> .vrefresh = 100, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_16_9, }, >>> + /* 65 - 1280x720@24Hz */ >>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 59400, 1280, 3040, >>> + 3080, 3300, 0, 720, 725, 730, 750, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 24, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 66 - 1280x720@25Hz */ >>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3700, >>> + 3740, 3960, 0, 720, 725, 730, 750, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 25, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 67 - 1280x720@30Hz */ >>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3040, >>> + 3080, 3300, 0, 720, 725, 730, 750, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 30, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 68 - 1280x720@50Hz */ >>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1720, >>> + 1760, 1980, 0, 720, 725, 730, 750, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 50, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 69 - 1280x720@60Hz */ >>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390, >>> + 1430, 1650, 0, 720, 725, 730, 750, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 60, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 70 - 1280x720@100Hz */ >>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1720, >>> + 1760, 1980, 0, 720, 725, 730, 750, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 100, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 71 - 1280x720@120Hz */ >>> + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1390, >>> + 1430, 1650, 0, 720, 725, 730, 750, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 120, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 72 - 1920x1080@24Hz */ >>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2558, >>> + 2602, 2750, 0, 1080, 1084, 1089, 1125, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 24, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 73 - 1920x1080@25Hz */ >>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2448, >>> + 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 25, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 74 - 1920x1080@30Hz */ >>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2008, >>> + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 30, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 75 - 1920x1080@50Hz */ >>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2448, >>> + 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 50, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 76 - 1920x1080@60Hz */ >>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2008, >>> + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 60, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 77 - 1920x1080@100Hz */ >>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2448, >>> + 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 100, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 78 - 1920x1080@120Hz */ >>> + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2008, >>> + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 120, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 79 - 1680x720@24Hz */ >>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 3040, >>> + 3080, 3300, 0, 720, 725, 730, 750, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 24, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 80 - 1680x720@25Hz */ >>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 2908, >>> + 2948, 3168, 0, 720, 725, 730, 750, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 25, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 81 - 1680x720@30Hz */ >>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 2380, >>> + 2420, 2640, 0, 720, 725, 730, 750, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 30, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 82 - 1680x720@50Hz */ >>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 82500, 1680, 1940, >>> + 1980, 2200, 0, 720, 725, 730, 750, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 50, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 83 - 1680x720@60Hz */ >>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 99000, 1680, 1940, >>> + 1980, 2200, 0, 720, 725, 730, 750, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 60, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 84 - 1680x720@100Hz */ >>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 165000, 1680, 1740, >>> + 1780, 2000, 0, 720, 725, 730, 825, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 100, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 85 - 1680x720@120Hz */ >>> + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 198000, 1680, 1740, >>> + 1780, 2000, 0, 720, 725, 730, 825, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 120, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 86 - 2560x1080@24Hz */ >>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 99000, 2560, 3558, >>> + 3602, 3750, 0, 1080, 1084, 1089, 1100, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 24, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 87 - 2560x1080@25Hz */ >>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 90000, 2560, 3008, >>> + 3052, 3200, 0, 1080, 1084, 1089, 1125, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 25, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 88 - 2560x1080@30Hz */ >>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 118800, 2560, 3328, >>> + 3372, 3520, 0, 1080, 1084, 1089, 1125, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 30, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 89 - 2560x1080@50Hz */ >>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 185625, 2560, 3108, >>> + 3152, 3300, 0, 1080, 1084, 1089, 1125, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 50, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 90 - 2560x1080@60Hz */ >>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 198000, 2560, 2808, >>> + 2852, 3000, 0, 1080, 1084, 1089, 1100, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 60, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 91 - 2560x1080@100Hz */ >>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 371250, 2560, 2778, >>> + 2822, 2970, 0, 1080, 1084, 1089, 1250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 100, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 92 - 2560x1080@120Hz */ >>> + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 495000, 2560, 3108, >>> + 3152, 3300, 0, 1080, 1084, 1089, 1250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 120, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27, }, >>> + /* 93 - 3840x2160p@24Hz 16:9 */ >>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 5116, >>> + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 24, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_16_9,}, >>> + /* 94 - 3840x2160p@25Hz 16:9 */ >>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4896, >>> + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, >>> + /* 95 - 3840x2160p@30Hz 16:9 */ >>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4016, >>> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, >>> + /* 96 - 3840x2160p@50Hz 16:9 */ >>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4896, >>> + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, >>> + /* 97 - 3840x2160p@60Hz 16:9 */ >>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4016, >>> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, >>> + /* 98 - 4096x2160p@24Hz 256:135 */ >>> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 5116, >>> + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 24, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_256_135}, >>> + /* 99 - 4096x2160p@25Hz 256:135 */ >>> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 5064, >>> + 5152, 5280, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 25, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_256_135}, >>> + /* 100 - 4096x2160p@30Hz 256:135 */ >>> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 4184, >>> + 4272, 4400, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 30, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_256_135}, >>> + /* 101 - 4096x2160p@50Hz 256:135 */ >>> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 594000, 4096, 5064, >>> + 5152, 5280, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 50, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_256_135}, >>> + /* 102 - 4096x2160p@60Hz 256:135 */ >>> + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 594000, 4096, 4184, >>> + 4272, 4400, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 60, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_256_135}, >>> + /* 103 - 3840x2160p@24Hz 64:27 */ >>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 5116, >>> + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 24, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27}, >>> + /* 104 - 3840x2160p@25Hz 64:27 */ >>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4016, >>> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 25, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27}, >>> + /* 105 - 3840x2160p@30Hz 64:27 */ >>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4016, >>> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 30, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27}, >>> + /* 106 - 3840x2160p@50Hz 64:27 */ >>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4896, >>> + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 50, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27}, >>> + /* 107 - 3840x2160p@60Hz 64:27 */ >>> + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4016, >>> + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, >>> + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | >>> + DRM_MODE_FLAG_HDMI2), >>> + .vrefresh = 60, .picture_aspect_ratio = >>> HDMI_PICTURE_ASPECT_64_27}, >>> }; >>> /* >> >> _______________________________________________ >> dri-devel mailing list >> dri-devel@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/dri-devel >
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index fad3d44..90080368 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -1001,6 +1001,264 @@ struct minimode { 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, + /* 65 - 1280x720@24Hz */ + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 59400, 1280, 3040, + 3080, 3300, 0, 720, 725, 730, 750, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 66 - 1280x720@25Hz */ + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3700, + 3740, 3960, 0, 720, 725, 730, 750, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 67 - 1280x720@30Hz */ + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3040, + 3080, 3300, 0, 720, 725, 730, 750, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 68 - 1280x720@50Hz */ + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1720, + 1760, 1980, 0, 720, 725, 730, 750, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 69 - 1280x720@60Hz */ + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390, + 1430, 1650, 0, 720, 725, 730, 750, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 70 - 1280x720@100Hz */ + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1720, + 1760, 1980, 0, 720, 725, 730, 750, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 71 - 1280x720@120Hz */ + { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1390, + 1430, 1650, 0, 720, 725, 730, 750, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 72 - 1920x1080@24Hz */ + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2558, + 2602, 2750, 0, 1080, 1084, 1089, 1125, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 73 - 1920x1080@25Hz */ + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2448, + 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 74 - 1920x1080@30Hz */ + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2008, + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 75 - 1920x1080@50Hz */ + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2448, + 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 76 - 1920x1080@60Hz */ + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2008, + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 77 - 1920x1080@100Hz */ + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2448, + 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 78 - 1920x1080@120Hz */ + { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2008, + 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 79 - 1680x720@24Hz */ + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 3040, + 3080, 3300, 0, 720, 725, 730, 750, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 80 - 1680x720@25Hz */ + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 2908, + 2948, 3168, 0, 720, 725, 730, 750, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 81 - 1680x720@30Hz */ + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 59400, 1680, 2380, + 2420, 2640, 0, 720, 725, 730, 750, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 82 - 1680x720@50Hz */ + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 82500, 1680, 1940, + 1980, 2200, 0, 720, 725, 730, 750, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 83 - 1680x720@60Hz */ + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 99000, 1680, 1940, + 1980, 2200, 0, 720, 725, 730, 750, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 84 - 1680x720@100Hz */ + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 165000, 1680, 1740, + 1780, 2000, 0, 720, 725, 730, 825, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 85 - 1680x720@120Hz */ + { DRM_MODE("1680x720", DRM_MODE_TYPE_DRIVER, 198000, 1680, 1740, + 1780, 2000, 0, 720, 725, 730, 825, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 86 - 2560x1080@24Hz */ + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 99000, 2560, 3558, + 3602, 3750, 0, 1080, 1084, 1089, 1100, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 87 - 2560x1080@25Hz */ + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 90000, 2560, 3008, + 3052, 3200, 0, 1080, 1084, 1089, 1125, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 88 - 2560x1080@30Hz */ + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 118800, 2560, 3328, + 3372, 3520, 0, 1080, 1084, 1089, 1125, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 89 - 2560x1080@50Hz */ + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 185625, 2560, 3108, + 3152, 3300, 0, 1080, 1084, 1089, 1125, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 90 - 2560x1080@60Hz */ + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 198000, 2560, 2808, + 2852, 3000, 0, 1080, 1084, 1089, 1100, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 91 - 2560x1080@100Hz */ + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 371250, 2560, 2778, + 2822, 2970, 0, 1080, 1084, 1089, 1250, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 92 - 2560x1080@120Hz */ + { DRM_MODE("2560x1080", DRM_MODE_TYPE_DRIVER, 495000, 2560, 3108, + 3152, 3300, 0, 1080, 1084, 1089, 1250, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, }, + /* 93 - 3840x2160p@24Hz 16:9 */ + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 5116, + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9,}, + /* 94 - 3840x2160p@25Hz 16:9 */ + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4896, + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, + /* 95 - 3840x2160p@30Hz 16:9 */ + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4016, + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, + /* 96 - 3840x2160p@50Hz 16:9 */ + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4896, + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, + /* 97 - 3840x2160p@60Hz 16:9 */ + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4016, + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9}, + /* 98 - 4096x2160p@24Hz 256:135 */ + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 5116, + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, + /* 99 - 4096x2160p@25Hz 256:135 */ + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 5064, + 5152, 5280, 0, 2160, 2168, 2178, 2250, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, + /* 100 - 4096x2160p@30Hz 256:135 */ + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 4184, + 4272, 4400, 0, 2160, 2168, 2178, 2250, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, + /* 101 - 4096x2160p@50Hz 256:135 */ + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 594000, 4096, 5064, + 5152, 5280, 0, 2160, 2168, 2178, 2250, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, + /* 102 - 4096x2160p@60Hz 256:135 */ + { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 594000, 4096, 4184, + 4272, 4400, 0, 2160, 2168, 2178, 2250, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135}, + /* 103 - 3840x2160p@24Hz 64:27 */ + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 5116, + 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, + /* 104 - 3840x2160p@25Hz 64:27 */ + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4016, + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, + /* 105 - 3840x2160p@30Hz 64:27 */ + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4016, + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, + /* 106 - 3840x2160p@50Hz 64:27 */ + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4896, + 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, + /* 107 - 3840x2160p@60Hz 64:27 */ + { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 594000, 3840, 4016, + 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | + DRM_MODE_FLAG_HDMI2), + .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27}, }; /*
This patch completes CEA table of video modes so that VIC 1-107 are now available. Use the HDMI 2.0+ flag to signal these are modes for HDMI 2.0 onwards. Signed-off-by: Jose Abreu <joabreu@synopsys.com> Cc: Carlos Palminha <palminha@synopsys.com> Cc: dri-devel@lists.freedesktop.org --- drivers/gpu/drm/drm_edid.c | 258 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 258 insertions(+)