struct device_node *ep;
        u32 pclk_sample = 0;
        u32 bus_width = 24;
-       s32 deskew = 0;
+       u32 deskew = 0;
 
        /* Start with defaults. */
        *timings = tfp410_default_timings;
        }
 
        /* Get the setup and hold time from vendor-specific properties. */
-       of_property_read_u32(dvi->dev->of_node, "ti,deskew", (u32 *)&deskew);
-       if (deskew < -4 || deskew > 3)
+       of_property_read_u32(dvi->dev->of_node, "ti,deskew", &deskew);
+       if (deskew > 7)
                return -EINVAL;
 
-       timings->setup_time_ps = min(0, 1200 - 350 * deskew);
-       timings->hold_time_ps = min(0, 1300 + 350 * deskew);
+       timings->setup_time_ps = min(0, 1200 - 350 * ((s32)deskew - 4));
+       timings->hold_time_ps = min(0, 1300 + 350 * ((s32)deskew - 4));
 
        return 0;
 }