[U-Boot] mx28evk_config integration

Robert Deliën
2012-01-13T10:18:06Z

Hi Stephan,

> Of course you can post patches ! Any fix is always high appreciated !

I figured patches on a different repo were a bit 'unusual', but I'll clean up my work and
submit my patch soon.

> Exactly which kernel version ? Do you tried with mainline kernel ? The
> board is officially supported in mainline. Can you test with a 3.2+ kernel ?

'Any' version; The FreeScale supplied version 2.6.35.3-571 that came with the board,
but also a community version 3.1.6. The strange thing is that the exact same uImage
files of both these Kernels work perfectly fine when loaded by the ancient FreeScale
supplied U-Boot 2009.08, so there must be some difference in the hand-over.

The Kernel stops booting after the message:
mxs_cpu_init: cpufreq init finished
(Full log included below)
With the JTAG debugger attached, it will report SIGABRT somewhere in emi_set_rate.
I realize that the message above is printed _after_ this function has run successfully,
hence with the JTAG debugger attached it doesn't get that far. But for now I'd like to
disregard that as a difference in cache contents.

Function mxs_cpu_init relocates function mxs_ram_freq_scale to SRAM and calls it.
(I've noticed that the arguments are still in SDRAM, but the function seems to take care
of copying those to SRAM itself) Function mxs_ram_freq_scale configures the SDRAM
clock and after that it all stops. With the debugger it stops immediately, when running
freely it still gets around to printing the message. I suppose without debugger there's still
enough code in cache to do that.

So there must be something wrong with SDRAM configuration. But this Kernel runs on
this board when it's loaded by an older version of U-Boot. So I figured it assumes an
underlying clock configuration that's no longer corresponds with the way the newer
U-Boot configures the clocks. And that's where I'm puzzling now.

These guys:
http://imxcommunity.org/group/imx28andimx28evk/forum/topics/kernel-execution-stops-at?xg_source=activity
(Still stuck with the ancient U-Boot version and ditto Kernel) report a similar symptom
with mis-configured SDRAM, so I think I'm heading in the right way.

I'll pull Kernel version 3.2.1 now and see how that works, though I'd really like to
understand the problem before considering it 'solved'.

Cheers,

Robert.

Log:
====
U-Boot 2011.12-svn319 (Jan 11 2012 - 12:54:24)

Freescale i.MX28 family
I2C: ready
DRAM: 128 MiB
WARNING: Caches not enabled
NAND: 1024 MiB
MMC: MXS MMC: 0
In: serial
Out: serial
Err: serial
Net: FEC0
Warning: failed to set MAC address
, FEC1
Warning: failed to set MAC address

Hit any key to stop autoboot: 0
Using FEC0 device
TFTP from server 192.168.72.80; our IP address is 192.168.72.111
Filename 'uImage'.
Load address: 0x42000000
Loading: T #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
##########################
done
Bytes transferred = 2461264 (258e50 hex)
## Booting kernel from Legacy Image at 42000000 ...
Image Name: linux-2.6.35.3-571-gcca29a0490
Created: 2012-01-03 20:42:29 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2461200 Bytes = 2.3 MiB
Load Address: 40008000
Entry Point: 40008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Linux version 2.6.35.3-571-gcca29a0490 Micro GC FuMo-svn300 (robert at macpro-ubuntu) (gcc version 4.4.4 (4.4.4_09.06.2012
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
CPU: VIVT data cache, VIVT instruction cache
Machine: Freescale MX28EVK board
Memory policy: ECC disabled, Data cache writeback
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512
Kernel command line: console=ttyAMA0,115200n8 ip=192.168.72.111::192.168.72.1:255.255.255.0:::none root=/dev/nfs nfsro/
PID hash table entries: 512 (order: -1, 2048 bytes)
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 128MB = 128MB total
Memory: 124676k/124676k available, 6396k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
DMA : 0xfde00000 - 0xffe00000 ( 32 MB)
vmalloc : 0xc8800000 - 0xf0000000 ( 632 MB)
lowmem : 0xc0000000 - 0xc8000000 ( 128 MB)
modules : 0xbf000000 - 0xc0000000 ( 16 MB)
.text : 0xc002b000 - 0xc04a8000 (4596 kB)
.init : 0xc0008000 - 0xc002b000 ( 140 kB)
.data : 0xc04a8000 - 0xc04dda60 ( 215 kB)
.bss : 0xc04ddae0 - 0xc0524274 ( 282 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:288
Console: colour dummy device 80x30
console [ttyAMA0] enabled
Calibrating delay loop... 226.09 BogoMIPS (lpj=1130496)
pid_max: default: 32768 minimum: 301
Security Framework initialized
SELinux: Initializing.
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
regulator: core version 0.5
NET: Registered protocol family 16
regulator: vddd: 800 <--> 1575 mV at 1500 mV fast normal
regulator: vdddbo: 800 <--> 1575 mV fast normal
regulator: vdda: 1500 <--> 2275 mV at 1800 mV fast normal
vddio = 3380000, val=10
regulator: vddio: 2880 <--> 3680 mV at 3380 mV fast normal
regulator: overall_current: fast normal
regulator: vbus5v:
regulator: mxs-duart-1: fast normal
regulator: mxs-bl-1: fast normal
regulator: mxs-i2c-1: fast normal
regulator: mmc_ssp-1: fast normal
regulator: mmc_ssp-2: fast normal
regulator: charger-1: fast normal
regulator: power-test-1: fast normal
regulator: cpufreq-1: fast normal
i.MX IRAM pool: 124 KB at 0xc8820000
usb DR wakeup device is registered
IMX usb wakeup probe
audit: cannot initialize inotify handle
bio: create slab <bio-0> at 0
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Advanced Linux Sound Architecture Driver Version 1.0.23.
Switching to clocksource mxs clock source
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 4096 (order: 3, 32768 bytes)
TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
TCP reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
Bus freq driver module loaded
IMX usb wakeup probe
usb h1 wakeup device is registered
mxs_cpu_init: cpufreq init finished