[U-Boot] [PATCH v6 00/15] split tegra20 arm7 code into separate SPL
Thierry Reding
thierry.reding at avionic-design.de
Tue Jul 3 15:55:48 CEST 2012
On Mon, Jul 02, 2012 at 10:51:58PM -0700, Allen Martin wrote:
> This patch series fixes a long standing problem with the tegra20
> u-boot build. Tegra20 contains an ARM7TDMI boot processor and a
> Cortex A9 main processor. Prior to this patch series this was
> accomplished by #ifdefing out any armv7 code from the early boot
> sequence and creating a single binary that runs on both both the
> ARM7TDMI and A9. This was very fragile as changes to compiler options
> or any additions or rearranging of the early boot code could add
> additional armv7 specific code causing it to fail on the ARM7TDMI.
>
> This patch series pulls all the armv4t code out into a separate SPL
> that does nothing more than initialize the A9 and transfer control to
> it. The resultint SPL and armv7 u-boot are concatenated together into
> a single image.
>
> This patch series is also available from:
> git://github.com/arm000/u-boot.git
> branch: tegra-spl-v6
>
> Changes:
> v6:
> - changed combined SPL/u-boot target names to u-boot-dtb-tegra.bin
> and u-boot-nodtb-tegra.bin
> - fixed regression introduced in v5 that caused git bisect to fail to
> build at one of the patches
> - fix USE_PRIVATE_LIBGCC for SPL build and enable it
> - fix libtegra20-common.so link so it works if building with out of
> tree OBJDIR
> v5:
> - added missing mkdir rules in all tegra20 board Makefiles that
> include common code and changed them to be unconditional
> - make new u-boot-dtb-t2.bin rule default for tegra20 and copy
> resulting binary over u-boot.bin
> v4:
> - rebased to u-boot-tegra/next
> - reordered entire patch series to preserve git bisect, verified
> build and boot at each patch
> - merged patches that add SPL config defines and removes duplicate
> code from u-boot init, these have to go in atomically to preserve
> building at each patch
> - fixed compiler warnings introduced
> - fixed blank line at end of file on cpu.c
> - renamed u-boot.t2 to u-boot-t2.bin
> - cleaned up config.mk generation in mkconfig to make it more
> readable
> - added some text to clarify using arm720t code for arm7tdmi
> - rearranged SPL memory map to make resulting SPL + u-boot image much
> smaller
> - removed separate PAD_TO define in favor of just using
> CONFIG_SYS_TEXT_BASE
> - moved warmboot_save_sdram_params() from dram_init() to board_init()
> v3:
> - git bisect still does not work across this series, I'm saving that
> for the next revision, but I had enough changes that I wanted to get
> this out for review
> - expanded the tegra2 -> tegra20 rename to include
> functions/variables/
> defines
> - rebased to u-boot-tegra/next
> - removed some extra -march=armv4t flags, kept armv4t flags on
> warmboot_avp since it's special
> - removed bashisms from mkconfig
> - renamed CONFIG_MACH_TEGRA_GENERIC to CONFIG_TEGRA
> - moved SPL overrides to tegra2-common-post.h
> - changed SPL base address to 0x108000, u-boot goes to 0x208000
> - moved warboot_save_sdram_params fix to separate patch
> - remove USE_PRIVATE_LIBGCC from non SPL build
> - expanded SPL support to all tegra20 boards, not just seaboard
> v2:
> - renamed tegra2 to tegra20 to match kernel and devicetree naming
> policy
> - pulled all SPL related config overrides to a separate file to clean
> up ifdefs from seabard.h
> - rebased to TOT u-boot/master and fixed a bug related to init
> sequence changes between this patch series and new EMC code
> - made u-boot.t2 target work even if CONFIG_OF is disabled
> - added back USE_PRIVATE_LIBGCC
>
> [PATCH v6 01/15] tegra20: rename tegra2 -> tegra20
> [PATCH v6 02/15] tegra20: move tegra20 SoC code to
> [PATCH v6 03/15] tegra20: rename CONFIG_MACH_TEGRA_GENERIC
> [PATCH v6 04/15] tegra20: tec: add tegra20-common-post.h
> [PATCH v6 05/15] tegra20: make board mkdir commands unconditional
> [PATCH v6 06/15] mkconfig: add support for SPL CPU
> [PATCH v6 07/15] ARM: Fix arm720t SPL build
> [PATCH v6 08/15] tegra20: remove timer_init from SPL build
> [PATCH v6 09/15] ARM: add tegra20 support to arm720t
> [PATCH v6 10/15] tegra20: add u-boot-*-tegra.bin targets
> [PATCH v6 11/15] tegra20: move SDRAM param save to later in boot
> [PATCH v6 12/15] tegra20: enable SPL for tegra20 boards
> [PATCH v6 13/15] arm: enable libgcc build for SPL
> [PATCH v6 14/15] spl: fix SPL build of private libgcc
> [PATCH v6 15/15] tegra20: Remove armv4t build flags
>
> MAINTAINERS | 18 +--
> Makefile | 26 ++++
> arch/arm/cpu/arm720t/cpu.c | 2 +
> arch/arm/cpu/arm720t/interrupts.c | 5 +
> arch/arm/cpu/arm720t/start.S | 19 ++-
> .../arm/cpu/arm720t/tegra20}/Makefile | 27 ++--
> .../arch-tegra2 => cpu/arm720t/tegra20}/board.h | 11 +-
> .../{armv7/tegra2 => arm720t/tegra20}/config.mk | 12 --
> .../{armv7/tegra2/ap20.c => arm720t/tegra20/cpu.c} | 148 ++------------------
> .../ap20.h => cpu/arm720t/tegra20/cpu.h} | 15 +-
> arch/arm/cpu/arm720t/tegra20/spl.c | 132 +++++++++++++++++
> arch/arm/cpu/armv7/start.S | 2 -
> arch/arm/cpu/armv7/{tegra2 => tegra20}/Makefile | 15 +-
> .../cpu/armv7/{tegra2 => tegra20}/cmd_enterrcm.c | 4 +-
> arch/arm/cpu/armv7/{tegra2 => tegra20}/config.mk | 12 --
> arch/arm/cpu/armv7/{tegra2 => tegra20}/usb.c | 2 +-
> .../cpu/{armv7/tegra2 => tegra20-common}/Makefile | 29 ++--
> arch/arm/cpu/tegra20-common/ap20.c | 131 +++++++++++++++++
> .../cpu/{armv7/tegra2 => tegra20-common}/board.c | 39 ++----
> .../cpu/{armv7/tegra2 => tegra20-common}/clock.c | 10 +-
> .../cpu/{armv7/tegra2 => tegra20-common}/crypto.c | 0
> .../cpu/{armv7/tegra2 => tegra20-common}/crypto.h | 0
> .../arm/cpu/{armv7/tegra2 => tegra20-common}/emc.c | 2 +-
> .../cpu/{armv7/tegra2 => tegra20-common}/funcmux.c | 2 +-
> .../tegra2 => tegra20-common}/lowlevel_init.S | 0
> .../cpu/{armv7/tegra2 => tegra20-common}/pinmux.c | 4 +-
> .../arm/cpu/{armv7/tegra2 => tegra20-common}/pmu.c | 2 +-
> .../{armv7/tegra2 => tegra20-common}/sys_info.c | 2 +-
> .../cpu/{armv7/tegra2 => tegra20-common}/timer.c | 2 +-
> .../{armv7/tegra2 => tegra20-common}/warmboot.c | 18 +--
> .../tegra2 => tegra20-common}/warmboot_avp.c | 4 +-
> .../tegra2 => tegra20-common}/warmboot_avp.h | 0
> .../asm/{arch-tegra2 => arch-tegra20}/ap20.h | 4 +-
> .../asm/{arch-tegra2 => arch-tegra20}/apb_misc.h | 0
> .../asm/{arch-tegra2 => arch-tegra20}/board.h | 0
> .../asm/{arch-tegra2 => arch-tegra20}/clk_rst.h | 0
> .../asm/{arch-tegra2 => arch-tegra20}/clock.h | 0
> .../asm/{arch-tegra2 => arch-tegra20}/emc.h | 0
> .../asm/{arch-tegra2 => arch-tegra20}/flow.h | 0
> .../asm/{arch-tegra2 => arch-tegra20}/funcmux.h | 2 +-
> .../asm/{arch-tegra2 => arch-tegra20}/fuse.h | 0
> .../asm/{arch-tegra2 => arch-tegra20}/gp_padctrl.h | 2 +-
> .../asm/{arch-tegra2 => arch-tegra20}/gpio.h | 2 +-
> arch/arm/include/asm/arch-tegra20/hardware.h | 29 ++++
> .../asm/{arch-tegra2 => arch-tegra20}/mmc.h | 8 +-
> .../asm/{arch-tegra2 => arch-tegra20}/pinmux.h | 0
> .../asm/{arch-tegra2 => arch-tegra20}/pmc.h | 0
> .../asm/{arch-tegra2 => arch-tegra20}/pmu.h | 0
> .../asm/{arch-tegra2 => arch-tegra20}/scu.h | 0
> .../{arch-tegra2 => arch-tegra20}/sdram_param.h | 0
> .../asm/{arch-tegra2 => arch-tegra20}/sys_proto.h | 4 +-
> .../tegra2.h => arch-tegra20/tegra20.h} | 18 +--
> .../asm/{arch-tegra2 => arch-tegra20}/tegra_i2c.h | 2 +-
> .../asm/{arch-tegra2 => arch-tegra20}/tegra_spi.h | 4 +-
> .../asm/{arch-tegra2 => arch-tegra20}/timer.h | 6 +-
> .../uart-spi-switch.h | 0
> .../asm/{arch-tegra2 => arch-tegra20}/uart.h | 0
> .../asm/{arch-tegra2 => arch-tegra20}/usb.h | 0
> .../asm/{arch-tegra2 => arch-tegra20}/warmboot.h | 0
> arch/arm/lib/Makefile | 2 +-
> board/avionic-design/common/tamonten.c | 4 +-
> .../dts/{tegra2-medcom.dts => tegra20-medcom.dts} | 0
> .../dts/{tegra2-plutux.dts => tegra20-plutux.dts} | 0
> .../dts/{tegra2-tec.dts => tegra20-tec.dts} | 0
> board/avionic-design/medcom/Makefile | 2 -
> board/avionic-design/plutux/Makefile | 2 -
> board/avionic-design/tec/Makefile | 2 -
> .../dts/{tegra2-paz00.dts => tegra20-paz00.dts} | 0
> board/compal/paz00/Makefile | 2 -
> board/compal/paz00/paz00.c | 6 +-
> ...{tegra2-trimslice.dts => tegra20-trimslice.dts} | 0
> board/compulab/trimslice/Makefile | 2 -
> board/compulab/trimslice/trimslice.c | 6 +-
> board/nvidia/common/board.c | 17 ++-
> board/nvidia/common/emc.c | 2 +-
> board/nvidia/common/uart-spi-switch.c | 2 +-
> .../{tegra2-harmony.dts => tegra20-harmony.dts} | 2 +-
> .../{tegra2-seaboard.dts => tegra20-seaboard.dts} | 0
> .../{tegra2-ventana.dts => tegra20-ventana.dts} | 2 +-
> .../{tegra2-whistler.dts => tegra20-whistler.dts} | 2 +-
> board/nvidia/harmony/harmony.c | 6 +-
> board/nvidia/seaboard/seaboard.c | 6 +-
> board/nvidia/whistler/whistler.c | 6 +-
> boards.cfg | 23 +--
> doc/README.SPL | 12 ++
> drivers/gpio/tegra_gpio.c | 12 +-
> drivers/i2c/tegra_i2c.c | 12 +-
> drivers/input/Makefile | 2 +-
> drivers/mmc/tegra_mmc.c | 32 ++---
> drivers/mmc/tegra_mmc.h | 12 +-
> drivers/spi/tegra_spi.c | 10 +-
> include/configs/harmony.h | 14 +-
> include/configs/medcom.h | 12 +-
> include/configs/paz00.h | 12 +-
> include/configs/plutux.h | 12 +-
> include/configs/seaboard.h | 20 +--
> include/configs/tec.h | 12 +-
> ...{tegra2-common-post.h => tegra20-common-post.h} | 73 +++++++++-
> .../configs/{tegra2-common.h => tegra20-common.h} | 44 +++---
> include/configs/trimslice.h | 14 +-
> include/configs/ventana.h | 12 +-
> include/configs/whistler.h | 14 +-
> include/fdtdec.h | 12 +-
> include/serial.h | 2 +-
> mkconfig | 24 ++--
> spl/Makefile | 10 ++
> 106 files changed, 745 insertions(+), 506 deletions(-)
Successfully booted to login prompt on TEC.
Tested-by: Thierry Reding <thierry.reding at avionic-design.de>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120703/34bec49f/attachment.pgp>
More information about the U-Boot
mailing list