Subject: Re: Strange behavior with I2C on Sequoia board

From: "Steven A. Falco" <[email-masked]>
Date: Thu, 21 Aug 2008 09:27:23 -0400

Valentine Barshak wrote:
> 
> Stefan Roese wrote:
>> On Thursday 21 August 2008, Sean MacLennan wrote:
>>>> That's all output from the wrapper, not the kernel.  And the kernel
>>>> config doesn't make a difference at all to the wrapper.  I wonder if
>>>> there is some weird size issue going on there or if whatever U-Boot
>>>> version you are using is doing odd things...
>>> Any chance something in the DTS could affect it? Maybe try commenting
>>> out the second IIC controller?
>>
>> Yes, I2C is generally working and should make a difference in Linux
>> kernel booting.
>>
>> It seems that your bootwrapper is somehow not copying the correct MAC
>> address to the device-tree. Not sure what's going wrong here. We
>> usually don't use the bootwrapper but boot the uImage directly from
>> U-Boot on all 4xx systems.
>>
>> You might want to debug the bootwrapper code, if possible drop the
>> bootwrapper and use the uImage with a newer, device-tree enabled
>> U-Boot version.
>>
> 
> U-boot thinks that all memory above the first 8MB is out of reach for
> the kernel and puts kernel bootargs and boardinfo structure below 8MB as
> close as possible to this limit. Including the i2c driver into the
> kernel increases the kernel image size. So when u-boot unpacks the
> kernel to 0x400000 (Load Address: 00400000) it overwrites the kernel
> parameters. So when the kernel actually starts, it reads zeros instead
> of boardinfo (and mac addresses)
> 
> The 8MB limit is set for all AMCC boards in include/configs/amcc-common.h:
> #define CFG_BOOTMAPSZ        (8 << 20) /* Initial Memory map for Linux */
> 
> I think this limit is obsolete and can be moved to at least 64MB.
> But you'll need to rebuild u-boot.
> 
> Stefan, what do you think? Can we increase the default initial memory
> map for AMCC boards in the next u-boot release, since u-boot has all
> memory identity-mapped on ppc 44x?
> 

Your diagnosis is correct!  I changed the define from 8<<20 to 8<<21 and it now
boots.  Previously the parameters were at 7ffe70, and this change moved them to
fffe70.

I would like to switch over to using a uImage rather than the cuboot.uImage.
But I have not figured out whether it is the U-boot build that converts the .dts
to a .dtb or if the kernel build should do that.  Also, I have not figured out
whether the .dtb can remain part of the kernel image, as it is with the cuboot
kernel, or if the .dtb must be a separate image in a different part of the rom.

So basically, I understand the components, but I'm not yet sure how to glue it
all together.

	Steve