mxc_ocotp: Update redundancy banks for mx7ulp B0
authorYe Li <ye.li@nxp.com>
Wed, 17 Apr 2019 09:41:20 +0000 (09:41 +0000)
committerStefano Babic <sbabic@denx.de>
Thu, 25 Apr 2019 17:16:24 +0000 (19:16 +0200)
On mx7ulp B0, beside bank 0 and 1, the fuse bank 9, 10, 28 are changed to
Redundancy mode not ECC, so they can support to program different bits of
a word in multiple times.

Signed-off-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
drivers/misc/mxc_ocotp.c

index f84fe88db193583d8f17917b5b2dc2aec313e483..33ea31135c8bd3d3741e4badbd2b93e783d6083a 100644 (file)
@@ -354,13 +354,17 @@ static int prepare_write(struct ocotp_regs **regs, u32 bank, u32 word,
 
        /* Only bank 0 and 1 are redundancy mode, others are ECC mode */
        if (bank != 0 && bank != 1) {
-               ret = fuse_sense(bank, word, &val);
-               if (ret)
-                       return ret;
-
-               if (val != 0) {
-                       printf("mxc_ocotp: The word has been programmed, no more write\n");
-                       return -EPERM;
+               if ((soc_rev() < CHIP_REV_2_0) ||
+                   ((soc_rev() >= CHIP_REV_2_0) &&
+                   bank != 9 && bank != 10 && bank != 28)) {
+                       ret = fuse_sense(bank, word, &val);
+                       if (ret)
+                               return ret;
+
+                       if (val != 0) {
+                               printf("mxc_ocotp: The word has been programmed, no more write\n");
+                               return -EPERM;
+                       }
                }
        }
 #endif