[U-Boot] [PATCH v10 00/16] split tegra20 arm7 code into separate SPL

Allen Martin amartin at nvidia.com
Wed Aug 29 02:07:40 CEST 2012


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-v10

Changes:
v10:
 - added fix to MAKEALL script so that it correctly parses new
 boards.cfg syntax
v9:
 - rebased mkconfig patch on top of version that went upstream to
 u-boot/master
 - fixed a whitespace checkpatch warning in arch/arm/cpu/arm720t/cpu.c
v8:
 - rebased to u-boot-tegra/master
 - added changes to work with "arm: Provide lowlevel_init C function
 wrapper for v7"
 - Moved JTAG init in SPL to earlier
 - fixed TEXT_BASE in SPL to use SPL TEXT_BASE not main u-boot
 TEXT_BASE
 - pad exception handlers in arm720t to 64 bytes with 0x12345678 to
 match armv7
 - added another tegra2->tegra20 rename for some new code that was
 added to arch/arm/cpu/armv7/start.S
 - rolled in the mkconfig fix that was breaking ARM platforms that
 don't define SoC
v7:
 - rebased to u-boot-tegra/next
 - added Acks and Tested-Bys
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


Allen Martin (16):
  tegra20: rename tegra2 -> tegra20
  tegra20: move tegra20 SoC code to arch/arm/cpu/tegra20-common
  tegra20: rename CONFIG_MACH_TEGRA_GENERIC
  tegra20: tec: add tegra20-common-post.h
  tegra20: make board mkdir commands unconditional
  mkconfig: remove bashisms and cleanup config.mk generation
  MAKEALL: update to work with new boards.cfg syntax
  ARM: Fix arm720t SPL build
  tegra20: remove timer_init from SPL build
  ARM: add tegra20 support to arm720t
  tegra20: add u-boot-*-tegra.bin targets
  tegra20: move SDRAM param save to later in boot
  tegra20: enable SPL for tegra20 boards
  arm: enable libgcc build for SPL
  spl: fix SPL build of private libgcc
  tegra20: Remove armv4t build flags

 MAINTAINERS                                        |   18 +--
 MAKEALL                                            |    9 +-
 Makefile                                           |   26 ++++
 arch/arm/cpu/arm720t/cpu.c                         |    2 +
 arch/arm/cpu/arm720t/interrupts.c                  |    5 +
 arch/arm/cpu/arm720t/start.S                       |   25 +++-
 arch/arm/cpu/{armv7 => 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                 |  133 ++++++++++++++++++
 arch/arm/cpu/armv7/Makefile                        |    2 +-
 arch/arm/cpu/armv7/start.S                         |    6 +-
 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                                         |   18 +--
 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                                           |   38 +++--
 spl/Makefile                                       |   10 ++
 107 files changed, 744 insertions(+), 526 deletions(-)
 copy arch/arm/cpu/{armv7 => arm720t/tegra20}/Makefile (71%)
 copy arch/arm/{include/asm/arch-tegra2 => cpu/arm720t/tegra20}/board.h (81%)
 copy arch/arm/cpu/{armv7/tegra2 => arm720t/tegra20}/config.mk (73%)
 rename arch/arm/cpu/{armv7/tegra2/ap20.c => arm720t/tegra20/cpu.c} (63%)
 copy arch/arm/{include/asm/arch-tegra2/ap20.h => cpu/arm720t/tegra20/cpu.h} (93%)
 create mode 100644 arch/arm/cpu/arm720t/tegra20/spl.c
 copy arch/arm/cpu/armv7/{tegra2 => tegra20}/Makefile (69%)
 rename arch/arm/cpu/armv7/{tegra2 => tegra20}/cmd_enterrcm.c (94%)
 rename arch/arm/cpu/armv7/{tegra2 => tegra20}/config.mk (74%)
 rename arch/arm/cpu/armv7/{tegra2 => tegra20}/usb.c (99%)
 rename arch/arm/cpu/{armv7/tegra2 => tegra20-common}/Makefile (66%)
 create mode 100644 arch/arm/cpu/tegra20-common/ap20.c
 rename arch/arm/cpu/{armv7/tegra2 => tegra20-common}/board.c (79%)
 rename arch/arm/cpu/{armv7/tegra2 => tegra20-common}/clock.c (99%)
 rename arch/arm/cpu/{armv7/tegra2 => tegra20-common}/crypto.c (100%)
 rename arch/arm/cpu/{armv7/tegra2 => tegra20-common}/crypto.h (100%)
 rename arch/arm/cpu/{armv7/tegra2 => tegra20-common}/emc.c (99%)
 rename arch/arm/cpu/{armv7/tegra2 => tegra20-common}/funcmux.c (99%)
 rename arch/arm/cpu/{armv7/tegra2 => tegra20-common}/lowlevel_init.S (100%)
 rename arch/arm/cpu/{armv7/tegra2 => tegra20-common}/pinmux.c (99%)
 rename arch/arm/cpu/{armv7/tegra2 => tegra20-common}/pmu.c (98%)
 rename arch/arm/cpu/{armv7/tegra2 => tegra20-common}/sys_info.c (98%)
 rename arch/arm/cpu/{armv7/tegra2 => tegra20-common}/timer.c (98%)
 rename arch/arm/cpu/{armv7/tegra2 => tegra20-common}/warmboot.c (95%)
 rename arch/arm/cpu/{armv7/tegra2 => tegra20-common}/warmboot_avp.c (98%)
 rename arch/arm/cpu/{armv7/tegra2 => tegra20-common}/warmboot_avp.h (100%)
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/ap20.h (98%)
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/apb_misc.h (100%)
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/board.h (100%)
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/clk_rst.h (100%)
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/clock.h (100%)
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/emc.h (100%)
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/flow.h (100%)
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/funcmux.h (97%)
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/fuse.h (100%)
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/gp_padctrl.h (98%)
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/gpio.h (99%)
 create mode 100644 arch/arm/include/asm/arch-tegra20/hardware.h
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/mmc.h (84%)
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/pinmux.h (100%)
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/pmc.h (100%)
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/pmu.h (100%)
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/scu.h (100%)
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/sdram_param.h (100%)
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/sys_proto.h (93%)
 rename arch/arm/include/asm/{arch-tegra2/tegra2.h => arch-tegra20/tegra20.h} (87%)
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/tegra_i2c.h (99%)
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/tegra_spi.h (96%)
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/timer.h (92%)
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/uart-spi-switch.h (100%)
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/uart.h (100%)
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/usb.h (100%)
 rename arch/arm/include/asm/{arch-tegra2 => arch-tegra20}/warmboot.h (100%)
 rename board/avionic-design/dts/{tegra2-medcom.dts => tegra20-medcom.dts} (100%)
 rename board/avionic-design/dts/{tegra2-plutux.dts => tegra20-plutux.dts} (100%)
 rename board/avionic-design/dts/{tegra2-tec.dts => tegra20-tec.dts} (100%)
 rename board/compal/dts/{tegra2-paz00.dts => tegra20-paz00.dts} (100%)
 rename board/compulab/dts/{tegra2-trimslice.dts => tegra20-trimslice.dts} (100%)
 rename board/nvidia/dts/{tegra2-harmony.dts => tegra20-harmony.dts} (92%)
 rename board/nvidia/dts/{tegra2-seaboard.dts => tegra20-seaboard.dts} (100%)
 rename board/nvidia/dts/{tegra2-ventana.dts => tegra20-ventana.dts} (92%)
 rename board/nvidia/dts/{tegra2-whistler.dts => tegra20-whistler.dts} (94%)
 rename include/configs/{tegra2-common-post.h => tegra20-common-post.h} (74%)
 rename include/configs/{tegra2-common.h => tegra20-common.h} (84%)

-- 
1.7.9.5



More information about the U-Boot mailing list