Broken ES2.0 support at U-boot-linaro 11.08

Bug #837235 reported by Jani Monoses
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Linaro Ubuntu
Fix Released
Medium
John Rigby
u-boot-linaro (Ubuntu)
Fix Released
Medium
Ricardo Salveti
Oneiric
Fix Released
Medium
Ricardo Salveti

Bug Description

My Panda A1 750-2152-101(D) does not boot with the latest MLO/Uboot combo. I am using daily preinstalled Ubuntu omap4 image of Aug 30.

U-Boot SPL 2011.06 (Aug 29 2011 - 17:00:18)
Texas Instruments OMAP4430 ES2.0
OMAP SD/MMC: 0
reading u-boot.img
reading u-boot.bin
mkimage signature not found - ih_magic = ea000014
Assuming u-boot.bin ..
reading u-boot.bin

U-Boot 2011.06 (Aug 29 2011 - 17:00:18)

CPU : OMAP4430
Board: OMAP4 Panda
I2C: ready
DRAM: 512 MiB
WARNING: Caches not enabled
MMC: OMAP SD/MMC: 0
Using default environment

It loads and uncompresses the kernel then, but nothing is shown on the console even if setting ttyO2 and verbosity on.

512M of RAM is detected by UBoot instead of 1G and there's a caches not enabled warning.

Puttin the MLO+UBoot from 11.04 final on the vfat partition boots up fine.

Tags: iso-testing
Revision history for this message
Ricardo Salveti (rsalveti) wrote :

Confirmed this bug is related only with ES2.0 based pandas.

summary: - not booting a panda with 2011.06
+ Broken ES2.0 support at U-boot-linaro 11.08
Changed in linaro-ubuntu:
milestone: none → 11.09
assignee: nobody → John Rigby (jcrigby)
importance: Undecided → Medium
status: New → Confirmed
Changed in u-boot-linaro (Ubuntu):
status: New → Confirmed
importance: Undecided → Medium
Revision history for this message
Ricardo Salveti (rsalveti) wrote :

The main difference with latest SPL is that it's trying to calculate the timings instead of using a predefined table. Unfortunately with ES2.0 it seems the EMIF initialization is broken, as all readl calls are just returning 0x0, like:

U-Boot code: 80100000 -> 8013AC20 BSS: -> 8017C314
CPU : OMAP4430
Board: OMAP4 Panda
I2C: ready
>>sdram_init()
in_sdram = 0
>>do_sdram_init() 4c000000
get_mr: EMIF2 cs 0 mr 00000000 val 0x0
get_mr: EMIF2 cs 0 mr 00000004 val 0x0
get_mr: EMIF2 cs 0 mr 00000005 val 0x0
lpddr2 sdram is not present, returning NULL
get_mr: EMIF2 cs 1 mr 80000000 val 0x0
get_mr: EMIF2 cs 1 mr 80000004 val 0x0
get_mr: EMIF2 cs 1 mr 80000005 val 0x0
lpddr2 sdram is not present, returning NULL
>>do_sdram_init() 4d000000

This is what I get when running the same binaries against a ES2.1 based panda:

U-Boot code: 80100000 -> 8013ABEC BSS: -> 8017C2D4
CPU : OMAP4430
Board: OMAP4 Panda
I2C: ready
>>sdram_init()
in_sdram = 1
>>do_sdram_init() 4c000000
get_mr: EMIF2 cs 0 mr 00000000 val 0x18
get_mr: EMIF2 cs 0 mr 00000004 val 0x3
get_mr: EMIF2 cs 0 mr 00000005 val 0x3
get_mr: EMIF2 cs 0 mr 00000006 val 0x0
get_mr: EMIF2 cs 0 mr 00000007 val 0x0
get_mr: EMIF2 cs 0 mr 00000008 val 0x14
EMIF2 CS0 Elpida LPDDR2-S4 256 MB
get_mr: EMIF2 cs 1 mr 80000000 val 0x18
get_mr: EMIF2 cs 1 mr 80000004 val 0x3
get_mr: EMIF2 cs 1 mr 80000005 val 0x3
get_mr: EMIF2 cs 1 mr 80000006 val 0x0
get_mr: EMIF2 cs 1 mr 80000007 val 0x0
get_mr: EMIF2 cs 1 mr 80000008 val 0x14
EMIF2 CS1 Elpida LPDDR2-S4 256 MB
emif: timings table: 400000000
emif: addressing table index 5
...

As a workaround you can just define CONFIG_SYS_EMIF_PRECALCULATED_TIMING_REGS at include/configs/omap4_panda.h and it should work just fine.

The binaries if you just want to get your system working again: http://people.linaro.org/~rsalveti/837235/

Revision history for this message
Jani Monoses (jani) wrote :

I confirm these binaries boot my board, thanks.

tags: added: iso-testing
Revision history for this message
Ricardo Salveti (rsalveti) wrote :

Comments from Aneesh V:
"""
ES2.0 had some hw issues that makes it the most difficult w.r.to SDRAM
init.

Also I am thinking of making CONFIG_SYS_EMIF_PRECALCULATED_TIMING_REGS
the default config if the automatic detection is not quite stable.

> Hm, maybe I'm missing something here, but I also tried with all yours
> SPL patches that went upstream and had the same result.

I will test again. But I will not be surprised if the issue happens on
one device but not on another. The hw issues were in the analog part
and may depend on the particular device too.

Please also note that the automatic detection increases SPL size
considerably. This is not a problem now. But in future, if more
features have to be added to SPL, we may run out of SRAM space.
"""

So it seems making CONFIG_SYS_EMIF_PRECALCULATED_TIMING_REGS a default option is indeed a valid fix. Guess we could wait at least one week before Beta 2, and if Aneesh is not able to fix it upstream, we should just enable this option.

Changed in u-boot-linaro (Ubuntu):
milestone: none → ubuntu-11.10-beta-2
assignee: nobody → Ricardo Salveti (rsalveti)
Dave Walker (davewalker)
Changed in u-boot-linaro (Ubuntu):
milestone: ubuntu-11.10-beta-2 → ubuntu-11.10
Changed in linaro-ubuntu:
status: Confirmed → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package u-boot-linaro - 2011.09.5-0ubuntu1

---------------
u-boot-linaro (2011.09.5-0ubuntu1) oneiric; urgency=low

  * FFe: u-boot-linaro 11.09, misc fixes for new silicon and boards
    (LP: #851974)
    mmc: omap: enable high capacity
    mmc: omap: config VMMC, MMC1_PBIAS
    omap4: fix pad configuration settings for SDP and Panda
    omap4: make SDRAM init work for ES1.0 silicon
    omap4: IO settings
    pxe: make the first label the implicit default
    OMAP4: removing fdt_addr from the default env
    U-Boot/SPL: omap4: Make ddr pre-calculated timings as default.
    (LP: #837235)
    Revert "armv7: adapt omap3 to the new cache maintenance framework"
    (LP: #862013)
 -- John Rigby <email address hidden> Thu, 29 Sep 2011 00:40:24 -0600

Changed in u-boot-linaro (Ubuntu Oneiric):
status: Confirmed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.