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;