[U-Boot] [PATCH 0/5] xilinx: Introduce Zynq/ZynqMP virtual defconfig

Hi,
The following patch series implements a common function to get the dtb for of_board configuration. Additionally provides a virtual defconfig for Zynq and ZynqMP architectures with of_board configuration enabled.
In future this should go in a way where we could remove all board specific defconfigs for Zynq/ZynqMP boards.
Thanks, Michal
Ibai Erkiaga (5): arm64: versal: Move common board dtb search arm64: xilinx: Enable generic of_board_dtb arm64: zynqmp: Introduce virtual defconfig ARM: zynq: Introduce virtual defconfig arm64: versal: remove debug uart for versal virt
arch/arm/mach-versal/Kconfig | 5 -- arch/arm/mach-versal/cpu.c | 21 ------ board/xilinx/Kconfig | 8 ++ board/xilinx/common/board.c | 14 ++++ configs/xilinx_versal_virt_defconfig | 5 -- configs/xilinx_zynqmp_virt_defconfig | 108 +++++++++++++++++++++++++++ configs/zynq_virt_defconfig | 79 ++++++++++++++++++++ 7 files changed, 209 insertions(+), 31 deletions(-) create mode 100644 configs/xilinx_zynqmp_virt_defconfig create mode 100644 configs/zynq_virt_defconfig

From: Ibai Erkiaga ibai.erkiaga-elorza@xilinx.com
Move the exisiting function of getting board dtb from versal to a common Xilinx folder.
Signed-off-by: Ibai Erkiaga ibai.erkiaga-elorza@xilinx.com Signed-off-by: Michal Simek michal.simek@xilinx.com ---
arch/arm/mach-versal/Kconfig | 5 ----- arch/arm/mach-versal/cpu.c | 21 --------------------- board/xilinx/Kconfig | 7 +++++++ board/xilinx/common/board.c | 14 ++++++++++++++ 4 files changed, 21 insertions(+), 26 deletions(-)
diff --git a/arch/arm/mach-versal/Kconfig b/arch/arm/mach-versal/Kconfig index 06a035292464..a08e5ae41490 100644 --- a/arch/arm/mach-versal/Kconfig +++ b/arch/arm/mach-versal/Kconfig @@ -36,11 +36,6 @@ config COUNTER_FREQUENCY config ZYNQ_SDHCI_MAX_FREQ default 200000000
-config VERSAL_OF_BOARD_DTB_ADDR - hex - default 0x1000 - depends on OF_BOARD - config IOU_SWITCH_DIVISOR0 hex "IOU switch divisor0" default 0x20 diff --git a/arch/arm/mach-versal/cpu.c b/arch/arm/mach-versal/cpu.c index 121f5d8f16a4..909949a76ab8 100644 --- a/arch/arm/mach-versal/cpu.c +++ b/arch/arm/mach-versal/cpu.c @@ -109,27 +109,6 @@ int reserve_mmu(void) } #endif
-#if defined(CONFIG_OF_BOARD) -void *board_fdt_blob_setup(void) -{ - static void *fw_dtb = (void *)CONFIG_VERSAL_OF_BOARD_DTB_ADDR; - - if (fdt_magic(fw_dtb) == FDT_MAGIC) - return fw_dtb; - - printf("DTB is not passed via 0x%llx\n", (u64)fw_dtb); - - /* Try to look at FDT is at end of image */ - fw_dtb = (ulong *)&_end; - - if (fdt_magic(fw_dtb) == FDT_MAGIC) - return fw_dtb; - - printf("DTB is also not passed via 0x%llx\n", (u64)fw_dtb); - return NULL; -} -#endif - int versal_pm_request(u32 api_id, u32 arg0, u32 arg1, u32 arg2, u32 arg3, u32 *ret_payload) { diff --git a/board/xilinx/Kconfig b/board/xilinx/Kconfig index 37bec5fae29d..4f290339a094 100644 --- a/board/xilinx/Kconfig +++ b/board/xilinx/Kconfig @@ -39,3 +39,10 @@ config XILINX_PS_INIT_FILE before the build.
endif + +config VERSAL_OF_BOARD_DTB_ADDR + hex + default 0x1000 + depends on OF_BOARD + help + Offset in the memory where the board configuration DTB is placed. diff --git a/board/xilinx/common/board.c b/board/xilinx/common/board.c index 7e6340bad6d4..3d95609ba757 100644 --- a/board/xilinx/common/board.c +++ b/board/xilinx/common/board.c @@ -36,3 +36,17 @@ int zynq_board_read_rom_ethaddr(unsigned char *ethaddr)
return ret; } + +#if defined(CONFIG_OF_BOARD) +void *board_fdt_blob_setup(void) +{ + static void *fw_dtb = (void *)CONFIG_VERSAL_OF_BOARD_DTB_ADDR; + + if (fdt_magic(fw_dtb) != FDT_MAGIC) { + printf("DTB is not passed via %llx\n", (u64)fw_dtb); + return NULL; + } + + return fw_dtb; +} +#endif

