[PATCH v2 2/2] ARM: boards: i.MX93: Add NXP FRDM i.MX93 support
Ahmad Fatoum
a.fatoum at pengutronix.de
Tue Oct 21 04:11:46 PDT 2025
Hello Fabian,
On 10/21/25 12:59 PM, Fabian Pflug wrote:
> This board is a low cost i.MX93 eval board from NXP.
>
> There is no upstream DT yet, therefore a minimal DT is added in this
> patch. The kernel DT is submitted in [0].
>
> The DDR timings are copied from the NXP yocto layer [1] for u-boot with
> some small modifications to remove unused timings and DDR sizes.
>
> [0] https://lore.kernel.org/r/20250526-fpg-nxp-imx93-frdm-v2-0-e5ad0efaec33@pengutronix.de
> [1] https://github.com/nxp-imx-support/meta-imx-frdm/blob/lf-6.6.36-2.1.0/meta-imx-bsp/recipes-bsp/u-boot/u-boot-imx/0002-imx-imx93_frdm-Add-basic-board-support.patch
>
> Signed-off-by: Fabian Pflug <f.pflug at pengutronix.de>
> ---
> arch/arm/boards/Makefile | 1 +
> arch/arm/boards/nxp-imx93-frdm/Makefile | 2 +
> arch/arm/boards/nxp-imx93-frdm/board.c | 12 +
> arch/arm/boards/nxp-imx93-frdm/lowlevel.c | 46 +
> .../nxp-imx93-frdm/lpddr4x_2gb_timing.c | 1907 +++++++++++++++++
> arch/arm/dts/Makefile | 1 +
> arch/arm/dts/imx93-frdm.dts | 534 +++++
> arch/arm/mach-imx/Kconfig | 9 +
> images/Makefile.imx | 4 +
> 9 files changed, 2516 insertions(+)
> create mode 100644 arch/arm/boards/nxp-imx93-frdm/Makefile
> create mode 100644 arch/arm/boards/nxp-imx93-frdm/board.c
> create mode 100644 arch/arm/boards/nxp-imx93-frdm/lowlevel.c
> create mode 100644 arch/arm/boards/nxp-imx93-frdm/lpddr4x_2gb_timing.c
> create mode 100644 arch/arm/dts/imx93-frdm.dts
>
> diff --git a/arch/arm/boards/Makefile b/arch/arm/boards/Makefile
> index ac1fa74d4c..8bbf4d5ea5 100644
> --- a/arch/arm/boards/Makefile
> +++ b/arch/arm/boards/Makefile
> @@ -72,6 +72,7 @@ obj-$(CONFIG_MACH_NXP_IMX8MQ_EVK) += nxp-imx8mq-evk/
> obj-$(CONFIG_MACH_NXP_IMX8MM_EVK) += nxp-imx8mm-evk/
> obj-$(CONFIG_MACH_NXP_IMX8MN_EVK) += nxp-imx8mn-evk/
> obj-$(CONFIG_MACH_NXP_IMX8MP_EVK) += nxp-imx8mp-evk/
> +obj-$(CONFIG_MACH_NXP_IMX93_FRDM) += nxp-imx93-frdm/
> obj-$(CONFIG_MACH_CONGATEC_QMX8P_SOM) += congatec-qmx8p/
> obj-$(CONFIG_MACH_TQ_MBA8MPXL) += tqma8mpxl/
> obj-$(CONFIG_MACH_PCA100) += phytec-phycard-imx27/
> diff --git a/arch/arm/boards/nxp-imx93-frdm/Makefile b/arch/arm/boards/nxp-imx93-frdm/Makefile
> new file mode 100644
> index 0000000000..ac419ef7c2
> --- /dev/null
> +++ b/arch/arm/boards/nxp-imx93-frdm/Makefile
> @@ -0,0 +1,2 @@
> +lwl-y += lowlevel.o lpddr4x_2gb_timing.o
> +obj-y += board.o
> diff --git a/arch/arm/boards/nxp-imx93-frdm/board.c b/arch/arm/boards/nxp-imx93-frdm/board.c
> new file mode 100644
> index 0000000000..1e1c54ce81
> --- /dev/null
> +++ b/arch/arm/boards/nxp-imx93-frdm/board.c
> @@ -0,0 +1,12 @@
> +// SPDX-License-Identifier: GPL-2.0
> +
> +#include <deep-probe.h>
> +
> +static const struct of_device_id frdm_imx93_of_match[] = {
> + {
> + .compatible = "fsl,imx93-11x11-frdm",
> + },
> + { /* sentinel */ },
> +};
> +
> +BAREBOX_DEEP_PROBE_ENABLE(frdm_imx93_of_match);
> diff --git a/arch/arm/boards/nxp-imx93-frdm/lowlevel.c b/arch/arm/boards/nxp-imx93-frdm/lowlevel.c
> new file mode 100644
> index 0000000000..bc48160431
> --- /dev/null
> +++ b/arch/arm/boards/nxp-imx93-frdm/lowlevel.c
> @@ -0,0 +1,46 @@
> +// SPDX-License-Identifier: GPL-2.0
> +
> +#include <common.h>
> +#include <debug_ll.h>
> +#include <mach/imx/debug_ll.h>
> +#include <mach/imx/generic.h>
> +#include <mach/imx/xload.h>
> +#include <asm/barebox-arm.h>
> +#include <soc/imx9/ddr.h>
> +#include <mach/imx/atf.h>
> +#include <mach/imx/xload.h>
> +#include <mach/imx/esdctl.h>
> +
> +extern char __dtb_z_imx93_frdm_start[];
> +extern struct dram_timing_info frdm_imx93_dram_timing;
> +
> +static noinline void frdm_imx93_continue(void)
> +{
> + void __iomem *base = IOMEM(MX9_UART1_BASE_ADDR);
> + void __iomem *muxbase = IOMEM(MX9_IOMUXC_BASE_ADDR);
> +
> + /* configure LPUART1 TX pin */
> + writel(0x0, muxbase + 0x184);
> +
> + imx9_uart_setup(base);
> + pbl_set_putc(lpuart32_putc, base + 0x10);
> + putchar('>');
Do you see the > character on bootup if CONFIG_PBL_CONSOLE is enabled?
Maud (Cc'd) mentioned on the IRC that the 0x10 offset shouldn't be
necessary.
Cheers,
Ahmad
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
More information about the barebox
mailing list