Don't switch HS mode a second time.
Relock the level 2 commands after changing the refresh rate.
Add magic 1ms delays while fiddling with level 2 commands. The manual doesn't
mention any need for this, but without them, the commands seems to get
corrupted and/or ignored in high speed modeāthe display comes up at 60Hz
mirrored.
diff --git a/drivers/video/omap2/displays/panel-tonka.c b/drivers/video/omap2/displays/panel-tonka.c
index 3d64b80..f263266 100644
--- a/drivers/video/omap2/displays/panel-tonka.c
+++ b/drivers/video/omap2/displays/panel-tonka.c
@@ -1291,20 +1291,30 @@
r = tonka_dcs_write_2(td, 0xF0, 0x5A, 0x5A);
if (r)
printk("1\n");
+ msleep(1);
/* 30Hz refresh */
r = tonka_dcs_write_1(td, 0xB0, 0x03);
if (r)
printk("2\n");
+ msleep(1);
r = tonka_dcs_write_1(td, 0xBB, 0x90);
if (r)
printk("3\n");
+ msleep(1);
/* LTPS timing */
r = tonka_dcs_write_1(td, 0xB0, 0x15);
if (r)
printk("4\n");
+ msleep(1);
r = tonka_dcs_write_5(td, 0xCB, 0x43, 0x41, 0x43, 0x41, 0x43);
if (r)
printk("5\n");
+ msleep(1);
+ /* lock */
+ r = tonka_dcs_write_2(td, 0xF0, 0x00, 0x00);
+ if (r)
+ printk("6\n");
+ msleep(1);
#endif
r = tonka_dcs_write_1(td, DCS_BRIGHTNESS, 0xff);
@@ -1349,7 +1359,9 @@
td->intro_printed = true;
}
+#ifndef BROKEN_TUNNEL_ASYMMETRIC
omapdss_dsi_vc_enable_hs(dssdev, td->channel, true);
+#endif
return 0;
err: