[PATCH v3] ARM: EXYNOS: Add MFC device tree support

Karol Lewandowski k.lewandowsk at samsung.com
Wed Sep 19 19:38:53 EST 2012


On 09/14/2012 05:38 PM, Arun Kumar K wrote:

> This patch adds device tree entry for MFC v6 in the Exynos5
> SoC. Makes the required changes in the clock files and adds
> MFC to the DT device list.


Hi!

Thanks for working on this patch. Please allow me to add few
comments.


> diff --git a/arch/arm/boot/dts/exynos5250.dtsi b/arch/arm/boot/dts/exynos5250.dtsi
> index b55794b..5df2f99 100644
> --- a/arch/arm/boot/dts/exynos5250.dtsi
> +++ b/arch/arm/boot/dts/exynos5250.dtsi
> @@ -62,6 +62,12 @@
>  		interrupts = <0 42 0>;
>  	};
>  
> +	mfc {


Nitpick - shouldn't node names be generic?  MFC is strictly
samsung specific, something like "codec"/"video-codec" would make
more sense (IMVHO). I would prefer to see address too (e.g.
codec at 0x11000000).

However, I do see that rtc below doesn't specify address in node too,
so maybe I'm missing something here.


>  
> +struct mfc_dt_meminfo {
> +	unsigned long loff;
> +	unsigned long lsize;
> +	unsigned long roff;
> +	unsigned long rsize;


  char *compatible;

> +};
> +
> +int fdt_find_mfc_mem(unsigned long node, const char *uname, int depth,
> +		void *data)
> +{
> +	__be32 *prop;
> +	unsigned long len;
> +	struct mfc_dt_meminfo *mfc_mem = data;
> +
> +	if (!of_flat_dt_is_compatible(node, "samsung,mfc-v6"))
> +		return 0;


  if (!of_flat_dt_is_compatible(node, mfc_mem->compatible))
	return 0;

> +
> +	prop = of_get_flat_dt_prop(node, "samsung,mfc-l", &len);
> +	if (!prop)
> +		return 0;
> +	mfc_mem->loff = of_read_ulong(prop, len/4);
> +
> +	prop = of_get_flat_dt_prop(node, "samsung,mfc-l-size", &len);
> +	if (!prop)
> +		return 0;
> +	mfc_mem->lsize = of_read_ulong(prop, len/4);
> +
> +	prop = of_get_flat_dt_prop(node, "samsung,mfc-r", &len);
> +	if (!prop)
> +		return 0;
> +	mfc_mem->roff = of_read_ulong(prop, len/4);
> +
> +	prop = of_get_flat_dt_prop(node, "samsung,mfc-r-size", &len);
> +	if (!prop)
> +		return 0;
> +	mfc_mem->rsize = of_read_ulong(prop, len/4);
> +
> +	return 1;
> +}


Above function could be reused for mfc-v5 (exynos4-dt.c) if compatible
string weren't hardcoded. Thus, please consider changing that and
moving this function to some common(.c?) file - you can see one possible
solution inline.

> +
> +static void __init exynos5_reserve(void)
> +{
> +	struct mfc_dt_meminfo mfc_mem;


        mfc_mem.compatible = "samsung,mfc-v6";

> +
> +	/* Reserve memory for MFC only if it's available */
> +	if (of_scan_flat_dt(fdt_find_mfc_mem, &mfc_mem))
> +		s5p_mfc_reserve_mem(mfc_mem.roff, mfc_mem.rsize, mfc_mem.loff,
> +				mfc_mem.lsize);
> +}
> +
>  DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)")
>  	/* Maintainer: Kukjin Kim <kgene.kim at samsung.com> */
>  	.init_irq	= exynos5_init_irq,
> @@ -94,4 +148,5 @@ DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)")
>  	.timer		= &exynos4_timer,
>  	.dt_compat	= exynos5250_dt_compat,
>  	.restart        = exynos5_restart,
> +	.reserve	= exynos5_reserve,
>  MACHINE_END


Regards,
-- 
Karol Lewandowski | Samsung Poland R&D Center | Linux/Platform


More information about the devicetree-discuss mailing list