* [PATCH v2 0/4] Xilinx Zynq Ultrascale+ MPSoC support @ 2018-11-28 11:20 Michael Tretter 2018-11-28 11:20 ` [PATCH v2 1/4] ARM: lib64: .gitignore barebox.lds Michael Tretter ` (5 more replies) 0 siblings, 6 replies; 15+ messages in thread From: Michael Tretter @ 2018-11-28 11:20 UTC (permalink / raw) To: barebox; +Cc: Michael Tretter This is v2 of the series to add support for the Xilinx Zynq Ultrascale+ MPSoC platform and the ZCU104 Evaluation Kit. The patch "[PATCH v2 3/4] ARM: aarch64: add ENTRY_PROC macro for arm64" probably needs a closer look, as it adds a generic macro that is expected to be used by other arm64 architectures as well. Changelog: v1 -> v2: - move ENTRY_PROC to a more generic location - add separate patch for ENTRY_PROC - rebase onto piggydata patches - remove empty zynqmp.c and board.c - use SPDX-License-Identifiers Michael Tretter (4): ARM: lib64: .gitignore barebox.lds ARM: aarch64: compile with general-regs-only ARM: aarch64: add ENTRY_PROC macro for arm64 ARM: zynqmp: add support for Xilinx ZCU104 board arch/arm/Kconfig | 14 +++++++ arch/arm/Makefile | 5 +++ arch/arm/boards/Makefile | 1 + arch/arm/boards/xilinx-zcu104/Makefile | 1 + arch/arm/boards/xilinx-zcu104/lowlevel.c | 21 ++++++++++ arch/arm/boards/xilinx-zcu104/lowlevel_init.S | 11 ++++++ arch/arm/configs/zynqmp_defconfig | 38 +++++++++++++++++++ arch/arm/dts/Makefile | 1 + arch/arm/dts/zynqmp-zcu104-revA.dts | 10 +++++ arch/arm/include/asm/barebox-arm64.h | 34 +++++++++++++++++ arch/arm/lib64/.gitignore | 1 + arch/arm/mach-zynqmp/Kconfig | 9 +++++ arch/arm/mach-zynqmp/Makefile | 1 + arch/arm/mach-zynqmp/include/mach/debug_ll.h | 30 +++++++++++++++ images/Makefile | 1 + images/Makefile.zynqmp | 7 ++++ 16 files changed, 185 insertions(+) create mode 100644 arch/arm/boards/xilinx-zcu104/Makefile create mode 100644 arch/arm/boards/xilinx-zcu104/lowlevel.c create mode 100644 arch/arm/boards/xilinx-zcu104/lowlevel_init.S create mode 100644 arch/arm/configs/zynqmp_defconfig create mode 100644 arch/arm/dts/zynqmp-zcu104-revA.dts create mode 100644 arch/arm/include/asm/barebox-arm64.h create mode 100644 arch/arm/lib64/.gitignore create mode 100644 arch/arm/mach-zynqmp/Kconfig create mode 100644 arch/arm/mach-zynqmp/Makefile create mode 100644 arch/arm/mach-zynqmp/include/mach/debug_ll.h create mode 100644 images/Makefile.zynqmp -- 2.19.1 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v2 1/4] ARM: lib64: .gitignore barebox.lds 2018-11-28 11:20 [PATCH v2 0/4] Xilinx Zynq Ultrascale+ MPSoC support Michael Tretter @ 2018-11-28 11:20 ` Michael Tretter 2018-11-28 11:20 ` [PATCH v2 2/4] ARM: aarch64: compile with general-regs-only Michael Tretter ` (4 subsequent siblings) 5 siblings, 0 replies; 15+ messages in thread From: Michael Tretter @ 2018-11-28 11:20 UTC (permalink / raw) To: barebox; +Cc: Michael Tretter Commit e1287b1a8b27 ("arm: rework lib directory to support arm64") restructured the lib directory and added the lib64 directory. It moved the existing .gitignore to the lib32 directory but didn't add a new .gitignore for lib64. Thus building Barebox for arm64 results in stray barebox.lds files. Copy the .gitignore from lib32 to lib64. Signed-off-by: Michael Tretter <m.tretter@pengutronix.de> --- arch/arm/lib64/.gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 arch/arm/lib64/.gitignore diff --git a/arch/arm/lib64/.gitignore b/arch/arm/lib64/.gitignore new file mode 100644 index 0000000000..d1165788c9 --- /dev/null +++ b/arch/arm/lib64/.gitignore @@ -0,0 +1 @@ +barebox.lds -- 2.19.1 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v2 2/4] ARM: aarch64: compile with general-regs-only 2018-11-28 11:20 [PATCH v2 0/4] Xilinx Zynq Ultrascale+ MPSoC support Michael Tretter 2018-11-28 11:20 ` [PATCH v2 1/4] ARM: lib64: .gitignore barebox.lds Michael Tretter @ 2018-11-28 11:20 ` Michael Tretter 2018-11-28 11:20 ` [PATCH v2 3/4] ARM: aarch64: add ENTRY_PROC macro for arm64 Michael Tretter ` (3 subsequent siblings) 5 siblings, 0 replies; 15+ messages in thread From: Michael Tretter @ 2018-11-28 11:20 UTC (permalink / raw) To: barebox; +Cc: Michael Tretter Without this flag, gcc generates code to save the Q/V registers to the stack for handling the va_list in pr_print(). Saving the registers is useless, as the registers are never restored, but accessing the registers to save them hangs the CPU. Follow the Linux arch/arm64/Makefile and use the general-regs-only flag to prevent usage of floating point and Advanced SIMD register. Signed-off-by: Michael Tretter <m.tretter@pengutronix.de> --- arch/arm/Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 5db67b9db8..50958b787f 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -27,6 +27,10 @@ else CFLAGS += -mstrict-align endif +# Prevent use of floating point and Advanced SIMD registers. +ifeq ($(CONFIG_CPU_V8),y) +CFLAGS += -mgeneral-regs-only +endif # This selects which instruction set is used. # Note that GCC does not numerically define an architecture version -- 2.19.1 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v2 3/4] ARM: aarch64: add ENTRY_PROC macro for arm64 2018-11-28 11:20 [PATCH v2 0/4] Xilinx Zynq Ultrascale+ MPSoC support Michael Tretter 2018-11-28 11:20 ` [PATCH v2 1/4] ARM: lib64: .gitignore barebox.lds Michael Tretter 2018-11-28 11:20 ` [PATCH v2 2/4] ARM: aarch64: compile with general-regs-only Michael Tretter @ 2018-11-28 11:20 ` Michael Tretter 2018-11-28 11:20 ` [PATCH v2 4/4] ARM: zynqmp: add support for Xilinx ZCU104 board Michael Tretter ` (2 subsequent siblings) 5 siblings, 0 replies; 15+ messages in thread From: Michael Tretter @ 2018-11-28 11:20 UTC (permalink / raw) To: barebox; +Cc: Michael Tretter arm64 has no __naked__ attribute and the compiler adds a function prologue for saving x29 and x30 to the stack for all C functions. This includes functions defined using the ENTRY_FUNCTION macro. Therefore, the stack needs to be setup before entering a C function, which is not possible if the entry is a C function. Provide a macro to implement the entry in assembly to be able to setup the stack before entering the low level entry function. Signed-off-by: Michael Tretter <m.tretter@pengutronix.de> --- arch/arm/include/asm/barebox-arm64.h | 34 ++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 arch/arm/include/asm/barebox-arm64.h diff --git a/arch/arm/include/asm/barebox-arm64.h b/arch/arm/include/asm/barebox-arm64.h new file mode 100644 index 0000000000..e7eda22128 --- /dev/null +++ b/arch/arm/include/asm/barebox-arm64.h @@ -0,0 +1,34 @@ +#ifndef _BAREBOX_ARM64_H_ +#define _BAREBOX_ARM64_H_ + +#include <linux/linkage.h> + +/* + * ENTRY_PROC - mark start of entry procedure + */ +#define ENTRY_PROC(name) \ + .section .text_head_entry_##name; \ + ENTRY(##name); \ + b 2f; \ + nop; \ + nop; \ + nop; \ + nop; \ + nop; \ + nop; \ + nop; \ + .asciz "barebox"; \ + .word 0xffffffff; \ + .word _barebox_image_size; \ + .rept 8; \ + .word 0x55555555; \ + .endr; \ + 2: + +/* + * ENTRY_PROC_END - mark end of entry procedure + */ +#define ENTRY_PROC_END(name) \ + END(##name) + +#endif /* _BAREBOX_ARM64_H_ */ -- 2.19.1 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v2 4/4] ARM: zynqmp: add support for Xilinx ZCU104 board 2018-11-28 11:20 [PATCH v2 0/4] Xilinx Zynq Ultrascale+ MPSoC support Michael Tretter ` (2 preceding siblings ...) 2018-11-28 11:20 ` [PATCH v2 3/4] ARM: aarch64: add ENTRY_PROC macro for arm64 Michael Tretter @ 2018-11-28 11:20 ` Michael Tretter 2018-11-28 13:13 ` [PATCH v2 0/4] Xilinx Zynq Ultrascale+ MPSoC support Antony Pavlov 2018-12-07 10:11 ` [PATCH v3 " Michael Tretter 5 siblings, 0 replies; 15+ messages in thread From: Michael Tretter @ 2018-11-28 11:20 UTC (permalink / raw) To: barebox; +Cc: Michael Tretter Add support for the Xilinx Zynq Ultrascale+ MPSoC architecture (ZynqMP) and the Xilinx ZCU104 board. Barebox is booted as BL33 in EL-1 and expects that a BL2 (i.e. the FSBL) already took care of initializing the RAM. Also for debug_ll, the UART is expected to be already setup correctly. Thus, you have to add the Barebox binary to a boot image as described in "Chapter 11: Boot and Configuration" of "Zynq Ultrascale+ Device Technical Reference Manual". Signed-off-by: Michael Tretter <m.tretter@pengutronix.de> --- Changelog: v2: - introduce ENTRY_PROC in a separate patch - move ENTRY_PROC to a separate header file - switch to piggydata for assembling the image - remove zynqmp.c and board.c and the respective empty init calls - use SPDX-License-Identifiers --- arch/arm/Kconfig | 14 +++++++ arch/arm/Makefile | 1 + arch/arm/boards/Makefile | 1 + arch/arm/boards/xilinx-zcu104/Makefile | 1 + arch/arm/boards/xilinx-zcu104/lowlevel.c | 21 ++++++++++ arch/arm/boards/xilinx-zcu104/lowlevel_init.S | 11 ++++++ arch/arm/configs/zynqmp_defconfig | 38 +++++++++++++++++++ arch/arm/dts/Makefile | 1 + arch/arm/dts/zynqmp-zcu104-revA.dts | 10 +++++ arch/arm/mach-zynqmp/Kconfig | 9 +++++ arch/arm/mach-zynqmp/Makefile | 1 + arch/arm/mach-zynqmp/include/mach/debug_ll.h | 30 +++++++++++++++ images/Makefile | 1 + images/Makefile.zynqmp | 7 ++++ 14 files changed, 146 insertions(+) create mode 100644 arch/arm/boards/xilinx-zcu104/Makefile create mode 100644 arch/arm/boards/xilinx-zcu104/lowlevel.c create mode 100644 arch/arm/boards/xilinx-zcu104/lowlevel_init.S create mode 100644 arch/arm/configs/zynqmp_defconfig create mode 100644 arch/arm/dts/zynqmp-zcu104-revA.dts create mode 100644 arch/arm/mach-zynqmp/Kconfig create mode 100644 arch/arm/mach-zynqmp/Makefile create mode 100644 arch/arm/mach-zynqmp/include/mach/debug_ll.h create mode 100644 images/Makefile.zynqmp diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 3b486f7b8b..842cbb1485 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -245,6 +245,19 @@ config ARCH_ZYNQ bool "Xilinx Zynq-based boards" select HAS_DEBUG_LL +config ARCH_ZYNQMP + bool "Xilinx ZynqMP-based boards" + select CPU_V8 + select HAS_DEBUG_LL + select HAVE_PBL_MULTI_IMAGES + select COMMON_CLK + select COMMON_CLK_OF_PROVIDER + select CLKDEV_LOOKUP + select OFDEVICE + select OFTREE + select RELOCATABLE + select SYS_SUPPORTS_64BIT_KERNEL + config ARCH_QEMU bool "ARM QEMU boards" select HAS_DEBUG_LL @@ -275,6 +288,7 @@ source arch/arm/mach-tegra/Kconfig source arch/arm/mach-uemd/Kconfig source arch/arm/mach-zynq/Kconfig source arch/arm/mach-qemu/Kconfig +source arch/arm/mach-zynqmp/Kconfig config ARM_ASM_UNIFIED bool diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 50958b787f..675d3433cc 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -101,6 +101,7 @@ machine-$(CONFIG_ARCH_VEXPRESS) := vexpress machine-$(CONFIG_ARCH_TEGRA) := tegra machine-$(CONFIG_ARCH_UEMD) := uemd machine-$(CONFIG_ARCH_ZYNQ) := zynq +machine-$(CONFIG_ARCH_ZYNQMP) := zynqmp machine-$(CONFIG_ARCH_QEMU) := qemu diff --git a/arch/arm/boards/Makefile b/arch/arm/boards/Makefile index 3bf176b14d..a15a24c02e 100644 --- a/arch/arm/boards/Makefile +++ b/arch/arm/boards/Makefile @@ -153,6 +153,7 @@ obj-$(CONFIG_MACH_VSCOM_BALTOS) += vscom-baltos/ obj-$(CONFIG_MACH_QEMU_VIRT64) += qemu-virt64/ obj-$(CONFIG_MACH_WARP7) += element14-warp7/ obj-$(CONFIG_MACH_VF610_TWR) += freescale-vf610-twr/ +obj-$(CONFIG_MACH_XILINX_ZCU104) += xilinx-zcu104/ obj-$(CONFIG_MACH_ZII_RDU1) += zii-imx51-rdu1/ obj-$(CONFIG_MACH_ZII_RDU2) += zii-imx6q-rdu2/ obj-$(CONFIG_MACH_ZII_VF610_DEV) += zii-vf610-dev/ diff --git a/arch/arm/boards/xilinx-zcu104/Makefile b/arch/arm/boards/xilinx-zcu104/Makefile new file mode 100644 index 0000000000..ca9c44c1a5 --- /dev/null +++ b/arch/arm/boards/xilinx-zcu104/Makefile @@ -0,0 +1 @@ +lwl-y += lowlevel.o lowlevel_init.o diff --git a/arch/arm/boards/xilinx-zcu104/lowlevel.c b/arch/arm/boards/xilinx-zcu104/lowlevel.c new file mode 100644 index 0000000000..5541f9bc8e --- /dev/null +++ b/arch/arm/boards/xilinx-zcu104/lowlevel.c @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2018 Pengutronix, Michael Tretter <m.tretter@pengutronix.de> + */ + +#include <common.h> +#include <debug_ll.h> +#include <asm/barebox-arm.h> + +extern char __dtb_zynqmp_zcu104_revA_start[]; + +void zynqmp_zcu104_start(uint32_t, uint32_t, uint32_t); + +void noinline zynqmp_zcu104_start(uint32_t r0, uint32_t r1, uint32_t r2) +{ + /* Assume that the first stage boot loader configured the UART */ + putc_ll('>'); + + barebox_arm_entry(0, SZ_2G, + __dtb_zynqmp_zcu104_revA_start + global_variable_offset()); +} diff --git a/arch/arm/boards/xilinx-zcu104/lowlevel_init.S b/arch/arm/boards/xilinx-zcu104/lowlevel_init.S new file mode 100644 index 0000000000..9905a5f867 --- /dev/null +++ b/arch/arm/boards/xilinx-zcu104/lowlevel_init.S @@ -0,0 +1,11 @@ +#include <linux/linkage.h> +#include <asm/barebox-arm64.h> + +/* The DRAM is already setup */ +#define STACK_TOP 0x80000000 + +ENTRY_PROC(start_zynqmp_zcu104) + mov x0, #STACK_TOP + mov sp, x0 + b zynqmp_zcu104_start +ENTRY_PROC_END(start_zynqmp_zcu104) diff --git a/arch/arm/configs/zynqmp_defconfig b/arch/arm/configs/zynqmp_defconfig new file mode 100644 index 0000000000..4dea9647fe --- /dev/null +++ b/arch/arm/configs/zynqmp_defconfig @@ -0,0 +1,38 @@ +CONFIG_ARCH_ZYNQMP=y +CONFIG_MACH_XILINX_ZCU104=y +CONFIG_MMU=y +CONFIG_MALLOC_SIZE=0x0 +CONFIG_MALLOC_TLSF=y +CONFIG_KALLSYMS=y +CONFIG_HUSH_FANCY_PROMPT=y +CONFIG_CMDLINE_EDITING=y +CONFIG_AUTO_COMPLETE=y +CONFIG_MENU=y +CONFIG_BOOTM_SHOW_TYPE=y +CONFIG_BOOTM_VERBOSE=y +CONFIG_BOOTM_INITRD=y +CONFIG_BOOTM_OFTREE=y +CONFIG_DEFAULT_ENVIRONMENT_GENERIC_NEW=y +CONFIG_LONGHELP=y +CONFIG_CMD_MEMINFO=y +CONFIG_CMD_GO=y +CONFIG_CMD_RESET=y +CONFIG_CMD_PARTITION=y +CONFIG_CMD_EXPORT=y +CONFIG_CMD_PRINTENV=y +CONFIG_CMD_MAGICVAR=y +CONFIG_CMD_MAGICVAR_HELP=y +CONFIG_CMD_SAVEENV=y +CONFIG_CMD_LN=y +CONFIG_CMD_SLEEP=y +CONFIG_CMD_EDIT=y +CONFIG_CMD_MENU=y +CONFIG_CMD_MENU_MANAGEMENT=y +CONFIG_CMD_READLINE=y +CONFIG_CMD_TIMEOUT=y +CONFIG_CMD_CLK=y +CONFIG_CMD_OFTREE=y +CONFIG_CMD_TIME=y +CONFIG_DRIVER_SERIAL_CADENCE=y +# CONFIG_SPI is not set +CONFIG_DIGEST=y diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index 503d9b18f9..0ac3124c8c 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -119,6 +119,7 @@ pbl-dtb-$(CONFIG_MACH_ZII_VF610_DEV) += \ pbl-dtb-$(CONFIG_MACH_AT91SAM9263EK_DT) += at91sam9263ek.dtb.o pbl-dtb-$(CONFIG_MACH_MICROCHIP_KSZ9477_EVB) += at91-microchip-ksz9477-evb.dtb.o pbl-dtb-$(CONFIG_MACH_AT91SAM9X5EK) += at91sam9x5ek.dtb.o +pbl-dtb-$(CONFIG_MACH_XILINX_ZCU104) += zynqmp-zcu104-revA.dtb.o pbl-dtb-$(CONFIG_MACH_ZII_IMX7D_RPU2) += imx7d-zii-rpu2.dtb.o diff --git a/arch/arm/dts/zynqmp-zcu104-revA.dts b/arch/arm/dts/zynqmp-zcu104-revA.dts new file mode 100644 index 0000000000..8c467ee970 --- /dev/null +++ b/arch/arm/dts/zynqmp-zcu104-revA.dts @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * dts file for Xilinx ZynqMP ZCU104 + * + * (C) Copyright 2017 - 2018, Xilinx, Inc. + * + * Michal Simek <michal.simek@xilinx.com> + */ + +#include <arm64/xilinx/zynqmp-zcu104-revA.dts> diff --git a/arch/arm/mach-zynqmp/Kconfig b/arch/arm/mach-zynqmp/Kconfig new file mode 100644 index 0000000000..1c7727d66c --- /dev/null +++ b/arch/arm/mach-zynqmp/Kconfig @@ -0,0 +1,9 @@ +if ARCH_ZYNQMP + +config MACH_XILINX_ZCU104 + bool "Xilinx Zynq UltraScale+ MPSoC ZCU104" + help + Say Y here if you are using the Xilinx Zynq UltraScale+ MPSoC ZCU104 + evaluation board. + +endif diff --git a/arch/arm/mach-zynqmp/Makefile b/arch/arm/mach-zynqmp/Makefile new file mode 100644 index 0000000000..16a218658a --- /dev/null +++ b/arch/arm/mach-zynqmp/Makefile @@ -0,0 +1 @@ +obj- := __dummy__.o diff --git a/arch/arm/mach-zynqmp/include/mach/debug_ll.h b/arch/arm/mach-zynqmp/include/mach/debug_ll.h new file mode 100644 index 0000000000..cd2583a35b --- /dev/null +++ b/arch/arm/mach-zynqmp/include/mach/debug_ll.h @@ -0,0 +1,30 @@ +#ifndef __MACH_DEBUG_LL_H__ +#define __MACH_DEBUG_LL_H__ + +#include <io.h> + +#define ZYNQMP_UART0_BASE 0xFF000000 +#define ZYNQMP_UART1_BASE 0xFF010000 +#define ZYNQMP_UART_BASE ZYNQMP_UART0_BASE +#define ZYNQMP_DEBUG_LL_UART_BASE ZYNQMP_UART_BASE + +#define ZYNQMP_UART_RXTXFIFO 0x30 +#define ZYNQMP_UART_CHANNEL_STS 0x2C + +#define ZYNQMP_UART_STS_TFUL (1 << 4) +#define ZYNQMP_UART_TXDIS (1 << 5) + +static inline void PUTC_LL(int c) +{ + void __iomem *base = (void __iomem *)ZYNQMP_DEBUG_LL_UART_BASE; + + if (readl(base) & ZYNQMP_UART_TXDIS) + return; + + while ((readl(base + ZYNQMP_UART_CHANNEL_STS) & ZYNQMP_UART_STS_TFUL) != 0) + ; + + writel(c, base + 0x30); +} + +#endif diff --git a/images/Makefile b/images/Makefile index 4c6d486f08..9aaf8af6ed 100644 --- a/images/Makefile +++ b/images/Makefile @@ -104,6 +104,7 @@ include $(srctree)/images/Makefile.socfpga include $(srctree)/images/Makefile.tegra include $(srctree)/images/Makefile.vexpress include $(srctree)/images/Makefile.at91 +include $(srctree)/images/Makefile.zynqmp targets += $(image-y) pbl.lds barebox.x barebox.z targets += $(patsubst %,%.pblb,$(pblb-y)) diff --git a/images/Makefile.zynqmp b/images/Makefile.zynqmp new file mode 100644 index 0000000000..b157eed512 --- /dev/null +++ b/images/Makefile.zynqmp @@ -0,0 +1,7 @@ +# +# barebox image generation Makefile for Xilinx Zynq UltraScale+ +# + +pblx-$(CONFIG_MACH_XILINX_ZCU104) += start_zynqmp_zcu104 +FILE_barebox-zynqmp-zcu104.img = start_zynqmp_zcu104.pblb +image-$(CONFIG_MACH_XILINX_ZCU104) += barebox-zynqmp-zcu104.img -- 2.19.1 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v2 0/4] Xilinx Zynq Ultrascale+ MPSoC support 2018-11-28 11:20 [PATCH v2 0/4] Xilinx Zynq Ultrascale+ MPSoC support Michael Tretter ` (3 preceding siblings ...) 2018-11-28 11:20 ` [PATCH v2 4/4] ARM: zynqmp: add support for Xilinx ZCU104 board Michael Tretter @ 2018-11-28 13:13 ` Antony Pavlov 2018-11-29 8:14 ` Sascha Hauer 2018-12-07 10:11 ` [PATCH v3 " Michael Tretter 5 siblings, 1 reply; 15+ messages in thread From: Antony Pavlov @ 2018-11-28 13:13 UTC (permalink / raw) To: Sascha Hauer; +Cc: barebox, Michael Tretter On Wed, 28 Nov 2018 12:20:49 +0100 Michael Tretter <m.tretter@pengutronix.de> wrote: > This is v2 of the series to add support for the Xilinx Zynq Ultrascale+ MPSoC > platform and the ZCU104 Evaluation Kit. > > The patch "[PATCH v2 3/4] ARM: aarch64: add ENTRY_PROC macro for arm64" > probably needs a closer look, as it adds a generic macro that is expected to > be used by other arm64 architectures as well. > > Changelog: > > v1 -> v2: > - move ENTRY_PROC to a more generic location > - add separate patch for ENTRY_PROC > - rebase onto piggydata patches > - remove empty zynqmp.c and board.c > - use SPDX-License-Identifiers At the moment barebox uses SPDX identifiers in very few files. Can we adopt Linux kernel licensing rules for barebox? (https://github.com/torvalds/linux/blob/master/Documentation/process/license-rules.rst) If so, we can add SPDX identifiers presense check into checkpatch.pl as Linux kernel checkpatch.pl does (see https://lore.kernel.org/patchwork/patch/883424/). -- Best regards, Antony Pavlov _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v2 0/4] Xilinx Zynq Ultrascale+ MPSoC support 2018-11-28 13:13 ` [PATCH v2 0/4] Xilinx Zynq Ultrascale+ MPSoC support Antony Pavlov @ 2018-11-29 8:14 ` Sascha Hauer 2018-11-29 9:50 ` Roland Hieber 0 siblings, 1 reply; 15+ messages in thread From: Sascha Hauer @ 2018-11-29 8:14 UTC (permalink / raw) To: Antony Pavlov; +Cc: barebox, Michael Tretter On Wed, Nov 28, 2018 at 04:13:57PM +0300, Antony Pavlov wrote: > On Wed, 28 Nov 2018 12:20:49 +0100 > Michael Tretter <m.tretter@pengutronix.de> wrote: > > > This is v2 of the series to add support for the Xilinx Zynq Ultrascale+ MPSoC > > platform and the ZCU104 Evaluation Kit. > > > > The patch "[PATCH v2 3/4] ARM: aarch64: add ENTRY_PROC macro for arm64" > > probably needs a closer look, as it adds a generic macro that is expected to > > be used by other arm64 architectures as well. > > > > Changelog: > > > > v1 -> v2: > > - move ENTRY_PROC to a more generic location > > - add separate patch for ENTRY_PROC > > - rebase onto piggydata patches > > - remove empty zynqmp.c and board.c > > - use SPDX-License-Identifiers > > At the moment barebox uses SPDX identifiers in very few files. > > Can we adopt Linux kernel licensing rules for barebox? > (https://github.com/torvalds/linux/blob/master/Documentation/process/license-rules.rst) I really like the idea of using SPDX, but I never looked into what is necessary to use it. Adopt this license-rules file, change the headers in the files and be done with it? Sascha -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v2 0/4] Xilinx Zynq Ultrascale+ MPSoC support 2018-11-29 8:14 ` Sascha Hauer @ 2018-11-29 9:50 ` Roland Hieber 2018-11-29 10:37 ` Sascha Hauer 0 siblings, 1 reply; 15+ messages in thread From: Roland Hieber @ 2018-11-29 9:50 UTC (permalink / raw) To: Sascha Hauer; +Cc: barebox, Michael Tretter On Thu, Nov 29, 2018 at 09:14:01AM +0100, Sascha Hauer wrote: > On Wed, Nov 28, 2018 at 04:13:57PM +0300, Antony Pavlov wrote: > > At the moment barebox uses SPDX identifiers in very few files. > > > > Can we adopt Linux kernel licensing rules for barebox? > > (https://github.com/torvalds/linux/blob/master/Documentation/process/license-rules.rst) > > I really like the idea of using SPDX, but I never looked into what is > necessary to use it. Adopt this license-rules file, change the headers > in the files and be done with it? "Necessary" depends. Having SPDX-License-Identifier tags in source files is usually enough for people who know what SPDX is, but for all the other people and to allow automated license compliance checks with tools, we also need the rest what the kernel documentation describes. I think forking that doc would be okay. I stumbled into that problem already when I tried to package barebox for Debian [1], the problem here is that the files in the barebox source tree are historically grown and have different styles of headers and other quirks in the formatting, which make it rather impossible to throw it into tools to find out copyright holders. SPDX seems the way to go for machine-readable license annotations, and many projects already use it. [1]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=900958 - Roland -- Roland Hieber | r.hieber@pengutronix.de | Pengutronix e.K. | https://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim | Phone: +49-5121-206917-5086 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v2 0/4] Xilinx Zynq Ultrascale+ MPSoC support 2018-11-29 9:50 ` Roland Hieber @ 2018-11-29 10:37 ` Sascha Hauer 0 siblings, 0 replies; 15+ messages in thread From: Sascha Hauer @ 2018-11-29 10:37 UTC (permalink / raw) To: Roland Hieber; +Cc: barebox, Michael Tretter On Thu, Nov 29, 2018 at 10:50:38AM +0100, Roland Hieber wrote: > On Thu, Nov 29, 2018 at 09:14:01AM +0100, Sascha Hauer wrote: > > On Wed, Nov 28, 2018 at 04:13:57PM +0300, Antony Pavlov wrote: > > > At the moment barebox uses SPDX identifiers in very few files. > > > > > > Can we adopt Linux kernel licensing rules for barebox? > > > (https://github.com/torvalds/linux/blob/master/Documentation/process/license-rules.rst) > > > > I really like the idea of using SPDX, but I never looked into what is > > necessary to use it. Adopt this license-rules file, change the headers > > in the files and be done with it? > > "Necessary" depends. Having SPDX-License-Identifier tags in source files > is usually enough for people who know what SPDX is, but for all the > other people and to allow automated license compliance checks with > tools, we also need the rest what the kernel documentation describes. > I think forking that doc would be okay. > > I stumbled into that problem already when I tried to package barebox for > Debian [1], the problem here is that the files in the barebox source > tree are historically grown and have different styles of headers and > other quirks in the formatting, which make it rather impossible to > throw it into tools to find out copyright holders. SPDX seems the way to > go for machine-readable license annotations, and many projects already > use it. Well it's one thing to get the ball rolling and another to convert all source files. Since we already started to import source files with SPDX tags I think we should make this official, convert the files which can be automatically converted and yes, the conversion of the remaining files will probably take more time, but we do not need to do all at once. Sascha -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 0/4] Xilinx Zynq Ultrascale+ MPSoC support 2018-11-28 11:20 [PATCH v2 0/4] Xilinx Zynq Ultrascale+ MPSoC support Michael Tretter ` (4 preceding siblings ...) 2018-11-28 13:13 ` [PATCH v2 0/4] Xilinx Zynq Ultrascale+ MPSoC support Antony Pavlov @ 2018-12-07 10:11 ` Michael Tretter 2018-12-07 10:11 ` [PATCH v3 1/4] ARM: lib64: .gitignore barebox.lds Michael Tretter ` (4 more replies) 5 siblings, 5 replies; 15+ messages in thread From: Michael Tretter @ 2018-12-07 10:11 UTC (permalink / raw) To: barebox; +Cc: Michael Tretter This is v3 of the series to add support for the Xilinx Zynq Ultrascale+ MPSoC platform and the ZCU104 Evaluation Kit. I checked the SPDX-License-Identifiers and added them on all newly added source files. Michael Changelog: v2 -> v3: - add SPDX-License-Identifiers to all newly added source files v1 -> v2: - move ENTRY_PROC to a more generic location - add separate patch for ENTRY_PROC - rebase onto piggydata patches - remove empty zynqmp.c and board.c - use SPDX-License-Identifiers Michael Tretter (4): ARM: lib64: .gitignore barebox.lds ARM: aarch64: compile with general-regs-only ARM: aarch64: add ENTRY_PROC macro for arm64 ARM: zynqmp: add support for Xilinx ZCU104 board arch/arm/Kconfig | 14 +++++++ arch/arm/Makefile | 5 +++ arch/arm/boards/Makefile | 1 + arch/arm/boards/xilinx-zcu104/Makefile | 2 + arch/arm/boards/xilinx-zcu104/lowlevel.c | 21 ++++++++++ arch/arm/boards/xilinx-zcu104/lowlevel_init.S | 12 ++++++ arch/arm/configs/zynqmp_defconfig | 38 +++++++++++++++++++ arch/arm/dts/Makefile | 1 + arch/arm/dts/zynqmp-zcu104-revA.dts | 10 +++++ arch/arm/include/asm/barebox-arm64.h | 35 +++++++++++++++++ arch/arm/lib64/.gitignore | 1 + arch/arm/mach-zynqmp/Kconfig | 10 +++++ arch/arm/mach-zynqmp/Makefile | 2 + arch/arm/mach-zynqmp/include/mach/debug_ll.h | 31 +++++++++++++++ images/Makefile | 1 + images/Makefile.zynqmp | 8 ++++ 16 files changed, 192 insertions(+) create mode 100644 arch/arm/boards/xilinx-zcu104/Makefile create mode 100644 arch/arm/boards/xilinx-zcu104/lowlevel.c create mode 100644 arch/arm/boards/xilinx-zcu104/lowlevel_init.S create mode 100644 arch/arm/configs/zynqmp_defconfig create mode 100644 arch/arm/dts/zynqmp-zcu104-revA.dts create mode 100644 arch/arm/include/asm/barebox-arm64.h create mode 100644 arch/arm/lib64/.gitignore create mode 100644 arch/arm/mach-zynqmp/Kconfig create mode 100644 arch/arm/mach-zynqmp/Makefile create mode 100644 arch/arm/mach-zynqmp/include/mach/debug_ll.h create mode 100644 images/Makefile.zynqmp -- 2.19.1 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 1/4] ARM: lib64: .gitignore barebox.lds 2018-12-07 10:11 ` [PATCH v3 " Michael Tretter @ 2018-12-07 10:11 ` Michael Tretter 2018-12-07 10:11 ` [PATCH v3 2/4] ARM: aarch64: compile with general-regs-only Michael Tretter ` (3 subsequent siblings) 4 siblings, 0 replies; 15+ messages in thread From: Michael Tretter @ 2018-12-07 10:11 UTC (permalink / raw) To: barebox; +Cc: Michael Tretter Commit e1287b1a8b27 ("arm: rework lib directory to support arm64") restructured the lib directory and added the lib64 directory. It moved the existing .gitignore to the lib32 directory but didn't add a new .gitignore for lib64. Thus building Barebox for arm64 results in stray barebox.lds files. Copy the .gitignore from lib32 to lib64. Signed-off-by: Michael Tretter <m.tretter@pengutronix.de> --- arch/arm/lib64/.gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 arch/arm/lib64/.gitignore diff --git a/arch/arm/lib64/.gitignore b/arch/arm/lib64/.gitignore new file mode 100644 index 0000000000..d1165788c9 --- /dev/null +++ b/arch/arm/lib64/.gitignore @@ -0,0 +1 @@ +barebox.lds -- 2.19.1 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 2/4] ARM: aarch64: compile with general-regs-only 2018-12-07 10:11 ` [PATCH v3 " Michael Tretter 2018-12-07 10:11 ` [PATCH v3 1/4] ARM: lib64: .gitignore barebox.lds Michael Tretter @ 2018-12-07 10:11 ` Michael Tretter 2018-12-07 10:11 ` [PATCH v3 3/4] ARM: aarch64: add ENTRY_PROC macro for arm64 Michael Tretter ` (2 subsequent siblings) 4 siblings, 0 replies; 15+ messages in thread From: Michael Tretter @ 2018-12-07 10:11 UTC (permalink / raw) To: barebox; +Cc: Michael Tretter Without this flag, gcc generates code to save the Q/V registers to the stack for handling the va_list in pr_print(). Saving the registers is useless, as the registers are never restored, but accessing the registers to save them hangs the CPU. Follow the Linux arch/arm64/Makefile and use the general-regs-only flag to prevent usage of floating point and Advanced SIMD register. Signed-off-by: Michael Tretter <m.tretter@pengutronix.de> --- arch/arm/Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 5db67b9db8..50958b787f 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -27,6 +27,10 @@ else CFLAGS += -mstrict-align endif +# Prevent use of floating point and Advanced SIMD registers. +ifeq ($(CONFIG_CPU_V8),y) +CFLAGS += -mgeneral-regs-only +endif # This selects which instruction set is used. # Note that GCC does not numerically define an architecture version -- 2.19.1 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 3/4] ARM: aarch64: add ENTRY_PROC macro for arm64 2018-12-07 10:11 ` [PATCH v3 " Michael Tretter 2018-12-07 10:11 ` [PATCH v3 1/4] ARM: lib64: .gitignore barebox.lds Michael Tretter 2018-12-07 10:11 ` [PATCH v3 2/4] ARM: aarch64: compile with general-regs-only Michael Tretter @ 2018-12-07 10:11 ` Michael Tretter 2018-12-07 10:11 ` [PATCH v3 4/4] ARM: zynqmp: add support for Xilinx ZCU104 board Michael Tretter 2018-12-10 9:13 ` [PATCH v3 0/4] Xilinx Zynq Ultrascale+ MPSoC support Sascha Hauer 4 siblings, 0 replies; 15+ messages in thread From: Michael Tretter @ 2018-12-07 10:11 UTC (permalink / raw) To: barebox; +Cc: Michael Tretter arm64 has no __naked__ attribute and the compiler adds a function prologue for saving x29 and x30 to the stack for all C functions. This includes functions defined using the ENTRY_FUNCTION macro. Therefore, the stack needs to be setup before entering a C function, which is not possible if the entry is a C function. Provide a macro to implement the entry in assembly to be able to setup the stack before entering the low level entry function. Signed-off-by: Michael Tretter <m.tretter@pengutronix.de> --- v3: - add SPDX-License-Identifier --- arch/arm/include/asm/barebox-arm64.h | 35 ++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 arch/arm/include/asm/barebox-arm64.h diff --git a/arch/arm/include/asm/barebox-arm64.h b/arch/arm/include/asm/barebox-arm64.h new file mode 100644 index 0000000000..58ff7b9b36 --- /dev/null +++ b/arch/arm/include/asm/barebox-arm64.h @@ -0,0 +1,35 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +#ifndef _BAREBOX_ARM64_H_ +#define _BAREBOX_ARM64_H_ + +#include <linux/linkage.h> + +/* + * ENTRY_PROC - mark start of entry procedure + */ +#define ENTRY_PROC(name) \ + .section .text_head_entry_##name; \ + ENTRY(##name); \ + b 2f; \ + nop; \ + nop; \ + nop; \ + nop; \ + nop; \ + nop; \ + nop; \ + .asciz "barebox"; \ + .word 0xffffffff; \ + .word _barebox_image_size; \ + .rept 8; \ + .word 0x55555555; \ + .endr; \ + 2: + +/* + * ENTRY_PROC_END - mark end of entry procedure + */ +#define ENTRY_PROC_END(name) \ + END(##name) + +#endif /* _BAREBOX_ARM64_H_ */ -- 2.19.1 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 4/4] ARM: zynqmp: add support for Xilinx ZCU104 board 2018-12-07 10:11 ` [PATCH v3 " Michael Tretter ` (2 preceding siblings ...) 2018-12-07 10:11 ` [PATCH v3 3/4] ARM: aarch64: add ENTRY_PROC macro for arm64 Michael Tretter @ 2018-12-07 10:11 ` Michael Tretter 2018-12-10 9:13 ` [PATCH v3 0/4] Xilinx Zynq Ultrascale+ MPSoC support Sascha Hauer 4 siblings, 0 replies; 15+ messages in thread From: Michael Tretter @ 2018-12-07 10:11 UTC (permalink / raw) To: barebox; +Cc: Michael Tretter Add support for the Xilinx Zynq Ultrascale+ MPSoC architecture (ZynqMP) and the Xilinx ZCU104 board. Barebox is booted as BL33 in EL-1 and expects that a BL2 (i.e. the FSBL) already took care of initializing the RAM. Also for debug_ll, the UART is expected to be already setup correctly. Thus, you have to add the Barebox binary to a boot image as described in "Chapter 11: Boot and Configuration" of "Zynq Ultrascale+ Device Technical Reference Manual". Signed-off-by: Michael Tretter <m.tretter@pengutronix.de> --- Changelog: v3: - add more SPDX-License-Identifiers v2: - introduce ENTRY_PROC in a separate patch - move ENTRY_PROC to a separate header file - switch to piggydata for assembling the image - remove zynqmp.c and board.c and the respective empty init calls - use SPDX-License-Identifiers --- arch/arm/Kconfig | 14 +++++++ arch/arm/Makefile | 1 + arch/arm/boards/Makefile | 1 + arch/arm/boards/xilinx-zcu104/Makefile | 2 + arch/arm/boards/xilinx-zcu104/lowlevel.c | 21 ++++++++++ arch/arm/boards/xilinx-zcu104/lowlevel_init.S | 12 ++++++ arch/arm/configs/zynqmp_defconfig | 38 +++++++++++++++++++ arch/arm/dts/Makefile | 1 + arch/arm/dts/zynqmp-zcu104-revA.dts | 10 +++++ arch/arm/mach-zynqmp/Kconfig | 10 +++++ arch/arm/mach-zynqmp/Makefile | 2 + arch/arm/mach-zynqmp/include/mach/debug_ll.h | 31 +++++++++++++++ images/Makefile | 1 + images/Makefile.zynqmp | 8 ++++ 14 files changed, 152 insertions(+) create mode 100644 arch/arm/boards/xilinx-zcu104/Makefile create mode 100644 arch/arm/boards/xilinx-zcu104/lowlevel.c create mode 100644 arch/arm/boards/xilinx-zcu104/lowlevel_init.S create mode 100644 arch/arm/configs/zynqmp_defconfig create mode 100644 arch/arm/dts/zynqmp-zcu104-revA.dts create mode 100644 arch/arm/mach-zynqmp/Kconfig create mode 100644 arch/arm/mach-zynqmp/Makefile create mode 100644 arch/arm/mach-zynqmp/include/mach/debug_ll.h create mode 100644 images/Makefile.zynqmp diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index cdc22efdeb..c1f385b11b 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -245,6 +245,19 @@ config ARCH_ZYNQ bool "Xilinx Zynq-based boards" select HAS_DEBUG_LL +config ARCH_ZYNQMP + bool "Xilinx ZynqMP-based boards" + select CPU_V8 + select HAS_DEBUG_LL + select HAVE_PBL_MULTI_IMAGES + select COMMON_CLK + select COMMON_CLK_OF_PROVIDER + select CLKDEV_LOOKUP + select OFDEVICE + select OFTREE + select RELOCATABLE + select SYS_SUPPORTS_64BIT_KERNEL + config ARCH_QEMU bool "ARM QEMU boards" select HAS_DEBUG_LL @@ -275,6 +288,7 @@ source arch/arm/mach-tegra/Kconfig source arch/arm/mach-uemd/Kconfig source arch/arm/mach-zynq/Kconfig source arch/arm/mach-qemu/Kconfig +source arch/arm/mach-zynqmp/Kconfig config ARM_ASM_UNIFIED bool diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 50958b787f..675d3433cc 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -101,6 +101,7 @@ machine-$(CONFIG_ARCH_VEXPRESS) := vexpress machine-$(CONFIG_ARCH_TEGRA) := tegra machine-$(CONFIG_ARCH_UEMD) := uemd machine-$(CONFIG_ARCH_ZYNQ) := zynq +machine-$(CONFIG_ARCH_ZYNQMP) := zynqmp machine-$(CONFIG_ARCH_QEMU) := qemu diff --git a/arch/arm/boards/Makefile b/arch/arm/boards/Makefile index 3bf176b14d..a15a24c02e 100644 --- a/arch/arm/boards/Makefile +++ b/arch/arm/boards/Makefile @@ -153,6 +153,7 @@ obj-$(CONFIG_MACH_VSCOM_BALTOS) += vscom-baltos/ obj-$(CONFIG_MACH_QEMU_VIRT64) += qemu-virt64/ obj-$(CONFIG_MACH_WARP7) += element14-warp7/ obj-$(CONFIG_MACH_VF610_TWR) += freescale-vf610-twr/ +obj-$(CONFIG_MACH_XILINX_ZCU104) += xilinx-zcu104/ obj-$(CONFIG_MACH_ZII_RDU1) += zii-imx51-rdu1/ obj-$(CONFIG_MACH_ZII_RDU2) += zii-imx6q-rdu2/ obj-$(CONFIG_MACH_ZII_VF610_DEV) += zii-vf610-dev/ diff --git a/arch/arm/boards/xilinx-zcu104/Makefile b/arch/arm/boards/xilinx-zcu104/Makefile new file mode 100644 index 0000000000..884d6e63b0 --- /dev/null +++ b/arch/arm/boards/xilinx-zcu104/Makefile @@ -0,0 +1,2 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +lwl-y += lowlevel.o lowlevel_init.o diff --git a/arch/arm/boards/xilinx-zcu104/lowlevel.c b/arch/arm/boards/xilinx-zcu104/lowlevel.c new file mode 100644 index 0000000000..5541f9bc8e --- /dev/null +++ b/arch/arm/boards/xilinx-zcu104/lowlevel.c @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2018 Pengutronix, Michael Tretter <m.tretter@pengutronix.de> + */ + +#include <common.h> +#include <debug_ll.h> +#include <asm/barebox-arm.h> + +extern char __dtb_zynqmp_zcu104_revA_start[]; + +void zynqmp_zcu104_start(uint32_t, uint32_t, uint32_t); + +void noinline zynqmp_zcu104_start(uint32_t r0, uint32_t r1, uint32_t r2) +{ + /* Assume that the first stage boot loader configured the UART */ + putc_ll('>'); + + barebox_arm_entry(0, SZ_2G, + __dtb_zynqmp_zcu104_revA_start + global_variable_offset()); +} diff --git a/arch/arm/boards/xilinx-zcu104/lowlevel_init.S b/arch/arm/boards/xilinx-zcu104/lowlevel_init.S new file mode 100644 index 0000000000..0482cf8caa --- /dev/null +++ b/arch/arm/boards/xilinx-zcu104/lowlevel_init.S @@ -0,0 +1,12 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +#include <linux/linkage.h> +#include <asm/barebox-arm64.h> + +/* The DRAM is already setup */ +#define STACK_TOP 0x80000000 + +ENTRY_PROC(start_zynqmp_zcu104) + mov x0, #STACK_TOP + mov sp, x0 + b zynqmp_zcu104_start +ENTRY_PROC_END(start_zynqmp_zcu104) diff --git a/arch/arm/configs/zynqmp_defconfig b/arch/arm/configs/zynqmp_defconfig new file mode 100644 index 0000000000..4dea9647fe --- /dev/null +++ b/arch/arm/configs/zynqmp_defconfig @@ -0,0 +1,38 @@ +CONFIG_ARCH_ZYNQMP=y +CONFIG_MACH_XILINX_ZCU104=y +CONFIG_MMU=y +CONFIG_MALLOC_SIZE=0x0 +CONFIG_MALLOC_TLSF=y +CONFIG_KALLSYMS=y +CONFIG_HUSH_FANCY_PROMPT=y +CONFIG_CMDLINE_EDITING=y +CONFIG_AUTO_COMPLETE=y +CONFIG_MENU=y +CONFIG_BOOTM_SHOW_TYPE=y +CONFIG_BOOTM_VERBOSE=y +CONFIG_BOOTM_INITRD=y +CONFIG_BOOTM_OFTREE=y +CONFIG_DEFAULT_ENVIRONMENT_GENERIC_NEW=y +CONFIG_LONGHELP=y +CONFIG_CMD_MEMINFO=y +CONFIG_CMD_GO=y +CONFIG_CMD_RESET=y +CONFIG_CMD_PARTITION=y +CONFIG_CMD_EXPORT=y +CONFIG_CMD_PRINTENV=y +CONFIG_CMD_MAGICVAR=y +CONFIG_CMD_MAGICVAR_HELP=y +CONFIG_CMD_SAVEENV=y +CONFIG_CMD_LN=y +CONFIG_CMD_SLEEP=y +CONFIG_CMD_EDIT=y +CONFIG_CMD_MENU=y +CONFIG_CMD_MENU_MANAGEMENT=y +CONFIG_CMD_READLINE=y +CONFIG_CMD_TIMEOUT=y +CONFIG_CMD_CLK=y +CONFIG_CMD_OFTREE=y +CONFIG_CMD_TIME=y +CONFIG_DRIVER_SERIAL_CADENCE=y +# CONFIG_SPI is not set +CONFIG_DIGEST=y diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index c08b35a101..8183b14898 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -120,6 +120,7 @@ pbl-dtb-$(CONFIG_MACH_ZII_VF610_DEV) += \ pbl-dtb-$(CONFIG_MACH_AT91SAM9263EK_DT) += at91sam9263ek.dtb.o pbl-dtb-$(CONFIG_MACH_MICROCHIP_KSZ9477_EVB) += at91-microchip-ksz9477-evb.dtb.o pbl-dtb-$(CONFIG_MACH_AT91SAM9X5EK) += at91sam9x5ek.dtb.o +pbl-dtb-$(CONFIG_MACH_XILINX_ZCU104) += zynqmp-zcu104-revA.dtb.o pbl-dtb-$(CONFIG_MACH_ZII_IMX7D_RPU2) += imx7d-zii-rpu2.dtb.o diff --git a/arch/arm/dts/zynqmp-zcu104-revA.dts b/arch/arm/dts/zynqmp-zcu104-revA.dts new file mode 100644 index 0000000000..8c467ee970 --- /dev/null +++ b/arch/arm/dts/zynqmp-zcu104-revA.dts @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * dts file for Xilinx ZynqMP ZCU104 + * + * (C) Copyright 2017 - 2018, Xilinx, Inc. + * + * Michal Simek <michal.simek@xilinx.com> + */ + +#include <arm64/xilinx/zynqmp-zcu104-revA.dts> diff --git a/arch/arm/mach-zynqmp/Kconfig b/arch/arm/mach-zynqmp/Kconfig new file mode 100644 index 0000000000..c9dc71c9e7 --- /dev/null +++ b/arch/arm/mach-zynqmp/Kconfig @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +if ARCH_ZYNQMP + +config MACH_XILINX_ZCU104 + bool "Xilinx Zynq UltraScale+ MPSoC ZCU104" + help + Say Y here if you are using the Xilinx Zynq UltraScale+ MPSoC ZCU104 + evaluation board. + +endif diff --git a/arch/arm/mach-zynqmp/Makefile b/arch/arm/mach-zynqmp/Makefile new file mode 100644 index 0000000000..c601374f6c --- /dev/null +++ b/arch/arm/mach-zynqmp/Makefile @@ -0,0 +1,2 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +obj- := __dummy__.o diff --git a/arch/arm/mach-zynqmp/include/mach/debug_ll.h b/arch/arm/mach-zynqmp/include/mach/debug_ll.h new file mode 100644 index 0000000000..67571fe2e1 --- /dev/null +++ b/arch/arm/mach-zynqmp/include/mach/debug_ll.h @@ -0,0 +1,31 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +#ifndef __MACH_DEBUG_LL_H__ +#define __MACH_DEBUG_LL_H__ + +#include <io.h> + +#define ZYNQMP_UART0_BASE 0xFF000000 +#define ZYNQMP_UART1_BASE 0xFF010000 +#define ZYNQMP_UART_BASE ZYNQMP_UART0_BASE +#define ZYNQMP_DEBUG_LL_UART_BASE ZYNQMP_UART_BASE + +#define ZYNQMP_UART_RXTXFIFO 0x30 +#define ZYNQMP_UART_CHANNEL_STS 0x2C + +#define ZYNQMP_UART_STS_TFUL (1 << 4) +#define ZYNQMP_UART_TXDIS (1 << 5) + +static inline void PUTC_LL(int c) +{ + void __iomem *base = (void __iomem *)ZYNQMP_DEBUG_LL_UART_BASE; + + if (readl(base) & ZYNQMP_UART_TXDIS) + return; + + while ((readl(base + ZYNQMP_UART_CHANNEL_STS) & ZYNQMP_UART_STS_TFUL) != 0) + ; + + writel(c, base + 0x30); +} + +#endif diff --git a/images/Makefile b/images/Makefile index 4c6d486f08..9aaf8af6ed 100644 --- a/images/Makefile +++ b/images/Makefile @@ -104,6 +104,7 @@ include $(srctree)/images/Makefile.socfpga include $(srctree)/images/Makefile.tegra include $(srctree)/images/Makefile.vexpress include $(srctree)/images/Makefile.at91 +include $(srctree)/images/Makefile.zynqmp targets += $(image-y) pbl.lds barebox.x barebox.z targets += $(patsubst %,%.pblb,$(pblb-y)) diff --git a/images/Makefile.zynqmp b/images/Makefile.zynqmp new file mode 100644 index 0000000000..3f7823f039 --- /dev/null +++ b/images/Makefile.zynqmp @@ -0,0 +1,8 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# +# barebox image generation Makefile for Xilinx Zynq UltraScale+ +# + +pblx-$(CONFIG_MACH_XILINX_ZCU104) += start_zynqmp_zcu104 +FILE_barebox-zynqmp-zcu104.img = start_zynqmp_zcu104.pblb +image-$(CONFIG_MACH_XILINX_ZCU104) += barebox-zynqmp-zcu104.img -- 2.19.1 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v3 0/4] Xilinx Zynq Ultrascale+ MPSoC support 2018-12-07 10:11 ` [PATCH v3 " Michael Tretter ` (3 preceding siblings ...) 2018-12-07 10:11 ` [PATCH v3 4/4] ARM: zynqmp: add support for Xilinx ZCU104 board Michael Tretter @ 2018-12-10 9:13 ` Sascha Hauer 4 siblings, 0 replies; 15+ messages in thread From: Sascha Hauer @ 2018-12-10 9:13 UTC (permalink / raw) To: Michael Tretter; +Cc: barebox On Fri, Dec 07, 2018 at 11:11:52AM +0100, Michael Tretter wrote: > This is v3 of the series to add support for the Xilinx Zynq Ultrascale+ MPSoC > platform and the ZCU104 Evaluation Kit. > > I checked the SPDX-License-Identifiers and added them on all newly added > source files. > > Michael Applied, thanks Sascha > > Changelog: > > v2 -> v3: > - add SPDX-License-Identifiers to all newly added source files > > v1 -> v2: > - move ENTRY_PROC to a more generic location > - add separate patch for ENTRY_PROC > - rebase onto piggydata patches > - remove empty zynqmp.c and board.c > - use SPDX-License-Identifiers > > Michael Tretter (4): > ARM: lib64: .gitignore barebox.lds > ARM: aarch64: compile with general-regs-only > ARM: aarch64: add ENTRY_PROC macro for arm64 > ARM: zynqmp: add support for Xilinx ZCU104 board > > arch/arm/Kconfig | 14 +++++++ > arch/arm/Makefile | 5 +++ > arch/arm/boards/Makefile | 1 + > arch/arm/boards/xilinx-zcu104/Makefile | 2 + > arch/arm/boards/xilinx-zcu104/lowlevel.c | 21 ++++++++++ > arch/arm/boards/xilinx-zcu104/lowlevel_init.S | 12 ++++++ > arch/arm/configs/zynqmp_defconfig | 38 +++++++++++++++++++ > arch/arm/dts/Makefile | 1 + > arch/arm/dts/zynqmp-zcu104-revA.dts | 10 +++++ > arch/arm/include/asm/barebox-arm64.h | 35 +++++++++++++++++ > arch/arm/lib64/.gitignore | 1 + > arch/arm/mach-zynqmp/Kconfig | 10 +++++ > arch/arm/mach-zynqmp/Makefile | 2 + > arch/arm/mach-zynqmp/include/mach/debug_ll.h | 31 +++++++++++++++ > images/Makefile | 1 + > images/Makefile.zynqmp | 8 ++++ > 16 files changed, 192 insertions(+) > create mode 100644 arch/arm/boards/xilinx-zcu104/Makefile > create mode 100644 arch/arm/boards/xilinx-zcu104/lowlevel.c > create mode 100644 arch/arm/boards/xilinx-zcu104/lowlevel_init.S > create mode 100644 arch/arm/configs/zynqmp_defconfig > create mode 100644 arch/arm/dts/zynqmp-zcu104-revA.dts > create mode 100644 arch/arm/include/asm/barebox-arm64.h > create mode 100644 arch/arm/lib64/.gitignore > create mode 100644 arch/arm/mach-zynqmp/Kconfig > create mode 100644 arch/arm/mach-zynqmp/Makefile > create mode 100644 arch/arm/mach-zynqmp/include/mach/debug_ll.h > create mode 100644 images/Makefile.zynqmp > > -- > 2.19.1 > > > _______________________________________________ > barebox mailing list > barebox@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/barebox > -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2018-12-10 9:13 UTC | newest] Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-11-28 11:20 [PATCH v2 0/4] Xilinx Zynq Ultrascale+ MPSoC support Michael Tretter 2018-11-28 11:20 ` [PATCH v2 1/4] ARM: lib64: .gitignore barebox.lds Michael Tretter 2018-11-28 11:20 ` [PATCH v2 2/4] ARM: aarch64: compile with general-regs-only Michael Tretter 2018-11-28 11:20 ` [PATCH v2 3/4] ARM: aarch64: add ENTRY_PROC macro for arm64 Michael Tretter 2018-11-28 11:20 ` [PATCH v2 4/4] ARM: zynqmp: add support for Xilinx ZCU104 board Michael Tretter 2018-11-28 13:13 ` [PATCH v2 0/4] Xilinx Zynq Ultrascale+ MPSoC support Antony Pavlov 2018-11-29 8:14 ` Sascha Hauer 2018-11-29 9:50 ` Roland Hieber 2018-11-29 10:37 ` Sascha Hauer 2018-12-07 10:11 ` [PATCH v3 " Michael Tretter 2018-12-07 10:11 ` [PATCH v3 1/4] ARM: lib64: .gitignore barebox.lds Michael Tretter 2018-12-07 10:11 ` [PATCH v3 2/4] ARM: aarch64: compile with general-regs-only Michael Tretter 2018-12-07 10:11 ` [PATCH v3 3/4] ARM: aarch64: add ENTRY_PROC macro for arm64 Michael Tretter 2018-12-07 10:11 ` [PATCH v3 4/4] ARM: zynqmp: add support for Xilinx ZCU104 board Michael Tretter 2018-12-10 9:13 ` [PATCH v3 0/4] Xilinx Zynq Ultrascale+ MPSoC support Sascha Hauer
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox