}
 }
 
+static int vm_flag_to_int(enum display_flags flags, enum display_flags high,
+       enum display_flags low)
+{
+       if (flags & high)
+               return 1;
+       if (flags & low)
+               return -1;
+       return 0;
+}
+
 /* change name to mode? */
 static void dispc_mgr_set_timings(enum omap_channel channel,
                           const struct videomode *vm)
                        t.hsync_len, t.hfront_porch, t.hback_porch,
                        t.vsync_len, t.vfront_porch, t.vback_porch);
                DSSDBG("vsync_level %d hsync_level %d data_pclk_edge %d de_level %d sync_pclk_edge %d\n",
-                       !!(t.flags & DISPLAY_FLAGS_VSYNC_HIGH),
-                       !!(t.flags & DISPLAY_FLAGS_HSYNC_HIGH),
-                       !!(t.flags & DISPLAY_FLAGS_PIXDATA_POSEDGE),
-                       !!(t.flags & DISPLAY_FLAGS_DE_HIGH),
-                       !!(t.flags & DISPLAY_FLAGS_SYNC_POSEDGE));
+                       vm_flag_to_int(t.flags, DISPLAY_FLAGS_VSYNC_HIGH, DISPLAY_FLAGS_VSYNC_LOW),
+                       vm_flag_to_int(t.flags, DISPLAY_FLAGS_HSYNC_HIGH, DISPLAY_FLAGS_HSYNC_LOW),
+                       vm_flag_to_int(t.flags, DISPLAY_FLAGS_PIXDATA_POSEDGE, DISPLAY_FLAGS_PIXDATA_NEGEDGE),
+                       vm_flag_to_int(t.flags, DISPLAY_FLAGS_DE_HIGH, DISPLAY_FLAGS_DE_LOW),
+                       vm_flag_to_int(t.flags, DISPLAY_FLAGS_SYNC_POSEDGE, DISPLAY_FLAGS_SYNC_NEGEDGE));
 
                DSSDBG("hsync %luHz, vsync %luHz\n", ht, vt);
        } else {