drm/tegra: sor - Configure proper sync polarities
authorThierry Reding <treding@nvidia.com>
Mon, 7 Jul 2014 13:35:06 +0000 (15:35 +0200)
committerThierry Reding <treding@nvidia.com>
Mon, 4 Aug 2014 08:07:37 +0000 (10:07 +0200)
Program the sync signal polarities according to the display mode.

Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/gpu/drm/tegra/sor.c

index 479da1b210b44c9df99a6224411368e0956347a0..6cb861bf1e03028bf756e3dd95615087ceec99e0 100644 (file)
@@ -815,12 +815,22 @@ static int tegra_output_sor_enable(struct tegra_output *output)
         * configure panel (24bpp, vsync-, hsync-, DP-A protocol, complete
         * raster, associate with display controller)
         */
-       value = SOR_STATE_ASY_VSYNCPOL |
-               SOR_STATE_ASY_HSYNCPOL |
-               SOR_STATE_ASY_PROTOCOL_DP_A |
+       value = SOR_STATE_ASY_PROTOCOL_DP_A |
                SOR_STATE_ASY_CRC_MODE_COMPLETE |
                SOR_STATE_ASY_OWNER(dc->pipe + 1);
 
+       if (mode->flags & DRM_MODE_FLAG_PHSYNC)
+               value &= ~SOR_STATE_ASY_HSYNCPOL;
+
+       if (mode->flags & DRM_MODE_FLAG_NHSYNC)
+               value |= SOR_STATE_ASY_HSYNCPOL;
+
+       if (mode->flags & DRM_MODE_FLAG_PVSYNC)
+               value &= ~SOR_STATE_ASY_VSYNCPOL;
+
+       if (mode->flags & DRM_MODE_FLAG_NVSYNC)
+               value |= SOR_STATE_ASY_VSYNCPOL;
+
        switch (config.bits_per_pixel) {
        case 24:
                value |= SOR_STATE_ASY_PIXELDEPTH_BPP_24_444;