package: u-boot: initial support for qoriq arch
authorPawel Dembicki <[email protected]>
Fri, 7 Oct 2022 12:25:20 +0000 (14:25 +0200)
committerStijn Tintel <[email protected]>
Fri, 5 Dec 2025 21:57:41 +0000 (23:57 +0200)
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 <[email protected]>
Link: https://github.com/openwrt/openwrt/pull/10941
Signed-off-by: Stijn Tintel <[email protected]>
package/boot/uboot-qoriq/Makefile [new file with mode: 0644]
package/boot/uboot-qoriq/files/fsl_t4240rdb-nor-uEnv.txt [new file with mode: 0644]
package/boot/uboot-qoriq/files/fsl_t4240rdb-sdboot-uEnv.txt [new file with mode: 0644]
package/boot/uboot-qoriq/patches/100-mpc85xx-adjust-T4240RDB-config-for-OpenWrt.patch [new file with mode: 0644]
package/boot/uboot-qoriq/patches/900-Revert-fsl-mxc-Drop-legacy-I2c.patch [new file with mode: 0644]

diff --git a/package/boot/uboot-qoriq/Makefile b/package/boot/uboot-qoriq/Makefile
new file mode 100644 (file)
index 0000000..6ea4f63
--- /dev/null
@@ -0,0 +1,78 @@
+#
+# Copyright (C) 2016 Jiang Yutang <[email protected]>
+# Copyright (C) 2025 Pawel Dembicki <[email protected]>
+#
+# 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 (file)
index 0000000..66f7eec
--- /dev/null
@@ -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 (file)
index 0000000..370b905
--- /dev/null
@@ -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 (file)
index 0000000..7bd6048
--- /dev/null
@@ -0,0 +1,68 @@
+From ec36a44809e22a60fc153a4078d35c83a2bf9676 Mon Sep 17 00:00:00 2001
+From: Pawel Dembicki <[email protected]>
+Date: Thu, 6 Oct 2022 15:18:38 +0200
+Subject: [PATCH] mpc85xx: adjust T4240RDB config for OpenWrt
+
+Signed-off-by: Pawel Dembicki <[email protected]>
+---
+ 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 (file)
index 0000000..8da3f10
--- /dev/null
@@ -0,0 +1,44 @@
+From 7041fc96942acca920699b354e956bc4966c9b00 Mon Sep 17 00:00:00 2001
+From: Pawel Dembicki <[email protected]>
+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 <[email protected]>
+---
+ 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
+  *