From: Thierry Reding <tred...@nvidia.com>

Before booting the Falcon processor, make sure to wait for memory
scrubbing to complete.

Signed-off-by: Thierry Reding <tred...@nvidia.com>
---
 drivers/gpu/drm/tegra/falcon.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/tegra/falcon.c b/drivers/gpu/drm/tegra/falcon.c
index 78c7a0156601..352d05feabb0 100644
--- a/drivers/gpu/drm/tegra/falcon.c
+++ b/drivers/gpu/drm/tegra/falcon.c
@@ -197,11 +197,19 @@ void falcon_exit(struct falcon *falcon)
 int falcon_boot(struct falcon *falcon)
 {
        unsigned long offset;
+       u32 value;
        int err;
 
        if (!falcon->firmware.vaddr)
                return -EINVAL;
 
+       err = readl_poll_timeout(falcon->regs + FALCON_DMACTL, value,
+                                (value & (FALCON_DMACTL_IMEM_SCRUBBING |
+                                          FALCON_DMACTL_DMEM_SCRUBBING)) == 0,
+                                10, 10000);
+       if (err < 0)
+               return err;
+
        falcon_writel(falcon, 0, FALCON_DMACTL);
 
        /* setup the address of the binary data so Falcon can access it later */
-- 
2.19.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to