Hi Alice,
On Mon, Sep 21, 2026 at 11:57 PM <[email protected]> wrote:
> +static void board_gpio_init(void)
> +{
> + struct gpio_desc desc;
> + int ret;
> +
> + /* Enable EXT1_PWREN for PCIE_3.3V */
> + ret = dm_gpio_lookup_name("gpio@22_13", &desc);
> + if (ret)
> + return;
> +
> + ret = dm_gpio_request(&desc, "EXT1_PWREN");
> + if (ret)
> + return;
> +
> + dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT);
> + dm_gpio_set_value(&desc, 1);
> +
> + /* Deassert SD3_nRST */
> + ret = dm_gpio_lookup_name("gpio@22_12", &desc);
> + if (ret)
> + return;
> +
> + ret = dm_gpio_request(&desc, "SD3_nRST");
> + if (ret)
> + return;
> +
> + dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT);
> + dm_gpio_set_value(&desc, 1);
> +}
Can't all these GPIO settings in C code be avoided here? You could
describe the GPIO hog in DTS instead.
> + if (is_voltage_mode(VOLT_LOW_DRIVE)) {
> + buck_val = 0x10; /* 0.8v for Low drive mode */
Please define 0x10 so you don't need to explain it in a comment.
Also, the unit for Volt is V, not v. Please check globally.
> + printf("PMIC: Low Drive Voltage Mode\n");
> + } else if (is_voltage_mode(VOLT_NOMINAL_DRIVE)) {
> + buck_val = 0x14; /* 0.85v for Nominal drive mode */
Ditto.
> + printf("PMIC: Nominal Voltage Mode\n");
> + } else {
> + buck_val = 0x18; /* 0.9v for Over drive mode */
Ditto.
> + printf("PMIC: Over Drive Voltage Mode\n");
> + }
> +
> + pmic_reg_write(dev, PF9453_BUCK2OUT, buck_val);
> +
> + /* set standby voltage to 0.65v */
> + pmic_reg_write(dev, PF9453_BUCK2OUT_STBY, 0x4);
> +
> + /* 1.1v for LPDDR4 */
> + pmic_reg_write(dev, PF9453_BUCK1OUT, 0x14);
> +
> + ret = pmic_reg_read(dev, PF9453_CONFIG1);
> + if (ret < 0)
> + return ret;
> + /*The timer default is 8sec and too long, so change to 100ms.*/
Add a space after /* and before */. No need to end with a period.
> +imx91_9x9_qsb
> +=============
> +
> +U-Boot for the NXP i.MX91 Quick Start Board
> +
> +Quick Start
> +-----------
> +
> +- Get and Build the ARM Trusted firmware
s/firmware/Firmware
> +- Get the DDR firmware
> +- Get ahab-container.img
> +- Build U-Boot
> +- Boot
> +
> +Get and Build the ARM Trusted firmware
Get and build the ARM Trusted Firmware
> +Burn the flash.bin to MicroSD card offset 32KB:
at offset
> +
> +.. code-block:: bash
> +
> + $ dd if=flash.bin of=/dev/sd[x] bs=1024 seek=32 conv=notrunc
> +
> +Boot
> +----
> +
> +Set the Boot switch to SD boot.
> diff --git a/doc/board/nxp/index.rst b/doc/board/nxp/index.rst
> index b11730e1eac..076f6b48001 100644
> --- a/doc/board/nxp/index.rst
> +++ b/doc/board/nxp/index.rst
> @@ -12,6 +12,7 @@ NXP Semiconductors
> imx8mq_evk
> imx8qxp_mek
> imx8ulp_evk
> + imx91_9x9_qsb
> imx91_11x11_evk
> imx91_11x11_frdm
> imx93_9x9_qsb
> diff --git a/include/configs/imx91_qsb.h b/include/configs/imx91_qsb.h
> new file mode 100644
> index 00000000000..2175e2d4212
> --- /dev/null
> +++ b/include/configs/imx91_qsb.h
> @@ -0,0 +1,28 @@
> +/* SPDX-License-Identifier: GPL-2.0+ */
> +/*
> + * Copyright 2024 NXP
> + */
> +
> +#ifndef __IMX91_QSB_H
> +#define __IMX91_QSB_H
> +
> +#include <linux/sizes.h>
> +#include <linux/stringify.h>
Is this needed?
> +#include <asm/arch/imx-regs.h>
> +
> +#define CFG_SYS_UBOOT_BASE \
> + (QSPI0_AMBA_BASE + CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR * 512)
> +
> +/* Link Definitions */
> +
> +#define CFG_SYS_INIT_RAM_ADDR 0x80000000
> +#define CFG_SYS_INIT_RAM_SIZE 0x200000
> +
> +#define CFG_SYS_SDRAM_BASE 0x80000000
> +#define PHYS_SDRAM 0x80000000
> +#define PHYS_SDRAM_SIZE 0x40000000 /* 1GB DDR */
> +
> +/* Using WDOG for reset */
> +#define WDOG_BASE_ADDR WDG3_BASE_ADDR
You sent an earlier patch that removed the WDOG_BASE_ADDR definition.
Please do not reintroduce it.
> +
> +#endif
> diff --git a/include/power/pf9453.h b/include/power/pf9453.h
> index f33b839cde0..60c2a9f5e64 100644
> --- a/include/power/pf9453.h
> +++ b/include/power/pf9453.h
> @@ -64,6 +64,8 @@ enum {
> #define PF9453_LDO2_MASK 0x3f
> #define PF9453_LDOSNVS_MASK 0x7f
>
> +#define PF9453_RESETKEY_TIMER_MASK 0x1c
This should be a separate patch, as it is unrelated to i.MX91 QSB.