Add support for pxa27x device-tree machine
Subsystems (3)
Robert Jarzmik
maintainerv2 cover Add support for pxa27x device-tree machine
Hi,
This is the second version of this patchset, to provide a device-tree machine support for pxa27x.
Since latest review by Arnd :
- patches 1, 3 and 4 were ok
- patch 2 was respined
Cheers.
--
Robert
Robert Jarzmik (4):
arm: pxa: add device-tree irq init for pxa27x
arm: pxa: move init functions into generic.h
arm: pxa: remove unecessary includes from pxa-dt
arm: pxa: add pxa27x device-tree support
arch/arm/mach-pxa/Kconfig | 11 ++++++ arch/arm/mach-pxa/Makefile | 1 + arch/arm/mach-pxa/generic.h | 65 +++++++++++++++++++++------------ arch/arm/mach-pxa/include/mach/pxa25x.h | 8 ---- arch/arm/mach-pxa/include/mach/pxa27x.h | 4 -- arch/arm/mach-pxa/include/mach/pxa3xx.h | 5 --- arch/arm/mach-pxa/pxa-dt.c | 18 +++++++-- arch/arm/mach-pxa/pxa27x.c | 5 +++ 8 files changed, 74 insertions(+), 43 deletions(-)
Signature · 1 line
2.1.0
Robert Jarzmik
maintainerPATCH v2 1/4 arm: pxa: add device-tree irq init for pxa27x
Add the initializer for irqs in a device-tree machine on a pxa27x.
--- arch/arm/mach-pxa/pxa27x.c | 5 +++++ 1 file changed, 5 insertions(+)
arch/arm/mach-pxa/pxa27x.c +5 -0
@@ -398,6 +398,11 @@ void __init pxa27x_init_irq(void)pxa_init_irq (34 , pxa27x_set_wake); } +void __init pxa27x_dt_init_irq (void ) +{ +pxa_dt_irq_init (pxa27x_set_wake); +} +static struct map_desc pxa27x_io_desc[]__initdata = { {/* Mem Ctl */ .virtual = (unsigned long )SMEMC_VIRT ,
Signature · 1 line
2.1.0
PATCH v2 1/4 arm: pxa: add device-tree irq init for pxa27x
Quoted 12 lines · Robert Jarzmik
Add the initializer for irqs in a device-tree machine on a pxa27x.
Signed-off-by Robert Jarzmik <[email protected]>--- arch/arm/mach-pxa/pxa27x.c | 5 +++++ 1 file changed, 5 insertions(+)arch/arm/mach-pxa/pxa27x.c +0
-0
arch/arm/mach-pxa/pxa27x.c void __init pxa27x_init_irq(void) · line 404
Quoted 7 lines
arch/arm/mach-pxa/pxa27x.c +4
-0@@ -398,6 +398,11 @@ void __init pxa27x_init_irq(void)pxa_init_irq (34 , pxa27x_set_wake); } +void __init pxa27x_dt_init_irq (void ) +{ +pxa_dt_irq_init (pxa27x_set_wake); +}
Should this also add a user of this function?
Mark.
Quoted 13 lines
arch/arm/mach-pxa/pxa27x.c +1
-0+static struct map_desc pxa27x_io_desc[]__initdata = { {/* Mem Ctl */ .virtual = (unsigned long )SMEMC_VIRT ,Signature · 7 lines
2.1.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel at lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Robert Jarzmik
maintainerPATCH v2 1/4 arm: pxa: add device-tree irq init for pxa27x
Quoted 16 lines · Mark Rutland
Quoted 15 lines · Robert Jarzmik
Add the initializer for irqs in a device-tree machine on a pxa27x.
Signed-off-by Robert Jarzmik <[email protected]>--- arch/arm/mach-pxa/pxa27x.c | 5 +++++ 1 file changed, 5 insertions(+)arch/arm/mach-pxa/pxa27x.c +0
-0@@ -398,6 +398,11 @@ void __init pxa27x_init_irq(void)pxa_init_irq (34 , pxa27x_set_wake); }
Quoted 6 lines
arch/arm/mach-pxa/pxa27x.c void __init pxa27x_init_irq(void) · line 404
Quoted 4 lines
arch/arm/mach-pxa/pxa27x.c +4
-0+void __init pxa27x_dt_init_irq (void ) +{ +pxa_dt_irq_init (pxa27x_set_wake); +}Should this also add a user of this function?
Well, patches 1, 2, 3 are preparing patch 4.
And patch 4 is adding the user of this function.
I could meld this in patch 4, but it looks cleaner for me to split the function creation, and pxa27x dt support in 2 distinct patches.
Cheers
--
Robert
Robert Jarzmik
maintainerPATCH v2 2/4 arm: pxa: move init functions into generic.h
In reply to Robert JarzmikIn order to have a unique .c file for all pxa variants device-tree definitions, all the initialization functions for MACHINE_START and DT_MACHINE_START have been put together into generic.h.
The alternative would have been one pxaXXX-dt.c file per variant.
The move is necessary because each include/mach/pxaXXX.h includes the variant register descriptions which intersects and conflicts one with each other.
The change is a preparation for pxa-dt.c to support multiple pxa, ie. pxa3xx and pxa27x.
The machine files including mach/pxaXXX.h all include generic.h, which guarantees no regression should be introduced.
---
Since v1: Arnd's review:
- removed some ifdefs for function prototypes
- moved ifdefs for get_freq_XXX() to the end for future removal
--- arch/arm/mach-pxa/generic.h | 65 +++++++++++++++++++++------------ arch/arm/mach-pxa/include/mach/pxa25x.h | 8 ---- arch/arm/mach-pxa/include/mach/pxa27x.h | 4 -- arch/arm/mach-pxa/include/mach/pxa3xx.h | 5 --- 4 files changed, 42 insertions(+), 40 deletions(-)
arch/arm/mach-pxa/generic.h +42 -23
@@ -13,11 +13,11 @@struct irq_data ; -extern void pxa_timer_init (void ); - -extern void __init pxa_map_io (void ); -extern unsigned int get_clk_frequency_khz (int info); +extern void __init pxa_dt_irq_init (int (*fn)(struct irq_data *, +unsigned int )); +extern void __init pxa_map_io (void ); +extern void pxa_timer_init (void );#define SET_BANK (__nr,__start,__size) \ mi->bank[__nr].start = (__start), \
@@ -25,6 +25,43 @@ extern unsigned int get_clk_frequency_khz(int info);#define ARRAY_AND_SIZE (x) (x), ARRAY_SIZE(x) +#define pxa25x_handle_irq icip_handle_irq +extern void __init pxa25x_init_irq (void ); +extern void __init pxa25x_map_io (void ); +extern void __init pxa26x_init_irq (void ); + +#define pxa27x_handle_irq ichp_handle_irq +extern void __init pxa27x_dt_init_irq (void ); +extern unsigned pxa27x_get_clk_frequency_khz (int ); +extern void __init pxa27x_init_irq (void ); +extern void __init pxa27x_map_io (void ); + +#define pxa3xx_handle_irq ichp_handle_irq +extern void __init pxa3xx_dt_init_irq (void ); +extern void __init pxa3xx_init_irq (void ); +extern void __init pxa3xx_map_io (void ); + +extern struct syscore_ops pxa_irq_syscore_ops; +extern struct syscore_ops pxa2xx_mfp_syscore_ops; +extern struct syscore_ops pxa3xx_mfp_syscore_ops; + +void __init pxa_set_ffuart_info (void *info); +void __init pxa_set_btuart_info (void *info); +void __init pxa_set_stuart_info (void *info); +void __init pxa_set_hwuart_info (void *info); + +void pxa_restart (enum reboot_mode ,const char *); + +#if defined(CONFIG_PXA25x) || defined(CONFIG_PXA27x) +extern void pxa2xx_clear_reset_status (unsigned int ); +#else +static inline void pxa2xx_clear_reset_status (unsigned int mask) {} +#endif + +/* +* Once fully converted to the clock framework, all these functions should be +* removed, and replaced with a clk_get(NULL, "core"). +*/ #ifdef CONFIG_PXA25xextern unsigned pxa25x_get_clk_frequency_khz (int );#else
@@ -32,30 +69,12 @@ extern unsigned pxa25x_get_clk_frequency_khz(int);#endif #ifdef CONFIG_PXA27x -extern unsigned pxa27x_get_clk_frequency_khz (int );#else #define pxa27x_get_clk_frequency_khz (x) (0)#endif -#if defined(CONFIG_PXA25x) || defined(CONFIG_PXA27x) -extern void pxa2xx_clear_reset_status (unsigned int ); -#else -static inline void pxa2xx_clear_reset_status (unsigned int mask) {} -#endif -#ifdef CONFIG_PXA3xx -extern unsigned pxa3xx_get_clk_frequency_khz (int ); +extern unsigned pxa3xx_get_clk_frequency_khz (int );#else #define pxa3xx_get_clk_frequency_khz (x) (0)#endif - -extern struct syscore_ops pxa_irq_syscore_ops; -extern struct syscore_ops pxa2xx_mfp_syscore_ops; -extern struct syscore_ops pxa3xx_mfp_syscore_ops; - -void __init pxa_set_ffuart_info (void *info); -void __init pxa_set_btuart_info (void *info); -void __init pxa_set_stuart_info (void *info); -void __init pxa_set_hwuart_info (void *info); - -void pxa_restart (enum reboot_mode ,const char *);
arch/arm/mach-pxa/include/mach/pxa25x.h +0 -8
@@ -6,12 +6,4 @@#include <mach/mfp-pxa25x.h> #include <mach/irqs.h> -extern void __init pxa25x_map_io (void ); -extern void __init pxa25x_init_irq (void ); -#ifdef CONFIG_CPU_PXA26x -extern void __init pxa26x_init_irq (void ); -#endif - -#define pxa25x_handle_irq icip_handle_irq -#endif /* __MACH_PXA25x_H */
arch/arm/mach-pxa/include/mach/pxa27x.h +0 -4
@@ -19,11 +19,7 @@#define ARB_CORE_PARK (1<<24)/* Be parked with core when idle */ #define ARB_LOCK_FLAG (1<<23)/* Only Locking masters gain access to the bus */ -extern void __init pxa27x_map_io (void ); -extern void __init pxa27x_init_irq (void );extern int __init pxa27x_set_pwrmode (unsigned int mode);extern void pxa27x_cpu_pm_enter (suspend_state_t state); -#define pxa27x_handle_irq ichp_handle_irq -#endif /* __MACH_PXA27x_H */
arch/arm/mach-pxa/include/mach/pxa3xx.h +0 -5
@@ -5,9 +5,4 @@#include <mach/pxa3xx-regs.h> #include <mach/irqs.h> -extern void __init pxa3xx_map_io (void ); -extern void __init pxa3xx_init_irq (void ); - -#define pxa3xx_handle_irq ichp_handle_irq -#endif /* __MACH_PXA3XX_H */
Signature · 1 line
2.1.0
Robert Jarzmik
maintainerPATCH v2 3/4 arm: pxa: remove unecessary includes from pxa-dt
In reply to Robert JarzmikAs the init functions necessary for machine init have moved to generic.h, remove the unecessary includes and prototypes definitions from pxa-dt.c.
This removes the include of mach/pxaXXX-regs.h, and make pxa-dt generic enough to accept other pxa variants.
--- arch/arm/mach-pxa/pxa-dt.c | 3 --- 1 file changed, 3 deletions(-)
arch/arm/mach-pxa/pxa-dt.c +0 -3
@@ -15,13 +15,10 @@#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),
Signature · 1 line
2.1.0
Robert Jarzmik
maintainerPATCH v2 4/4 arm: pxa: add pxa27x device-tree support
In reply to Robert JarzmikAdd a device-tree machine entry (DT_MACHINE_START) for pxa27x based platforms.
--- arch/arm/mach-pxa/Kconfig | 11 +++++++++++ arch/arm/mach-pxa/Makefile | 1 + arch/arm/mach-pxa/pxa-dt.c | 15 +++++++++++++++ 3 files changed, 27 insertions(+)
arch/arm/mach-pxa/Kconfig +11 -0
@@ -4,6 +4,17 @@ menu "Intel PXA2xx/PXA3xx Implementations" comment "Intel/Marvell Dev Platforms (sorted by hardware release time)" +config MACH_PXA27X_DT + bool "Support PXA27x platforms from device tree" + select CPU_PXA27x + select POWER_SUPPLY + select PXA27x + select USE_OF + help + Include support for Marvell PXA27x based platforms using + the device tree. Needn't select any other machine while + MACH_PXA27X_DT is enabled. + config MACH_PXA3XX_DT bool "Support PXA3xx platforms from device tree" select CPU_PXA300
arch/arm/mach-pxa/Makefile +1 -0
@@ -21,6 +21,7 @@ obj-$(CONFIG_CPU_PXA930) += pxa930.o # Device Tree support obj-$(CONFIG_MACH_PXA3XX_DT) += pxa-dt.o +obj-$(CONFIG_MACH_PXA27X_DT) += pxa-dt.o # Intel/Marvell Dev Platforms obj-$(CONFIG_ARCH_LUBBOCK) += lubbock.o
arch/arm/mach-pxa/pxa-dt.c +15 -0
@@ -58,3 +58,18 @@ DT_MACHINE_START(PXA_DT, "Marvell PXA3xx (Device Tree Support)") .dt_compat = pxa3xx_dt_board_compat, MACHINE_END#endif + +#ifdef CONFIG_PXA27x +static const char *const pxa27x_dt_board_compat[]__initconst = { +"marvell,pxa270" , +NULL , +}; + +DT_MACHINE_START (PXA27X_DT ,"Marvell PXA2xx (Device Tree Support)" ) + .map_io = pxa27x_map_io, + .init_irq = pxa27x_dt_init_irq, + .handle_irq = pxa27x_handle_irq, + .restart = pxa_restart, + .dt_compat = pxa27x_dt_board_compat, +MACHINE_END +#endif
Signature · 1 line
2.1.0
Robert Jarzmik
maintainerv2 cover Add support for pxa27x device-tree machine
In reply to Robert JarzmikQuoted 8 lines · Robert Jarzmik
Hi,
This is the second version of this patchset, to provide a device-tree machine support for pxa27x.
Since latest review by Arnd :
- patches 1, 3 and 4 were ok
- patch 2 was respined
Okay, let's see where we stand.
Mark, do my answer on patch 1/4 was good enough, or would you rather have patch 1/4 melt into patch 4/4 ? I don't care going one way or the other around, so just tell me.
Arnd, if the patches are good to go, could I have an ack ?
Cheers.
--
Robert
v2 cover Add support for pxa27x device-tree machine
Quoted 11 lines · On Thursday 30 October 2014 07:55:48 Robert Jarzmik wrote:
Quoted 8 lines · Robert Jarzmik
Hi,
This is the second version of this patchset, to provide a device-tree machine support for pxa27x.
Since latest review by Arnd :
- patches 1, 3 and 4 were ok
- patch 2 was respined
Quoted 6 lines
Okay, let's see where we stand.
Mark, do my answer on patch 1/4 was good enough, or would you rather have patch 1/4 melt into patch 4/4 ? I don't care going one way or the other around, so just tell me.Arnd, if the patches are good to go, could I have an ack ?
Whole series
Robert Jarzmik
maintainerv2 cover Add support for pxa27x device-tree machine
Quoted 4 lines · Arnd Bergmann
On Thursday 30 October 2014 07:55:48 Robert Jarzmik wrote:
Whole seriesAcked-by Arnd Bergmann <[email protected]>
Thanks Arnd.
Unfortunately my checkers caught a flaw in the non-device tree case :
- pxa27x_dt_init_irq() is defined, even if unused
- it calls pxa_dt_irq_init(), which is conditionaly defined on CONFIG_OF => breaks non DT builds
So I'll have to enclose this function in a #if defined(CONFIG_OF), and respin patch 1.
Cheers.
Signature · 1 line
Robert
v2 cover Add support for pxa27x device-tree machine
Quoted 8 lines · On Monday 03 November 2014 08:32:57 Robert Jarzmik wrote:
Quoted 4 lines · Arnd Bergmann
On Thursday 30 October 2014 07:55:48 Robert Jarzmik wrote:
Whole seriesAcked-by Arnd Bergmann <[email protected]>Thanks Arnd.
Quoted 7 lines
Unfortunately my checkers caught a flaw in the non-device tree case :
-pxa27x_dt_init_irq()is defined, even if unused
- it callspxa_dt_irq_init(), which is conditionaly defined onCONFIG_OF=> breaks non DT buildsSo I'll have to enclose this function in a #if
defined(CONFIG_OF), and respin patch 1.
Please make it use
if (IS_ENABLED(CONFIG_OF)) pxa_dt_irq_init(pxa27x_set_wake);
so we get the build-time coverage.
Arnd