mtd: rawnand: brcmnand: Set appropriate DMA mask
authorFlorian Fainelli <f.fainelli@gmail.com>
Wed, 18 Dec 2019 00:56:35 +0000 (16:56 -0800)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Tue, 21 Jan 2020 19:00:33 +0000 (20:00 +0100)
NAND controllers >= 7.0 with FLASH_DMA support physical addresses up to
40-bit, set an appropriate DMA mask for that purpose.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
drivers/mtd/nand/raw/brcmnand/brcmnand.c

index 1a66b1c..44518da 100644 (file)
@@ -2635,6 +2635,16 @@ int brcmnand_probe(struct platform_device *pdev, struct brcmnand_soc *soc)
                /* initialize the dma version */
                brcmnand_flash_dma_revision_init(ctrl);
 
+               ret = -EIO;
+               if (ctrl->nand_version >= 0x0700)
+                       ret = dma_set_mask_and_coherent(&pdev->dev,
+                                                       DMA_BIT_MASK(40));
+               if (ret)
+                       ret = dma_set_mask_and_coherent(&pdev->dev,
+                                                       DMA_BIT_MASK(32));
+               if (ret)
+                       goto err;
+
                /* linked-list and stop on error */
                flash_dma_writel(ctrl, FLASH_DMA_MODE, FLASH_DMA_MODE_MASK);
                flash_dma_writel(ctrl, FLASH_DMA_ERROR_STATUS, 0);