[U-Boot] [PATCH v5 00/13] split tegra20 arm7 code into separate SPL

Simon Glass sjg at chromium.org
Thu Jul 19 22:14:31 CEST 2012


Hi Tom,

On Tue, Jul 3, 2012 at 12:47 AM, Tom Warren <TWarren at nvidia.com> wrote:
> Wolfgang,
>
>> -----Original Message-----
>> From: Allen Martin [mailto:amartin at nvidia.com]
>> Sent: Monday, June 25, 2012 3:55 PM
>> To: Tom Warren; swarren at wwwdotorg.org; sjg at chromium.org;
>> thierry.reding at avionic-design.de
>> Cc: u-boot at lists.denx.de
>> Subject: [PATCH v5 00/13] split tegra20 arm7 code into separate SPL
>>
>> 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.
>
> Any input on the validity of this patch series as a whole, and the changes to mkconfig/boards.cfg in particular, or any objections? I'd like to get it into u-boot-tegra/next soon.
>
> I'd also like to see all Tegra contributors sign-off or at least comment, as this is a major change (Simon, Thierry, Igor, Konstantin, Lucas, and anyone I've missed).

Sorry for the delay on this. I did comment on the earlier series, and
sent a few more comments just now, but I think overall this is a good
solution to sticky problem, and better than what we had.

Regards,
Simon

>
> Thanks,
>
> Tom
>>
>> This patch series is also available from:
>> git://github.com/arm000/u-boot.git
>> branch: tegra-spl-v5
>>
>> Changes:
>> 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 v5 01/13] tegra20: rename tegra2 -> tegra20 [PATCH v5 02/13] tegra20:
>> move tegra20 SoC code to [PATCH v5 03/13] tegra20: rename
>> CONFIG_MACH_TEGRA_GENERIC [PATCH v5 04/13] tegra20: tec: add tegra20-common-
>> post.h [PATCH v5 05/13] tegra20: make board mkdir commands unconditional
>> [PATCH v5 06/13] mkconfig: add support for SPL CPU [PATCH v5 07/13] ARM: Fix
>> arm720t SPL build [PATCH v5 08/13] tegra20: remove timer_init from SPL build
>> [PATCH v5 09/13] ARM: add tegra20 support to arm720t [PATCH v5 10/13]
>> tegra20: add u-boot-t2.bin target [PATCH v5 11/13] tegra20: move SDRAM param
>> save to later in boot [PATCH v5 12/13] tegra20: enable SPL for tegra20
>> boards [PATCH v5 13/13] tegra20: Remove armv4t build flags
>>
>>  MAINTAINERS                                        |   18 +--
>>  Makefile                                           |   24 ++++
>>  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/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
>>  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                                       |    4 +
>>  104 files changed, 738 insertions(+), 491 deletions(-)
>>
> --
> nvpublic


More information about the U-Boot mailing list