diff mbox

[5/7] ARM: sh7372: allow boards supporting booting with or without DT

Message ID 1355503531-7276-6-git-send-email-g.liakhovetski@gmx.de (mailing list archive)
State New, archived
Headers show

Commit Message

Guennadi Liakhovetski Dec. 14, 2012, 4:45 p.m. UTC
For boards booting without DT no changes should be caused by this patch.
When booting with DT, devices, whose drivers support DT probing, will not
be registered.

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
---
 arch/arm/mach-shmobile/setup-sh7372.c |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)

Comments

Simon Horman Dec. 15, 2012, 8:05 a.m. UTC | #1
On Fri, Dec 14, 2012 at 05:45:29PM +0100, Guennadi Liakhovetski wrote:
> For boards booting without DT no changes should be caused by this patch.
> When booting with DT, devices, whose drivers support DT probing, will not
> be registered.

This relates in part to my comment on "ARM: sh7372: support mixed DT and
board code interrupt controller init".

It is my understanding that sh7372_add_standard_devices_dt() already
exists in setup-sh7372.c and that it is appropriate to use for bring
up boards with DT.

> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
> ---
>  arch/arm/mach-shmobile/setup-sh7372.c |   17 ++++++++++++++---
>  1 files changed, 14 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/arm/mach-shmobile/setup-sh7372.c b/arch/arm/mach-shmobile/setup-sh7372.c
> index bbe6e2a..3e6bf3d 100644
> --- a/arch/arm/mach-shmobile/setup-sh7372.c
> +++ b/arch/arm/mach-shmobile/setup-sh7372.c
> @@ -981,9 +981,12 @@ static struct platform_device *sh7372_early_devices[] __initdata = {
>  	&tmu01_device,
>  };
>  
> -static struct platform_device *sh7372_late_devices[] __initdata = {
> +static struct platform_device *sh7372_late_devices_dt[] __initdata = {
>  	&iic0_device,
>  	&iic1_device,
> +};
> +
> +static struct platform_device *sh7372_late_devices[] __initdata = {
>  	&dma0_device,
>  	&dma1_device,
>  	&dma2_device,
> @@ -1012,13 +1015,11 @@ void __init sh7372_add_standard_devices(void)
>  		{ "A3SP", &scif4_device, },
>  		{ "A3SP", &scif5_device, },
>  		{ "A3SP", &scif6_device, },
> -		{ "A3SP", &iic1_device, },
>  		{ "A3SP", &dma0_device, },
>  		{ "A3SP", &dma1_device, },
>  		{ "A3SP", &dma2_device, },
>  		{ "A3SP", &usb_dma0_device, },
>  		{ "A3SP", &usb_dma1_device, },
> -		{ "A4R", &iic0_device, },
>  		{ "A4R", &veu0_device, },
>  		{ "A4R", &veu1_device, },
>  		{ "A4R", &veu2_device, },
> @@ -1027,6 +1028,10 @@ void __init sh7372_add_standard_devices(void)
>  		{ "A4R", &tmu00_device, },
>  		{ "A4R", &tmu01_device, },
>  	};
> +	struct pm_domain_device domain_devices_dt[] = {
> +		{ "A3SP", &iic1_device, },
> +		{ "A4R", &iic0_device, },
> +	};
>  
>  	sh7372_init_pm_domains();
>  
> @@ -1035,9 +1040,15 @@ void __init sh7372_add_standard_devices(void)
>  
>  	platform_add_devices(sh7372_late_devices,
>  			    ARRAY_SIZE(sh7372_late_devices));
> +	if (!of_have_populated_dt())
> +		platform_add_devices(sh7372_late_devices_dt,
> +				     ARRAY_SIZE(sh7372_late_devices_dt));
>  
>  	rmobile_add_devices_to_domains(domain_devices,
>  				       ARRAY_SIZE(domain_devices));
> +	if (!of_have_populated_dt())
> +		rmobile_add_devices_to_domains(domain_devices_dt,
> +					       ARRAY_SIZE(domain_devices_dt));
>  }
>  
>  static void __init sh7372_earlytimer_init(void)
> -- 
> 1.7.2.5
> 
> --
> 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
>
Guennadi Liakhovetski Dec. 17, 2012, 8:07 a.m. UTC | #2
Hi Simon

On Sat, 15 Dec 2012, Simon Horman wrote:

> On Fri, Dec 14, 2012 at 05:45:29PM +0100, Guennadi Liakhovetski wrote:
> > For boards booting without DT no changes should be caused by this patch.
> > When booting with DT, devices, whose drivers support DT probing, will not
> > be registered.
> 
> This relates in part to my comment on "ARM: sh7372: support mixed DT and
> board code interrupt controller init".
> 
> It is my understanding that sh7372_add_standard_devices_dt() already
> exists in setup-sh7372.c and that it is appropriate to use for bring
> up boards with DT.

I think, we partially clarified this already in the discussion of patch 
6/7. This patch makes it possible to use standard functions, e.g. 
sh7372_add_standard_devices() from both DT and non-DT boots. Whereas when 
booting with DT, devices, for which sufficient DT support already exists, 
have to be initialised from DT.

Thanks
Guennadi

> > Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
> > ---
> >  arch/arm/mach-shmobile/setup-sh7372.c |   17 ++++++++++++++---
> >  1 files changed, 14 insertions(+), 3 deletions(-)
> > 
> > diff --git a/arch/arm/mach-shmobile/setup-sh7372.c b/arch/arm/mach-shmobile/setup-sh7372.c
> > index bbe6e2a..3e6bf3d 100644
> > --- a/arch/arm/mach-shmobile/setup-sh7372.c
> > +++ b/arch/arm/mach-shmobile/setup-sh7372.c
> > @@ -981,9 +981,12 @@ static struct platform_device *sh7372_early_devices[] __initdata = {
> >  	&tmu01_device,
> >  };
> >  
> > -static struct platform_device *sh7372_late_devices[] __initdata = {
> > +static struct platform_device *sh7372_late_devices_dt[] __initdata = {
> >  	&iic0_device,
> >  	&iic1_device,
> > +};
> > +
> > +static struct platform_device *sh7372_late_devices[] __initdata = {
> >  	&dma0_device,
> >  	&dma1_device,
> >  	&dma2_device,
> > @@ -1012,13 +1015,11 @@ void __init sh7372_add_standard_devices(void)
> >  		{ "A3SP", &scif4_device, },
> >  		{ "A3SP", &scif5_device, },
> >  		{ "A3SP", &scif6_device, },
> > -		{ "A3SP", &iic1_device, },
> >  		{ "A3SP", &dma0_device, },
> >  		{ "A3SP", &dma1_device, },
> >  		{ "A3SP", &dma2_device, },
> >  		{ "A3SP", &usb_dma0_device, },
> >  		{ "A3SP", &usb_dma1_device, },
> > -		{ "A4R", &iic0_device, },
> >  		{ "A4R", &veu0_device, },
> >  		{ "A4R", &veu1_device, },
> >  		{ "A4R", &veu2_device, },
> > @@ -1027,6 +1028,10 @@ void __init sh7372_add_standard_devices(void)
> >  		{ "A4R", &tmu00_device, },
> >  		{ "A4R", &tmu01_device, },
> >  	};
> > +	struct pm_domain_device domain_devices_dt[] = {
> > +		{ "A3SP", &iic1_device, },
> > +		{ "A4R", &iic0_device, },
> > +	};
> >  
> >  	sh7372_init_pm_domains();
> >  
> > @@ -1035,9 +1040,15 @@ void __init sh7372_add_standard_devices(void)
> >  
> >  	platform_add_devices(sh7372_late_devices,
> >  			    ARRAY_SIZE(sh7372_late_devices));
> > +	if (!of_have_populated_dt())
> > +		platform_add_devices(sh7372_late_devices_dt,
> > +				     ARRAY_SIZE(sh7372_late_devices_dt));
> >  
> >  	rmobile_add_devices_to_domains(domain_devices,
> >  				       ARRAY_SIZE(domain_devices));
> > +	if (!of_have_populated_dt())
> > +		rmobile_add_devices_to_domains(domain_devices_dt,
> > +					       ARRAY_SIZE(domain_devices_dt));
> >  }
> >  
> >  static void __init sh7372_earlytimer_init(void)
> > -- 
> > 1.7.2.5

---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
diff mbox

Patch

diff --git a/arch/arm/mach-shmobile/setup-sh7372.c b/arch/arm/mach-shmobile/setup-sh7372.c
index bbe6e2a..3e6bf3d 100644
--- a/arch/arm/mach-shmobile/setup-sh7372.c
+++ b/arch/arm/mach-shmobile/setup-sh7372.c
@@ -981,9 +981,12 @@  static struct platform_device *sh7372_early_devices[] __initdata = {
 	&tmu01_device,
 };
 
-static struct platform_device *sh7372_late_devices[] __initdata = {
+static struct platform_device *sh7372_late_devices_dt[] __initdata = {
 	&iic0_device,
 	&iic1_device,
+};
+
+static struct platform_device *sh7372_late_devices[] __initdata = {
 	&dma0_device,
 	&dma1_device,
 	&dma2_device,
@@ -1012,13 +1015,11 @@  void __init sh7372_add_standard_devices(void)
 		{ "A3SP", &scif4_device, },
 		{ "A3SP", &scif5_device, },
 		{ "A3SP", &scif6_device, },
-		{ "A3SP", &iic1_device, },
 		{ "A3SP", &dma0_device, },
 		{ "A3SP", &dma1_device, },
 		{ "A3SP", &dma2_device, },
 		{ "A3SP", &usb_dma0_device, },
 		{ "A3SP", &usb_dma1_device, },
-		{ "A4R", &iic0_device, },
 		{ "A4R", &veu0_device, },
 		{ "A4R", &veu1_device, },
 		{ "A4R", &veu2_device, },
@@ -1027,6 +1028,10 @@  void __init sh7372_add_standard_devices(void)
 		{ "A4R", &tmu00_device, },
 		{ "A4R", &tmu01_device, },
 	};
+	struct pm_domain_device domain_devices_dt[] = {
+		{ "A3SP", &iic1_device, },
+		{ "A4R", &iic0_device, },
+	};
 
 	sh7372_init_pm_domains();
 
@@ -1035,9 +1040,15 @@  void __init sh7372_add_standard_devices(void)
 
 	platform_add_devices(sh7372_late_devices,
 			    ARRAY_SIZE(sh7372_late_devices));
+	if (!of_have_populated_dt())
+		platform_add_devices(sh7372_late_devices_dt,
+				     ARRAY_SIZE(sh7372_late_devices_dt));
 
 	rmobile_add_devices_to_domains(domain_devices,
 				       ARRAY_SIZE(domain_devices));
+	if (!of_have_populated_dt())
+		rmobile_add_devices_to_domains(domain_devices_dt,
+					       ARRAY_SIZE(domain_devices_dt));
 }
 
 static void __init sh7372_earlytimer_init(void)