[U-Boot] [PATCH] ARM1176: Coexist with other ARM1176 platforms

Tom Tom.Rix at windriver.com
Sun Mar 14 21:53:11 CET 2010


Cyril Chemparathy wrote:
> The current ARM1176 CPU specific code is too specific to the SMDK6400
> architecture.  The following changes were necessary prerequisites for the
> addition of other SoCs based on ARM1176.
> 
> Existing board's (SMDK6400) configuration has been modified to keep behavior
> unchanged despite these changes.
> 
> 1. Peripheral port remap configurability
> The earlier code had hardcoded remap values specific to s3c64xx in start.S.
> This change makes the peripheral port remap addresses and sizes configurable.
> 
> 2. Skip low level initialization
> Ability to skip low level initialization if necessary.  Many other platforms
> have a similar capability, and this is quite useful during debug/bring-up.
> 
> 3. U-Boot code relocation support
> Most architectures allow u-boot code to run initially at a different
> address (possibly in NOR) and then get relocated to its final resting place
> in RAM.  Added support for this capability in ARM1176 architecture.
> 
> 4. Disable TCM if necessary
> If a ROM based bootloader happened to have initialized TCM, we disable it here
> to keep things sane.
> 
> 5. Remove unnecessary SoC specific includes
> ARM1176 code does not really need this SoC specific include.  The presence
> of this include prevents builds on other ARM1176 archs.
> 
> 6. ARM926 style MMU disable when !CONFIG_ENABLE_MMU
> The original MMU disable code masks out too many bits from the load address
> when it tries to figure out the physical address of the jump target label.
> Consequently, it ends up branching to the wrong address after disabling the
> MMU.
> 

> Signed-off-by: Cyril Chemparathy <cyril at ti.com>

This patch is premature.
I need to see this patch within the context of the new SOC.

For a new SOC, I would like it be added as a new sub dir off of cpu/arm1176.
At the same level as s3c64xx.  So this dir would look like.

config.mk  cpu.c  Makefile  new_soc_name s3c64xx  start.S  u-boot.lds

The common code that is sharable should also be at this level.
This may mean moving and generalizing some s3c64xx/*.c.
The SOC specific code must be in its own dir.  An example of this may be the
lowlevel_init needs to move from start.S to <SOC>/lowlevel_init.S

I do not want one SOC if-def-ing up another SOC.

The maintainer of the original s3c64xx SOC, Guennadi Liakhovetski 
<g.liakhovetski at gmx.de>, should be cc-ed on at least the initial changes so he 
has a heads up that
some of his code is being moved/generalized.

Tom



More information about the U-Boot mailing list