ARM: pxa: add pxa25x device-tree support
authorRobert Jarzmik <robert.jarzmik@free.fr>
Sun, 10 Apr 2016 19:29:59 +0000 (21:29 +0200)
committerRobert Jarzmik <robert.jarzmik@free.fr>
Tue, 9 Aug 2016 06:16:59 +0000 (08:16 +0200)
Add a device-tree machine entry (DT_MACHINE_START) for pxa25x based
platforms.

Take the opportunity to sort the file machine descriptions by
alphabetical order.

Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
arch/arm/mach-pxa/Kconfig
arch/arm/mach-pxa/Makefile
arch/arm/mach-pxa/pxa-dt.c
arch/arm/mach-pxa/pxa25x.c

index cd894d6..76fbc11 100644 (file)
@@ -4,6 +4,17 @@ menu "Intel PXA2xx/PXA3xx Implementations"
 
 comment "Intel/Marvell Dev Platforms (sorted by hardware release time)"
 
+config MACH_PXA25X_DT
+       bool "Support PXA25x platforms from device tree"
+       select PINCTRL
+       select POWER_SUPPLY
+       select PXA25x
+       select USE_OF
+       help
+         Include support for Marvell PXA25x based platforms using
+         the device tree. Needn't select any other machine while
+         MACH_PXA25x_DT is enabled.
+
 config MACH_PXA27X_DT
        bool "Support PXA27x platforms from device tree"
        select PINCTRL
index 2ceed40..ef25dc5 100644 (file)
@@ -19,8 +19,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
+obj-$(CONFIG_MACH_PXA25X_DT)   += pxa-dt.o
 obj-$(CONFIG_MACH_PXA27X_DT)   += pxa-dt.o
+obj-$(CONFIG_MACH_PXA3XX_DT)   += pxa-dt.o
 
 # Intel/Marvell Dev Platforms
 obj-$(CONFIG_ARCH_LUBBOCK)     += lubbock.o
index f128133..3e331e6 100644 (file)
 
 #include "generic.h"
 
-#ifdef CONFIG_PXA3xx
-static const char *const pxa3xx_dt_board_compat[] __initconst = {
-       "marvell,pxa300",
-       "marvell,pxa310",
-       "marvell,pxa320",
+#ifdef CONFIG_PXA25x
+static const char * const pxa25x_dt_board_compat[] __initconst = {
+       "marvell,pxa250",
        NULL,
 };
 
-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,
+DT_MACHINE_START(PXA25X_DT, "Marvell PXA25x (Device Tree Support)")
+       .map_io         = pxa25x_map_io,
+       .init_irq       = pxa25x_dt_init_irq,
+       .handle_irq     = pxa25x_handle_irq,
        .restart        = pxa_restart,
-       .dt_compat      = pxa3xx_dt_board_compat,
+       .dt_compat      = pxa25x_dt_board_compat,
 MACHINE_END
 #endif
 
@@ -41,7 +39,7 @@ static const char * const pxa27x_dt_board_compat[] __initconst = {
        NULL,
 };
 
-DT_MACHINE_START(PXA27X_DT, "Marvell PXA2xx (Device Tree Support)")
+DT_MACHINE_START(PXA27X_DT, "Marvell PXA27x (Device Tree Support)")
        .map_io         = pxa27x_map_io,
        .init_irq       = pxa27x_dt_init_irq,
        .handle_irq     = pxa27x_handle_irq,
@@ -49,3 +47,20 @@ DT_MACHINE_START(PXA27X_DT, "Marvell PXA2xx (Device Tree Support)")
        .dt_compat      = pxa27x_dt_board_compat,
 MACHINE_END
 #endif
+
+#ifdef CONFIG_PXA3xx
+static const char *const pxa3xx_dt_board_compat[] __initconst = {
+       "marvell,pxa300",
+       "marvell,pxa310",
+       "marvell,pxa320",
+       NULL,
+};
+
+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,
+       .restart        = pxa_restart,
+       .dt_compat      = pxa3xx_dt_board_compat,
+MACHINE_END
+#endif
index 3aa7aca..30b4270 100644 (file)
@@ -209,12 +209,12 @@ static int __init pxa25x_init(void)
                register_syscore_ops(&pxa_irq_syscore_ops);
                register_syscore_ops(&pxa2xx_mfp_syscore_ops);
 
-               pxa2xx_set_dmac_info(16, 40);
-               pxa_register_device(&pxa25x_device_gpio, &pxa25x_gpio_info);
-               ret = platform_add_devices(pxa25x_devices,
-                                          ARRAY_SIZE(pxa25x_devices));
-               if (ret)
-                       return ret;
+               if (!of_have_populated_dt()) {
+                       pxa2xx_set_dmac_info(16, 40);
+                       pxa_register_device(&pxa25x_device_gpio, &pxa25x_gpio_info);
+                       ret = platform_add_devices(pxa25x_devices,
+                                                  ARRAY_SIZE(pxa25x_devices));
+               }
        }
 
        return ret;