mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 15:41:40 +00:00
mtd: nand: brcmnand: Add support for flash-dma v0
This change adds support for flash dma v0.0. Signed-off-by: Kamal Dasu <kdasu.kdev@gmail.com> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> [Ported to U-Boot from the Linux kernel] Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Acked-by: William Zhang <william.zhang@broadcom.com> Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
This commit is contained in:
parent
8dafc6b88e
commit
2de9ff609d
1 changed files with 19 additions and 2 deletions
|
@ -120,6 +120,18 @@ enum flash_dma_reg {
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifndef __UBOOT__
|
#ifndef __UBOOT__
|
||||||
|
/* flash_dma registers v0*/
|
||||||
|
static const u16 flash_dma_regs_v0[] = {
|
||||||
|
[FLASH_DMA_REVISION] = 0x00,
|
||||||
|
[FLASH_DMA_FIRST_DESC] = 0x04,
|
||||||
|
[FLASH_DMA_CTRL] = 0x08,
|
||||||
|
[FLASH_DMA_MODE] = 0x0c,
|
||||||
|
[FLASH_DMA_STATUS] = 0x10,
|
||||||
|
[FLASH_DMA_INTERRUPT_DESC] = 0x14,
|
||||||
|
[FLASH_DMA_ERROR_STATUS] = 0x18,
|
||||||
|
[FLASH_DMA_CURRENT_DESC] = 0x1c,
|
||||||
|
};
|
||||||
|
|
||||||
/* flash_dma registers v1*/
|
/* flash_dma registers v1*/
|
||||||
static const u16 flash_dma_regs_v1[] = {
|
static const u16 flash_dma_regs_v1[] = {
|
||||||
[FLASH_DMA_REVISION] = 0x00,
|
[FLASH_DMA_REVISION] = 0x00,
|
||||||
|
@ -614,6 +626,8 @@ static void brcmnand_flash_dma_revision_init(struct brcmnand_controller *ctrl)
|
||||||
/* flash_dma register offsets */
|
/* flash_dma register offsets */
|
||||||
if (ctrl->nand_version >= 0x0703)
|
if (ctrl->nand_version >= 0x0703)
|
||||||
ctrl->flash_dma_offsets = flash_dma_regs_v4;
|
ctrl->flash_dma_offsets = flash_dma_regs_v4;
|
||||||
|
else if (ctrl->nand_version == 0x0602)
|
||||||
|
ctrl->flash_dma_offsets = flash_dma_regs_v0;
|
||||||
else
|
else
|
||||||
ctrl->flash_dma_offsets = flash_dma_regs_v1;
|
ctrl->flash_dma_offsets = flash_dma_regs_v1;
|
||||||
}
|
}
|
||||||
|
@ -1645,8 +1659,11 @@ static void brcmnand_dma_run(struct brcmnand_host *host, dma_addr_t desc)
|
||||||
|
|
||||||
flash_dma_writel(ctrl, FLASH_DMA_FIRST_DESC, lower_32_bits(desc));
|
flash_dma_writel(ctrl, FLASH_DMA_FIRST_DESC, lower_32_bits(desc));
|
||||||
(void)flash_dma_readl(ctrl, FLASH_DMA_FIRST_DESC);
|
(void)flash_dma_readl(ctrl, FLASH_DMA_FIRST_DESC);
|
||||||
flash_dma_writel(ctrl, FLASH_DMA_FIRST_DESC_EXT, upper_32_bits(desc));
|
if (ctrl->nand_version > 0x0602) {
|
||||||
(void)flash_dma_readl(ctrl, FLASH_DMA_FIRST_DESC_EXT);
|
flash_dma_writel(ctrl, FLASH_DMA_FIRST_DESC_EXT,
|
||||||
|
upper_32_bits(desc));
|
||||||
|
(void)flash_dma_readl(ctrl, FLASH_DMA_FIRST_DESC_EXT);
|
||||||
|
}
|
||||||
|
|
||||||
/* Start FLASH_DMA engine */
|
/* Start FLASH_DMA engine */
|
||||||
ctrl->dma_pending = true;
|
ctrl->dma_pending = true;
|
||||||
|
|
Loading…
Reference in a new issue