drivers: video: tegra: Mark 1000/1001 for SVD only
Aly Hirani [Mon, 23 Nov 2015 20:16:50 +0000 (12:16 -0800)]
As per the CEA spec, only the modes coming from the CEA SVD are capable
of the dual frame rate (that is 60 Hz also supporting 59.94, etc). This
uses the previous change to look at modes that are marked as CEA and
creates a 1000/1001 mode only for those.

bug 1689283

Change-Id: Iba55d8f7ca9b06af7baa3f9e12822130f0f3337c
Signed-off-by: Aly Hirani <ahirani@nvidia.com>
(cherry picked from commit 427bd89b96c96ca3450693f69f71500acaa22d95)
Reviewed-on: http://git-master/r/836961
Reviewed-by: Soumenkumar Dey <sdey@nvidia.com>
Tested-by: Soumenkumar Dey <sdey@nvidia.com>
Reviewed-by: Mandar Padmawar <mpadmawar@nvidia.com>

drivers/video/tegra/dc/edid.c

index dd17239..93ee3ce 100644 (file)
@@ -753,7 +753,10 @@ int tegra_edid_get_monspecs(struct tegra_edid *edid, struct fb_monspecs *specs)
                if (frac_modes) {
                        for (j = 0; j < specs->modedb_len; ++j) {
                                int rate = tegra_dc_calc_fb_refresh(&specs->modedb[j]);
-                               if ((rate == 24000 ||
+                               /* 1000/1001 modes are only supported on CEA SVDs. */
+                               bool svd = (specs->modedb[j].vmode & FB_VMODE_IS_CEA) &&
+                                          !(specs->modedb[j].vmode & FB_VMODE_IS_DETAILED);
+                               if (svd && (rate == 24000 ||
                                     rate == 30000 ||
                                    (rate > (60000 - 20) && rate < (60000 + 20))) &&
                                    frac_n < max_modes) {