return container_of(panel, struct sharp_panel, base);
 }
 
+static void sharp_wait_frames(struct sharp_panel *sharp, unsigned int frames)
+{
+       unsigned int refresh = drm_mode_vrefresh(sharp->mode);
+
+       if (WARN_ON(frames > refresh))
+               return;
+
+       msleep(1000 / (refresh / frames));
+}
+
 static int sharp_panel_write(struct sharp_panel *sharp, u16 offset, u8 value)
 {
        u8 payload[3] = { offset >> 8, offset & 0xff, value };
 
        sharp->prepared = true;
 
+       /* wait for 6 frames before continuing */
+       sharp_wait_frames(sharp, 6);
+
        return 0;
 
 poweroff: