summaryrefslogtreecommitdiffstats
path: root/meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0026-DSS2-DSI-sidlemode-to-noidle-while-sending-frame.patch
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@linux.intel.com>2010-08-27 15:14:24 +0100
committerRichard Purdie <rpurdie@linux.intel.com>2010-08-27 15:29:45 +0100
commit29d6678fd546377459ef75cf54abeef5b969b5cf (patch)
tree8edd65790e37a00d01c3f203f773fe4b5012db18 /meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0026-DSS2-DSI-sidlemode-to-noidle-while-sending-frame.patch
parentda49de6885ee1bc424e70bc02f21f6ab920efb55 (diff)
downloadpoky-29d6678fd546377459ef75cf54abeef5b969b5cf.tar.gz
Major layout change to the packages directory
Having one monolithic packages directory makes it hard to find things and is generally overwhelming. This commit splits it into several logical sections roughly based on function, recipes.txt gives more information about the classifications used. The opportunity is also used to switch from "packages" to "recipes" as used in OpenEmbedded as the term "packages" can be confusing to people and has many different meanings. Not all recipes have been classified yet, this is just a first pass at separating things out. Some packages are moved to meta-extras as they're no longer actively used or maintained. Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0026-DSS2-DSI-sidlemode-to-noidle-while-sending-frame.patch')
-rw-r--r--meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0026-DSS2-DSI-sidlemode-to-noidle-while-sending-frame.patch78
1 files changed, 78 insertions, 0 deletions
diff --git a/meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0026-DSS2-DSI-sidlemode-to-noidle-while-sending-frame.patch b/meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0026-DSS2-DSI-sidlemode-to-noidle-while-sending-frame.patch
new file mode 100644
index 0000000000..6ee3908d10
--- /dev/null
+++ b/meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0026-DSS2-DSI-sidlemode-to-noidle-while-sending-frame.patch
@@ -0,0 +1,78 @@
1From a1e8018c0806a1a0579eda4b93b7d6764a2ff643 Mon Sep 17 00:00:00 2001
2From: Tomi Valkeinen <tomi.valkeinen@nokia.com>
3Date: Wed, 15 Apr 2009 14:06:54 +0300
4Subject: [PATCH] DSS2: DSI: sidlemode to noidle while sending frame
5
6DISPC interrupts are not wake-up capable. Smart-idle in DISPC_SIDLEMODE
7causes DSS interface to go to idle at the end of the frame, and the
8FRAMEDONE interrupt is then delayed until something wakes up the DSS
9interface.
10
11So we set SIDLEMODE to no-idle when we start sending the frame, and
12set it back to smart-idle after receiving FRAMEDONE.
13---
14 drivers/video/omap2/dss/dispc.c | 10 ++++++++++
15 drivers/video/omap2/dss/dsi.c | 4 ++++
16 drivers/video/omap2/dss/dss.h | 3 +++
17 3 files changed, 17 insertions(+), 0 deletions(-)
18
19diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c
20index ae7be3d..16c68b8 100644
21--- a/drivers/video/omap2/dss/dispc.c
22+++ b/drivers/video/omap2/dss/dispc.c
23@@ -2791,6 +2791,16 @@ static void _omap_dispc_initialize_irq(void)
24 omap_dispc_set_irqs();
25 }
26
27+void dispc_enable_sidle(void)
28+{
29+ REG_FLD_MOD(DISPC_SYSCONFIG, 2, 4, 3); /* SIDLEMODE: smart idle */
30+}
31+
32+void dispc_disable_sidle(void)
33+{
34+ REG_FLD_MOD(DISPC_SYSCONFIG, 1, 4, 3); /* SIDLEMODE: no idle */
35+}
36+
37 static void _omap_dispc_initial_config(void)
38 {
39 u32 l;
40diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c
41index 66ac6ea..50af925 100644
42--- a/drivers/video/omap2/dss/dsi.c
43+++ b/drivers/video/omap2/dss/dsi.c
44@@ -2665,6 +2665,8 @@ static void dsi_update_screen_dispc(struct omap_display *display,
45 l = FLD_MOD(l, 1, 31, 31); /* TE_START */
46 dsi_write_reg(DSI_VC_TE(1), l);
47
48+ dispc_disable_sidle();
49+
50 dispc_enable_lcd_out(1);
51
52 if (dsi.use_te)
53@@ -2678,6 +2680,8 @@ static void framedone_callback(void *data, u32 mask)
54 return;
55 }
56
57+ dispc_enable_sidle();
58+
59 dsi.framedone_scheduled = 1;
60
61 /* We get FRAMEDONE when DISPC has finished sending pixels and turns
62diff --git a/drivers/video/omap2/dss/dss.h b/drivers/video/omap2/dss/dss.h
63index 0be42b6..d0917a8 100644
64--- a/drivers/video/omap2/dss/dss.h
65+++ b/drivers/video/omap2/dss/dss.h
66@@ -244,6 +244,9 @@ void dispc_fake_vsync_irq(void);
67 void dispc_save_context(void);
68 void dispc_restore_context(void);
69
70+void dispc_enable_sidle(void);
71+void dispc_disable_sidle(void);
72+
73 void dispc_lcd_enable_signal_polarity(bool act_high);
74 void dispc_lcd_enable_signal(bool enable);
75 void dispc_pck_free_enable(bool enable);
76--
771.5.6.5
78