[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
Sat Apr 11 22:42:06 CEST 2015


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?

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.

	Sören


More information about the U-Boot mailing list