Porting u-boot-2020.04 to a EVB board, but spi nand flash(GD5F2GQ5xExxG) is not working

340 Views Asked by At

problem description:

  1. designware-spi controller embedded in SOC
  2. spi nor flash(MX25U25635F) on evb CAN works well.
  3. spi nand flash(GD5F2GQ5xExxG) on evb is not working, when entering command "nand device or nand info", u-boot returns "no devices available"

my effort:

**dtsi snippet:**
    spi0: spi@80000000 {
        compatible = "snps,dw-ssi";
        reg = <0x0 0x80000000 0x0 0x1000>;
        #address-cells = <1>;
        #size-cells = <0>;
        clocks =  <&sysclk>;
        clock-names = "baudclk";
        status = "okay";
        spi_nand@1 {
            #address-cells = <1>;
            #size-cells = <1>;
            compatible = "spi-nand";
            spi-cpha = <1>;
            spi-cpol = <1>;
            spi-tx-bus-width = <1>;
            spi-rx-bus-width = <1>;
            reg = <1>;
            spi-max-frequency = <50000000>;
        };
    };

xxx_defconfig:

CONFIG_CMD_BIND=y
CONFIG_CMD_DM=y
CONFIG_CMD_GPT=y
CONFIG_CMD_MTD=y
CONFIG_CMD_NAND=y
CONFIG_CMD_NAND_TRIMFFS=y
CONFIG_CMD_NAND_LOCK_UNLOCK=y
CONFIG_CMD_NAND_TORTURE=y
CONFIG_DM_MTD=y
CONFIG_MTD_RAW_NAND=y
CONFIG_MTD_SPI_NAND=y
CONFIG_SPI=y
CONFIG_DM_SPI=y

xxx_common.h

...
#define CONFIG_SYS_NAND_SELF_INIT
...

drivers\mtd\nand\raw\nand.c

void nand_init(void)
{
...
#ifdef CONFIG_SYS_NAND_SELF_INIT
    board_nand_init();
#else
    ...
#endif
}

Only config spi controller's related register in function board_nand_init( ), I want to call spinand_probe() in this function, but I don't know how to do it. Can somebody help me? I am a newbie to u-boot. Thanks

0

There are 0 best solutions below