Message ID | 1343233066-15397-7-git-send-email-zonque@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wednesday 25 July 2012, Daniel Mack wrote: > Add a DT_MACHINE_START entry for PXA3xx machines and a auxdata table for > some of the devices. This file can be extended to also support pxa2xx > boards. > > Signed-off-by: Daniel Mack <zonque@gmail.com> > --- > arch/arm/mach-pxa/Kconfig | 12 +++++++++ > arch/arm/mach-pxa/Makefile | 3 +++ > arch/arm/mach-pxa/pxa-dt.c | 61 ++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 76 insertions(+) The code looks good, but I wonder if it would be better to add it to the pxa3xx.c file instead. One more comment: > +static const char *pxa3xx_dt_board_compat[] __initdata = { > + "mrvl,pxa3xx", > +}; We should try to avoid wildcards in compatible properties but rather be more specific. I would use separate values for pxa300/310/320/920/930/935 that you could all list here if they have the same auxdata lookup table. Arnd
On 25.07.2012 19:34, Arnd Bergmann wrote: > On Wednesday 25 July 2012, Daniel Mack wrote: >> Add a DT_MACHINE_START entry for PXA3xx machines and a auxdata table for >> some of the devices. This file can be extended to also support pxa2xx >> boards. >> >> Signed-off-by: Daniel Mack <zonque@gmail.com> >> --- >> arch/arm/mach-pxa/Kconfig | 12 +++++++++ >> arch/arm/mach-pxa/Makefile | 3 +++ >> arch/arm/mach-pxa/pxa-dt.c | 61 ++++++++++++++++++++++++++++++++++++++++++++ >> 3 files changed, 76 insertions(+) > > The code looks good, but I wonder if it would be better to add it to the pxa3xx.c > file instead. One more comment: Well, I though having tham separated from the generic code will make things cleaner and also save us one #ifdef. >> +static const char *pxa3xx_dt_board_compat[] __initdata = { >> + "mrvl,pxa3xx", >> +}; > > We should try to avoid wildcards in compatible properties but rather be > more specific. I would use separate values for pxa300/310/320/920/930/935 > that you could all list here if they have the same auxdata lookup table. Ok, makes sense. I'm not sure about 920/930/935, so I'll leave them out for now. Whoever successfully tests these can easly add that lines. I'll wait for some more feedback and then resubmit the whole thing. Thanks for the review, much appreciated. Daniel
On Wednesday 25 July 2012, Daniel Mack wrote: > On 25.07.2012 19:34, Arnd Bergmann wrote: > > On Wednesday 25 July 2012, Daniel Mack wrote: > >> Add a DT_MACHINE_START entry for PXA3xx machines and a auxdata table for > >> some of the devices. This file can be extended to also support pxa2xx > >> boards. > >> > >> Signed-off-by: Daniel Mack <zonque@gmail.com> > >> --- > >> arch/arm/mach-pxa/Kconfig | 12 +++++++++ > >> arch/arm/mach-pxa/Makefile | 3 +++ > >> arch/arm/mach-pxa/pxa-dt.c | 61 ++++++++++++++++++++++++++++++++++++++++++++ > >> 3 files changed, 76 insertions(+) > > > > The code looks good, but I wonder if it would be better to add it to the pxa3xx.c > > file instead. One more comment: > > Well, I though having tham separated from the generic code will make > things cleaner and also save us one #ifdef. For new platforms that are DT-only we usually keep everything in one file, but you're right that it makes some sense to have it separate while most people use non-DT board files. > >> +static const char *pxa3xx_dt_board_compat[] __initdata = { > >> + "mrvl,pxa3xx", > >> +}; > > > > We should try to avoid wildcards in compatible properties but rather be > > more specific. I would use separate values for pxa300/310/320/920/930/935 > > that you could all list here if they have the same auxdata lookup table. > > Ok, makes sense. I'm not sure about 920/930/935, so I'll leave them out > for now. Whoever successfully tests these can easly add that lines. Sounds good. Arnd
diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig index fe2d1f8..8e6288d 100644 --- a/arch/arm/mach-pxa/Kconfig +++ b/arch/arm/mach-pxa/Kconfig @@ -25,6 +25,18 @@ config PXA_V7_MACH_AUTO if !ARCH_PXA_V7 comment "Intel/Marvell Dev Platforms (sorted by hardware release time)" +config MACH_PXA3XX_DT + bool "Support PXA3xx platforms from device tree" + select PXA3xx + select CPU_PXA300 + select POWER_SUPPLY + select HAVE_PWM + select USE_OF + help + Include support for Marvell PXA3xx based platforms using + the device tree. Needn't select any other machine while + MACH_PXA3XX_DT is enabled. + config ARCH_LUBBOCK bool "Intel DBPXA250 Development Platform (aka Lubbock)" select PXA25x diff --git a/arch/arm/mach-pxa/Makefile b/arch/arm/mach-pxa/Makefile index be0f7df..2bedc9e 100644 --- a/arch/arm/mach-pxa/Makefile +++ b/arch/arm/mach-pxa/Makefile @@ -26,6 +26,9 @@ obj-$(CONFIG_CPU_PXA930) += pxa930.o # NOTE: keep the order of boards in accordance to their order in Kconfig +# Device Tree support +obj-$(CONFIG_MACH_PXA3XX_DT) += pxa-dt.o + # Intel/Marvell Dev Platforms obj-$(CONFIG_ARCH_LUBBOCK) += lubbock.o obj-$(CONFIG_MACH_MAINSTONE) += mainstone.o diff --git a/arch/arm/mach-pxa/pxa-dt.c b/arch/arm/mach-pxa/pxa-dt.c new file mode 100644 index 0000000..b46618e --- /dev/null +++ b/arch/arm/mach-pxa/pxa-dt.c @@ -0,0 +1,61 @@ +/* + * linux/arch/arm/mach-pxa/pxa-dt.c + * + * Copyright (C) 2012 Daniel Mack + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * publishhed by the Free Software Foundation. + */ + +#include <linux/irq.h> +#include <linux/irqdomain.h> +#include <linux/of_irq.h> +#include <linux/of_platform.h> +#include <asm/mach/arch.h> +#include <asm/mach/time.h> +#include <mach/irqs.h> +#include <mach/pxa3xx.h> + +#include "generic.h" + +#ifdef CONFIG_PXA3xx +extern void __init pxa3xx_dt_init_irq(void); + +static const struct of_dev_auxdata pxa3xx_auxdata_lookup[] __initconst = { + OF_DEV_AUXDATA("mrvl,pxa-uart", 0x40100000, "pxa2xx-uart.0", NULL), + OF_DEV_AUXDATA("mrvl,pxa-uart", 0x40200000, "pxa2xx-uart.1", NULL), + OF_DEV_AUXDATA("mrvl,pxa-uart", 0x40700000, "pxa2xx-uart.2", NULL), + OF_DEV_AUXDATA("mrvl,pxa-uart", 0x41600000, "pxa2xx-uart.3", NULL), + OF_DEV_AUXDATA("mrvl,pxa-mmc", 0x41100000, "pxa2xx-mci.0", NULL), + OF_DEV_AUXDATA("mrvl,pxa-gpio", 0x40e00000, "pxa-gpio", NULL), + OF_DEV_AUXDATA("mrvl,pxa-ohci", 0x4c000000, "pxa27x-ohci", NULL), + OF_DEV_AUXDATA("mrvl,pxa-i2c", 0x40301680, "pxa2xx-i2c.0", NULL), + OF_DEV_AUXDATA("mrvl,pwri2c", 0x40f500c0, "pxa3xx-i2c.1", NULL), + OF_DEV_AUXDATA("mrvl,pxa3xx-nand", 0x43100000, "pxa3xx-nand", NULL), + {} +}; + +static void __init pxa3xx_dt_init(void) +{ + of_platform_populate(NULL, of_default_bus_match_table, + pxa3xx_auxdata_lookup, NULL); +} + +static const char *pxa3xx_dt_board_compat[] __initdata = { + "mrvl,pxa3xx", + NULL, +}; +#endif + +#ifdef CONFIG_PXA3xx +DT_MACHINE_START(PXA_DT, "Marvell PXA3xx (Device Tree Support)") + .map_io = pxa3xx_map_io, + .init_irq = pxa3xx_dt_init_irq, + .handle_irq = pxa3xx_handle_irq, + .timer = &pxa_timer, + .restart = pxa_restart, + .init_machine = pxa3xx_dt_init, + .dt_compat = pxa3xx_dt_board_compat, +MACHINE_END +#endif
Add a DT_MACHINE_START entry for PXA3xx machines and a auxdata table for some of the devices. This file can be extended to also support pxa2xx boards. Signed-off-by: Daniel Mack <zonque@gmail.com> --- arch/arm/mach-pxa/Kconfig | 12 +++++++++ arch/arm/mach-pxa/Makefile | 3 +++ arch/arm/mach-pxa/pxa-dt.c | 61 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+) create mode 100644 arch/arm/mach-pxa/pxa-dt.c