nand: enable the Randomizer module for i.mx7 and i.mx8
authorAlice Guo <alice.guo@nxp.com>
Mon, 4 May 2020 14:09:03 +0000 (22:09 +0800)
committerStefano Babic <sbabic@denx.de>
Sun, 10 May 2020 18:55:20 +0000 (20:55 +0200)
To enable the Randomizer module, set GPMI_ECCCTRL[RANDOMIZER_ENABLE] to
1, then set GPMI_ECCCOUNT[RANDOMIZER_PAGE] to select randomizer page
number needed to be randomized.

Signed-off-by: Alice Guo <alice.guo@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
drivers/mtd/nand/raw/mxs_nand.c

index 3fd21e51f2a8d986bbb79361e26db51bba174883..c3191feca8e9684bbde2764feda2cbcba942bf60 100644 (file)
@@ -710,6 +710,12 @@ static int mxs_nand_ecc_read_page(struct mtd_info *mtd, struct nand_chip *nand,
        d->cmd.pio_words[4] = (dma_addr_t)nand_info->data_buf;
        d->cmd.pio_words[5] = (dma_addr_t)nand_info->oob_buf;
 
+       if ((is_mx7() || is_imx8m()) && nand_info->en_randomizer) {
+               d->cmd.pio_words[2] |= GPMI_ECCCTRL_RANDOMIZER_ENABLE |
+                                      GPMI_ECCCTRL_RANDOMIZER_TYPE2;
+               d->cmd.pio_words[3] |= (page % 256) << 16;
+       }
+
        mxs_dma_desc_append(channel, d);
 
        /* Compile the DMA descriptor - disable the BCH block. */
@@ -871,7 +877,7 @@ static int mxs_nand_ecc_write_page(struct mtd_info *mtd,
                 * The value is between 0-255. For additional details
                 * check 9.6.6.4 of i.MX7D Applications Processor reference
                 */
-               d->cmd.pio_words[3] |= (page % 255) << 16;
+               d->cmd.pio_words[3] |= (page % 256) << 16;
        }
 
        mxs_dma_desc_append(channel, d);