Subject: [PATCH 1/3] ARM: PRIMA2: use DT_MACHINE_START and convert to generic board

From: [email-masked] (Arnd Bergmann)
Date: Tue, 21 Aug 2012 07:53:12 +0000

On Tuesday 21 August 2012, Barry Song wrote:
> 2012/8/21 Arnd Bergmann <[email-masked]>:
> > On Monday 20 August 2012, Barry Song wrote:
> >
> > I would prefer not to have a board-* file in there, because it's not
> > specific to a board. If you want to get rid of the prima2 name in it,
> > you can call it common.c.
> 
> that is fine to me. i rename to board-generic.c just because omap and
> some others did like that.
> and i'll add marco and polo DT_MACHINE_START to this file too.

Ok. For the older platforms that have a lot of non-DT board files, it makes
sense to have a separate board-generic.c file.

> >> diff --git a/arch/arm/mach-prima2/prima2.c b/arch/arm/mach-prima2/board-generic.c
> >> similarity index 81%
> >> rename from arch/arm/mach-prima2/prima2.c
> >> rename to arch/arm/mach-prima2/board-generic.c
> >> index e9a17ae..f06b887 100644
> >> --- a/arch/arm/mach-prima2/prima2.c
> >> +++ b/arch/arm/mach-prima2/board-generic.c
> >> @@ -30,12 +30,13 @@ void __init sirfsoc_init_late(void)
> >>       sirfsoc_pm_init();
> >>  }
> >>
> >> -static const char *prima2cb_dt_match[] __initdata = {
> >> -       "sirf,prima2-cb",
> >> +#ifdef CONFIG_ARCH_PRIMA2
> >> +static const char *prima2_dt_match[] __initdata = {
> >> +       "sirf,prima2",
> >>         NULL
> >>  };
> >>
> >> -MACHINE_START(PRIMA2_EVB, "prima2cb")
> >> +DT_MACHINE_START(PRIMA2_DT, "Generic PRIMA2 (Flattened Device Tree)")
> >>       /* Maintainer: Barry Song <[email-masked]> */
> >>       .atag_offset    = 0x100,
> >>       .map_io         = sirfsoc_map_lluart,
> >> @@ -44,6 +45,7 @@ MACHINE_START(PRIMA2_EVB, "prima2cb")
> >>       .dma_zone_size  = SZ_256M,
> >>       .init_machine   = sirfsoc_mach_init,
> >>       .init_late      = sirfsoc_init_late,
> >> -     .dt_compat      = prima2cb_dt_match,
> >> +     .dt_compat      = prima2_dt_match,
> >>       .restart        = sirfsoc_restart,
> >>  MACHINE_END
> >> +#endif
> >
> > I suppose this never really worked before then?
> 
> i am not sure what you mean, but this does work and i tested and found
> prima2 can boot normally.

I mean the old version, not the new one. If you use MACHINE_START,
you cannot access the device tree data from the boot loader, which
means that none of the device drivers find their devices.

I also just noticed that you ahve both the .atag_offset and the .dt_compat
field set here, which is a bit strange as the dt_compat field was previously
unused. Now, the .atag_offset field is unused, so you should remove that.

	Arnd