From fccba7fc33c4fe23f0ef599fd14b8cac75809ec8 Mon Sep 17 00:00:00 2001 From: Pawel Dembicki Date: Fri, 7 Oct 2022 14:25:20 +0200 Subject: [PATCH] package: u-boot: initial support for qoriq arch This package adds initial u-boot support for qoriq target. U-boot for qoriq devices must be compiled with 32-bit compiler and linked with 32-bit linker. It's part of mpc 85xx target. But qoriq target is 64-bit. As workaround, mpc85xx binary toolchain is downloaded only for this u-boot. Signed-off-by: Pawel Dembicki Link: https://github.com/openwrt/openwrt/pull/10941 Signed-off-by: Stijn Tintel --- package/boot/uboot-qoriq/Makefile | 78 +++++++++++++++++++ .../files/fsl_t4240rdb-nor-uEnv.txt | 7 ++ .../files/fsl_t4240rdb-sdboot-uEnv.txt | 6 ++ ...x-adjust-T4240RDB-config-for-OpenWrt.patch | 68 ++++++++++++++++ .../900-Revert-fsl-mxc-Drop-legacy-I2c.patch | 44 +++++++++++ 5 files changed, 203 insertions(+) create mode 100644 package/boot/uboot-qoriq/Makefile create mode 100644 package/boot/uboot-qoriq/files/fsl_t4240rdb-nor-uEnv.txt create mode 100644 package/boot/uboot-qoriq/files/fsl_t4240rdb-sdboot-uEnv.txt create mode 100644 package/boot/uboot-qoriq/patches/100-mpc85xx-adjust-T4240RDB-config-for-OpenWrt.patch create mode 100644 package/boot/uboot-qoriq/patches/900-Revert-fsl-mxc-Drop-legacy-I2c.patch diff --git a/package/boot/uboot-qoriq/Makefile b/package/boot/uboot-qoriq/Makefile new file mode 100644 index 0000000000..6ea4f63cd3 --- /dev/null +++ b/package/boot/uboot-qoriq/Makefile @@ -0,0 +1,78 @@ +# +# Copyright (C) 2016 Jiang Yutang +# Copyright (C) 2025 Pawel Dembicki +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_VERSION:=2025.01 +PKG_HASH:=cdef7d507c93f1bbd9f015ea9bc21fa074268481405501945abc6f854d5b686f +PKG_RELEASE:=1 + +include $(INCLUDE_DIR)/u-boot.mk +include $(INCLUDE_DIR)/package.mk + +TOOLCHAIN_NAME:=openwrt-toolchain-24.10.4-mpc85xx-p2020_gcc-13.3.0_musl.Linux-x86_64 +TOOLCHAIN_FILE:=$(TOOLCHAIN_NAME).tar.zst +TOOLCHAIN_PATH:=$(PKG_BUILD_DIR)/$(TOOLCHAIN_NAME)/toolchain-powerpc_8548_gcc-13.3.0_musl/bin +TOOLCHAIN_CROSS_COMPILE:=powerpc-openwrt-linux-musl- + +define Download/uboot-qoriq-toolchain + FILE:=$(TOOLCHAIN_FILE) + URL:=https://downloads.openwrt.org/releases/24.10.4/targets/mpc85xx/p2020/ + URL_FILE:=$(TOOLCHAIN_FILE) + HASH:=c16566bb3625b6c45e4184b9d37953d4c3c1dcdec1141a45df834da626d4c08d +endef + +define U-Boot/Default + BUILD_TARGET:=qoriq + BUILD_SUBTARGET:=generic + BUILD_DEVICES:=$(1) + ENV_SIZE:=0x2000 +endef + +define U-Boot/fsl_t4240rdb-nor + NAME:=NXP T4240RDB NOR Boot + UBOOT_CONFIG:=T4240RDB + UBOOT_IMAGE:=u-boot-dtb.bin +endef + +define U-Boot/fsl_t4240rdb-sdboot + NAME:=NXP T4240RDB SD Card Boot + UBOOT_CONFIG:=T4240RDB_SDCARD + UBOOT_IMAGE:=u-boot-with-spl-pbl.bin +endef + +UBOOT_TARGETS := \ + fsl_t4240rdb-nor \ + fsl_t4240rdb-sdboot + +define Build/Prepare + $(Build/Prepare/Default) + $(TAR) -I $(STAGING_DIR_HOST)/bin/zstd -xf $(DL_DIR)/$(TOOLCHAIN_FILE) -C $(PKG_BUILD_DIR)/ +endef + +define Build/Compile/U-Boot + +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \ + CROSS_COMPILE=$(TOOLCHAIN_PATH)/$(TOOLCHAIN_CROSS_COMPILE) \ + $(if $(DTC),DTC="$(DTC)") \ + $(UBOOT_MAKE_FLAGS) +endef + +define Build/InstallDev + $(INSTALL_DIR) $(STAGING_DIR_IMAGE) + $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(UBOOT_IMAGE) \ + $(STAGING_DIR_IMAGE)/$(BUILD_VARIANT)-uboot.bin + $(PKG_BUILD_DIR)/tools/mkenvimage -b -s $(ENV_SIZE) \ + -o $(STAGING_DIR_IMAGE)/$(BUILD_VARIANT)-uboot-env.bin \ + files/$(BUILD_VARIANT)-uEnv.txt +endef + +define Package/u-boot/install/default +endef + +$(eval $(call Download,uboot-qoriq-toolchain)) +$(eval $(call BuildPackage/U-Boot)) diff --git a/package/boot/uboot-qoriq/files/fsl_t4240rdb-nor-uEnv.txt b/package/boot/uboot-qoriq/files/fsl_t4240rdb-nor-uEnv.txt new file mode 100644 index 0000000000..66f7eec121 --- /dev/null +++ b/package/boot/uboot-qoriq/files/fsl_t4240rdb-nor-uEnv.txt @@ -0,0 +1,7 @@ +loadaddr=0x2000000 +fwaddr=0xe8000000 +hwconfig=fsl_ddr:ctlr_intlv=3way_4KB,bank_intlv=auto;usb1:dr_mode=host,phy_type=utmi +nor_boot=bootm $fwaddr +bootargs=console=ttyS0,115200 +bootcmd=echo starting OpenWrt ...;run nor_boot +bootdelay=3 diff --git a/package/boot/uboot-qoriq/files/fsl_t4240rdb-sdboot-uEnv.txt b/package/boot/uboot-qoriq/files/fsl_t4240rdb-sdboot-uEnv.txt new file mode 100644 index 0000000000..370b9055ab --- /dev/null +++ b/package/boot/uboot-qoriq/files/fsl_t4240rdb-sdboot-uEnv.txt @@ -0,0 +1,6 @@ +loadaddr=0x2000000 +hwconfig=fsl_ddr:ctlr_intlv=3way_4KB,bank_intlv=auto;usb1:dr_mode=host,phy_type=utmi +sd_boot=ext4load mmc 0:1 $loadaddr fitImage;bootm $loadaddr +bootargs=root=/dev/mmcblk0p2 rw rootwait rootfstype=squashfs,f2fs noinitrd console=ttyS0,115200 +bootcmd=echo starting OpeWwrt ...;run sd_boot +bootdelay=3 diff --git a/package/boot/uboot-qoriq/patches/100-mpc85xx-adjust-T4240RDB-config-for-OpenWrt.patch b/package/boot/uboot-qoriq/patches/100-mpc85xx-adjust-T4240RDB-config-for-OpenWrt.patch new file mode 100644 index 0000000000..7bd6048dc6 --- /dev/null +++ b/package/boot/uboot-qoriq/patches/100-mpc85xx-adjust-T4240RDB-config-for-OpenWrt.patch @@ -0,0 +1,68 @@ +From ec36a44809e22a60fc153a4078d35c83a2bf9676 Mon Sep 17 00:00:00 2001 +From: Pawel Dembicki +Date: Thu, 6 Oct 2022 15:18:38 +0200 +Subject: [PATCH] mpc85xx: adjust T4240RDB config for OpenWrt + +Signed-off-by: Pawel Dembicki +--- + configs/T4240RDB_SDCARD_defconfig | 6 ++++-- + include/configs/T4240RDB.h | 6 +++++- + 2 files changed, 9 insertions(+), 3 deletions(-) + +--- a/configs/T4240RDB_SDCARD_defconfig ++++ b/configs/T4240RDB_SDCARD_defconfig +@@ -4,7 +4,7 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y + CONFIG_SPL_LIBGENERIC_SUPPORT=y + CONFIG_SF_DEFAULT_SPEED=10000000 + CONFIG_ENV_SIZE=0x2000 +-CONFIG_ENV_OFFSET=0x100000 ++CONFIG_ENV_OFFSET=0x101000 + CONFIG_DEFAULT_DEVICE_TREE="t4240rdb" + CONFIG_SYS_MONITOR_LEN=786432 + CONFIG_SPL_MMC=y +@@ -35,7 +35,7 @@ CONFIG_FIT_VERBOSE=y + CONFIG_RAMBOOT_PBL=y + CONFIG_SYS_FSL_PBL_PBI="$(SRCTREE)/board/freescale/t4rdb/t4_pbi.cfg" + CONFIG_SYS_FSL_PBL_RCW="$(SRCTREE)/board/freescale/t4rdb/t4_sd_rcw.cfg" +-CONFIG_BOOTDELAY=10 ++CONFIG_BOOTDELAY=1 + CONFIG_OF_BOARD_SETUP=y + CONFIG_OF_STDOUT_VIA_ALIAS=y + CONFIG_USE_BOOTCOMMAND=y +@@ -71,6 +71,7 @@ CONFIG_CMD_DHCP=y + CONFIG_CMD_MII=y + CONFIG_CMD_PING=y + CONFIG_CMD_EXT2=y ++CONFIG_CMD_EXT4=y + CONFIG_CMD_FAT=y + CONFIG_OF_CONTROL=y + CONFIG_ENV_OVERWRITE=y +@@ -108,7 +109,8 @@ CONFIG_SPI_FLASH_SST=y + CONFIG_PHYLIB=y + CONFIG_PHYLIB_10G=y + CONFIG_PHY_CORTINA=y +-CONFIG_CORTINA_FW_ADDR=0x77f000 ++CONFIG_SYS_CORTINA_FW_IN_MMC=y ++CONFIG_CORTINA_FW_ADDR=0x200000 + CONFIG_PHY_TERANETICS=y + CONFIG_PHY_VITESSE=y + CONFIG_DM_MDIO=y +--- a/configs/T4240RDB_defconfig ++++ b/configs/T4240RDB_defconfig +@@ -26,7 +26,7 @@ CONFIG_SYS_FSL_NUM_CC_PLLS=5 + CONFIG_MP=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y +-CONFIG_BOOTDELAY=10 ++CONFIG_BOOTDELAY=1 + CONFIG_OF_BOARD_SETUP=y + CONFIG_OF_STDOUT_VIA_ALIAS=y + CONFIG_USE_BOOTCOMMAND=y +@@ -76,6 +76,7 @@ CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y + CONFIG_SYS_FLASH_EMPTY_INFO=y + CONFIG_SYS_FLASH_CFI=y + CONFIG_SYS_FLASH_QUIET_TEST=y ++CONFIG_SYS_MALLOC_F_LEN=0x1000 + CONFIG_SYS_MAX_FLASH_SECT=1024 + CONFIG_SYS_MAX_FLASH_BANKS=2 + CONFIG_DM_SPI_FLASH=y diff --git a/package/boot/uboot-qoriq/patches/900-Revert-fsl-mxc-Drop-legacy-I2c.patch b/package/boot/uboot-qoriq/patches/900-Revert-fsl-mxc-Drop-legacy-I2c.patch new file mode 100644 index 0000000000..8da3f10871 --- /dev/null +++ b/package/boot/uboot-qoriq/patches/900-Revert-fsl-mxc-Drop-legacy-I2c.patch @@ -0,0 +1,44 @@ +From 7041fc96942acca920699b354e956bc4966c9b00 Mon Sep 17 00:00:00 2001 +From: Pawel Dembicki +Date: Wed, 19 Nov 2025 11:58:10 +0100 +Subject: [PATCH] Revert "fsl: mxc: Drop legacy I2c" + +This reverts commit 98dfa70f84f036c7423f1eddf00af8ea555fed8f. + +It broke SDCARD boot in T4240RDB. + +Signed-off-by: Pawel Dembicki +--- + drivers/ddr/fsl/main.c | 3 ++- + drivers/i2c/mxc_i2c.c | 1 - + 2 files changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/ddr/fsl/main.c ++++ b/drivers/ddr/fsl/main.c +@@ -111,7 +111,7 @@ static int ddr_i2c_read(DEV_TYPE *dev, u + #if CONFIG_IS_ENABLED(DM_I2C) + ret = dm_i2c_read(dev, 0, buf, len); + #else +- ret = 0; ++ ret = i2c_read(dev->chip, addr, alen, buf, len); + #endif + + return ret; +@@ -162,6 +162,7 @@ static void __get_spd(generic_spd_eeprom + }; + dev = &ldev; + ++ i2c_set_bus_num(CONFIG_SYS_SPD_BUS_NUM); + #endif + + #ifdef CONFIG_SYS_FSL_DDR4 +--- a/drivers/i2c/mxc_i2c.c ++++ b/drivers/i2c/mxc_i2c.c +@@ -619,7 +619,6 @@ int enable_i2c_clk(unsigned char enable, + __attribute__((weak, alias("__enable_i2c_clk"))); + + #if !CONFIG_IS_ENABLED(DM_I2C) +- + /* + * Read data from I2C device + * -- 2.30.2