mtd: nand: denali: set DEVICES_CONNECTED 1 if not set
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Wed, 22 Mar 2017 20:07:22 +0000 (05:07 +0900)
committerBoris Brezillon <boris.brezillon@free-electrons.com>
Tue, 28 Mar 2017 12:19:45 +0000 (14:19 +0200)
Currently, the driver expects DEVICE_CONNECTED is automatically set
by the hardware, but this feature is disabled in some cases.
In such cases, it is the software's responsibility to set up the
DEVICES_CONNECTED register.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
drivers/mtd/nand/denali.c

index e1c45bf2656d994972d9d9ae6fa772b8b216c8da..b442a3ed9f0f1b472e105f0c9282d76fe8865447 100644 (file)
@@ -1417,6 +1417,15 @@ static int denali_multidev_fixup(struct denali_nand_info *denali)
         */
        denali->devnum = ioread32(denali->flash_reg + DEVICES_CONNECTED);
 
+       /*
+        * On some SoCs, DEVICES_CONNECTED is not auto-detected.
+        * For those, DEVICES_CONNECTED is left to 0.  Set 1 if it is the case.
+        */
+       if (denali->devnum == 0) {
+               denali->devnum = 1;
+               iowrite32(1, denali->flash_reg + DEVICES_CONNECTED);
+       }
+
        if (denali->devnum == 1)
                return 0;