diff mbox

[RFC,3/5] drm: edid: Add HDMI 2.0 CEA video modes

Message ID 3903b2b60acb895478cd0dd407ca9b719fb8172c.1490203284.git.joabreu@synopsys.com (mailing list archive)
State New, archived
Headers show

Commit Message

Jose Abreu March 22, 2017, 5:35 p.m. UTC
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(+)

Comments

Andrzej Hajda March 23, 2017, 8:11 a.m. UTC | #1
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},
>  };
>  
>  /*
Jose Abreu March 23, 2017, 11:04 a.m. UTC | #2
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},
>>  };
>>  
>>  /*
>
Sharma, Shashank March 23, 2017, 11:07 a.m. UTC | #3
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
Andrzej Hajda March 23, 2017, 11:17 a.m. UTC | #4
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},
>>>  };
>>>  
>>>  /*
>
>
Jose Abreu March 23, 2017, 11:35 a.m. UTC | #5
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},
>>>>  };
>>>>  
>>>>  /*
>>
Andrzej Hajda March 23, 2017, 2:50 p.m. UTC | #6
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},
>>>>>  };
>>>>>  
>>>>>  /*
>
>
Sharma, Shashank March 23, 2017, 3:26 p.m. UTC | #7
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 mbox

Patch

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},
 };
 
 /*