]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
drivers: video: tegra: Mark 1000/1001 for SVD only
authorAly Hirani <ahirani@nvidia.com>
Mon, 23 Nov 2015 20:16:50 +0000 (12:16 -0800)
committermobile promotions <svcmobile_promotions@nvidia.com>
Fri, 15 Jan 2016 00:14:20 +0000 (16:14 -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
(cherry picked from commit 08a35d81dc3ba7492ff78c14026278d9c4d549d8)
Reviewed-on: http://git-master/r/836696
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
drivers/video/tegra/dc/edid.c

index aaefcdb45a0dae47bba503d9dd6ae80d292fb674..08f85b3bd1e156585f20b836caa6b4bbdba9f476 100644 (file)
@@ -804,7 +804,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) {