Allen, > -----Original Message----- > From: Allen Martin [mailto:amar...@nvidia.com] > Sent: Monday, July 16, 2012 4:02 PM > To: Tom Warren; swar...@wwwdotorg.org; s...@chromium.org; > thierry.red...@avionic-design.de > Cc: u-boot@lists.denx.de; Allen Martin > Subject: [PATCH v7 00/15] 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. > > This patch series is also available from: > git://github.com/arm000/u-boot.git > branch: tegra-spl-v7 >
Applied to u-boot-tegra/next AOK, tested on my Seaboard AOK, so: Tested-by: Tom Warren <twar...@nvidia.com> Note that I was confused by the final binary name (u-boot-dtb-tegra.bin), since I'm used to flashing u-boot-dtb.bin. We need to come to a consensus about the final binary name for Tegra U-Boot (I'd thought we had, and that it would be u-boot-dtb.bin, since that's what most devs are used to looking for in Tegra builds). Also, one nit: I see the 2 sign-on strings (U-Boot SPL 2012.04.xxx, and then U-Boot 2012.04.xxx), separated by 2 lines. I think it'd look better if you had them one right after the other, i.e. eliminate the extra linefeeds. Tom > Changes: > 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 (15): > 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: add support for SPL CPU > 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 +-- > 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(-) copy {drivers/input > => arch/arm/cpu/arm720t/tegra20}/Makefile (68%) 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 -- nvpublic _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot