Add support for running the panel at 30Hz with a 15Hz update from the CPU.
diff --git a/drivers/video/omap2/displays/panel-tonka.c b/drivers/video/omap2/displays/panel-tonka.c
index a4c0350..b651ea5 100644
--- a/drivers/video/omap2/displays/panel-tonka.c
+++ b/drivers/video/omap2/displays/panel-tonka.c
@@ -19,6 +19,7 @@
/*#define DEBUG*/
#define BROKEN_TUNNEL_ASYMMETRIC /* don't do BTAs */
+#define USE_15HZ
#include <linux/module.h>
#include <linux/delay.h>
@@ -180,7 +181,11 @@
.timings = {
.x_res = 720,
.y_res = 1280,
+#ifndef USE_15HZ
.pixel_clock = 62963,
+#else
+ .pixel_clock = 15741,
+#endif
.hsw = 32,
.hfp = 32,
.hbp = 32,
@@ -316,6 +321,39 @@
#endif
}
+#ifdef USE_15HZ
+static int tonka_dcs_write_2(struct tonka_data *td, u8 dcs_cmd, u8 param1,
+ u8 param2)
+{
+ u8 buf[3];
+ buf[0] = dcs_cmd;
+ buf[1] = param1;
+ buf[2] = param2;
+#ifndef BROKEN_TUNNEL_ASYMMETRIC
+ return dsi_vc_dcs_write(td->dssdev, td->channel, buf, 3);
+#else
+ return dsi_vc_dcs_write_nosync(td->dssdev, td->channel, buf, 3);
+#endif
+}
+
+static int tonka_dcs_write_5(struct tonka_data *td, u8 dcs_cmd, u8 param1,
+ u8 param2, u8 param3, u8 param4, u8 param5)
+{
+ u8 buf[6];
+ buf[0] = dcs_cmd;
+ buf[1] = param1;
+ buf[2] = param2;
+ buf[3] = param3;
+ buf[4] = param4;
+ buf[5] = param5;
+#ifndef BROKEN_TUNNEL_ASYMMETRIC
+ return dsi_vc_dcs_write(td->dssdev, td->channel, buf, 6);
+#else
+ return dsi_vc_dcs_write_nosync(td->dssdev, td->channel, buf, 6);
+#endif
+}
+#endif
+
static int tonka_sleep_in(struct tonka_data *td)
{
@@ -1244,6 +1282,27 @@
(id2 == 0x00 || id2 == 0xff || id2 == 0x81))
td->cabc_broken = true;
+#ifdef USE_15HZ
+ /* unlock */
+ r = tonka_dcs_write_2(td, 0xF0, 0x5A, 0x5A);
+ if (r)
+ printk("1\n");
+ /* 30Hz refresh */
+ r = tonka_dcs_write_1(td, 0xB0, 0x03);
+ if (r)
+ printk("2\n");
+ r = tonka_dcs_write_1(td, 0xBB, 0x90);
+ if (r)
+ printk("3\n");
+ /* LTPS timing */
+ r = tonka_dcs_write_1(td, 0xB0, 0x15);
+ if (r)
+ printk("4\n");
+ r = tonka_dcs_write_5(td, 0xCB, 0x43, 0x41, 0x43, 0x41, 0x43);
+ if (r)
+ printk("5\n");
+#endif
+
r = tonka_dcs_write_1(td, DCS_BRIGHTNESS, 0xff);
if (r)
goto err;