On Exynos5420, the FIMD sysmmus are in "on state" by default.
We have to disable them in order to make FIMD DMA work.
This patch adds the required framework to exynos_fimd driver
to disable FIMD sysmmu on Exynos5420.

Signed-off-by: Ajay Kumar <ajaykumar...@samsung.com>
---
 arch/arm/dts/exynos5420.dtsi                 |  5 +++++
 doc/device-tree-bindings/video/exynos-fb.txt |  2 ++
 drivers/video/exynos_fimd.c                  | 12 ++++++++++++
 3 files changed, 19 insertions(+)

diff --git a/arch/arm/dts/exynos5420.dtsi b/arch/arm/dts/exynos5420.dtsi
index ca6c605..2d64df8 100644
--- a/arch/arm/dts/exynos5420.dtsi
+++ b/arch/arm/dts/exynos5420.dtsi
@@ -71,4 +71,9 @@
                reg = <0x12E20000 0x100>;
                interrupts = <0 203 0>;
        };
+
+       fimd@14400000 {
+               /* sysmmu is not used in U-Boot */
+               samsung,disable-sysmmu;
+       };
 };
diff --git a/doc/device-tree-bindings/video/exynos-fb.txt 
b/doc/device-tree-bindings/video/exynos-fb.txt
index bb7441c..cddb505 100644
--- a/doc/device-tree-bindings/video/exynos-fb.txt
+++ b/doc/device-tree-bindings/video/exynos-fb.txt
@@ -55,6 +55,8 @@ Board(panel specific):
        samsung,pclk-name: parent clock identifier: 1(MPLL), 2(EPLL), 3(VPLL)
        samsung,sclk-div: parent_clock/source_clock ratio
        samsung,dual-lcd-enabled: 1 if you support two LCD, else 0
+       samsung,disable-sysmmu: present if you want to disable the sysmmu
+                       (needed for Exynos5420)
 
 Example:
 SOC specific part:
diff --git a/drivers/video/exynos_fimd.c b/drivers/video/exynos_fimd.c
index 8c2de4e..410fff1 100644
--- a/drivers/video/exynos_fimd.c
+++ b/drivers/video/exynos_fimd.c
@@ -267,6 +267,18 @@ void exynos_fimd_lcd_init(vidinfo_t *vid)
                                                                node, "reg");
        if (fimd_ctrl == NULL)
                debug("Can't get the FIMD base address\n");
+
+       if (fdtdec_get_bool(gd->fdt_blob, node, "samsung,disable-sysmmu")) {
+               /*
+               * The reset value for FIMD SYSMMU registers
+               * MMU_CTRL:0x14640000 and MMU_CTRL:0x14680000 is 3.
+               * This means FIMD SYSMMU is on by default on Exynos5420.
+               * Since in u-boot we don't use SYSMMU, we are disabling
+               * FIMD SYSMMU.
+               */
+               writel(0x0, 0x14640000);
+               writel(0x0, 0x14680000);
+       }
 #else
        fimd_ctrl = (struct exynos_fb *)samsung_get_base_fimd();
 #endif
-- 
1.7.12.4

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to