diff mbox

[U-Boot,4/6] video: exynos_fimd: Add framework to disable FIMD sysmmu

Message ID 1380540055-469-5-git-send-email-ajaykumar.rs@samsung.com
State Changes Requested
Delegated to: Minkyu Kang
Headers show

Commit Message

Ajay Kumar Sept. 30, 2013, 11:20 a.m. UTC
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.rs@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(+)

Comments

Ajay kumar Oct. 15, 2013, 6:34 a.m. UTC | #1
ping.


On Mon, Sep 30, 2013 at 4:50 PM, Ajay Kumar <ajaykumar.rs@samsung.com>wrote:

> 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.rs@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
>
Simon Glass Oct. 16, 2013, 4:31 p.m. UTC | #2
On Mon, Sep 30, 2013 at 5:20 AM, Ajay Kumar <ajaykumar.rs@samsung.com>wrote:

> 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.rs@samsung.com>
>

Acked-by: Simon Glass <sjg@chromium.org>
diff mbox

Patch

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