diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-12-09 17:38:28 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-12-09 17:38:28 -0500 |
commit | 6cd94d5e57ab97ddd672b707ab4bb639672c1727 (patch) | |
tree | b1b301b16433d4deab6bd52e81d04a7b58c239d3 /arch/arm/mach-pxa | |
parent | 6c9e92476bc924ede6d6d2f0bfed2c06ae148d29 (diff) | |
parent | 842f7d2c4d392c0571cf72e3eaca26742bebbd1e (diff) |
Merge tag 'soc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC platform changes from Arnd Bergmann:
"New and updated SoC support, notable changes include:
- bcm:
brcmstb SMP support
initial iproc/cygnus support
- exynos:
Exynos4415 SoC support
PMU and suspend support for Exynos5420
PMU support for Exynos3250
pm related maintenance
- imx:
new LS1021A SoC support
vybrid 610 global timer support
- integrator:
convert to using multiplatform configuration
- mediatek:
earlyprintk support for mt8127/mt8135
- meson:
meson8 soc and l2 cache controller support
- mvebu:
Armada 38x CPU hotplug support
drop support for prerelease Armada 375 Z1 stepping
extended suspend support, now works on Armada 370/XP
- omap:
hwmod related maintenance
prcm cleanup
- pxa:
initial pxa27x DT handling
- rockchip:
SMP support for rk3288
add cpu frequency scaling support
- shmobile:
r8a7740 power domain support
various small restart, timer, pci apmu changes
- sunxi:
Allwinner A80 (sun9i) earlyprintk support
- ux500:
power domain support
Overall, a significant chunk of changes, coming mostly from the usual
suspects: omap, shmobile, samsung and mvebu, all of which already
contain a lot of platform specific code in arch/arm"
* tag 'soc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (187 commits)
ARM: mvebu: use the cpufreq-dt platform_data for independent clocks
soc: integrator: Add terminating entry for integrator_cm_match
ARM: mvebu: add SDRAM controller description for Armada XP
ARM: mvebu: adjust mbus controller description on Armada 370/XP
ARM: mvebu: add suspend/resume DT information for Armada XP GP
ARM: mvebu: synchronize secondary CPU clocks on resume
ARM: mvebu: make sure MMU is disabled in armada_370_xp_cpu_resume
ARM: mvebu: Armada XP GP specific suspend/resume code
ARM: mvebu: reserve the first 10 KB of each memory bank for suspend/resume
ARM: mvebu: implement suspend/resume support for Armada XP
clk: mvebu: add suspend/resume for gatable clocks
bus: mvebu-mbus: provide a mechanism to save SDRAM window configuration
bus: mvebu-mbus: suspend/resume support
clocksource: time-armada-370-xp: add suspend/resume support
irqchip: armada-370-xp: Add suspend/resume support
ARM: add lolevel debug support for asm9260
ARM: add mach-asm9260
ARM: EXYNOS: use u8 for val[] in struct exynos_pmu_conf
power: reset: imx-snvs-poweroff: add power off driver for i.mx6
ARM: imx: temporarily remove CONFIG_SOC_FSL from LS1021A
...
Diffstat (limited to 'arch/arm/mach-pxa')
-rw-r--r-- | arch/arm/mach-pxa/Kconfig | 11 | ||||
-rw-r--r-- | arch/arm/mach-pxa/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/mach-pxa/em-x270.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-pxa/generic.h | 65 | ||||
-rw-r--r-- | arch/arm/mach-pxa/gumstix.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-pxa/include/mach/pxa25x.h | 8 | ||||
-rw-r--r-- | arch/arm/mach-pxa/include/mach/pxa27x.h | 4 | ||||
-rw-r--r-- | arch/arm/mach-pxa/include/mach/pxa3xx.h | 5 | ||||
-rw-r--r-- | arch/arm/mach-pxa/mfp-pxa2xx.c | 12 | ||||
-rw-r--r-- | arch/arm/mach-pxa/poodle.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-pxa/pxa-dt.c | 18 | ||||
-rw-r--r-- | arch/arm/mach-pxa/pxa27x.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-pxa/pxa3xx-ulpi.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-pxa/raumfeld.c | 26 | ||||
-rw-r--r-- | arch/arm/mach-pxa/tosa.c | 41 |
15 files changed, 107 insertions, 105 deletions
diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig index e6690a44917d..83efe914bf7d 100644 --- a/arch/arm/mach-pxa/Kconfig +++ b/arch/arm/mach-pxa/Kconfig | |||
@@ -4,6 +4,17 @@ menu "Intel PXA2xx/PXA3xx Implementations" | |||
4 | 4 | ||
5 | comment "Intel/Marvell Dev Platforms (sorted by hardware release time)" | 5 | comment "Intel/Marvell Dev Platforms (sorted by hardware release time)" |
6 | 6 | ||
7 | config MACH_PXA27X_DT | ||
8 | bool "Support PXA27x platforms from device tree" | ||
9 | select CPU_PXA27x | ||
10 | select POWER_SUPPLY | ||
11 | select PXA27x | ||
12 | select USE_OF | ||
13 | help | ||
14 | Include support for Marvell PXA27x based platforms using | ||
15 | the device tree. Needn't select any other machine while | ||
16 | MACH_PXA27X_DT is enabled. | ||
17 | |||
7 | config MACH_PXA3XX_DT | 18 | config MACH_PXA3XX_DT |
8 | bool "Support PXA3xx platforms from device tree" | 19 | bool "Support PXA3xx platforms from device tree" |
9 | select CPU_PXA300 | 20 | select CPU_PXA300 |
diff --git a/arch/arm/mach-pxa/Makefile b/arch/arm/mach-pxa/Makefile index 2fe1824c6dcb..eb0bf7678a99 100644 --- a/arch/arm/mach-pxa/Makefile +++ b/arch/arm/mach-pxa/Makefile | |||
@@ -21,6 +21,7 @@ obj-$(CONFIG_CPU_PXA930) += pxa930.o | |||
21 | 21 | ||
22 | # Device Tree support | 22 | # Device Tree support |
23 | obj-$(CONFIG_MACH_PXA3XX_DT) += pxa-dt.o | 23 | obj-$(CONFIG_MACH_PXA3XX_DT) += pxa-dt.o |
24 | obj-$(CONFIG_MACH_PXA27X_DT) += pxa-dt.o | ||
24 | 25 | ||
25 | # Intel/Marvell Dev Platforms | 26 | # Intel/Marvell Dev Platforms |
26 | obj-$(CONFIG_ARCH_LUBBOCK) += lubbock.o | 27 | obj-$(CONFIG_ARCH_LUBBOCK) += lubbock.o |
diff --git a/arch/arm/mach-pxa/em-x270.c b/arch/arm/mach-pxa/em-x270.c index 6915a9f6b3a3..51531ecffca8 100644 --- a/arch/arm/mach-pxa/em-x270.c +++ b/arch/arm/mach-pxa/em-x270.c | |||
@@ -378,7 +378,7 @@ static void __init em_x270_init_nand(void) | |||
378 | 378 | ||
379 | err = gpio_request(GPIO11_NAND_CS, "NAND CS"); | 379 | err = gpio_request(GPIO11_NAND_CS, "NAND CS"); |
380 | if (err) { | 380 | if (err) { |
381 | pr_warning("EM-X270: failed to request NAND CS gpio\n"); | 381 | pr_warn("EM-X270: failed to request NAND CS gpio\n"); |
382 | return; | 382 | return; |
383 | } | 383 | } |
384 | 384 | ||
@@ -386,7 +386,7 @@ static void __init em_x270_init_nand(void) | |||
386 | 386 | ||
387 | err = gpio_request(nand_rb, "NAND R/B"); | 387 | err = gpio_request(nand_rb, "NAND R/B"); |
388 | if (err) { | 388 | if (err) { |
389 | pr_warning("EM-X270: failed to request NAND R/B gpio\n"); | 389 | pr_warn("EM-X270: failed to request NAND R/B gpio\n"); |
390 | gpio_free(GPIO11_NAND_CS); | 390 | gpio_free(GPIO11_NAND_CS); |
391 | return; | 391 | return; |
392 | } | 392 | } |
diff --git a/arch/arm/mach-pxa/generic.h b/arch/arm/mach-pxa/generic.h index 8963984d1f43..7a9fa1aa4e41 100644 --- a/arch/arm/mach-pxa/generic.h +++ b/arch/arm/mach-pxa/generic.h | |||
@@ -13,11 +13,11 @@ | |||
13 | 13 | ||
14 | struct irq_data; | 14 | struct irq_data; |
15 | 15 | ||
16 | extern void pxa_timer_init(void); | ||
17 | |||
18 | extern void __init pxa_map_io(void); | ||
19 | |||
20 | extern unsigned int get_clk_frequency_khz(int info); | 16 | extern unsigned int get_clk_frequency_khz(int info); |
17 | extern void __init pxa_dt_irq_init(int (*fn)(struct irq_data *, | ||
18 | unsigned int)); | ||
19 | extern void __init pxa_map_io(void); | ||
20 | extern void pxa_timer_init(void); | ||
21 | 21 | ||
22 | #define SET_BANK(__nr,__start,__size) \ | 22 | #define SET_BANK(__nr,__start,__size) \ |
23 | mi->bank[__nr].start = (__start), \ | 23 | mi->bank[__nr].start = (__start), \ |
@@ -25,6 +25,43 @@ extern unsigned int get_clk_frequency_khz(int info); | |||
25 | 25 | ||
26 | #define ARRAY_AND_SIZE(x) (x), ARRAY_SIZE(x) | 26 | #define ARRAY_AND_SIZE(x) (x), ARRAY_SIZE(x) |
27 | 27 | ||
28 | #define pxa25x_handle_irq icip_handle_irq | ||
29 | extern void __init pxa25x_init_irq(void); | ||
30 | extern void __init pxa25x_map_io(void); | ||
31 | extern void __init pxa26x_init_irq(void); | ||
32 | |||
33 | #define pxa27x_handle_irq ichp_handle_irq | ||
34 | extern void __init pxa27x_dt_init_irq(void); | ||
35 | extern unsigned pxa27x_get_clk_frequency_khz(int); | ||
36 | extern void __init pxa27x_init_irq(void); | ||
37 | extern void __init pxa27x_map_io(void); | ||
38 | |||
39 | #define pxa3xx_handle_irq ichp_handle_irq | ||
40 | extern void __init pxa3xx_dt_init_irq(void); | ||
41 | extern void __init pxa3xx_init_irq(void); | ||
42 | extern void __init pxa3xx_map_io(void); | ||
43 | |||
44 | extern struct syscore_ops pxa_irq_syscore_ops; | ||
45 | extern struct syscore_ops pxa2xx_mfp_syscore_ops; | ||
46 | extern struct syscore_ops pxa3xx_mfp_syscore_ops; | ||
47 | |||
48 | void __init pxa_set_ffuart_info(void *info); | ||
49 | void __init pxa_set_btuart_info(void *info); | ||
50 | void __init pxa_set_stuart_info(void *info); | ||
51 | void __init pxa_set_hwuart_info(void *info); | ||
52 | |||
53 | void pxa_restart(enum reboot_mode, const char *); | ||
54 | |||
55 | #if defined(CONFIG_PXA25x) || defined(CONFIG_PXA27x) | ||
56 | extern void pxa2xx_clear_reset_status(unsigned int); | ||
57 | #else | ||
58 | static inline void pxa2xx_clear_reset_status(unsigned int mask) {} | ||
59 | #endif | ||
60 | |||
61 | /* | ||
62 | * Once fully converted to the clock framework, all these functions should be | ||
63 | * removed, and replaced with a clk_get(NULL, "core"). | ||
64 | */ | ||
28 | #ifdef CONFIG_PXA25x | 65 | #ifdef CONFIG_PXA25x |
29 | extern unsigned pxa25x_get_clk_frequency_khz(int); | 66 | extern unsigned pxa25x_get_clk_frequency_khz(int); |
30 | #else | 67 | #else |
@@ -32,30 +69,12 @@ extern unsigned pxa25x_get_clk_frequency_khz(int); | |||
32 | #endif | 69 | #endif |
33 | 70 | ||
34 | #ifdef CONFIG_PXA27x | 71 | #ifdef CONFIG_PXA27x |
35 | extern unsigned pxa27x_get_clk_frequency_khz(int); | ||
36 | #else | 72 | #else |
37 | #define pxa27x_get_clk_frequency_khz(x) (0) | 73 | #define pxa27x_get_clk_frequency_khz(x) (0) |
38 | #endif | 74 | #endif |
39 | 75 | ||
40 | #if defined(CONFIG_PXA25x) || defined(CONFIG_PXA27x) | ||
41 | extern void pxa2xx_clear_reset_status(unsigned int); | ||
42 | #else | ||
43 | static inline void pxa2xx_clear_reset_status(unsigned int mask) {} | ||
44 | #endif | ||
45 | |||
46 | #ifdef CONFIG_PXA3xx | 76 | #ifdef CONFIG_PXA3xx |
47 | extern unsigned pxa3xx_get_clk_frequency_khz(int); | 77 | extern unsigned pxa3xx_get_clk_frequency_khz(int); |
48 | #else | 78 | #else |
49 | #define pxa3xx_get_clk_frequency_khz(x) (0) | 79 | #define pxa3xx_get_clk_frequency_khz(x) (0) |
50 | #endif | 80 | #endif |
51 | |||
52 | extern struct syscore_ops pxa_irq_syscore_ops; | ||
53 | extern struct syscore_ops pxa2xx_mfp_syscore_ops; | ||
54 | extern struct syscore_ops pxa3xx_mfp_syscore_ops; | ||
55 | |||
56 | void __init pxa_set_ffuart_info(void *info); | ||
57 | void __init pxa_set_btuart_info(void *info); | ||
58 | void __init pxa_set_stuart_info(void *info); | ||
59 | void __init pxa_set_hwuart_info(void *info); | ||
60 | |||
61 | void pxa_restart(enum reboot_mode, const char *); | ||
diff --git a/arch/arm/mach-pxa/gumstix.c b/arch/arm/mach-pxa/gumstix.c index 00b92dad7b81..f6c76a3ee3b2 100644 --- a/arch/arm/mach-pxa/gumstix.c +++ b/arch/arm/mach-pxa/gumstix.c | |||
@@ -140,8 +140,7 @@ static void gumstix_setup_bt_clock(void) | |||
140 | int timeout = 500; | 140 | int timeout = 500; |
141 | 141 | ||
142 | if (!(OSCC & OSCC_OOK)) | 142 | if (!(OSCC & OSCC_OOK)) |
143 | pr_warning("32kHz clock was not on. Bootloader may need to " | 143 | pr_warn("32kHz clock was not on. Bootloader may need to be updated\n"); |
144 | "be updated\n"); | ||
145 | else | 144 | else |
146 | return; | 145 | return; |
147 | 146 | ||
diff --git a/arch/arm/mach-pxa/include/mach/pxa25x.h b/arch/arm/mach-pxa/include/mach/pxa25x.h index 3ac0baac7350..5a341752e32c 100644 --- a/arch/arm/mach-pxa/include/mach/pxa25x.h +++ b/arch/arm/mach-pxa/include/mach/pxa25x.h | |||
@@ -6,12 +6,4 @@ | |||
6 | #include <mach/mfp-pxa25x.h> | 6 | #include <mach/mfp-pxa25x.h> |
7 | #include <mach/irqs.h> | 7 | #include <mach/irqs.h> |
8 | 8 | ||
9 | extern void __init pxa25x_map_io(void); | ||
10 | extern void __init pxa25x_init_irq(void); | ||
11 | #ifdef CONFIG_CPU_PXA26x | ||
12 | extern void __init pxa26x_init_irq(void); | ||
13 | #endif | ||
14 | |||
15 | #define pxa25x_handle_irq icip_handle_irq | ||
16 | |||
17 | #endif /* __MACH_PXA25x_H */ | 9 | #endif /* __MACH_PXA25x_H */ |
diff --git a/arch/arm/mach-pxa/include/mach/pxa27x.h b/arch/arm/mach-pxa/include/mach/pxa27x.h index 7cff640582b8..599b925a657c 100644 --- a/arch/arm/mach-pxa/include/mach/pxa27x.h +++ b/arch/arm/mach-pxa/include/mach/pxa27x.h | |||
@@ -19,11 +19,7 @@ | |||
19 | #define ARB_CORE_PARK (1<<24) /* Be parked with core when idle */ | 19 | #define ARB_CORE_PARK (1<<24) /* Be parked with core when idle */ |
20 | #define ARB_LOCK_FLAG (1<<23) /* Only Locking masters gain access to the bus */ | 20 | #define ARB_LOCK_FLAG (1<<23) /* Only Locking masters gain access to the bus */ |
21 | 21 | ||
22 | extern void __init pxa27x_map_io(void); | ||
23 | extern void __init pxa27x_init_irq(void); | ||
24 | extern int __init pxa27x_set_pwrmode(unsigned int mode); | 22 | extern int __init pxa27x_set_pwrmode(unsigned int mode); |
25 | extern void pxa27x_cpu_pm_enter(suspend_state_t state); | 23 | extern void pxa27x_cpu_pm_enter(suspend_state_t state); |
26 | 24 | ||
27 | #define pxa27x_handle_irq ichp_handle_irq | ||
28 | |||
29 | #endif /* __MACH_PXA27x_H */ | 25 | #endif /* __MACH_PXA27x_H */ |
diff --git a/arch/arm/mach-pxa/include/mach/pxa3xx.h b/arch/arm/mach-pxa/include/mach/pxa3xx.h index 6dd7fa163e29..b4143fb6631f 100644 --- a/arch/arm/mach-pxa/include/mach/pxa3xx.h +++ b/arch/arm/mach-pxa/include/mach/pxa3xx.h | |||
@@ -5,9 +5,4 @@ | |||
5 | #include <mach/pxa3xx-regs.h> | 5 | #include <mach/pxa3xx-regs.h> |
6 | #include <mach/irqs.h> | 6 | #include <mach/irqs.h> |
7 | 7 | ||
8 | extern void __init pxa3xx_map_io(void); | ||
9 | extern void __init pxa3xx_init_irq(void); | ||
10 | |||
11 | #define pxa3xx_handle_irq ichp_handle_irq | ||
12 | |||
13 | #endif /* __MACH_PXA3XX_H */ | 8 | #endif /* __MACH_PXA3XX_H */ |
diff --git a/arch/arm/mach-pxa/mfp-pxa2xx.c b/arch/arm/mach-pxa/mfp-pxa2xx.c index ef0426a159d4..666b78972c40 100644 --- a/arch/arm/mach-pxa/mfp-pxa2xx.c +++ b/arch/arm/mach-pxa/mfp-pxa2xx.c | |||
@@ -93,8 +93,8 @@ static int __mfp_config_gpio(unsigned gpio, unsigned long c) | |||
93 | break; | 93 | break; |
94 | default: | 94 | default: |
95 | /* warning and fall through, treat as MFP_LPM_DEFAULT */ | 95 | /* warning and fall through, treat as MFP_LPM_DEFAULT */ |
96 | pr_warning("%s: GPIO%d: unsupported low power mode\n", | 96 | pr_warn("%s: GPIO%d: unsupported low power mode\n", |
97 | __func__, gpio); | 97 | __func__, gpio); |
98 | break; | 98 | break; |
99 | } | 99 | } |
100 | 100 | ||
@@ -107,14 +107,12 @@ static int __mfp_config_gpio(unsigned gpio, unsigned long c) | |||
107 | * configurations of those pins not able to wakeup | 107 | * configurations of those pins not able to wakeup |
108 | */ | 108 | */ |
109 | if ((c & MFP_LPM_CAN_WAKEUP) && !gpio_desc[gpio].can_wakeup) { | 109 | if ((c & MFP_LPM_CAN_WAKEUP) && !gpio_desc[gpio].can_wakeup) { |
110 | pr_warning("%s: GPIO%d unable to wakeup\n", | 110 | pr_warn("%s: GPIO%d unable to wakeup\n", __func__, gpio); |
111 | __func__, gpio); | ||
112 | return -EINVAL; | 111 | return -EINVAL; |
113 | } | 112 | } |
114 | 113 | ||
115 | if ((c & MFP_LPM_CAN_WAKEUP) && is_out) { | 114 | if ((c & MFP_LPM_CAN_WAKEUP) && is_out) { |
116 | pr_warning("%s: output GPIO%d unable to wakeup\n", | 115 | pr_warn("%s: output GPIO%d unable to wakeup\n", __func__, gpio); |
117 | __func__, gpio); | ||
118 | return -EINVAL; | 116 | return -EINVAL; |
119 | } | 117 | } |
120 | 118 | ||
@@ -126,7 +124,7 @@ static inline int __mfp_validate(int mfp) | |||
126 | int gpio = mfp_to_gpio(mfp); | 124 | int gpio = mfp_to_gpio(mfp); |
127 | 125 | ||
128 | if ((mfp > MFP_PIN_GPIO127) || !gpio_desc[gpio].valid) { | 126 | if ((mfp > MFP_PIN_GPIO127) || !gpio_desc[gpio].valid) { |
129 | pr_warning("%s: GPIO%d is invalid pin\n", __func__, gpio); | 127 | pr_warn("%s: GPIO%d is invalid pin\n", __func__, gpio); |
130 | return -1; | 128 | return -1; |
131 | } | 129 | } |
132 | 130 | ||
diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c index 131991629116..29019beae591 100644 --- a/arch/arm/mach-pxa/poodle.c +++ b/arch/arm/mach-pxa/poodle.c | |||
@@ -446,7 +446,7 @@ static void __init poodle_init(void) | |||
446 | 446 | ||
447 | ret = platform_add_devices(devices, ARRAY_SIZE(devices)); | 447 | ret = platform_add_devices(devices, ARRAY_SIZE(devices)); |
448 | if (ret) | 448 | if (ret) |
449 | pr_warning("poodle: Unable to register LoCoMo device\n"); | 449 | pr_warn("poodle: Unable to register LoCoMo device\n"); |
450 | 450 | ||
451 | pxa_set_fb_info(&poodle_locomo_device.dev, &poodle_fb_info); | 451 | pxa_set_fb_info(&poodle_locomo_device.dev, &poodle_fb_info); |
452 | pxa_set_udc_info(&udc_info); | 452 | pxa_set_udc_info(&udc_info); |
diff --git a/arch/arm/mach-pxa/pxa-dt.c b/arch/arm/mach-pxa/pxa-dt.c index f6a2c4b1c1dc..7e0e5bd0c9de 100644 --- a/arch/arm/mach-pxa/pxa-dt.c +++ b/arch/arm/mach-pxa/pxa-dt.c | |||
@@ -15,13 +15,10 @@ | |||
15 | #include <asm/mach/arch.h> | 15 | #include <asm/mach/arch.h> |
16 | #include <asm/mach/time.h> | 16 | #include <asm/mach/time.h> |
17 | #include <mach/irqs.h> | 17 | #include <mach/irqs.h> |
18 | #include <mach/pxa3xx.h> | ||
19 | 18 | ||
20 | #include "generic.h" | 19 | #include "generic.h" |
21 | 20 | ||
22 | #ifdef CONFIG_PXA3xx | 21 | #ifdef CONFIG_PXA3xx |
23 | extern void __init pxa3xx_dt_init_irq(void); | ||
24 | |||
25 | static const struct of_dev_auxdata pxa3xx_auxdata_lookup[] __initconst = { | 22 | static const struct of_dev_auxdata pxa3xx_auxdata_lookup[] __initconst = { |
26 | OF_DEV_AUXDATA("mrvl,pxa-uart", 0x40100000, "pxa2xx-uart.0", NULL), | 23 | OF_DEV_AUXDATA("mrvl,pxa-uart", 0x40100000, "pxa2xx-uart.0", NULL), |
27 | OF_DEV_AUXDATA("mrvl,pxa-uart", 0x40200000, "pxa2xx-uart.1", NULL), | 24 | OF_DEV_AUXDATA("mrvl,pxa-uart", 0x40200000, "pxa2xx-uart.1", NULL), |
@@ -61,3 +58,18 @@ DT_MACHINE_START(PXA_DT, "Marvell PXA3xx (Device Tree Support)") | |||
61 | .dt_compat = pxa3xx_dt_board_compat, | 58 | .dt_compat = pxa3xx_dt_board_compat, |
62 | MACHINE_END | 59 | MACHINE_END |
63 | #endif | 60 | #endif |
61 | |||
62 | #ifdef CONFIG_PXA27x | ||
63 | static const char * const pxa27x_dt_board_compat[] __initconst = { | ||
64 | "marvell,pxa270", | ||
65 | NULL, | ||
66 | }; | ||
67 | |||
68 | DT_MACHINE_START(PXA27X_DT, "Marvell PXA2xx (Device Tree Support)") | ||
69 | .map_io = pxa27x_map_io, | ||
70 | .init_irq = pxa27x_dt_init_irq, | ||
71 | .handle_irq = pxa27x_handle_irq, | ||
72 | .restart = pxa_restart, | ||
73 | .dt_compat = pxa27x_dt_board_compat, | ||
74 | MACHINE_END | ||
75 | #endif | ||
diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c index b040d7d14888..af423a48c2e3 100644 --- a/arch/arm/mach-pxa/pxa27x.c +++ b/arch/arm/mach-pxa/pxa27x.c | |||
@@ -398,6 +398,12 @@ void __init pxa27x_init_irq(void) | |||
398 | pxa_init_irq(34, pxa27x_set_wake); | 398 | pxa_init_irq(34, pxa27x_set_wake); |
399 | } | 399 | } |
400 | 400 | ||
401 | void __init pxa27x_dt_init_irq(void) | ||
402 | { | ||
403 | if (IS_ENABLED(CONFIG_OF)) | ||
404 | pxa_dt_irq_init(pxa27x_set_wake); | ||
405 | } | ||
406 | |||
401 | static struct map_desc pxa27x_io_desc[] __initdata = { | 407 | static struct map_desc pxa27x_io_desc[] __initdata = { |
402 | { /* Mem Ctl */ | 408 | { /* Mem Ctl */ |
403 | .virtual = (unsigned long)SMEMC_VIRT, | 409 | .virtual = (unsigned long)SMEMC_VIRT, |
diff --git a/arch/arm/mach-pxa/pxa3xx-ulpi.c b/arch/arm/mach-pxa/pxa3xx-ulpi.c index e329ccefd364..614003e8b081 100644 --- a/arch/arm/mach-pxa/pxa3xx-ulpi.c +++ b/arch/arm/mach-pxa/pxa3xx-ulpi.c | |||
@@ -74,7 +74,7 @@ static int pxa310_ulpi_poll(void) | |||
74 | cpu_relax(); | 74 | cpu_relax(); |
75 | } | 75 | } |
76 | 76 | ||
77 | pr_warning("%s: ULPI access timed out!\n", __func__); | 77 | pr_warn("%s: ULPI access timed out!\n", __func__); |
78 | 78 | ||
79 | return -ETIMEDOUT; | 79 | return -ETIMEDOUT; |
80 | } | 80 | } |
@@ -84,7 +84,7 @@ static int pxa310_ulpi_read(struct usb_phy *otg, u32 reg) | |||
84 | int err; | 84 | int err; |
85 | 85 | ||
86 | if (pxa310_ulpi_get_phymode() != SYNCH) { | 86 | if (pxa310_ulpi_get_phymode() != SYNCH) { |
87 | pr_warning("%s: PHY is not in SYNCH mode!\n", __func__); | 87 | pr_warn("%s: PHY is not in SYNCH mode!\n", __func__); |
88 | return -EBUSY; | 88 | return -EBUSY; |
89 | } | 89 | } |
90 | 90 | ||
@@ -101,7 +101,7 @@ static int pxa310_ulpi_read(struct usb_phy *otg, u32 reg) | |||
101 | static int pxa310_ulpi_write(struct usb_phy *otg, u32 val, u32 reg) | 101 | static int pxa310_ulpi_write(struct usb_phy *otg, u32 val, u32 reg) |
102 | { | 102 | { |
103 | if (pxa310_ulpi_get_phymode() != SYNCH) { | 103 | if (pxa310_ulpi_get_phymode() != SYNCH) { |
104 | pr_warning("%s: PHY is not in SYNCH mode!\n", __func__); | 104 | pr_warn("%s: PHY is not in SYNCH mode!\n", __func__); |
105 | return -EBUSY; | 105 | return -EBUSY; |
106 | } | 106 | } |
107 | 107 | ||
diff --git a/arch/arm/mach-pxa/raumfeld.c b/arch/arm/mach-pxa/raumfeld.c index 8386dc30b3e4..a762b23ac830 100644 --- a/arch/arm/mach-pxa/raumfeld.c +++ b/arch/arm/mach-pxa/raumfeld.c | |||
@@ -521,7 +521,7 @@ static void __init raumfeld_w1_init(void) | |||
521 | "W1 external pullup enable"); | 521 | "W1 external pullup enable"); |
522 | 522 | ||
523 | if (ret < 0) | 523 | if (ret < 0) |
524 | pr_warning("Unable to request GPIO_W1_PULLUP_ENABLE\n"); | 524 | pr_warn("Unable to request GPIO_W1_PULLUP_ENABLE\n"); |
525 | else | 525 | else |
526 | gpio_direction_output(GPIO_W1_PULLUP_ENABLE, 0); | 526 | gpio_direction_output(GPIO_W1_PULLUP_ENABLE, 0); |
527 | 527 | ||
@@ -600,7 +600,7 @@ static void __init raumfeld_lcd_init(void) | |||
600 | 600 | ||
601 | ret = gpio_request(GPIO_TFT_VA_EN, "display VA enable"); | 601 | ret = gpio_request(GPIO_TFT_VA_EN, "display VA enable"); |
602 | if (ret < 0) | 602 | if (ret < 0) |
603 | pr_warning("Unable to request GPIO_TFT_VA_EN\n"); | 603 | pr_warn("Unable to request GPIO_TFT_VA_EN\n"); |
604 | else | 604 | else |
605 | gpio_direction_output(GPIO_TFT_VA_EN, 1); | 605 | gpio_direction_output(GPIO_TFT_VA_EN, 1); |
606 | 606 | ||
@@ -608,7 +608,7 @@ static void __init raumfeld_lcd_init(void) | |||
608 | 608 | ||
609 | ret = gpio_request(GPIO_DISPLAY_ENABLE, "display enable"); | 609 | ret = gpio_request(GPIO_DISPLAY_ENABLE, "display enable"); |
610 | if (ret < 0) | 610 | if (ret < 0) |
611 | pr_warning("Unable to request GPIO_DISPLAY_ENABLE\n"); | 611 | pr_warn("Unable to request GPIO_DISPLAY_ENABLE\n"); |
612 | else | 612 | else |
613 | gpio_direction_output(GPIO_DISPLAY_ENABLE, 1); | 613 | gpio_direction_output(GPIO_DISPLAY_ENABLE, 1); |
614 | 614 | ||
@@ -814,17 +814,17 @@ static void __init raumfeld_power_init(void) | |||
814 | /* Set PEN2 high to enable maximum charge current */ | 814 | /* Set PEN2 high to enable maximum charge current */ |
815 | ret = gpio_request(GPIO_CHRG_PEN2, "CHRG_PEN2"); | 815 | ret = gpio_request(GPIO_CHRG_PEN2, "CHRG_PEN2"); |
816 | if (ret < 0) | 816 | if (ret < 0) |
817 | pr_warning("Unable to request GPIO_CHRG_PEN2\n"); | 817 | pr_warn("Unable to request GPIO_CHRG_PEN2\n"); |
818 | else | 818 | else |
819 | gpio_direction_output(GPIO_CHRG_PEN2, 1); | 819 | gpio_direction_output(GPIO_CHRG_PEN2, 1); |
820 | 820 | ||
821 | ret = gpio_request(GPIO_CHARGE_DC_OK, "CABLE_DC_OK"); | 821 | ret = gpio_request(GPIO_CHARGE_DC_OK, "CABLE_DC_OK"); |
822 | if (ret < 0) | 822 | if (ret < 0) |
823 | pr_warning("Unable to request GPIO_CHARGE_DC_OK\n"); | 823 | pr_warn("Unable to request GPIO_CHARGE_DC_OK\n"); |
824 | 824 | ||
825 | ret = gpio_request(GPIO_CHARGE_USB_SUSP, "CHARGE_USB_SUSP"); | 825 | ret = gpio_request(GPIO_CHARGE_USB_SUSP, "CHARGE_USB_SUSP"); |
826 | if (ret < 0) | 826 | if (ret < 0) |
827 | pr_warning("Unable to request GPIO_CHARGE_USB_SUSP\n"); | 827 | pr_warn("Unable to request GPIO_CHARGE_USB_SUSP\n"); |
828 | else | 828 | else |
829 | gpio_direction_output(GPIO_CHARGE_USB_SUSP, 0); | 829 | gpio_direction_output(GPIO_CHARGE_USB_SUSP, 0); |
830 | 830 | ||
@@ -976,19 +976,19 @@ static void __init raumfeld_audio_init(void) | |||
976 | 976 | ||
977 | ret = gpio_request(GPIO_CODEC_RESET, "cs4270 reset"); | 977 | ret = gpio_request(GPIO_CODEC_RESET, "cs4270 reset"); |
978 | if (ret < 0) | 978 | if (ret < 0) |
979 | pr_warning("unable to request GPIO_CODEC_RESET\n"); | 979 | pr_warn("unable to request GPIO_CODEC_RESET\n"); |
980 | else | 980 | else |
981 | gpio_direction_output(GPIO_CODEC_RESET, 1); | 981 | gpio_direction_output(GPIO_CODEC_RESET, 1); |
982 | 982 | ||
983 | ret = gpio_request(GPIO_SPDIF_RESET, "ak4104 s/pdif reset"); | 983 | ret = gpio_request(GPIO_SPDIF_RESET, "ak4104 s/pdif reset"); |
984 | if (ret < 0) | 984 | if (ret < 0) |
985 | pr_warning("unable to request GPIO_SPDIF_RESET\n"); | 985 | pr_warn("unable to request GPIO_SPDIF_RESET\n"); |
986 | else | 986 | else |
987 | gpio_direction_output(GPIO_SPDIF_RESET, 1); | 987 | gpio_direction_output(GPIO_SPDIF_RESET, 1); |
988 | 988 | ||
989 | ret = gpio_request(GPIO_MCLK_RESET, "MCLK reset"); | 989 | ret = gpio_request(GPIO_MCLK_RESET, "MCLK reset"); |
990 | if (ret < 0) | 990 | if (ret < 0) |
991 | pr_warning("unable to request GPIO_MCLK_RESET\n"); | 991 | pr_warn("unable to request GPIO_MCLK_RESET\n"); |
992 | else | 992 | else |
993 | gpio_direction_output(GPIO_MCLK_RESET, 1); | 993 | gpio_direction_output(GPIO_MCLK_RESET, 1); |
994 | 994 | ||
@@ -1019,20 +1019,20 @@ static void __init raumfeld_common_init(void) | |||
1019 | 1019 | ||
1020 | ret = gpio_request(GPIO_W2W_RESET, "Wi2Wi reset"); | 1020 | ret = gpio_request(GPIO_W2W_RESET, "Wi2Wi reset"); |
1021 | if (ret < 0) | 1021 | if (ret < 0) |
1022 | pr_warning("Unable to request GPIO_W2W_RESET\n"); | 1022 | pr_warn("Unable to request GPIO_W2W_RESET\n"); |
1023 | else | 1023 | else |
1024 | gpio_direction_output(GPIO_W2W_RESET, 0); | 1024 | gpio_direction_output(GPIO_W2W_RESET, 0); |
1025 | 1025 | ||
1026 | ret = gpio_request(GPIO_W2W_PDN, "Wi2Wi powerup"); | 1026 | ret = gpio_request(GPIO_W2W_PDN, "Wi2Wi powerup"); |
1027 | if (ret < 0) | 1027 | if (ret < 0) |
1028 | pr_warning("Unable to request GPIO_W2W_PDN\n"); | 1028 | pr_warn("Unable to request GPIO_W2W_PDN\n"); |
1029 | else | 1029 | else |
1030 | gpio_direction_output(GPIO_W2W_PDN, 0); | 1030 | gpio_direction_output(GPIO_W2W_PDN, 0); |
1031 | 1031 | ||
1032 | /* this can be used to switch off the device */ | 1032 | /* this can be used to switch off the device */ |
1033 | ret = gpio_request(GPIO_SHUTDOWN_SUPPLY, "supply shutdown"); | 1033 | ret = gpio_request(GPIO_SHUTDOWN_SUPPLY, "supply shutdown"); |
1034 | if (ret < 0) | 1034 | if (ret < 0) |
1035 | pr_warning("Unable to request GPIO_SHUTDOWN_SUPPLY\n"); | 1035 | pr_warn("Unable to request GPIO_SHUTDOWN_SUPPLY\n"); |
1036 | else | 1036 | else |
1037 | gpio_direction_output(GPIO_SHUTDOWN_SUPPLY, 0); | 1037 | gpio_direction_output(GPIO_SHUTDOWN_SUPPLY, 0); |
1038 | 1038 | ||
@@ -1051,7 +1051,7 @@ static void __init raumfeld_controller_init(void) | |||
1051 | 1051 | ||
1052 | ret = gpio_request(GPIO_SHUTDOWN_BATT, "battery shutdown"); | 1052 | ret = gpio_request(GPIO_SHUTDOWN_BATT, "battery shutdown"); |
1053 | if (ret < 0) | 1053 | if (ret < 0) |
1054 | pr_warning("Unable to request GPIO_SHUTDOWN_BATT\n"); | 1054 | pr_warn("Unable to request GPIO_SHUTDOWN_BATT\n"); |
1055 | else | 1055 | else |
1056 | gpio_direction_output(GPIO_SHUTDOWN_BATT, 0); | 1056 | gpio_direction_output(GPIO_SHUTDOWN_BATT, 0); |
1057 | 1057 | ||
diff --git a/arch/arm/mach-pxa/tosa.c b/arch/arm/mach-pxa/tosa.c index c158a6e3e0aa..7780d1faa06f 100644 --- a/arch/arm/mach-pxa/tosa.c +++ b/arch/arm/mach-pxa/tosa.c | |||
@@ -30,7 +30,7 @@ | |||
30 | #include <linux/gpio_keys.h> | 30 | #include <linux/gpio_keys.h> |
31 | #include <linux/input.h> | 31 | #include <linux/input.h> |
32 | #include <linux/gpio.h> | 32 | #include <linux/gpio.h> |
33 | #include <linux/pda_power.h> | 33 | #include <linux/power/gpio-charger.h> |
34 | #include <linux/spi/spi.h> | 34 | #include <linux/spi/spi.h> |
35 | #include <linux/spi/pxa2xx_spi.h> | 35 | #include <linux/spi/pxa2xx_spi.h> |
36 | #include <linux/input/matrix_keypad.h> | 36 | #include <linux/input/matrix_keypad.h> |
@@ -361,44 +361,17 @@ static struct pxaficp_platform_data tosa_ficp_platform_data = { | |||
361 | /* | 361 | /* |
362 | * Tosa AC IN | 362 | * Tosa AC IN |
363 | */ | 363 | */ |
364 | static int tosa_power_init(struct device *dev) | ||
365 | { | ||
366 | int ret = gpio_request(TOSA_GPIO_AC_IN, "ac in"); | ||
367 | if (ret) | ||
368 | goto err_gpio_req; | ||
369 | |||
370 | ret = gpio_direction_input(TOSA_GPIO_AC_IN); | ||
371 | if (ret) | ||
372 | goto err_gpio_in; | ||
373 | |||
374 | return 0; | ||
375 | |||
376 | err_gpio_in: | ||
377 | gpio_free(TOSA_GPIO_AC_IN); | ||
378 | err_gpio_req: | ||
379 | return ret; | ||
380 | } | ||
381 | |||
382 | static void tosa_power_exit(struct device *dev) | ||
383 | { | ||
384 | gpio_free(TOSA_GPIO_AC_IN); | ||
385 | } | ||
386 | |||
387 | static int tosa_power_ac_online(void) | ||
388 | { | ||
389 | return gpio_get_value(TOSA_GPIO_AC_IN) == 0; | ||
390 | } | ||
391 | |||
392 | static char *tosa_ac_supplied_to[] = { | 364 | static char *tosa_ac_supplied_to[] = { |
393 | "main-battery", | 365 | "main-battery", |
394 | "backup-battery", | 366 | "backup-battery", |
395 | "jacket-battery", | 367 | "jacket-battery", |
396 | }; | 368 | }; |
397 | 369 | ||
398 | static struct pda_power_pdata tosa_power_data = { | 370 | static struct gpio_charger_platform_data tosa_power_data = { |
399 | .init = tosa_power_init, | 371 | .name = "charger", |
400 | .is_ac_online = tosa_power_ac_online, | 372 | .type = POWER_SUPPLY_TYPE_MAINS, |
401 | .exit = tosa_power_exit, | 373 | .gpio = TOSA_GPIO_AC_IN, |
374 | .gpio_active_low = 1, | ||
402 | .supplied_to = tosa_ac_supplied_to, | 375 | .supplied_to = tosa_ac_supplied_to, |
403 | .num_supplicants = ARRAY_SIZE(tosa_ac_supplied_to), | 376 | .num_supplicants = ARRAY_SIZE(tosa_ac_supplied_to), |
404 | }; | 377 | }; |
@@ -415,7 +388,7 @@ static struct resource tosa_power_resource[] = { | |||
415 | }; | 388 | }; |
416 | 389 | ||
417 | static struct platform_device tosa_power_device = { | 390 | static struct platform_device tosa_power_device = { |
418 | .name = "pda-power", | 391 | .name = "gpio-charger", |
419 | .id = -1, | 392 | .id = -1, |
420 | .dev.platform_data = &tosa_power_data, | 393 | .dev.platform_data = &tosa_power_data, |
421 | .resource = tosa_power_resource, | 394 | .resource = tosa_power_resource, |