From d7437bb47f79d2ff5b5a2c218686a09da5fd6de4 Mon Sep 17 00:00:00 2001 From: Jon Lin Date: Thu, 10 Dec 2020 19:37:37 +0800 Subject: [PATCH] drivers: rkflash: Wait for SFC DMA finished when thunder boot Change-Id: I361d6edb3d458557ea05586e0274a0a9f13e6bdf Signed-off-by: Jon Lin --- drivers/rkflash/rksfc_base.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/rkflash/rksfc_base.c b/drivers/rkflash/rksfc_base.c index abf8c21ba1bf..5ad1b96291d0 100644 --- a/drivers/rkflash/rksfc_base.c +++ b/drivers/rkflash/rksfc_base.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -107,6 +108,9 @@ static int rksfc_probe(struct platform_device *pdev) struct resource *mem; void __iomem *membase; int dev_result = -1; +#ifdef CONFIG_ROCKCHIP_THUNDER_BOOT + u32 status; +#endif g_sfc_dev = &pdev->dev; mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); @@ -143,6 +147,12 @@ static int rksfc_probe(struct platform_device *pdev) __func__, g_sfc_info.clk_rate); rksfc_irq_init(); +#ifdef CONFIG_ROCKCHIP_THUNDER_BOOT + if (readl_poll_timeout(membase + SFC_SR, status, + !(status & SFC_BUSY), 10, + 500 * USEC_PER_MSEC)) + dev_err(g_sfc_dev, "Wait for SFC idle timeout!\n"); +#endif #ifdef CONFIG_RK_SFC_NOR dev_result = rkflash_dev_init(g_sfc_info.reg_base, FLASH_TYPE_SFC_NOR, &sfc_nor_ops); #endif