nand: denali: issue with 4.13

Masahiro Yamada yamada.masahiro at socionext.com
Thu Sep 21 04:00:34 PDT 2017


Hi.

2017-09-21 15:44 GMT+09:00 Oleksij Rempel <ore at pengutronix.de>:
> Hi Masahiro,
>
> you are probably the expert of denali nand driver.
> With kernel v4.13 i have following issue, it works on FPGASoC 5CSEBA5U...
> but is now working on FPGASoC 5CSXFC6C6U... both of them have same NAND
> chip, and seems to have similar IP core.
>
> FPGASoC 5CSXFC6C6U...:
> ====================================================================
> [    0.095899] console [ttyS0] disabled
> [    0.095941] ffc02000.serial0: ttyS0 at MMIO 0xffc02000 (irq = 38,
> base_baud = 6250000) is a 16550A
> [    0.702041] console [ttyS0] enabled
> [    0.706986] brd: module loaded
> [    0.716232] loop: module loaded
> [    0.720074] nand: device found, Manufacturer ID: 0x00, Chip ID: 0x2c


This line is strange.  It failed to read Manufacturer ID.
The 0x2c should be Manufacturer ID, not Chip ID.


I am guessing we need to wait a bit
after the NAND_CMD_READID.

Please try the following ugly patch.



diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index bcc8cef1..2443e3d 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -744,10 +744,11 @@ static void nand_command(struct mtd_info *mtd,
unsigned int command,
        case NAND_CMD_ERASE2:
        case NAND_CMD_SEQIN:
        case NAND_CMD_STATUS:
-       case NAND_CMD_READID:
        case NAND_CMD_SET_FEATURES:
                return;
-
+       case NAND_CMD_READID:
+               udelay(5);
+               return;
        case NAND_CMD_RESET:
                if (chip->dev_ready)
                        break;
@@ -874,10 +875,11 @@ static void nand_command_lp(struct mtd_info
*mtd, unsigned int command,
        case NAND_CMD_ERASE2:
        case NAND_CMD_SEQIN:
        case NAND_CMD_STATUS:
-       case NAND_CMD_READID:
        case NAND_CMD_SET_FEATURES:
                return;
-
+       case NAND_CMD_READID:
+               udelay(5);
+               return;
        case NAND_CMD_RNDIN:
                nand_ccs_delay(chip);
                return;



-- 
Best Regards
Masahiro Yamada



More information about the linux-mtd mailing list