diff options
author | Marcin Juszkiewicz <marcin@buglabs.net> | 2009-04-27 16:41:24 +0200 |
---|---|---|
committer | Marcin Juszkiewicz <marcin@buglabs.net> | 2009-04-28 18:09:45 +0200 |
commit | 0adc74b06210f1be01145a5977a36b83aca0aa68 (patch) | |
tree | 378495bdf474a70afef101f9e1859953d8826129 /meta/packages/linux/linux-omap-2.6.29/dss2/0026-DSS2-DSI-sidlemode-to-noidle-while-sending-frame.patch | |
parent | d65be3dd2aaa643b5596c8470caf7f291513efee (diff) | |
download | openembedded-core-0adc74b06210f1be01145a5977a36b83aca0aa68.tar.gz openembedded-core-0adc74b06210f1be01145a5977a36b83aca0aa68.tar.bz2 openembedded-core-0adc74b06210f1be01145a5977a36b83aca0aa68.tar.xz openembedded-core-0adc74b06210f1be01145a5977a36b83aca0aa68.zip |
beagleboard: added 2.6.29 kernel from OE
tested on B7
Signed-off-by: Marcin Juszkiewicz <marcin@buglabs.net>
Diffstat (limited to 'meta/packages/linux/linux-omap-2.6.29/dss2/0026-DSS2-DSI-sidlemode-to-noidle-while-sending-frame.patch')
-rw-r--r-- | meta/packages/linux/linux-omap-2.6.29/dss2/0026-DSS2-DSI-sidlemode-to-noidle-while-sending-frame.patch | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/meta/packages/linux/linux-omap-2.6.29/dss2/0026-DSS2-DSI-sidlemode-to-noidle-while-sending-frame.patch b/meta/packages/linux/linux-omap-2.6.29/dss2/0026-DSS2-DSI-sidlemode-to-noidle-while-sending-frame.patch new file mode 100644 index 000000000..6ee3908d1 --- /dev/null +++ b/meta/packages/linux/linux-omap-2.6.29/dss2/0026-DSS2-DSI-sidlemode-to-noidle-while-sending-frame.patch @@ -0,0 +1,78 @@ +From a1e8018c0806a1a0579eda4b93b7d6764a2ff643 Mon Sep 17 00:00:00 2001 +From: Tomi Valkeinen <tomi.valkeinen@nokia.com> +Date: Wed, 15 Apr 2009 14:06:54 +0300 +Subject: [PATCH] DSS2: DSI: sidlemode to noidle while sending frame + +DISPC interrupts are not wake-up capable. Smart-idle in DISPC_SIDLEMODE +causes DSS interface to go to idle at the end of the frame, and the +FRAMEDONE interrupt is then delayed until something wakes up the DSS +interface. + +So we set SIDLEMODE to no-idle when we start sending the frame, and +set it back to smart-idle after receiving FRAMEDONE. +--- + drivers/video/omap2/dss/dispc.c | 10 ++++++++++ + drivers/video/omap2/dss/dsi.c | 4 ++++ + drivers/video/omap2/dss/dss.h | 3 +++ + 3 files changed, 17 insertions(+), 0 deletions(-) + +diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c +index ae7be3d..16c68b8 100644 +--- a/drivers/video/omap2/dss/dispc.c ++++ b/drivers/video/omap2/dss/dispc.c +@@ -2791,6 +2791,16 @@ static void _omap_dispc_initialize_irq(void) + omap_dispc_set_irqs(); + } + ++void dispc_enable_sidle(void) ++{ ++ REG_FLD_MOD(DISPC_SYSCONFIG, 2, 4, 3); /* SIDLEMODE: smart idle */ ++} ++ ++void dispc_disable_sidle(void) ++{ ++ REG_FLD_MOD(DISPC_SYSCONFIG, 1, 4, 3); /* SIDLEMODE: no idle */ ++} ++ + static void _omap_dispc_initial_config(void) + { + u32 l; +diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c +index 66ac6ea..50af925 100644 +--- a/drivers/video/omap2/dss/dsi.c ++++ b/drivers/video/omap2/dss/dsi.c +@@ -2665,6 +2665,8 @@ static void dsi_update_screen_dispc(struct omap_display *display, + l = FLD_MOD(l, 1, 31, 31); /* TE_START */ + dsi_write_reg(DSI_VC_TE(1), l); + ++ dispc_disable_sidle(); ++ + dispc_enable_lcd_out(1); + + if (dsi.use_te) +@@ -2678,6 +2680,8 @@ static void framedone_callback(void *data, u32 mask) + return; + } + ++ dispc_enable_sidle(); ++ + dsi.framedone_scheduled = 1; + + /* We get FRAMEDONE when DISPC has finished sending pixels and turns +diff --git a/drivers/video/omap2/dss/dss.h b/drivers/video/omap2/dss/dss.h +index 0be42b6..d0917a8 100644 +--- a/drivers/video/omap2/dss/dss.h ++++ b/drivers/video/omap2/dss/dss.h +@@ -244,6 +244,9 @@ void dispc_fake_vsync_irq(void); + void dispc_save_context(void); + void dispc_restore_context(void); + ++void dispc_enable_sidle(void); ++void dispc_disable_sidle(void); ++ + void dispc_lcd_enable_signal_polarity(bool act_high); + void dispc_lcd_enable_signal(bool enable); + void dispc_pck_free_enable(bool enable); +-- +1.5.6.5 + |