1

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

Frant
  • 5,382
  • 1
  • 16
  • 22
qcmao
  • 61
  • 4
  • add debug info in `spinand_probe( )`, but no print info output during u-boot booting sequence. I think this function cannot be called. – qcmao Jul 22 '20 at 14:41
  • update:add below code `struct udevice *dev; uclass_get_device(UCLASS_MTD, 0, &dev); device_probe(&dev);` in fucntion board_nand_init(void), I found spinand_probe() can be called, but some error seemingly occurs in device_probe(&dev). Dedbugging... – qcmao Jul 24 '20 at 01:58
  • update : `device_probe(&dev)` error, should be `device_probe(dev)` – qcmao Jul 24 '20 at 03:34
  • should add below procedure: `struct mtd_info *mtd;` `dev_get_uclass_priv(dev);` `nand_regiter(0, mtd);` – qcmao Aug 08 '20 at 05:16

0 Answers0