diff mbox

[4/6] ARM: shmobile: r8a7740: Prepare for reference DT setup

Message ID 1365083144-16085-4-git-send-email-hechtb+renesas@gmail.com (mailing list archive)
State Superseded
Headers show

Commit Message

Bastian Hecht April 4, 2013, 1:45 p.m. UTC
We need two steps to prepare for the new Armadillo reference DT board code:
 - Split the device list into r8a7740_early_devices used by the old platform
   data setup (board-armadillo.c) and r8a7740_devices_dt used by both
   setup variants.
 - Introduce new r8a7740_init_delay() to be more flexible about calling
   shmobile_setup_delay().

This is similar to commit 3b00f9342623a5ebc
"ARM: shmobile: sh73a0: Do not use early devices with DT reference"

Signed-off-by: Bastian Hecht <hechtb+renesas@gmail.com>
---
 arch/arm/mach-shmobile/include/mach/r8a7740.h |    2 ++
 arch/arm/mach-shmobile/setup-r8a7740.c        |   41 +++++++++++++------------
 2 files changed, 23 insertions(+), 20 deletions(-)

Comments

Laurent Pinchart April 4, 2013, 2:07 p.m. UTC | #1
Hi Bastian,

Thanks for the patch.

On Thursday 04 April 2013 15:45:42 Bastian Hecht wrote:
> We need two steps to prepare for the new Armadillo reference DT board code:
>  - Split the device list into r8a7740_early_devices used by the old platform
> data setup (board-armadillo.c) and r8a7740_devices_dt used by both setup
> variants.
>  - Introduce new r8a7740_init_delay() to be more flexible about calling
>    shmobile_setup_delay().
> 
> This is similar to commit 3b00f9342623a5ebc
> "ARM: shmobile: sh73a0: Do not use early devices with DT reference"
> 
> Signed-off-by: Bastian Hecht <hechtb+renesas@gmail.com>
> ---
>  arch/arm/mach-shmobile/include/mach/r8a7740.h |    2 ++
>  arch/arm/mach-shmobile/setup-r8a7740.c        |   41 +++++++++++-----------
>  2 files changed, 23 insertions(+), 20 deletions(-)
> 
> diff --git a/arch/arm/mach-shmobile/include/mach/r8a7740.h
> b/arch/arm/mach-shmobile/include/mach/r8a7740.h index abdc4d4..61df082
> 100644
> --- a/arch/arm/mach-shmobile/include/mach/r8a7740.h
> +++ b/arch/arm/mach-shmobile/include/mach/r8a7740.h
> @@ -533,10 +533,12 @@ enum {
>  };
> 
>  extern void r8a7740_meram_workaround(void);
> +extern void r8a7740_init_delay(void);
>  extern void r8a7740_init_irq(void);
>  extern void r8a7740_map_io(void);
>  extern void r8a7740_add_early_devices(void);
>  extern void r8a7740_add_standard_devices(void);
> +extern void r8a7740_add_standard_devices_dt(void);
>  extern void r8a7740_clock_init(u8 md_ck);
>  extern void r8a7740_pinmux_init(void);
>  extern void r8a7740_pm_init(void);
> diff --git a/arch/arm/mach-shmobile/setup-r8a7740.c
> b/arch/arm/mach-shmobile/setup-r8a7740.c index 228d7ab..ce0d2e6 100644
> --- a/arch/arm/mach-shmobile/setup-r8a7740.c
> +++ b/arch/arm/mach-shmobile/setup-r8a7740.c
> @@ -531,11 +531,7 @@ static struct platform_device ipmmu_device = {
>  	.num_resources  = ARRAY_SIZE(ipmmu_resources),
>  };
> 
> -static struct platform_device *r8a7740_early_devices[] __initdata = {
> -	&irqpin0_device,
> -	&irqpin1_device,
> -	&irqpin2_device,
> -	&irqpin3_device,
> +static struct platform_device *r8a7740_devices_dt[] __initdata = {
>  	&scif0_device,
>  	&scif1_device,
>  	&scif2_device,
> @@ -546,6 +542,13 @@ static struct platform_device *r8a7740_early_devices[]
> __initdata = { &scif7_device,
>  	&scifb_device,
>  	&cmt10_device,
> +};
> +
> +static struct platform_device *r8a7740_early_devices[] __initdata = {
> +	&irqpin0_device,
> +	&irqpin1_device,
> +	&irqpin2_device,
> +	&irqpin3_device,
>  	&tmu00_device,
>  	&tmu01_device,
>  	&tmu02_device,
> @@ -965,6 +968,8 @@ void __init r8a7740_add_standard_devices(void)
>  	/* add devices */
>  	platform_add_devices(r8a7740_early_devices,
>  			    ARRAY_SIZE(r8a7740_early_devices));
> +	platform_add_devices(r8a7740_devices_dt,
> +			    ARRAY_SIZE(r8a7740_devices_dt));
>  	platform_add_devices(r8a7740_late_devices,
>  			     ARRAY_SIZE(r8a7740_late_devices));
> 
> @@ -991,31 +996,27 @@ void __init r8a7740_add_early_devices(void)
>  	shmobile_setup_console();
>  }
> 
> -#ifdef CONFIG_USE_OF
> -
> -void __init r8a7740_add_early_devices_dt(void)
> +void __init r8a7740_init_delay(void)
>  {
>  	shmobile_setup_delay(800, 1, 3); /* Cortex-A9 @ 800MHz */
> +};
> 
> -	early_platform_add_devices(r8a7740_early_devices,
> -				   ARRAY_SIZE(r8a7740_early_devices));
> -
> -	/* setup early console here as well */
> -	shmobile_setup_console();
> +void __init r8a7740_generic_init_early(void)

static void ?

> +{
> +	r8a7740_clock_init(0);
> +	r8a7740_init_delay();
>  }
> 
> +#ifdef CONFIG_USE_OF
> +
>  static const struct of_dev_auxdata r8a7740_auxdata_lookup[] __initconst = {
> { }
>  };
> 
>  void __init r8a7740_add_standard_devices_dt(void)
>  {
> -	/* clocks are setup late during boot in the case of DT */
> -	r8a7740_clock_init(0);
> -
> -	platform_add_devices(r8a7740_early_devices,
> -			    ARRAY_SIZE(r8a7740_early_devices));
> -
> +	platform_add_devices(r8a7740_devices_dt,
> +			    ARRAY_SIZE(r8a7740_devices_dt));
>  	of_platform_populate(NULL, of_default_bus_match_table,
>  			     r8a7740_auxdata_lookup, NULL);
>  }
> @@ -1027,7 +1028,7 @@ static const char *r8a7740_boards_compat_dt[]
> __initdata = {
> 
>  DT_MACHINE_START(R8A7740_DT, "Generic R8A7740 (Flattened Device Tree)")
>  	.map_io		= r8a7740_map_io,
> -	.init_early	= r8a7740_add_early_devices_dt,
> +	.init_early	= r8a7740_generic_init_early,
>  	.init_irq	= r8a7740_init_irq,
>  	.init_machine	= r8a7740_add_standard_devices_dt,
>  	.init_time	= shmobile_timer_init,
Bastian Hecht April 4, 2013, 4:04 p.m. UTC | #2
Hi Laurent,

2013/4/4 Laurent Pinchart <laurent.pinchart@ideasonboard.com>:
> Hi Bastian,
>
> Thanks for the patch.
>
> On Thursday 04 April 2013 15:45:42 Bastian Hecht wrote:
>> We need two steps to prepare for the new Armadillo reference DT board code:
>>  - Split the device list into r8a7740_early_devices used by the old platform
>> data setup (board-armadillo.c) and r8a7740_devices_dt used by both setup
>> variants.
>>  - Introduce new r8a7740_init_delay() to be more flexible about calling
>>    shmobile_setup_delay().
>>
>> This is similar to commit 3b00f9342623a5ebc
>> "ARM: shmobile: sh73a0: Do not use early devices with DT reference"
>>
>> Signed-off-by: Bastian Hecht <hechtb+renesas@gmail.com>
>> ---
>>  arch/arm/mach-shmobile/include/mach/r8a7740.h |    2 ++
>>  arch/arm/mach-shmobile/setup-r8a7740.c        |   41 +++++++++++-----------
>>  2 files changed, 23 insertions(+), 20 deletions(-)
>>
>> diff --git a/arch/arm/mach-shmobile/include/mach/r8a7740.h
>> b/arch/arm/mach-shmobile/include/mach/r8a7740.h index abdc4d4..61df082
>> 100644
>> --- a/arch/arm/mach-shmobile/include/mach/r8a7740.h
>> +++ b/arch/arm/mach-shmobile/include/mach/r8a7740.h
>> @@ -533,10 +533,12 @@ enum {
>>  };
>>
>>  extern void r8a7740_meram_workaround(void);
>> +extern void r8a7740_init_delay(void);
>>  extern void r8a7740_init_irq(void);
>>  extern void r8a7740_map_io(void);
>>  extern void r8a7740_add_early_devices(void);
>>  extern void r8a7740_add_standard_devices(void);
>> +extern void r8a7740_add_standard_devices_dt(void);
>>  extern void r8a7740_clock_init(u8 md_ck);
>>  extern void r8a7740_pinmux_init(void);
>>  extern void r8a7740_pm_init(void);
>> diff --git a/arch/arm/mach-shmobile/setup-r8a7740.c
>> b/arch/arm/mach-shmobile/setup-r8a7740.c index 228d7ab..ce0d2e6 100644
>> --- a/arch/arm/mach-shmobile/setup-r8a7740.c
>> +++ b/arch/arm/mach-shmobile/setup-r8a7740.c
>> @@ -531,11 +531,7 @@ static struct platform_device ipmmu_device = {
>>       .num_resources  = ARRAY_SIZE(ipmmu_resources),
>>  };
>>
>> -static struct platform_device *r8a7740_early_devices[] __initdata = {
>> -     &irqpin0_device,
>> -     &irqpin1_device,
>> -     &irqpin2_device,
>> -     &irqpin3_device,
>> +static struct platform_device *r8a7740_devices_dt[] __initdata = {
>>       &scif0_device,
>>       &scif1_device,
>>       &scif2_device,
>> @@ -546,6 +542,13 @@ static struct platform_device *r8a7740_early_devices[]
>> __initdata = { &scif7_device,
>>       &scifb_device,
>>       &cmt10_device,
>> +};
>> +
>> +static struct platform_device *r8a7740_early_devices[] __initdata = {
>> +     &irqpin0_device,
>> +     &irqpin1_device,
>> +     &irqpin2_device,
>> +     &irqpin3_device,
>>       &tmu00_device,
>>       &tmu01_device,
>>       &tmu02_device,
>> @@ -965,6 +968,8 @@ void __init r8a7740_add_standard_devices(void)
>>       /* add devices */
>>       platform_add_devices(r8a7740_early_devices,
>>                           ARRAY_SIZE(r8a7740_early_devices));
>> +     platform_add_devices(r8a7740_devices_dt,
>> +                         ARRAY_SIZE(r8a7740_devices_dt));
>>       platform_add_devices(r8a7740_late_devices,
>>                            ARRAY_SIZE(r8a7740_late_devices));
>>
>> @@ -991,31 +996,27 @@ void __init r8a7740_add_early_devices(void)
>>       shmobile_setup_console();
>>  }
>>
>> -#ifdef CONFIG_USE_OF
>> -
>> -void __init r8a7740_add_early_devices_dt(void)
>> +void __init r8a7740_init_delay(void)
>>  {
>>       shmobile_setup_delay(800, 1, 3); /* Cortex-A9 @ 800MHz */
>> +};
>>
>> -     early_platform_add_devices(r8a7740_early_devices,
>> -                                ARRAY_SIZE(r8a7740_early_devices));
>> -
>> -     /* setup early console here as well */
>> -     shmobile_setup_console();
>> +void __init r8a7740_generic_init_early(void)
>
> static void ?

I'm not sure, other people might want to use that in their board code
when they don't have the need to set up the clocks with some special
flags like we need it for Armadillo.

Thanks,

 Bastian

>> +{
>> +     r8a7740_clock_init(0);
>> +     r8a7740_init_delay();
>>  }
>>
>> +#ifdef CONFIG_USE_OF
>> +
>>  static const struct of_dev_auxdata r8a7740_auxdata_lookup[] __initconst = {
>> { }
>>  };
>>
>>  void __init r8a7740_add_standard_devices_dt(void)
>>  {
>> -     /* clocks are setup late during boot in the case of DT */
>> -     r8a7740_clock_init(0);
>> -
>> -     platform_add_devices(r8a7740_early_devices,
>> -                         ARRAY_SIZE(r8a7740_early_devices));
>> -
>> +     platform_add_devices(r8a7740_devices_dt,
>> +                         ARRAY_SIZE(r8a7740_devices_dt));
>>       of_platform_populate(NULL, of_default_bus_match_table,
>>                            r8a7740_auxdata_lookup, NULL);
>>  }
>> @@ -1027,7 +1028,7 @@ static const char *r8a7740_boards_compat_dt[]
>> __initdata = {
>>
>>  DT_MACHINE_START(R8A7740_DT, "Generic R8A7740 (Flattened Device Tree)")
>>       .map_io         = r8a7740_map_io,
>> -     .init_early     = r8a7740_add_early_devices_dt,
>> +     .init_early     = r8a7740_generic_init_early,
>>       .init_irq       = r8a7740_init_irq,
>>       .init_machine   = r8a7740_add_standard_devices_dt,
>>       .init_time      = shmobile_timer_init,
> --
> Regards,
>
> Laurent Pinchart
>
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Laurent Pinchart April 5, 2013, 12:07 a.m. UTC | #3
Hi Bastian,

On Thursday 04 April 2013 18:04:40 Bastian Hecht wrote:
> 2013/4/4 Laurent Pinchart <laurent.pinchart@ideasonboard.com>:
> > Hi Bastian,
> > 
> > Thanks for the patch.
> > 
> > On Thursday 04 April 2013 15:45:42 Bastian Hecht wrote:
> >> We need two steps to prepare for the new Armadillo reference DT board
> >> code:
> >>  - Split the device list into r8a7740_early_devices used by the old
> >>  platform data setup (board-armadillo.c) and r8a7740_devices_dt used by
> >>  both setup variants.
> >> 
> >>  - Introduce new r8a7740_init_delay() to be more flexible about calling
> >>    shmobile_setup_delay().
> >> 
> >> This is similar to commit 3b00f9342623a5ebc
> >> "ARM: shmobile: sh73a0: Do not use early devices with DT reference"
> >> 
> >> Signed-off-by: Bastian Hecht <hechtb+renesas@gmail.com>
> >> ---
> >> 
> >>  arch/arm/mach-shmobile/include/mach/r8a7740.h |    2 ++
> >>  arch/arm/mach-shmobile/setup-r8a7740.c        |   41   +++++++++--------
> >>  2 files changed, 23 insertions(+), 20 deletions(-)

[snip]

> >> diff --git a/arch/arm/mach-shmobile/setup-r8a7740.c
> >> b/arch/arm/mach-shmobile/setup-r8a7740.c index 228d7ab..ce0d2e6 100644
> >> --- a/arch/arm/mach-shmobile/setup-r8a7740.c
> >> +++ b/arch/arm/mach-shmobile/setup-r8a7740.c

[snip]

> >> +void __init r8a7740_generic_init_early(void)
> > 
> > static void ?
> 
> I'm not sure, other people might want to use that in their board code
> when they don't have the need to set up the clocks with some special
> flags like we need it for Armadillo.

In that case they will need to patch the header file to declare 
r8a7740_generic_init_early, so they could as well remove the static at that 
point.

> >> +{
> >> +     r8a7740_clock_init(0);
> >> +     r8a7740_init_delay();
> >> 
> >>  }
Kuninori Morimoto April 5, 2013, 1:16 a.m. UTC | #4
Hi Bastian

Thank you for your patch

> We need two steps to prepare for the new Armadillo reference DT board code:
>  - Split the device list into r8a7740_early_devices used by the old platform
>    data setup (board-armadillo.c) and r8a7740_devices_dt used by both
>    setup variants.
>  - Introduce new r8a7740_init_delay() to be more flexible about calling
>    shmobile_setup_delay().
> 
> This is similar to commit 3b00f9342623a5ebc
> "ARM: shmobile: sh73a0: Do not use early devices with DT reference"
> 
> Signed-off-by: Bastian Hecht <hechtb+renesas@gmail.com>
> ---

Unfortunately, setup-xxx.c DT style between existing chip (= H1/sh73a0/A1)
and new chip (= APE6/M1/H2) are different now.

I know A1 setup.c already have DT support,
so, I think that it is not easy to make it completely
the same style as APE6/M1/H1/H2 style. 

And, I'm not sure when/who/how do it,
(do it or doesn't it ?)
but we will try to exchange
H1/sh73a0/A1 setup.c DT style in the future.

So, this is just information

Could you please check below my comments, 
and Magnus <--> Arnd email thread on this patch series ?

[PATCH x/x] ARM: shmobile: r8a73a4 xxxx


>  arch/arm/mach-shmobile/include/mach/r8a7740.h |    2 ++
>  arch/arm/mach-shmobile/setup-r8a7740.c        |   41 +++++++++++++------------
>  2 files changed, 23 insertions(+), 20 deletions(-)
> 
> diff --git a/arch/arm/mach-shmobile/include/mach/r8a7740.h b/arch/arm/mach-shmobile/include/mach/r8a7740.h
> index abdc4d4..61df082 100644
> --- a/arch/arm/mach-shmobile/include/mach/r8a7740.h
> +++ b/arch/arm/mach-shmobile/include/mach/r8a7740.h
> @@ -533,10 +533,12 @@ enum {
>  };
>  
>  extern void r8a7740_meram_workaround(void);
> +extern void r8a7740_init_delay(void);
>  extern void r8a7740_init_irq(void);
>  extern void r8a7740_map_io(void);
>  extern void r8a7740_add_early_devices(void);
>  extern void r8a7740_add_standard_devices(void);
> +extern void r8a7740_add_standard_devices_dt(void);
>  extern void r8a7740_clock_init(u8 md_ck);
>  extern void r8a7740_pinmux_init(void);
>  extern void r8a7740_pm_init(void);
> diff --git a/arch/arm/mach-shmobile/setup-r8a7740.c b/arch/arm/mach-shmobile/setup-r8a7740.c
> index 228d7ab..ce0d2e6 100644
> --- a/arch/arm/mach-shmobile/setup-r8a7740.c
> +++ b/arch/arm/mach-shmobile/setup-r8a7740.c
> @@ -531,11 +531,7 @@ static struct platform_device ipmmu_device = {
>  	.num_resources  = ARRAY_SIZE(ipmmu_resources),
>  };
>  
> -static struct platform_device *r8a7740_early_devices[] __initdata = {
> -	&irqpin0_device,
> -	&irqpin1_device,
> -	&irqpin2_device,
> -	&irqpin3_device,
> +static struct platform_device *r8a7740_devices_dt[] __initdata = {
>  	&scif0_device,
>  	&scif1_device,
>  	&scif2_device,
> @@ -546,6 +542,13 @@ static struct platform_device *r8a7740_early_devices[] __initdata = {
>  	&scif7_device,
>  	&scifb_device,
>  	&cmt10_device,
> +};
> +
> +static struct platform_device *r8a7740_early_devices[] __initdata = {
> +	&irqpin0_device,
> +	&irqpin1_device,
> +	&irqpin2_device,
> +	&irqpin3_device,
>  	&tmu00_device,
>  	&tmu01_device,
>  	&tmu02_device,
> @@ -965,6 +968,8 @@ void __init r8a7740_add_standard_devices(void)
>  	/* add devices */
>  	platform_add_devices(r8a7740_early_devices,
>  			    ARRAY_SIZE(r8a7740_early_devices));
> +	platform_add_devices(r8a7740_devices_dt,
> +			    ARRAY_SIZE(r8a7740_devices_dt));
>  	platform_add_devices(r8a7740_late_devices,
>  			     ARRAY_SIZE(r8a7740_late_devices));

This is for our note.
We will not use platform_add_devices() in the future.
But, I think, these could be changed collectively later.

> @@ -991,31 +996,27 @@ void __init r8a7740_add_early_devices(void)
>  	shmobile_setup_console();
>  }
>  
> -#ifdef CONFIG_USE_OF
> -
> -void __init r8a7740_add_early_devices_dt(void)
> +void __init r8a7740_init_delay(void)
>  {
>  	shmobile_setup_delay(800, 1, 3); /* Cortex-A9 @ 800MHz */
> +};
>  
> -	early_platform_add_devices(r8a7740_early_devices,
> -				   ARRAY_SIZE(r8a7740_early_devices));
> -
> -	/* setup early console here as well */
> -	shmobile_setup_console();
> +void __init r8a7740_generic_init_early(void)
> +{
> +	r8a7740_clock_init(0);
> +	r8a7740_init_delay();
>  }

Current APE6/M1/H1/H2 doesn't call {CPU}_clock_init() from setup.c
It will be called from board.c now

> +#ifdef CONFIG_USE_OF
> +
>  static const struct of_dev_auxdata r8a7740_auxdata_lookup[] __initconst = {
>  	{ }
>  };
>  
>  void __init r8a7740_add_standard_devices_dt(void)
>  {
> -	/* clocks are setup late during boot in the case of DT */
> -	r8a7740_clock_init(0);
> -
> -	platform_add_devices(r8a7740_early_devices,
> -			    ARRAY_SIZE(r8a7740_early_devices));
> -
> +	platform_add_devices(r8a7740_devices_dt,
> +			    ARRAY_SIZE(r8a7740_devices_dt));
>  	of_platform_populate(NULL, of_default_bus_match_table,
>  			     r8a7740_auxdata_lookup, NULL);
>  }

This is just information.
I'm not sure r8a7740 / armadillo case,
but, current {CPU}_add_standard_devices_dt() on APE6/M1/H1/H2
only have of_platform_populate(),
and it will be removed in the future (?).

Thank you

Best regards
---
Kuninori Morimoto
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Bastian Hecht April 8, 2013, 10:45 a.m. UTC | #5
Hi Morimoto-san,

thanks for pointing out the differences of the board codes, I will
have a look and see if it's appropriate to apply (partially) the new
style or go with the old one.

Cheers,

 Bastian

2013/4/5 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:
>
> Hi Bastian
>
> Thank you for your patch
>
>> We need two steps to prepare for the new Armadillo reference DT board code:
>>  - Split the device list into r8a7740_early_devices used by the old platform
>>    data setup (board-armadillo.c) and r8a7740_devices_dt used by both
>>    setup variants.
>>  - Introduce new r8a7740_init_delay() to be more flexible about calling
>>    shmobile_setup_delay().
>>
>> This is similar to commit 3b00f9342623a5ebc
>> "ARM: shmobile: sh73a0: Do not use early devices with DT reference"
>>
>> Signed-off-by: Bastian Hecht <hechtb+renesas@gmail.com>
>> ---
>
> Unfortunately, setup-xxx.c DT style between existing chip (= H1/sh73a0/A1)
> and new chip (= APE6/M1/H2) are different now.
>
> I know A1 setup.c already have DT support,
> so, I think that it is not easy to make it completely
> the same style as APE6/M1/H1/H2 style.
>
> And, I'm not sure when/who/how do it,
> (do it or doesn't it ?)
> but we will try to exchange
> H1/sh73a0/A1 setup.c DT style in the future.
>
> So, this is just information
>
> Could you please check below my comments,
> and Magnus <--> Arnd email thread on this patch series ?
>
> [PATCH x/x] ARM: shmobile: r8a73a4 xxxx
>
>
>>  arch/arm/mach-shmobile/include/mach/r8a7740.h |    2 ++
>>  arch/arm/mach-shmobile/setup-r8a7740.c        |   41 +++++++++++++------------
>>  2 files changed, 23 insertions(+), 20 deletions(-)
>>
>> diff --git a/arch/arm/mach-shmobile/include/mach/r8a7740.h b/arch/arm/mach-shmobile/include/mach/r8a7740.h
>> index abdc4d4..61df082 100644
>> --- a/arch/arm/mach-shmobile/include/mach/r8a7740.h
>> +++ b/arch/arm/mach-shmobile/include/mach/r8a7740.h
>> @@ -533,10 +533,12 @@ enum {
>>  };
>>
>>  extern void r8a7740_meram_workaround(void);
>> +extern void r8a7740_init_delay(void);
>>  extern void r8a7740_init_irq(void);
>>  extern void r8a7740_map_io(void);
>>  extern void r8a7740_add_early_devices(void);
>>  extern void r8a7740_add_standard_devices(void);
>> +extern void r8a7740_add_standard_devices_dt(void);
>>  extern void r8a7740_clock_init(u8 md_ck);
>>  extern void r8a7740_pinmux_init(void);
>>  extern void r8a7740_pm_init(void);
>> diff --git a/arch/arm/mach-shmobile/setup-r8a7740.c b/arch/arm/mach-shmobile/setup-r8a7740.c
>> index 228d7ab..ce0d2e6 100644
>> --- a/arch/arm/mach-shmobile/setup-r8a7740.c
>> +++ b/arch/arm/mach-shmobile/setup-r8a7740.c
>> @@ -531,11 +531,7 @@ static struct platform_device ipmmu_device = {
>>       .num_resources  = ARRAY_SIZE(ipmmu_resources),
>>  };
>>
>> -static struct platform_device *r8a7740_early_devices[] __initdata = {
>> -     &irqpin0_device,
>> -     &irqpin1_device,
>> -     &irqpin2_device,
>> -     &irqpin3_device,
>> +static struct platform_device *r8a7740_devices_dt[] __initdata = {
>>       &scif0_device,
>>       &scif1_device,
>>       &scif2_device,
>> @@ -546,6 +542,13 @@ static struct platform_device *r8a7740_early_devices[] __initdata = {
>>       &scif7_device,
>>       &scifb_device,
>>       &cmt10_device,
>> +};
>> +
>> +static struct platform_device *r8a7740_early_devices[] __initdata = {
>> +     &irqpin0_device,
>> +     &irqpin1_device,
>> +     &irqpin2_device,
>> +     &irqpin3_device,
>>       &tmu00_device,
>>       &tmu01_device,
>>       &tmu02_device,
>> @@ -965,6 +968,8 @@ void __init r8a7740_add_standard_devices(void)
>>       /* add devices */
>>       platform_add_devices(r8a7740_early_devices,
>>                           ARRAY_SIZE(r8a7740_early_devices));
>> +     platform_add_devices(r8a7740_devices_dt,
>> +                         ARRAY_SIZE(r8a7740_devices_dt));
>>       platform_add_devices(r8a7740_late_devices,
>>                            ARRAY_SIZE(r8a7740_late_devices));
>
> This is for our note.
> We will not use platform_add_devices() in the future.
> But, I think, these could be changed collectively later.
>
>> @@ -991,31 +996,27 @@ void __init r8a7740_add_early_devices(void)
>>       shmobile_setup_console();
>>  }
>>
>> -#ifdef CONFIG_USE_OF
>> -
>> -void __init r8a7740_add_early_devices_dt(void)
>> +void __init r8a7740_init_delay(void)
>>  {
>>       shmobile_setup_delay(800, 1, 3); /* Cortex-A9 @ 800MHz */
>> +};
>>
>> -     early_platform_add_devices(r8a7740_early_devices,
>> -                                ARRAY_SIZE(r8a7740_early_devices));
>> -
>> -     /* setup early console here as well */
>> -     shmobile_setup_console();
>> +void __init r8a7740_generic_init_early(void)
>> +{
>> +     r8a7740_clock_init(0);
>> +     r8a7740_init_delay();
>>  }
>
> Current APE6/M1/H1/H2 doesn't call {CPU}_clock_init() from setup.c
> It will be called from board.c now
>
>> +#ifdef CONFIG_USE_OF
>> +
>>  static const struct of_dev_auxdata r8a7740_auxdata_lookup[] __initconst = {
>>       { }
>>  };
>>
>>  void __init r8a7740_add_standard_devices_dt(void)
>>  {
>> -     /* clocks are setup late during boot in the case of DT */
>> -     r8a7740_clock_init(0);
>> -
>> -     platform_add_devices(r8a7740_early_devices,
>> -                         ARRAY_SIZE(r8a7740_early_devices));
>> -
>> +     platform_add_devices(r8a7740_devices_dt,
>> +                         ARRAY_SIZE(r8a7740_devices_dt));
>>       of_platform_populate(NULL, of_default_bus_match_table,
>>                            r8a7740_auxdata_lookup, NULL);
>>  }
>
> This is just information.
> I'm not sure r8a7740 / armadillo case,
> but, current {CPU}_add_standard_devices_dt() on APE6/M1/H1/H2
> only have of_platform_populate(),
> and it will be removed in the future (?).
>
> Thank you
>
> Best regards
> ---
> Kuninori Morimoto
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kuninori Morimoto April 9, 2013, 12:03 a.m. UTC | #6
Hi Bastian

> thanks for pointing out the differences of the board codes, I will
> have a look and see if it's appropriate to apply (partially) the new
> style or go with the old one.

Thank you for your help !!


> 2013/4/5 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:
> >
> > Hi Bastian
> >
> > Thank you for your patch
> >
> >> We need two steps to prepare for the new Armadillo reference DT board code:
> >>  - Split the device list into r8a7740_early_devices used by the old platform
> >>    data setup (board-armadillo.c) and r8a7740_devices_dt used by both
> >>    setup variants.
> >>  - Introduce new r8a7740_init_delay() to be more flexible about calling
> >>    shmobile_setup_delay().
> >>
> >> This is similar to commit 3b00f9342623a5ebc
> >> "ARM: shmobile: sh73a0: Do not use early devices with DT reference"
> >>
> >> Signed-off-by: Bastian Hecht <hechtb+renesas@gmail.com>
> >> ---
> >
> > Unfortunately, setup-xxx.c DT style between existing chip (= H1/sh73a0/A1)
> > and new chip (= APE6/M1/H2) are different now.
> >
> > I know A1 setup.c already have DT support,
> > so, I think that it is not easy to make it completely
> > the same style as APE6/M1/H1/H2 style.
> >
> > And, I'm not sure when/who/how do it,
> > (do it or doesn't it ?)
> > but we will try to exchange
> > H1/sh73a0/A1 setup.c DT style in the future.
> >
> > So, this is just information
> >
> > Could you please check below my comments,
> > and Magnus <--> Arnd email thread on this patch series ?
> >
> > [PATCH x/x] ARM: shmobile: r8a73a4 xxxx
> >
> >
> >>  arch/arm/mach-shmobile/include/mach/r8a7740.h |    2 ++
> >>  arch/arm/mach-shmobile/setup-r8a7740.c        |   41 +++++++++++++------------
> >>  2 files changed, 23 insertions(+), 20 deletions(-)
> >>
> >> diff --git a/arch/arm/mach-shmobile/include/mach/r8a7740.h b/arch/arm/mach-shmobile/include/mach/r8a7740.h
> >> index abdc4d4..61df082 100644
> >> --- a/arch/arm/mach-shmobile/include/mach/r8a7740.h
> >> +++ b/arch/arm/mach-shmobile/include/mach/r8a7740.h
> >> @@ -533,10 +533,12 @@ enum {
> >>  };
> >>
> >>  extern void r8a7740_meram_workaround(void);
> >> +extern void r8a7740_init_delay(void);
> >>  extern void r8a7740_init_irq(void);
> >>  extern void r8a7740_map_io(void);
> >>  extern void r8a7740_add_early_devices(void);
> >>  extern void r8a7740_add_standard_devices(void);
> >> +extern void r8a7740_add_standard_devices_dt(void);
> >>  extern void r8a7740_clock_init(u8 md_ck);
> >>  extern void r8a7740_pinmux_init(void);
> >>  extern void r8a7740_pm_init(void);
> >> diff --git a/arch/arm/mach-shmobile/setup-r8a7740.c b/arch/arm/mach-shmobile/setup-r8a7740.c
> >> index 228d7ab..ce0d2e6 100644
> >> --- a/arch/arm/mach-shmobile/setup-r8a7740.c
> >> +++ b/arch/arm/mach-shmobile/setup-r8a7740.c
> >> @@ -531,11 +531,7 @@ static struct platform_device ipmmu_device = {
> >>       .num_resources  = ARRAY_SIZE(ipmmu_resources),
> >>  };
> >>
> >> -static struct platform_device *r8a7740_early_devices[] __initdata = {
> >> -     &irqpin0_device,
> >> -     &irqpin1_device,
> >> -     &irqpin2_device,
> >> -     &irqpin3_device,
> >> +static struct platform_device *r8a7740_devices_dt[] __initdata = {
> >>       &scif0_device,
> >>       &scif1_device,
> >>       &scif2_device,
> >> @@ -546,6 +542,13 @@ static struct platform_device *r8a7740_early_devices[] __initdata = {
> >>       &scif7_device,
> >>       &scifb_device,
> >>       &cmt10_device,
> >> +};
> >> +
> >> +static struct platform_device *r8a7740_early_devices[] __initdata = {
> >> +     &irqpin0_device,
> >> +     &irqpin1_device,
> >> +     &irqpin2_device,
> >> +     &irqpin3_device,
> >>       &tmu00_device,
> >>       &tmu01_device,
> >>       &tmu02_device,
> >> @@ -965,6 +968,8 @@ void __init r8a7740_add_standard_devices(void)
> >>       /* add devices */
> >>       platform_add_devices(r8a7740_early_devices,
> >>                           ARRAY_SIZE(r8a7740_early_devices));
> >> +     platform_add_devices(r8a7740_devices_dt,
> >> +                         ARRAY_SIZE(r8a7740_devices_dt));
> >>       platform_add_devices(r8a7740_late_devices,
> >>                            ARRAY_SIZE(r8a7740_late_devices));
> >
> > This is for our note.
> > We will not use platform_add_devices() in the future.
> > But, I think, these could be changed collectively later.
> >
> >> @@ -991,31 +996,27 @@ void __init r8a7740_add_early_devices(void)
> >>       shmobile_setup_console();
> >>  }
> >>
> >> -#ifdef CONFIG_USE_OF
> >> -
> >> -void __init r8a7740_add_early_devices_dt(void)
> >> +void __init r8a7740_init_delay(void)
> >>  {
> >>       shmobile_setup_delay(800, 1, 3); /* Cortex-A9 @ 800MHz */
> >> +};
> >>
> >> -     early_platform_add_devices(r8a7740_early_devices,
> >> -                                ARRAY_SIZE(r8a7740_early_devices));
> >> -
> >> -     /* setup early console here as well */
> >> -     shmobile_setup_console();
> >> +void __init r8a7740_generic_init_early(void)
> >> +{
> >> +     r8a7740_clock_init(0);
> >> +     r8a7740_init_delay();
> >>  }
> >
> > Current APE6/M1/H1/H2 doesn't call {CPU}_clock_init() from setup.c
> > It will be called from board.c now
> >
> >> +#ifdef CONFIG_USE_OF
> >> +
> >>  static const struct of_dev_auxdata r8a7740_auxdata_lookup[] __initconst = {
> >>       { }
> >>  };
> >>
> >>  void __init r8a7740_add_standard_devices_dt(void)
> >>  {
> >> -     /* clocks are setup late during boot in the case of DT */
> >> -     r8a7740_clock_init(0);
> >> -
> >> -     platform_add_devices(r8a7740_early_devices,
> >> -                         ARRAY_SIZE(r8a7740_early_devices));
> >> -
> >> +     platform_add_devices(r8a7740_devices_dt,
> >> +                         ARRAY_SIZE(r8a7740_devices_dt));
> >>       of_platform_populate(NULL, of_default_bus_match_table,
> >>                            r8a7740_auxdata_lookup, NULL);
> >>  }
> >
> > This is just information.
> > I'm not sure r8a7740 / armadillo case,
> > but, current {CPU}_add_standard_devices_dt() on APE6/M1/H1/H2
> > only have of_platform_populate(),
> > and it will be removed in the future (?).
> >
> > Thank you
> >
> > Best regards
> > ---
> > Kuninori Morimoto


Best regards
---
Kuninori Morimoto
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Bastian Hecht April 17, 2013, 9:18 a.m. UTC | #7
Hello Morimoto-san,


2013/4/9 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:
>
> Hi Bastian
>
>> thanks for pointing out the differences of the board codes, I will
>> have a look and see if it's appropriate to apply (partially) the new
>> style or go with the old one.
>
> Thank you for your help !!

I've decided to repost the patch series more or less at it is as I've
got limited resources for it and if I would need to convert both board
files to use the new style we would never get it. So better old style
then nothing.

Sorry,

 Bastian


>
>> 2013/4/5 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:
>> >
>> > Hi Bastian
>> >
>> > Thank you for your patch
>> >
>> >> We need two steps to prepare for the new Armadillo reference DT board code:
>> >>  - Split the device list into r8a7740_early_devices used by the old platform
>> >>    data setup (board-armadillo.c) and r8a7740_devices_dt used by both
>> >>    setup variants.
>> >>  - Introduce new r8a7740_init_delay() to be more flexible about calling
>> >>    shmobile_setup_delay().
>> >>
>> >> This is similar to commit 3b00f9342623a5ebc
>> >> "ARM: shmobile: sh73a0: Do not use early devices with DT reference"
>> >>
>> >> Signed-off-by: Bastian Hecht <hechtb+renesas@gmail.com>
>> >> ---
>> >
>> > Unfortunately, setup-xxx.c DT style between existing chip (= H1/sh73a0/A1)
>> > and new chip (= APE6/M1/H2) are different now.
>> >
>> > I know A1 setup.c already have DT support,
>> > so, I think that it is not easy to make it completely
>> > the same style as APE6/M1/H1/H2 style.
>> >
>> > And, I'm not sure when/who/how do it,
>> > (do it or doesn't it ?)
>> > but we will try to exchange
>> > H1/sh73a0/A1 setup.c DT style in the future.
>> >
>> > So, this is just information
>> >
>> > Could you please check below my comments,
>> > and Magnus <--> Arnd email thread on this patch series ?
>> >
>> > [PATCH x/x] ARM: shmobile: r8a73a4 xxxx
>> >
>> >
>> >>  arch/arm/mach-shmobile/include/mach/r8a7740.h |    2 ++
>> >>  arch/arm/mach-shmobile/setup-r8a7740.c        |   41 +++++++++++++------------
>> >>  2 files changed, 23 insertions(+), 20 deletions(-)
>> >>
>> >> diff --git a/arch/arm/mach-shmobile/include/mach/r8a7740.h b/arch/arm/mach-shmobile/include/mach/r8a7740.h
>> >> index abdc4d4..61df082 100644
>> >> --- a/arch/arm/mach-shmobile/include/mach/r8a7740.h
>> >> +++ b/arch/arm/mach-shmobile/include/mach/r8a7740.h
>> >> @@ -533,10 +533,12 @@ enum {
>> >>  };
>> >>
>> >>  extern void r8a7740_meram_workaround(void);
>> >> +extern void r8a7740_init_delay(void);
>> >>  extern void r8a7740_init_irq(void);
>> >>  extern void r8a7740_map_io(void);
>> >>  extern void r8a7740_add_early_devices(void);
>> >>  extern void r8a7740_add_standard_devices(void);
>> >> +extern void r8a7740_add_standard_devices_dt(void);
>> >>  extern void r8a7740_clock_init(u8 md_ck);
>> >>  extern void r8a7740_pinmux_init(void);
>> >>  extern void r8a7740_pm_init(void);
>> >> diff --git a/arch/arm/mach-shmobile/setup-r8a7740.c b/arch/arm/mach-shmobile/setup-r8a7740.c
>> >> index 228d7ab..ce0d2e6 100644
>> >> --- a/arch/arm/mach-shmobile/setup-r8a7740.c
>> >> +++ b/arch/arm/mach-shmobile/setup-r8a7740.c
>> >> @@ -531,11 +531,7 @@ static struct platform_device ipmmu_device = {
>> >>       .num_resources  = ARRAY_SIZE(ipmmu_resources),
>> >>  };
>> >>
>> >> -static struct platform_device *r8a7740_early_devices[] __initdata = {
>> >> -     &irqpin0_device,
>> >> -     &irqpin1_device,
>> >> -     &irqpin2_device,
>> >> -     &irqpin3_device,
>> >> +static struct platform_device *r8a7740_devices_dt[] __initdata = {
>> >>       &scif0_device,
>> >>       &scif1_device,
>> >>       &scif2_device,
>> >> @@ -546,6 +542,13 @@ static struct platform_device *r8a7740_early_devices[] __initdata = {
>> >>       &scif7_device,
>> >>       &scifb_device,
>> >>       &cmt10_device,
>> >> +};
>> >> +
>> >> +static struct platform_device *r8a7740_early_devices[] __initdata = {
>> >> +     &irqpin0_device,
>> >> +     &irqpin1_device,
>> >> +     &irqpin2_device,
>> >> +     &irqpin3_device,
>> >>       &tmu00_device,
>> >>       &tmu01_device,
>> >>       &tmu02_device,
>> >> @@ -965,6 +968,8 @@ void __init r8a7740_add_standard_devices(void)
>> >>       /* add devices */
>> >>       platform_add_devices(r8a7740_early_devices,
>> >>                           ARRAY_SIZE(r8a7740_early_devices));
>> >> +     platform_add_devices(r8a7740_devices_dt,
>> >> +                         ARRAY_SIZE(r8a7740_devices_dt));
>> >>       platform_add_devices(r8a7740_late_devices,
>> >>                            ARRAY_SIZE(r8a7740_late_devices));
>> >
>> > This is for our note.
>> > We will not use platform_add_devices() in the future.
>> > But, I think, these could be changed collectively later.
>> >
>> >> @@ -991,31 +996,27 @@ void __init r8a7740_add_early_devices(void)
>> >>       shmobile_setup_console();
>> >>  }
>> >>
>> >> -#ifdef CONFIG_USE_OF
>> >> -
>> >> -void __init r8a7740_add_early_devices_dt(void)
>> >> +void __init r8a7740_init_delay(void)
>> >>  {
>> >>       shmobile_setup_delay(800, 1, 3); /* Cortex-A9 @ 800MHz */
>> >> +};
>> >>
>> >> -     early_platform_add_devices(r8a7740_early_devices,
>> >> -                                ARRAY_SIZE(r8a7740_early_devices));
>> >> -
>> >> -     /* setup early console here as well */
>> >> -     shmobile_setup_console();
>> >> +void __init r8a7740_generic_init_early(void)
>> >> +{
>> >> +     r8a7740_clock_init(0);
>> >> +     r8a7740_init_delay();
>> >>  }
>> >
>> > Current APE6/M1/H1/H2 doesn't call {CPU}_clock_init() from setup.c
>> > It will be called from board.c now
>> >
>> >> +#ifdef CONFIG_USE_OF
>> >> +
>> >>  static const struct of_dev_auxdata r8a7740_auxdata_lookup[] __initconst = {
>> >>       { }
>> >>  };
>> >>
>> >>  void __init r8a7740_add_standard_devices_dt(void)
>> >>  {
>> >> -     /* clocks are setup late during boot in the case of DT */
>> >> -     r8a7740_clock_init(0);
>> >> -
>> >> -     platform_add_devices(r8a7740_early_devices,
>> >> -                         ARRAY_SIZE(r8a7740_early_devices));
>> >> -
>> >> +     platform_add_devices(r8a7740_devices_dt,
>> >> +                         ARRAY_SIZE(r8a7740_devices_dt));
>> >>       of_platform_populate(NULL, of_default_bus_match_table,
>> >>                            r8a7740_auxdata_lookup, NULL);
>> >>  }
>> >
>> > This is just information.
>> > I'm not sure r8a7740 / armadillo case,
>> > but, current {CPU}_add_standard_devices_dt() on APE6/M1/H1/H2
>> > only have of_platform_populate(),
>> > and it will be removed in the future (?).
>> >
>> > Thank you
>> >
>> > Best regards
>> > ---
>> > Kuninori Morimoto
>
>
> Best regards
> ---
> Kuninori Morimoto
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kuninori Morimoto April 18, 2013, 12:34 a.m. UTC | #8
Hi Bastian

> >> thanks for pointing out the differences of the board codes, I will
> >> have a look and see if it's appropriate to apply (partially) the new
> >> style or go with the old one.
> >
> > Thank you for your help !!
> 
> I've decided to repost the patch series more or less at it is as I've
> got limited resources for it and if I would need to convert both board
> files to use the new style we would never get it. So better old style
> then nothing.

Thank you for your report.
OK, no problem for me

Best regards
---
Kuninori Morimoto
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/arm/mach-shmobile/include/mach/r8a7740.h b/arch/arm/mach-shmobile/include/mach/r8a7740.h
index abdc4d4..61df082 100644
--- a/arch/arm/mach-shmobile/include/mach/r8a7740.h
+++ b/arch/arm/mach-shmobile/include/mach/r8a7740.h
@@ -533,10 +533,12 @@  enum {
 };
 
 extern void r8a7740_meram_workaround(void);
+extern void r8a7740_init_delay(void);
 extern void r8a7740_init_irq(void);
 extern void r8a7740_map_io(void);
 extern void r8a7740_add_early_devices(void);
 extern void r8a7740_add_standard_devices(void);
+extern void r8a7740_add_standard_devices_dt(void);
 extern void r8a7740_clock_init(u8 md_ck);
 extern void r8a7740_pinmux_init(void);
 extern void r8a7740_pm_init(void);
diff --git a/arch/arm/mach-shmobile/setup-r8a7740.c b/arch/arm/mach-shmobile/setup-r8a7740.c
index 228d7ab..ce0d2e6 100644
--- a/arch/arm/mach-shmobile/setup-r8a7740.c
+++ b/arch/arm/mach-shmobile/setup-r8a7740.c
@@ -531,11 +531,7 @@  static struct platform_device ipmmu_device = {
 	.num_resources  = ARRAY_SIZE(ipmmu_resources),
 };
 
-static struct platform_device *r8a7740_early_devices[] __initdata = {
-	&irqpin0_device,
-	&irqpin1_device,
-	&irqpin2_device,
-	&irqpin3_device,
+static struct platform_device *r8a7740_devices_dt[] __initdata = {
 	&scif0_device,
 	&scif1_device,
 	&scif2_device,
@@ -546,6 +542,13 @@  static struct platform_device *r8a7740_early_devices[] __initdata = {
 	&scif7_device,
 	&scifb_device,
 	&cmt10_device,
+};
+
+static struct platform_device *r8a7740_early_devices[] __initdata = {
+	&irqpin0_device,
+	&irqpin1_device,
+	&irqpin2_device,
+	&irqpin3_device,
 	&tmu00_device,
 	&tmu01_device,
 	&tmu02_device,
@@ -965,6 +968,8 @@  void __init r8a7740_add_standard_devices(void)
 	/* add devices */
 	platform_add_devices(r8a7740_early_devices,
 			    ARRAY_SIZE(r8a7740_early_devices));
+	platform_add_devices(r8a7740_devices_dt,
+			    ARRAY_SIZE(r8a7740_devices_dt));
 	platform_add_devices(r8a7740_late_devices,
 			     ARRAY_SIZE(r8a7740_late_devices));
 
@@ -991,31 +996,27 @@  void __init r8a7740_add_early_devices(void)
 	shmobile_setup_console();
 }
 
-#ifdef CONFIG_USE_OF
-
-void __init r8a7740_add_early_devices_dt(void)
+void __init r8a7740_init_delay(void)
 {
 	shmobile_setup_delay(800, 1, 3); /* Cortex-A9 @ 800MHz */
+};
 
-	early_platform_add_devices(r8a7740_early_devices,
-				   ARRAY_SIZE(r8a7740_early_devices));
-
-	/* setup early console here as well */
-	shmobile_setup_console();
+void __init r8a7740_generic_init_early(void)
+{
+	r8a7740_clock_init(0);
+	r8a7740_init_delay();
 }
 
+#ifdef CONFIG_USE_OF
+
 static const struct of_dev_auxdata r8a7740_auxdata_lookup[] __initconst = {
 	{ }
 };
 
 void __init r8a7740_add_standard_devices_dt(void)
 {
-	/* clocks are setup late during boot in the case of DT */
-	r8a7740_clock_init(0);
-
-	platform_add_devices(r8a7740_early_devices,
-			    ARRAY_SIZE(r8a7740_early_devices));
-
+	platform_add_devices(r8a7740_devices_dt,
+			    ARRAY_SIZE(r8a7740_devices_dt));
 	of_platform_populate(NULL, of_default_bus_match_table,
 			     r8a7740_auxdata_lookup, NULL);
 }
@@ -1027,7 +1028,7 @@  static const char *r8a7740_boards_compat_dt[] __initdata = {
 
 DT_MACHINE_START(R8A7740_DT, "Generic R8A7740 (Flattened Device Tree)")
 	.map_io		= r8a7740_map_io,
-	.init_early	= r8a7740_add_early_devices_dt,
+	.init_early	= r8a7740_generic_init_early,
 	.init_irq	= r8a7740_init_irq,
 	.init_machine	= r8a7740_add_standard_devices_dt,
 	.init_time	= shmobile_timer_init,