Hi Ajay, On 20 December 2013 02:04, Ajay kumar <ajayn...@gmail.com> wrote: > > >> Hi Simon, >> >> >> On Fri, Dec 20, 2013 at 2:09 AM, Simon Glass <s...@chromium.org> wrote: >>> >>> Hi Ajay, >>> >>> On 12 November 2013 05:27, Ajay Kumar <ajaykumar...@samsung.com> wrote: >>> > On Exynos5420 and newer versions, 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, >>> > and disables FIMD sysmmu on Exynos5420. >>> > >>> > Signed-off-by: Ajay Kumar <ajaykumar...@samsung.com> >>> >>> Acked-by: Simon Glass <s...@chromium.org> >>> >>> See a nit below if you re-issue this series. >>> >>> > --- >>> > arch/arm/dts/exynos5420.dtsi | 7 +++++++ >>> > doc/device-tree-bindings/video/exynos-fb.txt | 4 ++++ >>> > drivers/video/exynos_fimd.c | 24 >>> > ++++++++++++++++++++++++ >>> > 3 files changed, 35 insertions(+) >>> > >>> > diff --git a/arch/arm/dts/exynos5420.dtsi >>> > b/arch/arm/dts/exynos5420.dtsi >>> > index ca6c605..7443953 100644 >>> > --- a/arch/arm/dts/exynos5420.dtsi >>> > +++ b/arch/arm/dts/exynos5420.dtsi >>> > @@ -71,4 +71,11 @@ >>> > reg = <0x12E20000 0x100>; >>> > interrupts = <0 203 0>; >>> > }; >>> > + >>> > + fimd@14400000 { >>> > + /* sysmmu is not used in U-Boot */ >>> > + samsung,disable-sysmmu; >>> > + samsung,sysmmu-fimdm0 = <0x14640000>; >>> > + samsung,sysmmu-fimdm1 = <0x14680000>; >>> > + }; >>> > }; >>> > diff --git a/doc/device-tree-bindings/video/exynos-fb.txt >>> > b/doc/device-tree-bindings/video/exynos-fb.txt >>> > index bb7441c..9ba2c47 100644 >>> > --- a/doc/device-tree-bindings/video/exynos-fb.txt >>> > +++ b/doc/device-tree-bindings/video/exynos-fb.txt >>> > @@ -55,6 +55,10 @@ 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 and newer versions) >>> > + samsung,sysmmu-fimdm0: Address of sysmmufimdm0 MMU_CTRL >>> > + samsung,sysmmu-fimdm1: Address of sysmmufimdm1 MMU_CTRL >>> >>> Is this a kernel binding? >>> >> No. In kernel, we have DT nodes for FIMD symmus as well. >> How about creating FIMD sysmmu nodes in u-boot as well and use them inside >> exynos_fimd.c, rather than giving the sysmmu base addresses as a FIMD DT >> property?
That does seem better. We should be careful about creating new bindings that don't exist in the kernel. >>> >>> > >>> > Example: >>> > SOC specific part: >>> > diff --git a/drivers/video/exynos_fimd.c b/drivers/video/exynos_fimd.c >>> > index f962c4f..bffc8fa 100644 >>> > --- a/drivers/video/exynos_fimd.c >>> > +++ b/drivers/video/exynos_fimd.c >>> > @@ -257,6 +257,7 @@ void exynos_fimd_lcd_init(vidinfo_t *vid) >>> > unsigned int offset; >>> > #ifdef CONFIG_OF_CONTROL >>> > unsigned int node; >>> > + u32 *sysmmufimdm0, *sysmmufimdm1; >>> > >>> > node = fdtdec_next_compatible(gd->fdt_blob, >>> > 0, COMPAT_SAMSUNG_EXYNOS_FIMD); >>> > @@ -267,6 +268,29 @@ 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 register MMU_CTRL is >>> > 3 >>> > + * on Exynos5420 and newer versions. >>> > + * This means FIMD SYSMMU is on by default on Exynos5420 >>> > + * and newer versions. >>> > + * Since in u-boot we don't use SYSMMU, we should >>> > disable >>> > + * those FIMD SYSMMU. >>> > + */ >>> > + sysmmufimdm0 = (u32 *)fdtdec_get_int(gd->fdt_blob, >>> > node, >>> > + >>> > "samsung,sysmmu-fimdm0", 0); >>> >>> fdtdec_get_addr() might be better. >>> >>> >>> > + if (!sysmmufimdm0) >>> > + debug("Can't get sysmmufimdm0"); >>> > + >>> > + sysmmufimdm1 = (u32 *)fdtdec_get_int(gd->fdt_blob, >>> > node, >>> > + >>> > "samsung,sysmmu-fimdm1", 0); >>> > + if (!sysmmufimdm1) >>> > + debug("Can't get sysmmufimdm1"); >>> > + >>> > + writel(0x0, sysmmufimdm0); >>> > + writel(0x0, sysmmufimdm1); >>> > + } >>> > #else >>> > fimd_ctrl = (struct exynos_fb *)samsung_get_base_fimd(); >>> > #endif >>> > -- >>> > 1.7.12.4 >>> > >>> >>> Regards, >>> Simon >>> _______________________________________________ >>> U-Boot mailing list >>> U-Boot@lists.denx.de >>> http://lists.denx.de/mailman/listinfo/u-boot >> >> >> >> Thanks and Regards, >> Ajay >> > Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot