[PATCH v1 01/23] board: nxp: add Nodebox v3 CPU Module (LX2160A) base port
Vincent Jardin <[email protected]>
| Newsgroups | org.u-boot-project.lists.u-boot |
|---|---|
| Message-ID | <[email protected]> |
Introduce TARGET_NBXV3 for the Free Mobile Nodebox v3 CPU Module, an LX2160A based platform. eth_nbxv3.c renames the DPAA2 Ethernet devices from a "u-boot,nickname" DT property (EVT_DM_PRE_PROBE spy) to something more user explicit. Currently the CONFIG_ID_EEPROM is not set since the NXP format is not used on this board. Signed-off-by: Vincent Jardin <[email protected]> --- arch/arm/Kconfig | 12 ++++++ arch/arm/dts/Makefile | 1 + arch/arm/dts/fsl-lx2160a-nbxv3.dts | 16 +++++++ board/nxp/lx2160a/Kconfig | 21 +++++++++ board/nxp/lx2160a/MAINTAINERS | 8 ++++ board/nxp/lx2160a/Makefile | 1 + board/nxp/lx2160a/nbxv3/Makefile | 5 +++ board/nxp/lx2160a/nbxv3/eth_nbxv3.c | 67 +++++++++++++++++++++++++++++ configs/nbxv3_tfa_defconfig | 38 ++++++++++++++++ include/configs/nbxv3.h | 13 ++++++ 10 files changed, 182 insertions(+) create mode 100644 arch/arm/dts/fsl-lx2160a-nbxv3.dts create mode 100644 board/nxp/lx2160a/nbxv3/Makefile create mode 100644 board/nxp/lx2160a/nbxv3/eth_nbxv3.c create mode 100644 configs/nbxv3_tfa_defconfig create mode 100644 include/configs/nbxv3.h diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 1b474a346bf..fe4045548b1 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -1572,6 +1572,18 @@ config TARGET_LX2162AQDS Support for NXP LX2162AQDS platform. The lx2162aqds support is based on LX2160A Layerscape Architecture processor. +config TARGET_NBXV3 + bool "Support Nodebox v3 CPU Module (LX2160A)" + select ARCH_LX2160A + select ARM64 + select ARMV8_MULTIENTRY + select ARCH_SUPPORT_TFABOOT + select BOARD_LATE_INIT + select GPIO_EXTRA_HEADER + help + Support for the Free Mobile Nodebox v3 CPU Module, an LX2160A + based platform. + config TARGET_HIKEY bool "Support HiKey 96boards Consumer Edition Platform" select ARM64 diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index a02dad22f27..a1b4e283584 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -470,6 +470,7 @@ dtb-$(CONFIG_FSL_LSCH3) += fsl-ls2080a-qds.dtb \ fsl-ls1028a-qds-duart.dtb \ fsl-ls1028a-qds-lpuart.dtb \ fsl-lx2160a-rdb.dtb \ + fsl-lx2160a-nbxv3.dtb \ fsl-lx2160a-qds.dtb \ fsl-lx2160a-qds-3-x-x.dtb \ fsl-lx2160a-qds-3-11-x.dtb \ diff --git a/arch/arm/dts/fsl-lx2160a-nbxv3.dts b/arch/arm/dts/fsl-lx2160a-nbxv3.dts new file mode 100644 index 00000000000..32f0c207a59 --- /dev/null +++ b/arch/arm/dts/fsl-lx2160a-nbxv3.dts @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: GPL-2.0+ OR X11 +/* + * Copyright 2026 Free Mobile - Vincent Jardin + * + * Nodebox v3 CPU Module (LX2160A). Base port; no peripheral + * controllers enabled. + */ + +/dts-v1/; + +#include "fsl-lx2160a.dtsi" + +/ { + model = "Free Mobile Nodebox v3 CPU Module (LX2160A)"; + compatible = "freemobile,nbxv3", "fsl,lx2160a"; +}; diff --git a/board/nxp/lx2160a/Kconfig b/board/nxp/lx2160a/Kconfig index 5764c83ab08..37e8f7ff717 100644 --- a/board/nxp/lx2160a/Kconfig +++ b/board/nxp/lx2160a/Kconfig @@ -45,3 +45,24 @@ config SYS_CONFIG_NAME default "lx2162aqds" endif + +if TARGET_NBXV3 + +config SYS_BOARD + default "lx2160a" + +config SYS_VENDOR + default "nxp" + +config SYS_SOC + default "fsl-layerscape" + +config SYS_CONFIG_NAME + default "nbxv3" + +config NBXV3_DM_EVENT + bool + default y + select DM_EVENT + +endif diff --git a/board/nxp/lx2160a/MAINTAINERS b/board/nxp/lx2160a/MAINTAINERS index abdac1372d2..6f78e6e45d1 100644 --- a/board/nxp/lx2160a/MAINTAINERS +++ b/board/nxp/lx2160a/MAINTAINERS @@ -53,3 +53,11 @@ LX2162AQDS_VERIFIED_BOOT BOARD M: Manish Tomar <[email protected]> S: Maintained F: configs/lx2162aqds_tfa_verified_boot_defconfig + +NBXV3 BOARD +M: Vincent Jardin <[email protected]> +S: Maintained +F: board/nxp/lx2160a/nbxv3/ +F: include/configs/nbxv3.h +F: configs/nbxv3_tfa_defconfig +F: arch/arm/dts/fsl-lx2160a-nbxv3.dts diff --git a/board/nxp/lx2160a/Makefile b/board/nxp/lx2160a/Makefile index c9561bfadea..9a617a1f094 100644 --- a/board/nxp/lx2160a/Makefile +++ b/board/nxp/lx2160a/Makefile @@ -9,3 +9,4 @@ obj-y += ddr.o obj-$(CONFIG_TARGET_LX2160ARDB) += eth_lx2160ardb.o obj-$(CONFIG_TARGET_LX2160AQDS) += eth_lx2160aqds.o obj-$(CONFIG_TARGET_LX2162AQDS) += eth_lx2162aqds.o +obj-$(CONFIG_TARGET_NBXV3) += nbxv3/ diff --git a/board/nxp/lx2160a/nbxv3/Makefile b/board/nxp/lx2160a/nbxv3/Makefile new file mode 100644 index 00000000000..90ef2734eec --- /dev/null +++ b/board/nxp/lx2160a/nbxv3/Makefile @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: GPL-2.0+ +# Copyright 2026 Free Mobile - Vincent Jardin +# + +obj-y += eth_nbxv3.o diff --git a/board/nxp/lx2160a/nbxv3/eth_nbxv3.c b/board/nxp/lx2160a/nbxv3/eth_nbxv3.c new file mode 100644 index 00000000000..eb91d47add5 --- /dev/null +++ b/board/nxp/lx2160a/nbxv3/eth_nbxv3.c @@ -0,0 +1,67 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2026 Free Mobile - Vincent Jardin + * + * Nodebox v3 CPU Module Ethernet wiring. + * + * For all the boards, there are 3 mainly usable ethernet ports: + * - DPMAC17 to RGMII1 to Realtek RTL8211FD-CG, which is the main + * management port + * - DPMAC13 to USXGMII13 to LAN8023 port (ptp0) + * - DPMAC14 to USXGMII14 to LAN8023 port (ptp1) + * - Some carrier boards may enable some SGMII ports too + */ + +#include <dm.h> +#include <dm/device.h> +#include <dm/ofnode.h> +#include <dm/uclass.h> +#include <event.h> +#include <netdev.h> +#include <exports.h> +#include <fsl-mc/fsl_mc.h> + +DECLARE_GLOBAL_DATA_PTR; + +int board_eth_init(struct bd_info *bis) +{ + return 0; +} + +#if defined(CONFIG_RESET_PHY_R) +void reset_phy(void) +{ +#if defined(CONFIG_FSL_MC_ENET) + mc_env_boot(); +#endif +} +#endif /* CONFIG_RESET_PHY_R */ + +/* + * Enforce the per DPMAC u-boot,nickname DT property as the U-Boot device + * name, so `dm tree` and `setenv ethact ...` show role based names + * (lanconsole0, ptp0, ptp1) instead of the auto generated + * DPMAC<n>@<phy-mode> string from drivers/net/ldpaa_eth/ldpaa_eth.c. + * + * It is triggered on EVT_DM_PRE_PROBE (not POST_PROBE) so the rename lands + * before eth_post_probe() in net/eth-uclass.c which would have printed a + * "Warning: ... using random MAC address" banner. + * + * Note: it requires CONFIG_DM_EVENT, which shall be force selected via + * NBXV3_DM_EVENT in board/nxp/lx2160a/Kconfig. + */ +static int nbxv3_eth_apply_nickname(void *ctx, struct event *event) +{ + struct udevice *dev = event->data.dm.dev; + const char *nick; + + if (device_get_uclass_id(dev) != UCLASS_ETH) + return 0; + + nick = ofnode_read_string(dev_ofnode(dev), "u-boot,nickname"); + if (!nick) + return 0; + + return device_set_name(dev, nick); +} +EVENT_SPY_FULL(EVT_DM_PRE_PROBE, nbxv3_eth_apply_nickname); diff --git a/configs/nbxv3_tfa_defconfig b/configs/nbxv3_tfa_defconfig new file mode 100644 index 00000000000..86b5b44ec09 --- /dev/null +++ b/configs/nbxv3_tfa_defconfig @@ -0,0 +1,38 @@ +CONFIG_ARM=y +CONFIG_SKIP_LOWLEVEL_INIT=y +CONFIG_GIC_V3_ITS=y +CONFIG_TARGET_NBXV3=y +CONFIG_TFABOOT=y +CONFIG_TEXT_BASE=0x82000000 +CONFIG_SYS_MALLOC_LEN=0x202000 +CONFIG_SYS_MALLOC_F_LEN=0x6000 +CONFIG_NR_DRAM_BANKS=3 +CONFIG_ENV_SIZE=0x4000 +CONFIG_DM_GPIO=y +CONFIG_DEFAULT_DEVICE_TREE="fsl-lx2160a-nbxv3" +CONFIG_SYS_MONITOR_LEN=958464 +CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT=y +CONFIG_SEC_FIRMWARE_ARMV8_PSCI=y +CONFIG_OF_BOARD_FIXUP=y +CONFIG_SYS_FSL_NUM_CC_PLLS=4 +CONFIG_REMAKE_ELF=y +CONFIG_MP=y +CONFIG_DYNAMIC_SYS_CLK_FREQ=y +# CONFIG_EFI_LOADER is not set +CONFIG_OF_BOARD_SETUP=y +CONFIG_SYS_PBSIZE=532 +# CONFIG_ID_EEPROM is not set +CONFIG_CMDLINE_PS_SUPPORT=y +CONFIG_CMD_HISTORY=y +CONFIG_CMD_LOG=y +CONFIG_OF_CONTROL=y +CONFIG_DYNAMIC_DDR_CLK_FREQ=y +CONFIG_DDR_ECC=y +CONFIG_ECC_INIT_VIA_DDRCONTROLLER=y +CONFIG_SYS_FSL_DDR_INTLV_256B=y +CONFIG_DM_I2C=y +# CONFIG_FSL_MC_ENET is not set +CONFIG_DM_SERIAL=y +CONFIG_PL01X_SERIAL=y +CONFIG_WDT=y +CONFIG_WDT_SBSA=y diff --git a/include/configs/nbxv3.h b/include/configs/nbxv3.h new file mode 100644 index 00000000000..6ed86639a3c --- /dev/null +++ b/include/configs/nbxv3.h @@ -0,0 +1,13 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2026 Free Mobile - Vincent Jardin + * + * Nodebox v3 CPU Module config header. + */ + +#ifndef __NBXV3_H +#define __NBXV3_H + +#include "lx2160a_common.h" + +#endif /* __NBXV3_H */ -- 2.43.0