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

login
register
mail settings
Submitter Ajay Kumar
Date Sept. 30, 2013, 11:20 a.m.
Message ID <1380540055-469-5-git-send-email-ajaykumar.rs@samsung.com>
Download mbox | patch
Permalink /patch/279109/
State Changes Requested
Delegated to: Minkyu Kang
Headers show

Comments

Ajay Kumar - Sept. 30, 2013, 11:20 a.m.
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(+)
Ajay kumar - Oct. 15, 2013, 6:34 a.m.
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.
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>

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