[U-Boot] [PATCH 2/2] ARM: zynq: add default ps7_init_gpl.c/h for Zed, MicroZed, ZC70x

Sören Brinkmann soren.brinkmann at xilinx.com
Sun Apr 12 04:45:56 CEST 2015


On Sun, 2015-04-12 at 10:20AM +0900, Masahiro Yamada wrote:
> Hi Sören,
> 
> 2015-04-12 5:42 GMT+09:00 Sören Brinkmann <soren.brinkmann at xilinx.com>:
> > On Thu, 2015-04-09 at 07:04PM +0900, Masahiro Yamada wrote:
> >> Due to licensing issues, the files ps7_init.c/h are not able to be
> >> distributed with U-Boot source code.  Recent Xilinx tools also
> >> provide the GPL version (ps7_init_gpl.c/h), compatible with U-Boot
> >> license.
> >>
> >> Prior to this commit, we had to copy ps7_init code into
> >> board/xilinx/zynq/ before the compile.
> >>
> >> To be more user-friendly, let's include ps7_init_gpl.c/h for
> >> Zedboard, MicroZed, ZC702, ZC706.
> >>
> >> These init code have been taken from the hwplatform_templates
> >> directory of Xilinx SDK 2014.4.
> >>
> >> You can still use customized ps7_init code by enabling
> >> CONFIG_ZYNQ_CUSTOM_INIT.
> >>
> >> Signed-off-by: Masahiro Yamada <yamada.masahiro at socionext.com>
> >> ---
> >>
> >>  arch/arm/cpu/armv7/zynq/Kconfig                    |    10 +
> >>  board/xilinx/zynq/Makefile                         |    22 +-
> >>  .../zynq/MicroZed_hw_platform/ps7_init_gpl.c       | 12978 ++++++++++++++++++
> >>  .../zynq/MicroZed_hw_platform/ps7_init_gpl.h       |   130 +
> >>  board/xilinx/zynq/ZC702_hw_platform/ps7_init_gpl.c | 13311 +++++++++++++++++++
> >>  board/xilinx/zynq/ZC702_hw_platform/ps7_init_gpl.h |   130 +
> >>  board/xilinx/zynq/ZC706_hw_platform/ps7_init_gpl.c | 13218 ++++++++++++++++++
> >>  board/xilinx/zynq/ZC706_hw_platform/ps7_init_gpl.h |   130 +
> >>  .../zynq/{ => custom_hw_platform}/.gitignore       |     0
> >>  .../xilinx/zynq/{ => custom_hw_platform}/legacy.c  |     0
> >>  board/xilinx/zynq/zed_hw_platform/ps7_init_gpl.c   | 12876 ++++++++++++++++++
> >>  board/xilinx/zynq/zed_hw_platform/ps7_init_gpl.h   |   130 +
> >>  12 files changed, 52931 insertions(+), 4 deletions(-)
> >>  create mode 100644 board/xilinx/zynq/MicroZed_hw_platform/ps7_init_gpl.c
> >>  create mode 100644 board/xilinx/zynq/MicroZed_hw_platform/ps7_init_gpl.h
> >>  create mode 100644 board/xilinx/zynq/ZC702_hw_platform/ps7_init_gpl.c
> >>  create mode 100644 board/xilinx/zynq/ZC702_hw_platform/ps7_init_gpl.h
> >>  create mode 100644 board/xilinx/zynq/ZC706_hw_platform/ps7_init_gpl.c
> >>  create mode 100644 board/xilinx/zynq/ZC706_hw_platform/ps7_init_gpl.h
> >>  rename board/xilinx/zynq/{ => custom_hw_platform}/.gitignore (100%)
> >>  rename board/xilinx/zynq/{ => custom_hw_platform}/legacy.c (100%)
> >>  create mode 100644 board/xilinx/zynq/zed_hw_platform/ps7_init_gpl.c
> >>  create mode 100644 board/xilinx/zynq/zed_hw_platform/ps7_init_gpl.h
> >>
> >> diff --git a/arch/arm/cpu/armv7/zynq/Kconfig b/arch/arm/cpu/armv7/zynq/Kconfig
> >> index ab4768a..e19cce0 100644
> >> --- a/arch/arm/cpu/armv7/zynq/Kconfig
> >> +++ b/arch/arm/cpu/armv7/zynq/Kconfig
> >> @@ -1,5 +1,13 @@
> >>  if ZYNQ
> >>
> >> +config ZYNQ_CUSTOM_INIT
> >> +     bool "Use custom ps7_init provided by Xilinx tool"
> >> +     help
> >> +       U-Boot includes ps7_init_gpl.[ch] for some Zynq board variants.
> >> +       If you want to override them with customized ones
> >> +       or ps7_init code for your board is missing, please say Y here
> >> +       and add ones into board/xilinx/zynq/custom_hw_platform/ directory.
> >> +
> >>  choice
> >>       prompt "Xilinx Zynq board select"
> >>
> >> @@ -17,9 +25,11 @@ config TARGET_ZYNQ_ZC706
> >>
> >>  config TARGET_ZYNQ_ZC770
> >>       bool "Zynq ZC770 Board"
> >> +     select ZYNQ_CUSTOM_INIT
> >>
> >>  config TARGET_ZYNQ_ZYBO
> >>       bool "Zynq Zybo Board"
> >> +     select ZYNQ_CUSTOM_INIT
> >>
> >>  endchoice
> >>
> >> diff --git a/board/xilinx/zynq/Makefile b/board/xilinx/zynq/Makefile
> >> index 3b1eb4f..7a82dfb 100644
> >> --- a/board/xilinx/zynq/Makefile
> >> +++ b/board/xilinx/zynq/Makefile
> >> @@ -7,11 +7,25 @@
> >>
> >>  obj-y        := board.o
> >>
> >> -# Please copy ps7_init_gpl.c/h from hw project to this directory
> >> -obj-$(CONFIG_SPL_BUILD) += \
> >> -             $(if $(wildcard $(srctree)/$(src)/ps7_init_gpl.c), ps7_init_gpl.o, \
> >> -                     $(if $(wildcard $(srctree)/$(src)/ps7_init.c), ps7_init.o legacy.o))
> >> +# Copied from Xilinx SDK 2014.4
> >> +ps7-init-$(CONFIG_TARGET_ZYNQ_ZED)   := zed_hw_platform/ps7_init_gpl.o
> >> +ps7-init-$(CONFIG_TARGET_ZYNQ_MICROZED)      := MicroZed_hw_platform/ps7_init_gpl.o
> >> +ps7-init-$(CONFIG_TARGET_ZYNQ_ZC702) := ZC702_hw_platform/ps7_init_gpl.o
> >> +ps7-init-$(CONFIG_TARGET_ZYNQ_ZC706) := ZC706_hw_platform/ps7_init_gpl.o
> >> +# If you want to use customized ps7_init_gpl.c/h (or ps7_init.c/h),
> >> +# enable CONFIG_ZYNQ_CUSTOM_INIT and put them into custom_hw_platform/.
> >> +ps7-init-$(CONFIG_ZYNQ_CUSTOM_INIT)  := \
> >> +     $(if $(wildcard $(srctree)/$(src)/custom_hw_platform/ps7_init_gpl.c), \
> >> +             custom_hw_platform/ps7_init_gpl.o, \
> >> +             $(if $(wildcard $(srctree)/$(src)/custom_hw_platform/ps7_init.c), \
> >> +                     custom_hw_platform/ps7_init.o custom_hw_platform/legacy.o))
> >
> > IIRC, the support for the legacy files was mainly added to not break
> > existing flows, this patch does break those flows by changing the search
> > location for these init files. Hence, this may be an opportunity to
> > fully drop support for the legacy files?
> 
> Yes. Good idea!
> 
> I will drop the legacy files support in v2.
> 
> 
> > Does this mechanism allow to build for one of the supported boards (e.g.
> > zc706) using custom init files? We need to maintain this capability,
> > IMHO, since these initfiles are generated by Xilinx tools depending on
> > various settings in Vivado. They can be quite different between
> > use-cases/applications, even when targeting the same board.
> 
> Don't worry.  Custom init files are still supporte.
> I added CONFIG_ZYNQ_CUSTOM_INIT.

But doesn't it cause 'multiple definition of...' like errors if I copy
custom ps7_init files additionally to the already present ones into the
source tree? Looking at the Makefile above, it seems for a "supported"
board, it would add <board>_hw_platform/ps7_init_gpl.o _and_
custom_hw_platform/ps7_init_gpl.o - both defining the same symbols. Or
am I missing something?

	Sören


More information about the U-Boot mailing list