All of lore.kernel.org
 help / color / mirror / Atom feed
From: Troy Kisky <troy.kisky@boundarydevices.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] Framebuffer support hangs kernel on mx53loco
Date: Mon, 14 May 2012 12:45:23 -0700	[thread overview]
Message-ID: <4FB160D3.6020807@boundarydevices.com> (raw)
In-Reply-To: <CAOMZO5B9MhCYGaRQAjDEOZZQv28qoMKQcHenw+CZLXMgZcUYhw@mail.gmail.com>

On 5/14/2012 10:27 AM, Fabio Estevam wrote:
> Hi Stefano/Anatolij,
>
> When I activate framebuffer support for mx53loco board I face the
> following problem (in about half of my attempts to boot the kernel):
>
> Starting kernel ...
>
> Linux version 2.6.35.3-01129-g691c08a (fabio at fabio-Latitude-E6410)
> (gcc version 4.4.4 (4.4.4_09.06.2010) ) #5 PREEMPT Mon May 14 14:22:49
> BRT 2012
> CPU: ARMv7 Processor [412fc085] revision 5 (ARMv7), cr=10c53c7f
> CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
> Machine: Freescale MX53 LOCO Board
> Memory policy: ECC disabled, Data cache writeback
> Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 250880
> Kernel command line: console=ttymxc0,115200 root=/dev/nfs ip=dhcp
> nfsroot=10.29.240.143:,v3,tcp
> PID hash table entries: 4096 (order: 2, 16384 bytes)
> Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
> Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
> Memory: 480MB 512MB = 992MB total
> Memory: 998528k/998528k available, 17280k reserved, 0K highmem
> Virtual kernel memory layout:
>      vector  : 0xffff0000 - 0xffff1000   (   4 kB)
>      fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
>      DMA     : 0xf9e00000 - 0xffe00000   (  96 MB)
>      vmalloc : 0xe0800000 - 0xf4000000   ( 312 MB)
>      lowmem  : 0x80000000 - 0xe0000000   (1536 MB)
>      pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)
>      modules : 0x7f000000 - 0x7fe00000   (  14 MB)
>        .init : 0x80008000 - 0x80032000   ( 168 kB)
>        .text : 0x80032000 - 0x807b4000   (7688 kB)
>        .data : 0x807d0000 - 0x808234c0   ( 334 kB)
> SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
> Hierarchical RCU implementation.
>          RCU-based detection of stalled CPUs is disabled.
>          Verbose stalled-CPUs detection is disabled.
> NR_IRQS:368
> MXC GPIO hardware
> MXC IRQ initialized
> MXC_Early serial console at MMIO 0x53fbc000 (options '115200')
> bootconsole [ttymxc0] enabled
> Console: colour dummy device 80x30
> Calibrating delay loop... 799.53 BogoMIPS (lpj=3997696)
> pid_max: default: 32768 minimum: 301
> Mount-cache hash table entries: 512
> CPU: Testing write buffer coherency: ok
> regulator: core version 0.5
> NET: Registered protocol family 16
> i.MX IRAM pool: 128 KB at 0xe0840000
> IRAM READY
> CPU is i.MX53 Revision 2.1
>
> (system hangs here)
>
> When framebuffer is not used I can succesfully reboot the board several times.
>
> I know it is a difficult question, but in case you have any
> ideas/suggestions I would be glad to listen to.
>
> Regards,
>
> Fabio Estevam
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>
This patch (though you can't apply it directly) may give you a clue.


Author: Troy Kisky <troy.kisky@boundarydevices.com>
Date:   Tue Jan 24 14:46:29 2012 -0700

     squash with dont_sleep, fix non-lvds boot

diff --git a/arch/arm/mach-mx5/clock.c b/arch/arm/mach-mx5/clock.c
index faecc34..efe324c 100644
--- a/arch/arm/mach-mx5/clock.c
+++ b/arch/arm/mach-mx5/clock.c
@@ -4581,6 +4581,19 @@ static void clk_tree_init(void)
         }
  }

+#define IPU_CONF               0x000
+#define IPU_DISP_GEN           0x0C4
+
+void turn_off_display(int physical_base) {
+       void __iomem *ipuc = ioremap(physical_base, SZ_4K);
+       if (ipuc) {
+               /* clear DI0/DI1 counter release */
+               unsigned reg = __raw_readl(ipuc + IPU_DISP_GEN);
+               __raw_writel(reg & ~(3 << 24), ipuc + IPU_DISP_GEN);
+               __raw_writel(0, ipuc + IPU_CONF);
+               iounmap(ipuc);
+       }
+}

  int __init mx51_clocks_init(unsigned long ckil, unsigned long osc, 
unsigned long ckih1, unsigned long ckih2)
  {
@@ -4590,6 +4603,7 @@ int __init mx51_clocks_init(unsigned long ckil, 
unsigned long osc, unsigned long
         int wp_cnt = 0;
         u32 pll1_rate;

+       turn_off_display(MX51_IPU_CTRL_BASE_ADDR + ((512 - 32) << 20));
         pll1_base = ioremap(PLL1_BASE_ADDR, SZ_4K);
         pll2_base = ioremap(PLL2_BASE_ADDR, SZ_4K);
         pll3_base = ioremap(PLL3_BASE_ADDR, SZ_4K);
@@ -4622,9 +4636,7 @@ int __init mx51_clocks_init(unsigned long ckil, 
unsigned long osc, unsigned long
         __raw_writel(0, MXC_CCM_CCGR3);
         __raw_writel(1 << MXC_CCM_CCGRx_CG8_OFFSET, MXC_CCM_CCGR4);

-       /* if ipu enabled, leave enabled, else sleep handshake will fail */
-       reg = __raw_readl(MXC_CCM_CCGR5) & (3 << MXC_CCM_CCGRx_CG5_OFFSET);
-       __raw_writel(reg | 1 << MXC_CCM_CCGRx_CG2_OFFSET |
+       __raw_writel(1 << MXC_CCM_CCGRx_CG2_OFFSET |
                      1 << MXC_CCM_CCGR5_CG6_1_OFFSET |
                      1 << MXC_CCM_CCGR5_CG6_2_OFFSET |
                      3 << MXC_CCM_CCGRx_CG7_OFFSET |
@@ -4910,6 +4922,8 @@ int __init mx53_clocks_init(unsigned long ckil, 
unsigned long osc, unsigned long
         int i = 0, j = 0, reg;
         u32 pll1_rate;

+       turn_off_display(MX53_IPU_CTRL_BASE_ADDR + ((128 - 32) << 20));
+
         pll1_base = ioremap(MX53_BASE_ADDR(PLL1_BASE_ADDR), SZ_4K);
         pll2_base = ioremap(MX53_BASE_ADDR(PLL2_BASE_ADDR), SZ_4K);
         pll3_base = ioremap(MX53_BASE_ADDR(PLL3_BASE_ADDR), SZ_4K);
@@ -4955,9 +4969,7 @@ int __init mx53_clocks_init(unsigned long ckil, 
unsigned long osc, unsigned long
         __raw_writel(0, MXC_CCM_CCGR3);
         __raw_writel(1 << MXC_CCM_CCGRx_CG8_OFFSET, MXC_CCM_CCGR4);

-       /* if ipu enabled, leave enabled, else sleep handshake will fail */
-       reg = __raw_readl(MXC_CCM_CCGR5) & (3 << MXC_CCM_CCGRx_CG5_OFFSET);
-       __raw_writel(reg | 1 << MXC_CCM_CCGRx_CG2_OFFSET |
+       __raw_writel(1 << MXC_CCM_CCGRx_CG2_OFFSET |
                      1 << MXC_CCM_CCGRx_CG6_OFFSET |
                      3 << MXC_CCM_CCGRx_CG7_OFFSET |
                      1 << MXC_CCM_CCGRx_CG8_OFFSET |

  reply	other threads:[~2012-05-14 19:45 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-14 17:27 [U-Boot] Framebuffer support hangs kernel on mx53loco Fabio Estevam
2012-05-14 19:45 ` Troy Kisky [this message]
2012-05-14 20:07   ` Fabio Estevam

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4FB160D3.6020807@boundarydevices.com \
    --to=troy.kisky@boundarydevices.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.