From: Ibai Erkiaga ibai.erkiaga-elorza@xilinx.com
Modify the configuration naming to be generic to xilinx rather than specific to Versal. The offset value is different for Zynq and ZynqMP to avoid overlapping with FSBL.
Signed-off-by: Ibai Erkiaga ibai.erkiaga-elorza@xilinx.com Signed-off-by: Michal Simek michal.simek@xilinx.com ---
board/xilinx/Kconfig | 5 +++-- board/xilinx/common/board.c | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/board/xilinx/Kconfig b/board/xilinx/Kconfig index 4f290339a094..cb272eafda7a 100644 --- a/board/xilinx/Kconfig +++ b/board/xilinx/Kconfig @@ -40,9 +40,10 @@ config XILINX_PS_INIT_FILE
endif
-config VERSAL_OF_BOARD_DTB_ADDR +config XILINX_OF_BOARD_DTB_ADDR hex - default 0x1000 + default 0x1000 if ARCH_VERSAL + default 0x100000 if ARCH_ZYNQ || ARCH_ZYNQMP depends on OF_BOARD help Offset in the memory where the board configuration DTB is placed. diff --git a/board/xilinx/common/board.c b/board/xilinx/common/board.c index 3d95609ba757..0d796e21df6f 100644 --- a/board/xilinx/common/board.c +++ b/board/xilinx/common/board.c @@ -40,7 +40,7 @@ int zynq_board_read_rom_ethaddr(unsigned char *ethaddr) #if defined(CONFIG_OF_BOARD) void *board_fdt_blob_setup(void) { - static void *fw_dtb = (void *)CONFIG_VERSAL_OF_BOARD_DTB_ADDR; + static void *fw_dtb = (void *)CONFIG_XILINX_OF_BOARD_DTB_ADDR;
if (fdt_magic(fw_dtb) != FDT_MAGIC) { printf("DTB is not passed via %llx\n", (u64)fw_dtb);

From: Ibai Erkiaga ibai.erkiaga-elorza@xilinx.com
Add virtual defconfig for ZynqMP architecture using of_board dtb. This defconfig should become generic config for all ZynqMP boards.
Signed-off-by: Ibai Erkiaga ibai.erkiaga-elorza@xilinx.com Signed-off-by: Michal Simek michal.simek@xilinx.com ---
configs/xilinx_zynqmp_virt_defconfig | 108 +++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 configs/xilinx_zynqmp_virt_defconfig
diff --git a/configs/xilinx_zynqmp_virt_defconfig b/configs/xilinx_zynqmp_virt_defconfig new file mode 100644 index 000000000000..14eb06a40528 --- /dev/null +++ b/configs/xilinx_zynqmp_virt_defconfig @@ -0,0 +1,108 @@ +CONFIG_ARM=y +CONFIG_ARCH_ZYNQMP=y +CONFIG_SYS_TEXT_BASE=0x8000000 +CONFIG_SYS_MALLOC_F_LEN=0x8000 +CONFIG_SPL=y +CONFIG_SPL_SPI_FLASH_SUPPORT=y +CONFIG_SPL_SPI_SUPPORT=y +CONFIG_ZYNQMP_USB=y +CONFIG_AHCI=y +CONFIG_DISTRO_DEFAULTS=y +CONFIG_FIT=y +CONFIG_FIT_VERBOSE=y +CONFIG_SPL_LOAD_FIT=y +# CONFIG_DISPLAY_CPUINFO is not set +CONFIG_BOARD_EARLY_INIT_R=y +CONFIG_SPL_OS_BOOT=y +CONFIG_SPL_RAM_SUPPORT=y +CONFIG_SPL_RAM_DEVICE=y +CONFIG_SPL_ATF=y +CONFIG_CMD_THOR_DOWNLOAD=y +CONFIG_CMD_MEMTEST=y +CONFIG_SYS_ALT_MEMTEST=y +CONFIG_CMD_CLK=y +CONFIG_CMD_DFU=y +# CONFIG_CMD_FLASH is not set +CONFIG_CMD_FPGA_LOADBP=y +CONFIG_CMD_FPGA_LOADP=y +CONFIG_CMD_FPGA_LOAD_SECURE=y +CONFIG_CMD_GPIO=y +CONFIG_CMD_GPT=y +CONFIG_CMD_I2C=y +CONFIG_CMD_MMC=y +CONFIG_CMD_SDRAM=y +CONFIG_CMD_SF=y +CONFIG_CMD_USB=y +CONFIG_CMD_TFTPPUT=y +CONFIG_CMD_TIME=y +CONFIG_CMD_TIMER=y +CONFIG_CMD_EXT4_WRITE=y +CONFIG_SPL_OF_CONTROL=y +CONFIG_OF_BOARD=y +CONFIG_ENV_IS_IN_FAT=y +CONFIG_NET_RANDOM_ETHADDR=y +CONFIG_SPL_DM=y +CONFIG_SPL_DM_SEQ_ALIAS=y +CONFIG_SCSI_AHCI=y +CONFIG_SATA_CEVA=y +CONFIG_CLK_ZYNQMP=y +CONFIG_DFU_RAM=y +CONFIG_USB_FUNCTION_FASTBOOT=y +CONFIG_FASTBOOT_FLASH=y +CONFIG_FASTBOOT_FLASH_MMC_DEV=0 +CONFIG_FASTBOOT_CMD_OEM_FORMAT=y +CONFIG_FPGA_XILINX=y +CONFIG_FPGA_ZYNQMPPL=y +CONFIG_DM_GPIO=y +CONFIG_XILINX_GPIO=y +CONFIG_DM_I2C=y +CONFIG_SYS_I2C_CADENCE=y +CONFIG_I2C_MUX=y +CONFIG_I2C_MUX_PCA954x=y +CONFIG_LED=y +CONFIG_LED_GPIO=y +CONFIG_MISC=y +CONFIG_I2C_EEPROM=y +CONFIG_ZYNQ_GEM_I2C_MAC_OFFSET=0x20 +CONFIG_SYS_I2C_EEPROM_ADDR=0x0 +CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW=0x0 +CONFIG_MMC_IO_VOLTAGE=y +CONFIG_MMC_UHS_SUPPORT=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_ZYNQ=y +CONFIG_SPI_FLASH=y +CONFIG_SPI_FLASH_ISSI=y +CONFIG_SPI_FLASH_MACRONIX=y +CONFIG_SPI_FLASH_SPANSION=y +CONFIG_SPI_FLASH_STMICRO=y +CONFIG_SPI_FLASH_WINBOND=y +# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set +CONFIG_PHY_MARVELL=y +CONFIG_PHY_NATSEMI=y +CONFIG_PHY_REALTEK=y +CONFIG_PHY_TI=y +CONFIG_PHY_VITESSE=y +CONFIG_PHY_FIXED=y +CONFIG_PHY_GIGE=y +CONFIG_MII=y +CONFIG_ZYNQ_GEM=y +CONFIG_SCSI=y +CONFIG_DM_SCSI=y +CONFIG_ZYNQ_SERIAL=y +CONFIG_SPI=y +CONFIG_ZYNQMP_GQSPI=y +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_DWC3=y +CONFIG_USB_XHCI_ZYNQMP=y +CONFIG_USB_DWC3=y +CONFIG_USB_DWC3_GADGET=y +CONFIG_USB_DWC3_GENERIC=y +CONFIG_USB_ULPI_VIEWPORT=y +CONFIG_USB_ULPI=y +CONFIG_USB_GADGET=y +CONFIG_USB_GADGET_MANUFACTURER="Xilinx" +CONFIG_USB_GADGET_VENDOR_NUM=0x03FD +CONFIG_USB_GADGET_PRODUCT_NUM=0x0300 +CONFIG_USB_FUNCTION_THOR=y +CONFIG_EFI_LOADER_BOUNCE_BUFFER=y

From: Ibai Erkiaga ibai.erkiaga-elorza@xilinx.com
Add virtual defconfig for Zynq architecture using of_board dtb. This defconfig should become generic config for all Zynq boards.
Signed-off-by: Ibai Erkiaga ibai.erkiaga-elorza@xilinx.com Signed-off-by: Michal Simek michal.simek@xilinx.com ---
configs/zynq_virt_defconfig | 79 +++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 configs/zynq_virt_defconfig
diff --git a/configs/zynq_virt_defconfig b/configs/zynq_virt_defconfig new file mode 100644 index 000000000000..58ce970a1b4d --- /dev/null +++ b/configs/zynq_virt_defconfig @@ -0,0 +1,79 @@ +CONFIG_ARM=y +CONFIG_SPL_SYS_DCACHE_OFF=y +CONFIG_ARCH_ZYNQ=y +CONFIG_SYS_TEXT_BASE=0x4000000 +CONFIG_SPL_STACK_R_ADDR=0x200000 +CONFIG_SPL=y +CONFIG_DISTRO_DEFAULTS=y +CONFIG_SYS_CUSTOM_LDSCRIPT=y +CONFIG_SYS_LDSCRIPT="arch/arm/mach-zynq/u-boot.lds" +CONFIG_FIT=y +CONFIG_FIT_SIGNATURE=y +CONFIG_FIT_VERBOSE=y +CONFIG_LEGACY_IMAGE_FORMAT=y +CONFIG_USE_PREBOOT=y +CONFIG_SPL_STACK_R=y +CONFIG_SPL_OS_BOOT=y +CONFIG_SPL_SPI_LOAD=y +CONFIG_SYS_SPI_U_BOOT_OFFS=0x100000 +CONFIG_CMD_THOR_DOWNLOAD=y +CONFIG_CMD_MEMTEST=y +CONFIG_CMD_DFU=y +# CONFIG_CMD_FLASH is not set +CONFIG_CMD_FPGA_LOADBP=y +CONFIG_CMD_FPGA_LOADFS=y +CONFIG_CMD_FPGA_LOADMK=y +CONFIG_CMD_FPGA_LOADP=y +CONFIG_CMD_GPIO=y +CONFIG_CMD_I2C=y +CONFIG_CMD_MMC=y +CONFIG_CMD_SF=y +CONFIG_CMD_USB=y +# CONFIG_CMD_SETEXPR is not set +CONFIG_CMD_TFTPPUT=y +CONFIG_CMD_CACHE=y +CONFIG_CMD_EXT4_WRITE=y +CONFIG_OF_BOARD=y +CONFIG_ENV_IS_IN_SPI_FLASH=y +CONFIG_NET_RANDOM_ETHADDR=y +CONFIG_SPL_DM_SEQ_ALIAS=y +CONFIG_DFU_MMC=y +CONFIG_DFU_RAM=y +CONFIG_FPGA_XILINX=y +CONFIG_FPGA_ZYNQPL=y +CONFIG_DM_GPIO=y +CONFIG_DM_I2C=y +CONFIG_SYS_I2C_CADENCE=y +CONFIG_LED=y +CONFIG_LED_GPIO=y +CONFIG_MISC=y +CONFIG_I2C_EEPROM=y +CONFIG_SYS_I2C_EEPROM_ADDR=0x0 +CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW=0x0 +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_ZYNQ=y +CONFIG_SPI_FLASH=y +CONFIG_SF_DEFAULT_SPEED=30000000 +CONFIG_SPI_FLASH_ISSI=y +CONFIG_SPI_FLASH_MACRONIX=y +CONFIG_SPI_FLASH_SPANSION=y +CONFIG_SPI_FLASH_STMICRO=y +CONFIG_SPI_FLASH_WINBOND=y +CONFIG_PHY_MARVELL=y +CONFIG_PHY_REALTEK=y +CONFIG_PHY_XILINX=y +CONFIG_MII=y +CONFIG_ZYNQ_GEM=y +CONFIG_ZYNQ_SERIAL=y +CONFIG_ZYNQ_QSPI=y +CONFIG_USB=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_ULPI_VIEWPORT=y +CONFIG_USB_ULPI=y +CONFIG_USB_GADGET=y +CONFIG_USB_GADGET_MANUFACTURER="Xilinx" +CONFIG_USB_GADGET_VENDOR_NUM=0x03fd +CONFIG_USB_GADGET_PRODUCT_NUM=0x0300 +CONFIG_CI_UDC=y +CONFIG_USB_GADGET_DOWNLOAD=y +CONFIG_USB_FUNCTION_THOR=y

From: Ibai Erkiaga ibai.erkiaga-elorza@xilinx.com
Remove the debug uart configuration from versal virtual defconfig.
Signed-off-by: Ibai Erkiaga ibai.erkiaga-elorza@xilinx.com Signed-off-by: Michal Simek michal.simek@xilinx.com ---
configs/xilinx_versal_virt_defconfig | 5 ----- 1 file changed, 5 deletions(-)
diff --git a/configs/xilinx_versal_virt_defconfig b/configs/xilinx_versal_virt_defconfig index 75f8b983080d..a93588fc1a30 100644 --- a/configs/xilinx_versal_virt_defconfig +++ b/configs/xilinx_versal_virt_defconfig @@ -2,10 +2,7 @@ CONFIG_ARM=y CONFIG_ARCH_VERSAL=y CONFIG_SYS_TEXT_BASE=0x8000000 CONFIG_SYS_MALLOC_F_LEN=0x8000 -CONFIG_DEBUG_UART_BASE=0xff000000 -CONFIG_DEBUG_UART_CLOCK=0 CONFIG_COUNTER_FREQUENCY=62500000 -CONFIG_DEBUG_UART=y CONFIG_ENV_VARS_UBOOT_CONFIG=y CONFIG_FIT=y CONFIG_FIT_VERBOSE=y @@ -67,8 +64,6 @@ CONFIG_PHY_FIXED=y CONFIG_PHY_GIGE=y CONFIG_MII=y CONFIG_ZYNQ_GEM=y -CONFIG_DEBUG_UART_PL011=y -CONFIG_DEBUG_UART_ANNOUNCE=y CONFIG_PL01X_SERIAL=y CONFIG_SPI=y CONFIG_DM_SPI=y

čt 3. 10. 2019 v 12:33 odesílatel Michal Simek michal.simek@xilinx.com napsal:
Hi,
The following patch series implements a common function to get the dtb for of_board configuration. Additionally provides a virtual defconfig for Zynq and ZynqMP architectures with of_board configuration enabled.
In future this should go in a way where we could remove all board specific defconfigs for Zynq/ZynqMP boards.
Thanks, Michal
Ibai Erkiaga (5): arm64: versal: Move common board dtb search arm64: xilinx: Enable generic of_board_dtb arm64: zynqmp: Introduce virtual defconfig ARM: zynq: Introduce virtual defconfig arm64: versal: remove debug uart for versal virt
arch/arm/mach-versal/Kconfig | 5 -- arch/arm/mach-versal/cpu.c | 21 ------ board/xilinx/Kconfig | 8 ++ board/xilinx/common/board.c | 14 ++++ configs/xilinx_versal_virt_defconfig | 5 -- configs/xilinx_zynqmp_virt_defconfig | 108 +++++++++++++++++++++++++++ configs/zynq_virt_defconfig | 79 ++++++++++++++++++++ 7 files changed, 209 insertions(+), 31 deletions(-) create mode 100644 configs/xilinx_zynqmp_virt_defconfig create mode 100644 configs/zynq_virt_defconfig
-- 2.17.1
There is nothing controversy with this that's why I have applied it for MW and let's see if something needs to be fixed. It is clear that there will be some patches for adding defconfig options to be generic as much as possible. M
participants (2)
-
Michal Simek
-
Michal Simek