summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOtavio Salvador <otavio@ossystems.com.br>2012-09-07 18:25:31 -0300
committerOtavio Salvador <otavio@ossystems.com.br>2012-09-09 22:55:28 -0300
commite7f3146191b4a5c4e160ae1b585ec4fd8f99e6b0 (patch)
treebcda83e5e32207372ae62dcd6cf6dd60b00d366a
parent7ce2150a6ea2e176073dc7ba877ad3e3a8eb0432 (diff)
downloadmeta-fsl-arm-e7f3146191b4a5c4e160ae1b585ec4fd8f99e6b0.tar.gz
linux-imx (2.6.35.3): mx5: Fix IPU hang when framebuffer is enabled in U-boot
If bootloader enableds framebuffer, it is necessary to turn off IPU early in the boot process to avoid kernel hang. Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
-rw-r--r--recipes-kernel/linux/linux-imx-2.6.35.3/mx5-fix-hang-with-framebuffer.patch59
-rw-r--r--recipes-kernel/linux/linux-imx_2.6.35.3.bb3
2 files changed, 61 insertions, 1 deletions
diff --git a/recipes-kernel/linux/linux-imx-2.6.35.3/mx5-fix-hang-with-framebuffer.patch b/recipes-kernel/linux/linux-imx-2.6.35.3/mx5-fix-hang-with-framebuffer.patch
new file mode 100644
index 0000000..fa94faf
--- /dev/null
+++ b/recipes-kernel/linux/linux-imx-2.6.35.3/mx5-fix-hang-with-framebuffer.patch
@@ -0,0 +1,59 @@
1From 3bd0148cfe28a9908ff4cbb7b542d309107591a4 Mon Sep 17 00:00:00 2001
2From: Fabio Estevam <fabio.estevam@freescale.com>
3Date: Wed, 5 Sep 2012 19:54:54 -0300
4Subject: [PATCH 1/2] ARM: mach-mx5: Fix IPU hang when framebuffer is enabled
5 in U-boot
6
7If bootloader enableds framebuffer, it is necessary to turn off IPU early in
8the boot process to avoid kernel hang.
9
10Suggested-by: Troy Kisky <troy.kisky@boundarydevices.com>
11Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
12---
13 arch/arm/mach-mx5/clock.c | 16 ++++++++++++++++
14 1 file changed, 16 insertions(+)
15
16diff --git a/arch/arm/mach-mx5/clock.c b/arch/arm/mach-mx5/clock.c
17index 4559876..4d5a2cc 100644
18--- a/arch/arm/mach-mx5/clock.c
19+++ b/arch/arm/mach-mx5/clock.c
20@@ -4453,6 +4453,20 @@ static void clk_tree_init(void)
21 }
22 }
23
24+#define IPU_CONF 0x000
25+#define IPU_DISP_GEN 0x0C4
26+
27+void turn_off_display(int physical_base)
28+{
29+ void __iomem *ipuc = ioremap(physical_base, SZ_4K);
30+ if (ipuc) {
31+ /* clear DI0/DI1 counter release */
32+ unsigned reg = __raw_readl(ipuc + IPU_DISP_GEN);
33+ __raw_writel(reg & ~(3 << 24), ipuc + IPU_DISP_GEN);
34+ __raw_writel(0, ipuc + IPU_CONF);
35+ iounmap(ipuc);
36+ }
37+}
38
39 int __init mx51_clocks_init(unsigned long ckil, unsigned long osc, unsigned long ckih1, unsigned long ckih2)
40 {
41@@ -4462,6 +4476,7 @@ int __init mx51_clocks_init(unsigned long ckil, unsigned long osc, unsigned long
42 int wp_cnt = 0;
43 u32 pll1_rate;
44
45+ turn_off_display(MX51_IPU_CTRL_BASE_ADDR + ((512 - 32) << 20));
46 pll1_base = ioremap(PLL1_BASE_ADDR, SZ_4K);
47 pll2_base = ioremap(PLL2_BASE_ADDR, SZ_4K);
48 pll3_base = ioremap(PLL3_BASE_ADDR, SZ_4K);
49@@ -4782,6 +4797,7 @@ int __init mx53_clocks_init(unsigned long ckil, unsigned long osc, unsigned long
50 int i = 0, j = 0, reg;
51 u32 pll1_rate;
52
53+ turn_off_display(MX53_IPU_CTRL_BASE_ADDR + ((128 - 32) << 20));
54 pll1_base = ioremap(MX53_BASE_ADDR(PLL1_BASE_ADDR), SZ_4K);
55 pll2_base = ioremap(MX53_BASE_ADDR(PLL2_BASE_ADDR), SZ_4K);
56 pll3_base = ioremap(MX53_BASE_ADDR(PLL3_BASE_ADDR), SZ_4K);
57--
581.7.10.4
59
diff --git a/recipes-kernel/linux/linux-imx_2.6.35.3.bb b/recipes-kernel/linux/linux-imx_2.6.35.3.bb
index 439033d..a02a69d 100644
--- a/recipes-kernel/linux/linux-imx_2.6.35.3.bb
+++ b/recipes-kernel/linux/linux-imx_2.6.35.3.bb
@@ -1,7 +1,7 @@
1# Copyright (C) 2011-2012 Freescale Semiconductor 1# Copyright (C) 2011-2012 Freescale Semiconductor
2# Released under the MIT license (see COPYING.MIT for the terms) 2# Released under the MIT license (see COPYING.MIT for the terms)
3 3
4PR = "${INC_PR}.4" 4PR = "${INC_PR}.5"
5 5
6include linux-imx.inc 6include linux-imx.inc
7 7
@@ -29,6 +29,7 @@ SRC_URI_append_mxs = " \
29" 29"
30 30
31SRC_URI_append_mx5 = " \ 31SRC_URI_append_mx5 = " \
32 file://mx5-fix-hang-with-framebuffer.patch \
32 file://egalax_ts-enable-single-event-support.patch \ 33 file://egalax_ts-enable-single-event-support.patch \
33 file://0001-mx53_loco-add-USR-led-support.patch \ 34 file://0001-mx53_loco-add-USR-led-support.patch \
34 file://002_Return_ERESTARTSYS_from_IPU_GET_EVENT.patch \ 35 file://002_Return_ERESTARTSYS_from_IPU_GET_EVENT.patch \