diff options
author | Paul Mundt <lethal@linux-sh.org> | 2012-07-20 03:42:59 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2012-07-20 03:42:59 -0400 |
commit | 9ff561fdf73493d757bbc74aa58627e1381650fb (patch) | |
tree | 4484d230662126b1ac94ea545ca5429c91e0a68b /arch | |
parent | 7b98cf0cf4e8798b9e7435f966ed0d90a2a925de (diff) | |
parent | fdd85ec3eb8cc1b663678a3efa16ee59a32e0277 (diff) |
Merge branch 'common/pinctrl' into sh-latest
Diffstat (limited to 'arch')
157 files changed, 622 insertions, 484 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index b1b27525b24d..a91009c61870 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -589,6 +589,7 @@ config ARCH_ORION5X | |||
589 | select PCI | 589 | select PCI |
590 | select ARCH_REQUIRE_GPIOLIB | 590 | select ARCH_REQUIRE_GPIOLIB |
591 | select GENERIC_CLOCKEVENTS | 591 | select GENERIC_CLOCKEVENTS |
592 | select NEED_MACH_IO_H | ||
592 | select PLAT_ORION | 593 | select PLAT_ORION |
593 | help | 594 | help |
594 | Support for the following Marvell Orion 5x series SoCs: | 595 | Support for the following Marvell Orion 5x series SoCs: |
diff --git a/arch/arm/boot/dts/omap2.dtsi b/arch/arm/boot/dts/omap2.dtsi index f2ab4ea7cc0e..581cb081cb0f 100644 --- a/arch/arm/boot/dts/omap2.dtsi +++ b/arch/arm/boot/dts/omap2.dtsi | |||
@@ -44,6 +44,8 @@ | |||
44 | compatible = "ti,omap2-intc"; | 44 | compatible = "ti,omap2-intc"; |
45 | interrupt-controller; | 45 | interrupt-controller; |
46 | #interrupt-cells = <1>; | 46 | #interrupt-cells = <1>; |
47 | ti,intc-size = <96>; | ||
48 | reg = <0x480FE000 0x1000>; | ||
47 | }; | 49 | }; |
48 | 50 | ||
49 | uart1: serial@4806a000 { | 51 | uart1: serial@4806a000 { |
diff --git a/arch/arm/boot/dts/spear1310-evb.dts b/arch/arm/boot/dts/spear1310-evb.dts index 8314e4171884..dd4358bc26e2 100644 --- a/arch/arm/boot/dts/spear1310-evb.dts +++ b/arch/arm/boot/dts/spear1310-evb.dts | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * DTS file for SPEAr1310 Evaluation Baord | 2 | * DTS file for SPEAr1310 Evaluation Baord |
3 | * | 3 | * |
4 | * Copyright 2012 Viresh Kumar <viresh.kumar@st.com> | 4 | * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com> |
5 | * | 5 | * |
6 | * The code contained herein is licensed under the GNU General Public | 6 | * The code contained herein is licensed under the GNU General Public |
7 | * License. You may obtain a copy of the GNU General Public License | 7 | * License. You may obtain a copy of the GNU General Public License |
diff --git a/arch/arm/boot/dts/spear1310.dtsi b/arch/arm/boot/dts/spear1310.dtsi index 9e61da404d57..419ea7413d23 100644 --- a/arch/arm/boot/dts/spear1310.dtsi +++ b/arch/arm/boot/dts/spear1310.dtsi | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * DTS file for all SPEAr1310 SoCs | 2 | * DTS file for all SPEAr1310 SoCs |
3 | * | 3 | * |
4 | * Copyright 2012 Viresh Kumar <viresh.kumar@st.com> | 4 | * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com> |
5 | * | 5 | * |
6 | * The code contained herein is licensed under the GNU General Public | 6 | * The code contained herein is licensed under the GNU General Public |
7 | * License. You may obtain a copy of the GNU General Public License | 7 | * License. You may obtain a copy of the GNU General Public License |
diff --git a/arch/arm/boot/dts/spear1340-evb.dts b/arch/arm/boot/dts/spear1340-evb.dts index 0d8472e5ab9f..c9a54e06fb68 100644 --- a/arch/arm/boot/dts/spear1340-evb.dts +++ b/arch/arm/boot/dts/spear1340-evb.dts | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * DTS file for SPEAr1340 Evaluation Baord | 2 | * DTS file for SPEAr1340 Evaluation Baord |
3 | * | 3 | * |
4 | * Copyright 2012 Viresh Kumar <viresh.kumar@st.com> | 4 | * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com> |
5 | * | 5 | * |
6 | * The code contained herein is licensed under the GNU General Public | 6 | * The code contained herein is licensed under the GNU General Public |
7 | * License. You may obtain a copy of the GNU General Public License | 7 | * License. You may obtain a copy of the GNU General Public License |
diff --git a/arch/arm/boot/dts/spear1340.dtsi b/arch/arm/boot/dts/spear1340.dtsi index a26fc47a55e8..d71fe2a68f09 100644 --- a/arch/arm/boot/dts/spear1340.dtsi +++ b/arch/arm/boot/dts/spear1340.dtsi | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * DTS file for all SPEAr1340 SoCs | 2 | * DTS file for all SPEAr1340 SoCs |
3 | * | 3 | * |
4 | * Copyright 2012 Viresh Kumar <viresh.kumar@st.com> | 4 | * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com> |
5 | * | 5 | * |
6 | * The code contained herein is licensed under the GNU General Public | 6 | * The code contained herein is licensed under the GNU General Public |
7 | * License. You may obtain a copy of the GNU General Public License | 7 | * License. You may obtain a copy of the GNU General Public License |
diff --git a/arch/arm/boot/dts/spear13xx.dtsi b/arch/arm/boot/dts/spear13xx.dtsi index 1f8e1e1481df..10dcec7e7321 100644 --- a/arch/arm/boot/dts/spear13xx.dtsi +++ b/arch/arm/boot/dts/spear13xx.dtsi | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * DTS file for all SPEAr13xx SoCs | 2 | * DTS file for all SPEAr13xx SoCs |
3 | * | 3 | * |
4 | * Copyright 2012 Viresh Kumar <viresh.kumar@st.com> | 4 | * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com> |
5 | * | 5 | * |
6 | * The code contained herein is licensed under the GNU General Public | 6 | * The code contained herein is licensed under the GNU General Public |
7 | * License. You may obtain a copy of the GNU General Public License | 7 | * License. You may obtain a copy of the GNU General Public License |
diff --git a/arch/arm/boot/dts/spear300-evb.dts b/arch/arm/boot/dts/spear300-evb.dts index fc82b1a26458..d71b8d581e3d 100644 --- a/arch/arm/boot/dts/spear300-evb.dts +++ b/arch/arm/boot/dts/spear300-evb.dts | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * DTS file for SPEAr300 Evaluation Baord | 2 | * DTS file for SPEAr300 Evaluation Baord |
3 | * | 3 | * |
4 | * Copyright 2012 Viresh Kumar <viresh.kumar@st.com> | 4 | * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com> |
5 | * | 5 | * |
6 | * The code contained herein is licensed under the GNU General Public | 6 | * The code contained herein is licensed under the GNU General Public |
7 | * License. You may obtain a copy of the GNU General Public License | 7 | * License. You may obtain a copy of the GNU General Public License |
diff --git a/arch/arm/boot/dts/spear300.dtsi b/arch/arm/boot/dts/spear300.dtsi index 01c5e358fdb2..ed3627c116cc 100644 --- a/arch/arm/boot/dts/spear300.dtsi +++ b/arch/arm/boot/dts/spear300.dtsi | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * DTS file for SPEAr300 SoC | 2 | * DTS file for SPEAr300 SoC |
3 | * | 3 | * |
4 | * Copyright 2012 Viresh Kumar <viresh.kumar@st.com> | 4 | * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com> |
5 | * | 5 | * |
6 | * The code contained herein is licensed under the GNU General Public | 6 | * The code contained herein is licensed under the GNU General Public |
7 | * License. You may obtain a copy of the GNU General Public License | 7 | * License. You may obtain a copy of the GNU General Public License |
diff --git a/arch/arm/boot/dts/spear310-evb.dts b/arch/arm/boot/dts/spear310-evb.dts index dc5e2d445a93..b00544e0cd5d 100644 --- a/arch/arm/boot/dts/spear310-evb.dts +++ b/arch/arm/boot/dts/spear310-evb.dts | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * DTS file for SPEAr310 Evaluation Baord | 2 | * DTS file for SPEAr310 Evaluation Baord |
3 | * | 3 | * |
4 | * Copyright 2012 Viresh Kumar <viresh.kumar@st.com> | 4 | * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com> |
5 | * | 5 | * |
6 | * The code contained herein is licensed under the GNU General Public | 6 | * The code contained herein is licensed under the GNU General Public |
7 | * License. You may obtain a copy of the GNU General Public License | 7 | * License. You may obtain a copy of the GNU General Public License |
diff --git a/arch/arm/boot/dts/spear310.dtsi b/arch/arm/boot/dts/spear310.dtsi index e47081c494d9..62fc4fb3e5f9 100644 --- a/arch/arm/boot/dts/spear310.dtsi +++ b/arch/arm/boot/dts/spear310.dtsi | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * DTS file for SPEAr310 SoC | 2 | * DTS file for SPEAr310 SoC |
3 | * | 3 | * |
4 | * Copyright 2012 Viresh Kumar <viresh.kumar@st.com> | 4 | * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com> |
5 | * | 5 | * |
6 | * The code contained herein is licensed under the GNU General Public | 6 | * The code contained herein is licensed under the GNU General Public |
7 | * License. You may obtain a copy of the GNU General Public License | 7 | * License. You may obtain a copy of the GNU General Public License |
diff --git a/arch/arm/boot/dts/spear320-evb.dts b/arch/arm/boot/dts/spear320-evb.dts index 6308fa3bec1e..c13fd1f3b09f 100644 --- a/arch/arm/boot/dts/spear320-evb.dts +++ b/arch/arm/boot/dts/spear320-evb.dts | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * DTS file for SPEAr320 Evaluation Baord | 2 | * DTS file for SPEAr320 Evaluation Baord |
3 | * | 3 | * |
4 | * Copyright 2012 Viresh Kumar <viresh.kumar@st.com> | 4 | * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com> |
5 | * | 5 | * |
6 | * The code contained herein is licensed under the GNU General Public | 6 | * The code contained herein is licensed under the GNU General Public |
7 | * License. You may obtain a copy of the GNU General Public License | 7 | * License. You may obtain a copy of the GNU General Public License |
diff --git a/arch/arm/boot/dts/spear320.dtsi b/arch/arm/boot/dts/spear320.dtsi index 5372ca399b1f..1f49d69595a0 100644 --- a/arch/arm/boot/dts/spear320.dtsi +++ b/arch/arm/boot/dts/spear320.dtsi | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * DTS file for SPEAr320 SoC | 2 | * DTS file for SPEAr320 SoC |
3 | * | 3 | * |
4 | * Copyright 2012 Viresh Kumar <viresh.kumar@st.com> | 4 | * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com> |
5 | * | 5 | * |
6 | * The code contained herein is licensed under the GNU General Public | 6 | * The code contained herein is licensed under the GNU General Public |
7 | * License. You may obtain a copy of the GNU General Public License | 7 | * License. You may obtain a copy of the GNU General Public License |
diff --git a/arch/arm/boot/dts/spear3xx.dtsi b/arch/arm/boot/dts/spear3xx.dtsi index 91072553963f..3a8bb5736928 100644 --- a/arch/arm/boot/dts/spear3xx.dtsi +++ b/arch/arm/boot/dts/spear3xx.dtsi | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * DTS file for all SPEAr3xx SoCs | 2 | * DTS file for all SPEAr3xx SoCs |
3 | * | 3 | * |
4 | * Copyright 2012 Viresh Kumar <viresh.kumar@st.com> | 4 | * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com> |
5 | * | 5 | * |
6 | * The code contained herein is licensed under the GNU General Public | 6 | * The code contained herein is licensed under the GNU General Public |
7 | * License. You may obtain a copy of the GNU General Public License | 7 | * License. You may obtain a copy of the GNU General Public License |
diff --git a/arch/arm/include/asm/atomic.h b/arch/arm/include/asm/atomic.h index 68374ba6a943..c79f61faa3a5 100644 --- a/arch/arm/include/asm/atomic.h +++ b/arch/arm/include/asm/atomic.h | |||
@@ -243,7 +243,7 @@ typedef struct { | |||
243 | 243 | ||
244 | #define ATOMIC64_INIT(i) { (i) } | 244 | #define ATOMIC64_INIT(i) { (i) } |
245 | 245 | ||
246 | static inline u64 atomic64_read(atomic64_t *v) | 246 | static inline u64 atomic64_read(const atomic64_t *v) |
247 | { | 247 | { |
248 | u64 result; | 248 | u64 result; |
249 | 249 | ||
diff --git a/arch/arm/include/asm/domain.h b/arch/arm/include/asm/domain.h index 3d2220498abc..6ddbe446425e 100644 --- a/arch/arm/include/asm/domain.h +++ b/arch/arm/include/asm/domain.h | |||
@@ -60,13 +60,13 @@ | |||
60 | #ifndef __ASSEMBLY__ | 60 | #ifndef __ASSEMBLY__ |
61 | 61 | ||
62 | #ifdef CONFIG_CPU_USE_DOMAINS | 62 | #ifdef CONFIG_CPU_USE_DOMAINS |
63 | #define set_domain(x) \ | 63 | static inline void set_domain(unsigned val) |
64 | do { \ | 64 | { |
65 | __asm__ __volatile__( \ | 65 | asm volatile( |
66 | "mcr p15, 0, %0, c3, c0 @ set domain" \ | 66 | "mcr p15, 0, %0, c3, c0 @ set domain" |
67 | : : "r" (x)); \ | 67 | : : "r" (val)); |
68 | isb(); \ | 68 | isb(); |
69 | } while (0) | 69 | } |
70 | 70 | ||
71 | #define modify_domain(dom,type) \ | 71 | #define modify_domain(dom,type) \ |
72 | do { \ | 72 | do { \ |
@@ -78,8 +78,8 @@ | |||
78 | } while (0) | 78 | } while (0) |
79 | 79 | ||
80 | #else | 80 | #else |
81 | #define set_domain(x) do { } while (0) | 81 | static inline void set_domain(unsigned val) { } |
82 | #define modify_domain(dom,type) do { } while (0) | 82 | static inline void modify_domain(unsigned dom, unsigned type) { } |
83 | #endif | 83 | #endif |
84 | 84 | ||
85 | /* | 85 | /* |
diff --git a/arch/arm/include/asm/futex.h b/arch/arm/include/asm/futex.h index 7be54690aeec..e42cf597f6e6 100644 --- a/arch/arm/include/asm/futex.h +++ b/arch/arm/include/asm/futex.h | |||
@@ -19,6 +19,7 @@ | |||
19 | " .long 1b, 4f, 2b, 4f\n" \ | 19 | " .long 1b, 4f, 2b, 4f\n" \ |
20 | " .popsection\n" \ | 20 | " .popsection\n" \ |
21 | " .pushsection .fixup,\"ax\"\n" \ | 21 | " .pushsection .fixup,\"ax\"\n" \ |
22 | " .align 2\n" \ | ||
22 | "4: mov %0, " err_reg "\n" \ | 23 | "4: mov %0, " err_reg "\n" \ |
23 | " b 3b\n" \ | 24 | " b 3b\n" \ |
24 | " .popsection" | 25 | " .popsection" |
diff --git a/arch/arm/include/asm/hardware/sp810.h b/arch/arm/include/asm/hardware/sp810.h index e0d1c0cfa548..6b9b077d86b3 100644 --- a/arch/arm/include/asm/hardware/sp810.h +++ b/arch/arm/include/asm/hardware/sp810.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * ARM PrimeXsys System Controller SP810 header file | 4 | * ARM PrimeXsys System Controller SP810 header file |
5 | * | 5 | * |
6 | * Copyright (C) 2009 ST Microelectronics | 6 | * Copyright (C) 2009 ST Microelectronics |
7 | * Viresh Kumar<viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/include/asm/thread_info.h b/arch/arm/include/asm/thread_info.h index b79f8e97f775..af7b0bda3355 100644 --- a/arch/arm/include/asm/thread_info.h +++ b/arch/arm/include/asm/thread_info.h | |||
@@ -148,7 +148,6 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *, | |||
148 | #define TIF_NOTIFY_RESUME 2 /* callback before returning to user */ | 148 | #define TIF_NOTIFY_RESUME 2 /* callback before returning to user */ |
149 | #define TIF_SYSCALL_TRACE 8 | 149 | #define TIF_SYSCALL_TRACE 8 |
150 | #define TIF_SYSCALL_AUDIT 9 | 150 | #define TIF_SYSCALL_AUDIT 9 |
151 | #define TIF_SYSCALL_RESTARTSYS 10 | ||
152 | #define TIF_POLLING_NRFLAG 16 | 151 | #define TIF_POLLING_NRFLAG 16 |
153 | #define TIF_USING_IWMMXT 17 | 152 | #define TIF_USING_IWMMXT 17 |
154 | #define TIF_MEMDIE 18 /* is terminating due to OOM killer */ | 153 | #define TIF_MEMDIE 18 /* is terminating due to OOM killer */ |
@@ -164,11 +163,9 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *, | |||
164 | #define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG) | 163 | #define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG) |
165 | #define _TIF_USING_IWMMXT (1 << TIF_USING_IWMMXT) | 164 | #define _TIF_USING_IWMMXT (1 << TIF_USING_IWMMXT) |
166 | #define _TIF_SECCOMP (1 << TIF_SECCOMP) | 165 | #define _TIF_SECCOMP (1 << TIF_SECCOMP) |
167 | #define _TIF_SYSCALL_RESTARTSYS (1 << TIF_SYSCALL_RESTARTSYS) | ||
168 | 166 | ||
169 | /* Checks for any syscall work in entry-common.S */ | 167 | /* Checks for any syscall work in entry-common.S */ |
170 | #define _TIF_SYSCALL_WORK (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | \ | 168 | #define _TIF_SYSCALL_WORK (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT) |
171 | _TIF_SYSCALL_RESTARTSYS) | ||
172 | 169 | ||
173 | /* | 170 | /* |
174 | * Change these and you break ASM code in entry-common.S | 171 | * Change these and you break ASM code in entry-common.S |
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index 437f0c426517..0d1851ca6eb9 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S | |||
@@ -495,6 +495,7 @@ ENDPROC(__und_usr) | |||
495 | * The out of line fixup for the ldrt above. | 495 | * The out of line fixup for the ldrt above. |
496 | */ | 496 | */ |
497 | .pushsection .fixup, "ax" | 497 | .pushsection .fixup, "ax" |
498 | .align 2 | ||
498 | 4: mov pc, r9 | 499 | 4: mov pc, r9 |
499 | .popsection | 500 | .popsection |
500 | .pushsection __ex_table,"a" | 501 | .pushsection __ex_table,"a" |
diff --git a/arch/arm/kernel/kprobes-test-arm.c b/arch/arm/kernel/kprobes-test-arm.c index ba32b393b3f0..38c1a3b103a0 100644 --- a/arch/arm/kernel/kprobes-test-arm.c +++ b/arch/arm/kernel/kprobes-test-arm.c | |||
@@ -187,8 +187,8 @@ void kprobe_arm_test_cases(void) | |||
187 | TEST_BF_R ("mov pc, r",0,2f,"") | 187 | TEST_BF_R ("mov pc, r",0,2f,"") |
188 | TEST_BF_RR("mov pc, r",0,2f,", asl r",1,0,"") | 188 | TEST_BF_RR("mov pc, r",0,2f,", asl r",1,0,"") |
189 | TEST_BB( "sub pc, pc, #1b-2b+8") | 189 | TEST_BB( "sub pc, pc, #1b-2b+8") |
190 | #if __LINUX_ARM_ARCH__ >= 6 | 190 | #if __LINUX_ARM_ARCH__ == 6 && !defined(CONFIG_CPU_V7) |
191 | TEST_BB( "sub pc, pc, #1b-2b+8-2") /* UNPREDICTABLE before ARMv6 */ | 191 | TEST_BB( "sub pc, pc, #1b-2b+8-2") /* UNPREDICTABLE before and after ARMv6 */ |
192 | #endif | 192 | #endif |
193 | TEST_BB_R( "sub pc, pc, r",14, 1f-2f+8,"") | 193 | TEST_BB_R( "sub pc, pc, r",14, 1f-2f+8,"") |
194 | TEST_BB_R( "rsb pc, r",14,1f-2f+8,", pc") | 194 | TEST_BB_R( "rsb pc, r",14,1f-2f+8,", pc") |
diff --git a/arch/arm/kernel/kprobes-thumb.c b/arch/arm/kernel/kprobes-thumb.c index 8f96ec778e8d..6123daf397a7 100644 --- a/arch/arm/kernel/kprobes-thumb.c +++ b/arch/arm/kernel/kprobes-thumb.c | |||
@@ -660,7 +660,7 @@ static const union decode_item t32_table_1111_100x[] = { | |||
660 | /* LDRSB (literal) 1111 1001 x001 1111 xxxx xxxx xxxx xxxx */ | 660 | /* LDRSB (literal) 1111 1001 x001 1111 xxxx xxxx xxxx xxxx */ |
661 | /* LDRH (literal) 1111 1000 x011 1111 xxxx xxxx xxxx xxxx */ | 661 | /* LDRH (literal) 1111 1000 x011 1111 xxxx xxxx xxxx xxxx */ |
662 | /* LDRSH (literal) 1111 1001 x011 1111 xxxx xxxx xxxx xxxx */ | 662 | /* LDRSH (literal) 1111 1001 x011 1111 xxxx xxxx xxxx xxxx */ |
663 | DECODE_EMULATEX (0xfe5f0000, 0xf81f0000, t32_simulate_ldr_literal, | 663 | DECODE_SIMULATEX(0xfe5f0000, 0xf81f0000, t32_simulate_ldr_literal, |
664 | REGS(PC, NOSPPCX, 0, 0, 0)), | 664 | REGS(PC, NOSPPCX, 0, 0, 0)), |
665 | 665 | ||
666 | /* STRB (immediate) 1111 1000 0000 xxxx xxxx 1xxx xxxx xxxx */ | 666 | /* STRB (immediate) 1111 1000 0000 xxxx xxxx 1xxx xxxx xxxx */ |
diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c index 186c8cb982c5..a02eada3aa5d 100644 --- a/arch/arm/kernel/perf_event.c +++ b/arch/arm/kernel/perf_event.c | |||
@@ -503,7 +503,7 @@ __hw_perf_event_init(struct perf_event *event) | |||
503 | event_requires_mode_exclusion(&event->attr)) { | 503 | event_requires_mode_exclusion(&event->attr)) { |
504 | pr_debug("ARM performance counters do not support " | 504 | pr_debug("ARM performance counters do not support " |
505 | "mode exclusion\n"); | 505 | "mode exclusion\n"); |
506 | return -EPERM; | 506 | return -EOPNOTSUPP; |
507 | } | 507 | } |
508 | 508 | ||
509 | /* | 509 | /* |
diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c index 5700a7ae7f0b..14e38261cd31 100644 --- a/arch/arm/kernel/ptrace.c +++ b/arch/arm/kernel/ptrace.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include <linux/regset.h> | 25 | #include <linux/regset.h> |
26 | #include <linux/audit.h> | 26 | #include <linux/audit.h> |
27 | #include <linux/tracehook.h> | 27 | #include <linux/tracehook.h> |
28 | #include <linux/unistd.h> | ||
29 | 28 | ||
30 | #include <asm/pgtable.h> | 29 | #include <asm/pgtable.h> |
31 | #include <asm/traps.h> | 30 | #include <asm/traps.h> |
@@ -918,8 +917,6 @@ asmlinkage int syscall_trace(int why, struct pt_regs *regs, int scno) | |||
918 | audit_syscall_entry(AUDIT_ARCH_ARM, scno, regs->ARM_r0, | 917 | audit_syscall_entry(AUDIT_ARCH_ARM, scno, regs->ARM_r0, |
919 | regs->ARM_r1, regs->ARM_r2, regs->ARM_r3); | 918 | regs->ARM_r1, regs->ARM_r2, regs->ARM_r3); |
920 | 919 | ||
921 | if (why == 0 && test_and_clear_thread_flag(TIF_SYSCALL_RESTARTSYS)) | ||
922 | scno = __NR_restart_syscall - __NR_SYSCALL_BASE; | ||
923 | if (!test_thread_flag(TIF_SYSCALL_TRACE)) | 920 | if (!test_thread_flag(TIF_SYSCALL_TRACE)) |
924 | return scno; | 921 | return scno; |
925 | 922 | ||
diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c index fd2392a17ac1..536c5d6b340b 100644 --- a/arch/arm/kernel/signal.c +++ b/arch/arm/kernel/signal.c | |||
@@ -27,6 +27,7 @@ | |||
27 | */ | 27 | */ |
28 | #define SWI_SYS_SIGRETURN (0xef000000|(__NR_sigreturn)|(__NR_OABI_SYSCALL_BASE)) | 28 | #define SWI_SYS_SIGRETURN (0xef000000|(__NR_sigreturn)|(__NR_OABI_SYSCALL_BASE)) |
29 | #define SWI_SYS_RT_SIGRETURN (0xef000000|(__NR_rt_sigreturn)|(__NR_OABI_SYSCALL_BASE)) | 29 | #define SWI_SYS_RT_SIGRETURN (0xef000000|(__NR_rt_sigreturn)|(__NR_OABI_SYSCALL_BASE)) |
30 | #define SWI_SYS_RESTART (0xef000000|__NR_restart_syscall|__NR_OABI_SYSCALL_BASE) | ||
30 | 31 | ||
31 | /* | 32 | /* |
32 | * With EABI, the syscall number has to be loaded into r7. | 33 | * With EABI, the syscall number has to be loaded into r7. |
@@ -47,6 +48,18 @@ const unsigned long sigreturn_codes[7] = { | |||
47 | }; | 48 | }; |
48 | 49 | ||
49 | /* | 50 | /* |
51 | * Either we support OABI only, or we have EABI with the OABI | ||
52 | * compat layer enabled. In the later case we don't know if | ||
53 | * user space is EABI or not, and if not we must not clobber r7. | ||
54 | * Always using the OABI syscall solves that issue and works for | ||
55 | * all those cases. | ||
56 | */ | ||
57 | const unsigned long syscall_restart_code[2] = { | ||
58 | SWI_SYS_RESTART, /* swi __NR_restart_syscall */ | ||
59 | 0xe49df004, /* ldr pc, [sp], #4 */ | ||
60 | }; | ||
61 | |||
62 | /* | ||
50 | * atomically swap in the new signal mask, and wait for a signal. | 63 | * atomically swap in the new signal mask, and wait for a signal. |
51 | */ | 64 | */ |
52 | asmlinkage int sys_sigsuspend(int restart, unsigned long oldmask, old_sigset_t mask) | 65 | asmlinkage int sys_sigsuspend(int restart, unsigned long oldmask, old_sigset_t mask) |
@@ -592,10 +605,12 @@ static void do_signal(struct pt_regs *regs, int syscall) | |||
592 | case -ERESTARTNOHAND: | 605 | case -ERESTARTNOHAND: |
593 | case -ERESTARTSYS: | 606 | case -ERESTARTSYS: |
594 | case -ERESTARTNOINTR: | 607 | case -ERESTARTNOINTR: |
595 | case -ERESTART_RESTARTBLOCK: | ||
596 | regs->ARM_r0 = regs->ARM_ORIG_r0; | 608 | regs->ARM_r0 = regs->ARM_ORIG_r0; |
597 | regs->ARM_pc = restart_addr; | 609 | regs->ARM_pc = restart_addr; |
598 | break; | 610 | break; |
611 | case -ERESTART_RESTARTBLOCK: | ||
612 | regs->ARM_r0 = -EINTR; | ||
613 | break; | ||
599 | } | 614 | } |
600 | } | 615 | } |
601 | 616 | ||
@@ -611,14 +626,12 @@ static void do_signal(struct pt_regs *regs, int syscall) | |||
611 | * debugger has chosen to restart at a different PC. | 626 | * debugger has chosen to restart at a different PC. |
612 | */ | 627 | */ |
613 | if (regs->ARM_pc == restart_addr) { | 628 | if (regs->ARM_pc == restart_addr) { |
614 | if (retval == -ERESTARTNOHAND || | 629 | if (retval == -ERESTARTNOHAND |
615 | retval == -ERESTART_RESTARTBLOCK | ||
616 | || (retval == -ERESTARTSYS | 630 | || (retval == -ERESTARTSYS |
617 | && !(ka.sa.sa_flags & SA_RESTART))) { | 631 | && !(ka.sa.sa_flags & SA_RESTART))) { |
618 | regs->ARM_r0 = -EINTR; | 632 | regs->ARM_r0 = -EINTR; |
619 | regs->ARM_pc = continue_addr; | 633 | regs->ARM_pc = continue_addr; |
620 | } | 634 | } |
621 | clear_thread_flag(TIF_SYSCALL_RESTARTSYS); | ||
622 | } | 635 | } |
623 | 636 | ||
624 | handle_signal(signr, &ka, &info, regs); | 637 | handle_signal(signr, &ka, &info, regs); |
@@ -632,8 +645,29 @@ static void do_signal(struct pt_regs *regs, int syscall) | |||
632 | * ignore the restart. | 645 | * ignore the restart. |
633 | */ | 646 | */ |
634 | if (retval == -ERESTART_RESTARTBLOCK | 647 | if (retval == -ERESTART_RESTARTBLOCK |
635 | && regs->ARM_pc == restart_addr) | 648 | && regs->ARM_pc == continue_addr) { |
636 | set_thread_flag(TIF_SYSCALL_RESTARTSYS); | 649 | if (thumb_mode(regs)) { |
650 | regs->ARM_r7 = __NR_restart_syscall - __NR_SYSCALL_BASE; | ||
651 | regs->ARM_pc -= 2; | ||
652 | } else { | ||
653 | #if defined(CONFIG_AEABI) && !defined(CONFIG_OABI_COMPAT) | ||
654 | regs->ARM_r7 = __NR_restart_syscall; | ||
655 | regs->ARM_pc -= 4; | ||
656 | #else | ||
657 | u32 __user *usp; | ||
658 | |||
659 | regs->ARM_sp -= 4; | ||
660 | usp = (u32 __user *)regs->ARM_sp; | ||
661 | |||
662 | if (put_user(regs->ARM_pc, usp) == 0) { | ||
663 | regs->ARM_pc = KERN_RESTART_CODE; | ||
664 | } else { | ||
665 | regs->ARM_sp += 4; | ||
666 | force_sigsegv(0, current); | ||
667 | } | ||
668 | #endif | ||
669 | } | ||
670 | } | ||
637 | } | 671 | } |
638 | 672 | ||
639 | restore_saved_sigmask(); | 673 | restore_saved_sigmask(); |
diff --git a/arch/arm/kernel/signal.h b/arch/arm/kernel/signal.h index 5ff067b7c752..6fcfe8398aa4 100644 --- a/arch/arm/kernel/signal.h +++ b/arch/arm/kernel/signal.h | |||
@@ -8,5 +8,7 @@ | |||
8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
9 | */ | 9 | */ |
10 | #define KERN_SIGRETURN_CODE (CONFIG_VECTORS_BASE + 0x00000500) | 10 | #define KERN_SIGRETURN_CODE (CONFIG_VECTORS_BASE + 0x00000500) |
11 | #define KERN_RESTART_CODE (KERN_SIGRETURN_CODE + sizeof(sigreturn_codes)) | ||
11 | 12 | ||
12 | extern const unsigned long sigreturn_codes[7]; | 13 | extern const unsigned long sigreturn_codes[7]; |
14 | extern const unsigned long syscall_restart_code[2]; | ||
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index 4928d89758f4..3647170e9a16 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c | |||
@@ -820,6 +820,8 @@ void __init early_trap_init(void *vectors_base) | |||
820 | */ | 820 | */ |
821 | memcpy((void *)(vectors + KERN_SIGRETURN_CODE - CONFIG_VECTORS_BASE), | 821 | memcpy((void *)(vectors + KERN_SIGRETURN_CODE - CONFIG_VECTORS_BASE), |
822 | sigreturn_codes, sizeof(sigreturn_codes)); | 822 | sigreturn_codes, sizeof(sigreturn_codes)); |
823 | memcpy((void *)(vectors + KERN_RESTART_CODE - CONFIG_VECTORS_BASE), | ||
824 | syscall_restart_code, sizeof(syscall_restart_code)); | ||
823 | 825 | ||
824 | flush_icache_range(vectors, vectors + PAGE_SIZE); | 826 | flush_icache_range(vectors, vectors + PAGE_SIZE); |
825 | modify_domain(DOMAIN_USER, DOMAIN_CLIENT); | 827 | modify_domain(DOMAIN_USER, DOMAIN_CLIENT); |
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S index 43a31fb06318..36ff15bbfdd4 100644 --- a/arch/arm/kernel/vmlinux.lds.S +++ b/arch/arm/kernel/vmlinux.lds.S | |||
@@ -183,7 +183,9 @@ SECTIONS | |||
183 | } | 183 | } |
184 | #endif | 184 | #endif |
185 | 185 | ||
186 | #ifdef CONFIG_SMP | ||
186 | PERCPU_SECTION(L1_CACHE_BYTES) | 187 | PERCPU_SECTION(L1_CACHE_BYTES) |
188 | #endif | ||
187 | 189 | ||
188 | #ifdef CONFIG_XIP_KERNEL | 190 | #ifdef CONFIG_XIP_KERNEL |
189 | __data_loc = ALIGN(4); /* location in binary */ | 191 | __data_loc = ALIGN(4); /* location in binary */ |
diff --git a/arch/arm/mach-dove/include/mach/bridge-regs.h b/arch/arm/mach-dove/include/mach/bridge-regs.h index 226949dc4ac0..f953bb54aa9d 100644 --- a/arch/arm/mach-dove/include/mach/bridge-regs.h +++ b/arch/arm/mach-dove/include/mach/bridge-regs.h | |||
@@ -50,5 +50,6 @@ | |||
50 | #define POWER_MANAGEMENT (BRIDGE_VIRT_BASE | 0x011c) | 50 | #define POWER_MANAGEMENT (BRIDGE_VIRT_BASE | 0x011c) |
51 | 51 | ||
52 | #define TIMER_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0300) | 52 | #define TIMER_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0300) |
53 | #define TIMER_PHYS_BASE (BRIDGE_PHYS_BASE | 0x0300) | ||
53 | 54 | ||
54 | #endif | 55 | #endif |
diff --git a/arch/arm/mach-dove/include/mach/dove.h b/arch/arm/mach-dove/include/mach/dove.h index ad1165d488c1..d52b0ef313b7 100644 --- a/arch/arm/mach-dove/include/mach/dove.h +++ b/arch/arm/mach-dove/include/mach/dove.h | |||
@@ -78,6 +78,7 @@ | |||
78 | 78 | ||
79 | /* North-South Bridge */ | 79 | /* North-South Bridge */ |
80 | #define BRIDGE_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0x20000) | 80 | #define BRIDGE_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0x20000) |
81 | #define BRIDGE_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0x20000) | ||
81 | 82 | ||
82 | /* Cryptographic Engine */ | 83 | /* Cryptographic Engine */ |
83 | #define DOVE_CRYPT_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0x30000) | 84 | #define DOVE_CRYPT_PHYS_BASE (DOVE_SB_REGS_PHYS_BASE | 0x30000) |
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig index 573be57d3d28..6f6d13f91e4c 100644 --- a/arch/arm/mach-exynos/Kconfig +++ b/arch/arm/mach-exynos/Kconfig | |||
@@ -212,7 +212,7 @@ config MACH_SMDKV310 | |||
212 | select EXYNOS_DEV_SYSMMU | 212 | select EXYNOS_DEV_SYSMMU |
213 | select EXYNOS4_DEV_AHCI | 213 | select EXYNOS4_DEV_AHCI |
214 | select SAMSUNG_DEV_KEYPAD | 214 | select SAMSUNG_DEV_KEYPAD |
215 | select EXYNOS4_DEV_DMA | 215 | select EXYNOS_DEV_DMA |
216 | select SAMSUNG_DEV_PWM | 216 | select SAMSUNG_DEV_PWM |
217 | select EXYNOS4_DEV_USB_OHCI | 217 | select EXYNOS4_DEV_USB_OHCI |
218 | select EXYNOS4_SETUP_FIMD0 | 218 | select EXYNOS4_SETUP_FIMD0 |
@@ -264,7 +264,7 @@ config MACH_UNIVERSAL_C210 | |||
264 | select S5P_DEV_ONENAND | 264 | select S5P_DEV_ONENAND |
265 | select S5P_DEV_TV | 265 | select S5P_DEV_TV |
266 | select EXYNOS_DEV_SYSMMU | 266 | select EXYNOS_DEV_SYSMMU |
267 | select EXYNOS4_DEV_DMA | 267 | select EXYNOS_DEV_DMA |
268 | select EXYNOS_DEV_DRM | 268 | select EXYNOS_DEV_DRM |
269 | select EXYNOS4_SETUP_FIMD0 | 269 | select EXYNOS4_SETUP_FIMD0 |
270 | select EXYNOS4_SETUP_I2C1 | 270 | select EXYNOS4_SETUP_I2C1 |
@@ -303,7 +303,7 @@ config MACH_NURI | |||
303 | select S5P_DEV_MFC | 303 | select S5P_DEV_MFC |
304 | select S5P_DEV_USB_EHCI | 304 | select S5P_DEV_USB_EHCI |
305 | select S5P_SETUP_MIPIPHY | 305 | select S5P_SETUP_MIPIPHY |
306 | select EXYNOS4_DEV_DMA | 306 | select EXYNOS_DEV_DMA |
307 | select EXYNOS_DEV_DRM | 307 | select EXYNOS_DEV_DRM |
308 | select EXYNOS4_SETUP_FIMC | 308 | select EXYNOS4_SETUP_FIMC |
309 | select EXYNOS4_SETUP_FIMD0 | 309 | select EXYNOS4_SETUP_FIMD0 |
@@ -341,7 +341,7 @@ config MACH_ORIGEN | |||
341 | select SAMSUNG_DEV_PWM | 341 | select SAMSUNG_DEV_PWM |
342 | select EXYNOS_DEV_DRM | 342 | select EXYNOS_DEV_DRM |
343 | select EXYNOS_DEV_SYSMMU | 343 | select EXYNOS_DEV_SYSMMU |
344 | select EXYNOS4_DEV_DMA | 344 | select EXYNOS_DEV_DMA |
345 | select EXYNOS4_DEV_USB_OHCI | 345 | select EXYNOS4_DEV_USB_OHCI |
346 | select EXYNOS4_SETUP_FIMD0 | 346 | select EXYNOS4_SETUP_FIMD0 |
347 | select EXYNOS4_SETUP_SDHCI | 347 | select EXYNOS4_SETUP_SDHCI |
diff --git a/arch/arm/mach-imx/clk-imx35.c b/arch/arm/mach-imx/clk-imx35.c index 920a8cc42726..c6422fb10bae 100644 --- a/arch/arm/mach-imx/clk-imx35.c +++ b/arch/arm/mach-imx/clk-imx35.c | |||
@@ -201,7 +201,6 @@ int __init mx35_clocks_init() | |||
201 | pr_err("i.MX35 clk %d: register failed with %ld\n", | 201 | pr_err("i.MX35 clk %d: register failed with %ld\n", |
202 | i, PTR_ERR(clk[i])); | 202 | i, PTR_ERR(clk[i])); |
203 | 203 | ||
204 | |||
205 | clk_register_clkdev(clk[pata_gate], NULL, "pata_imx"); | 204 | clk_register_clkdev(clk[pata_gate], NULL, "pata_imx"); |
206 | clk_register_clkdev(clk[can1_gate], NULL, "flexcan.0"); | 205 | clk_register_clkdev(clk[can1_gate], NULL, "flexcan.0"); |
207 | clk_register_clkdev(clk[can2_gate], NULL, "flexcan.1"); | 206 | clk_register_clkdev(clk[can2_gate], NULL, "flexcan.1"); |
@@ -264,6 +263,14 @@ int __init mx35_clocks_init() | |||
264 | clk_prepare_enable(clk[iim_gate]); | 263 | clk_prepare_enable(clk[iim_gate]); |
265 | clk_prepare_enable(clk[emi_gate]); | 264 | clk_prepare_enable(clk[emi_gate]); |
266 | 265 | ||
266 | /* | ||
267 | * SCC is needed to boot via mmc after a watchdog reset. The clock code | ||
268 | * before conversion to common clk also enabled UART1 (which isn't | ||
269 | * handled here and not needed for mmc) and IIM (which is enabled | ||
270 | * unconditionally above). | ||
271 | */ | ||
272 | clk_prepare_enable(clk[scc_gate]); | ||
273 | |||
267 | imx_print_silicon_rev("i.MX35", mx35_revision()); | 274 | imx_print_silicon_rev("i.MX35", mx35_revision()); |
268 | 275 | ||
269 | #ifdef CONFIG_MXC_USE_EPIT | 276 | #ifdef CONFIG_MXC_USE_EPIT |
diff --git a/arch/arm/mach-imx/clk-imx6q.c b/arch/arm/mach-imx/clk-imx6q.c index 17dc66a085a5..e1a17ac7b3b4 100644 --- a/arch/arm/mach-imx/clk-imx6q.c +++ b/arch/arm/mach-imx/clk-imx6q.c | |||
@@ -152,13 +152,14 @@ enum mx6q_clks { | |||
152 | ssi2, ssi3, uart_ipg, uart_serial, usboh3, usdhc1, usdhc2, usdhc3, | 152 | ssi2, ssi3, uart_ipg, uart_serial, usboh3, usdhc1, usdhc2, usdhc3, |
153 | usdhc4, vdo_axi, vpu_axi, cko1, pll1_sys, pll2_bus, pll3_usb_otg, | 153 | usdhc4, vdo_axi, vpu_axi, cko1, pll1_sys, pll2_bus, pll3_usb_otg, |
154 | pll4_audio, pll5_video, pll6_mlb, pll7_usb_host, pll8_enet, ssi1_ipg, | 154 | pll4_audio, pll5_video, pll6_mlb, pll7_usb_host, pll8_enet, ssi1_ipg, |
155 | ssi2_ipg, ssi3_ipg, clk_max | 155 | ssi2_ipg, ssi3_ipg, rom, |
156 | clk_max | ||
156 | }; | 157 | }; |
157 | 158 | ||
158 | static struct clk *clk[clk_max]; | 159 | static struct clk *clk[clk_max]; |
159 | 160 | ||
160 | static enum mx6q_clks const clks_init_on[] __initconst = { | 161 | static enum mx6q_clks const clks_init_on[] __initconst = { |
161 | mmdc_ch0_axi, mmdc_ch1_axi, | 162 | mmdc_ch0_axi, rom, |
162 | }; | 163 | }; |
163 | 164 | ||
164 | int __init mx6q_clocks_init(void) | 165 | int __init mx6q_clocks_init(void) |
@@ -364,6 +365,7 @@ int __init mx6q_clocks_init(void) | |||
364 | clk[gpmi_bch] = imx_clk_gate2("gpmi_bch", "usdhc4", base + 0x78, 26); | 365 | clk[gpmi_bch] = imx_clk_gate2("gpmi_bch", "usdhc4", base + 0x78, 26); |
365 | clk[gpmi_io] = imx_clk_gate2("gpmi_io", "enfc", base + 0x78, 28); | 366 | clk[gpmi_io] = imx_clk_gate2("gpmi_io", "enfc", base + 0x78, 28); |
366 | clk[gpmi_apb] = imx_clk_gate2("gpmi_apb", "usdhc3", base + 0x78, 30); | 367 | clk[gpmi_apb] = imx_clk_gate2("gpmi_apb", "usdhc3", base + 0x78, 30); |
368 | clk[rom] = imx_clk_gate2("rom", "ahb", base + 0x7c, 0); | ||
367 | clk[sata] = imx_clk_gate2("sata", "ipg", base + 0x7c, 4); | 369 | clk[sata] = imx_clk_gate2("sata", "ipg", base + 0x7c, 4); |
368 | clk[sdma] = imx_clk_gate2("sdma", "ahb", base + 0x7c, 6); | 370 | clk[sdma] = imx_clk_gate2("sdma", "ahb", base + 0x7c, 6); |
369 | clk[spba] = imx_clk_gate2("spba", "ipg", base + 0x7c, 12); | 371 | clk[spba] = imx_clk_gate2("spba", "ipg", base + 0x7c, 12); |
diff --git a/arch/arm/mach-imx/mach-imx27_visstrim_m10.c b/arch/arm/mach-imx/mach-imx27_visstrim_m10.c index f76edb96a48a..ba09552fe5fe 100644 --- a/arch/arm/mach-imx/mach-imx27_visstrim_m10.c +++ b/arch/arm/mach-imx/mach-imx27_visstrim_m10.c | |||
@@ -38,7 +38,7 @@ | |||
38 | #include <asm/mach-types.h> | 38 | #include <asm/mach-types.h> |
39 | #include <asm/mach/arch.h> | 39 | #include <asm/mach/arch.h> |
40 | #include <asm/mach/time.h> | 40 | #include <asm/mach/time.h> |
41 | #include <asm/system.h> | 41 | #include <asm/system_info.h> |
42 | #include <mach/common.h> | 42 | #include <mach/common.h> |
43 | #include <mach/iomux-mx27.h> | 43 | #include <mach/iomux-mx27.h> |
44 | 44 | ||
diff --git a/arch/arm/mach-kirkwood/board-iconnect.c b/arch/arm/mach-kirkwood/board-iconnect.c index 2222c5739519..b0d3cc49269d 100644 --- a/arch/arm/mach-kirkwood/board-iconnect.c +++ b/arch/arm/mach-kirkwood/board-iconnect.c | |||
@@ -20,9 +20,6 @@ | |||
20 | #include <linux/mv643xx_eth.h> | 20 | #include <linux/mv643xx_eth.h> |
21 | #include <linux/gpio.h> | 21 | #include <linux/gpio.h> |
22 | #include <linux/leds.h> | 22 | #include <linux/leds.h> |
23 | #include <linux/spi/flash.h> | ||
24 | #include <linux/spi/spi.h> | ||
25 | #include <linux/spi/orion_spi.h> | ||
26 | #include <linux/i2c.h> | 23 | #include <linux/i2c.h> |
27 | #include <linux/input.h> | 24 | #include <linux/input.h> |
28 | #include <linux/gpio_keys.h> | 25 | #include <linux/gpio_keys.h> |
diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c index e1d2c6def5e6..f261cd242643 100644 --- a/arch/arm/mach-kirkwood/common.c +++ b/arch/arm/mach-kirkwood/common.c | |||
@@ -159,6 +159,7 @@ static struct clk __init *clk_register_gate_fn(struct device *dev, | |||
159 | gate_fn->gate.flags = clk_gate_flags; | 159 | gate_fn->gate.flags = clk_gate_flags; |
160 | gate_fn->gate.lock = lock; | 160 | gate_fn->gate.lock = lock; |
161 | gate_fn->gate.hw.init = &init; | 161 | gate_fn->gate.hw.init = &init; |
162 | gate_fn->fn = fn; | ||
162 | 163 | ||
163 | /* ops is the gate ops, but with our disable function */ | 164 | /* ops is the gate ops, but with our disable function */ |
164 | if (clk_gate_fn_ops.disable != clk_gate_fn_disable) { | 165 | if (clk_gate_fn_ops.disable != clk_gate_fn_disable) { |
diff --git a/arch/arm/mach-kirkwood/include/mach/bridge-regs.h b/arch/arm/mach-kirkwood/include/mach/bridge-regs.h index 3eee37a3b501..a115142f8690 100644 --- a/arch/arm/mach-kirkwood/include/mach/bridge-regs.h +++ b/arch/arm/mach-kirkwood/include/mach/bridge-regs.h | |||
@@ -38,6 +38,7 @@ | |||
38 | #define IRQ_MASK_HIGH_OFF 0x0014 | 38 | #define IRQ_MASK_HIGH_OFF 0x0014 |
39 | 39 | ||
40 | #define TIMER_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0300) | 40 | #define TIMER_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0300) |
41 | #define TIMER_PHYS_BASE (BRIDGE_PHYS_BASE | 0x0300) | ||
41 | 42 | ||
42 | #define L2_CONFIG_REG (BRIDGE_VIRT_BASE | 0x0128) | 43 | #define L2_CONFIG_REG (BRIDGE_VIRT_BASE | 0x0128) |
43 | #define L2_WRITETHROUGH 0x00000010 | 44 | #define L2_WRITETHROUGH 0x00000010 |
diff --git a/arch/arm/mach-kirkwood/include/mach/kirkwood.h b/arch/arm/mach-kirkwood/include/mach/kirkwood.h index fede3d503efa..c5b68510776b 100644 --- a/arch/arm/mach-kirkwood/include/mach/kirkwood.h +++ b/arch/arm/mach-kirkwood/include/mach/kirkwood.h | |||
@@ -80,6 +80,7 @@ | |||
80 | #define UART1_VIRT_BASE (DEV_BUS_VIRT_BASE | 0x2100) | 80 | #define UART1_VIRT_BASE (DEV_BUS_VIRT_BASE | 0x2100) |
81 | 81 | ||
82 | #define BRIDGE_VIRT_BASE (KIRKWOOD_REGS_VIRT_BASE | 0x20000) | 82 | #define BRIDGE_VIRT_BASE (KIRKWOOD_REGS_VIRT_BASE | 0x20000) |
83 | #define BRIDGE_PHYS_BASE (KIRKWOOD_REGS_PHYS_BASE | 0x20000) | ||
83 | 84 | ||
84 | #define CRYPTO_PHYS_BASE (KIRKWOOD_REGS_PHYS_BASE | 0x30000) | 85 | #define CRYPTO_PHYS_BASE (KIRKWOOD_REGS_PHYS_BASE | 0x30000) |
85 | 86 | ||
diff --git a/arch/arm/mach-mmp/include/mach/gpio-pxa.h b/arch/arm/mach-mmp/include/mach/gpio-pxa.h deleted file mode 100644 index 0e135a599f3e..000000000000 --- a/arch/arm/mach-mmp/include/mach/gpio-pxa.h +++ /dev/null | |||
@@ -1,29 +0,0 @@ | |||
1 | #ifndef __ASM_MACH_GPIO_PXA_H | ||
2 | #define __ASM_MACH_GPIO_PXA_H | ||
3 | |||
4 | #include <mach/addr-map.h> | ||
5 | #include <mach/cputype.h> | ||
6 | #include <mach/irqs.h> | ||
7 | |||
8 | #define GPIO_REGS_VIRT (APB_VIRT_BASE + 0x19000) | ||
9 | |||
10 | #define BANK_OFF(n) (((n) < 3) ? (n) << 2 : 0x100 + (((n) - 3) << 2)) | ||
11 | #define GPIO_REG(x) (*(volatile u32 *)(GPIO_REGS_VIRT + (x))) | ||
12 | |||
13 | #define gpio_to_bank(gpio) ((gpio) >> 5) | ||
14 | |||
15 | /* NOTE: these macros are defined here to make optimization of | ||
16 | * gpio_{get,set}_value() to work when 'gpio' is a constant. | ||
17 | * Usage of these macros otherwise is no longer recommended, | ||
18 | * use generic GPIO API whenever possible. | ||
19 | */ | ||
20 | #define GPIO_bit(gpio) (1 << ((gpio) & 0x1f)) | ||
21 | |||
22 | #define GPLR(x) GPIO_REG(BANK_OFF(gpio_to_bank(x)) + 0x00) | ||
23 | #define GPDR(x) GPIO_REG(BANK_OFF(gpio_to_bank(x)) + 0x0c) | ||
24 | #define GPSR(x) GPIO_REG(BANK_OFF(gpio_to_bank(x)) + 0x18) | ||
25 | #define GPCR(x) GPIO_REG(BANK_OFF(gpio_to_bank(x)) + 0x24) | ||
26 | |||
27 | #include <plat/gpio-pxa.h> | ||
28 | |||
29 | #endif /* __ASM_MACH_GPIO_PXA_H */ | ||
diff --git a/arch/arm/mach-mv78xx0/include/mach/bridge-regs.h b/arch/arm/mach-mv78xx0/include/mach/bridge-regs.h index c64dbb96dbad..eb187e0e059b 100644 --- a/arch/arm/mach-mv78xx0/include/mach/bridge-regs.h +++ b/arch/arm/mach-mv78xx0/include/mach/bridge-regs.h | |||
@@ -31,5 +31,6 @@ | |||
31 | #define IRQ_MASK_HIGH_OFF 0x0014 | 31 | #define IRQ_MASK_HIGH_OFF 0x0014 |
32 | 32 | ||
33 | #define TIMER_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0300) | 33 | #define TIMER_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0300) |
34 | #define TIMER_PHYS_BASE (BRIDGE_PHYS_BASE | 0x0300) | ||
34 | 35 | ||
35 | #endif | 36 | #endif |
diff --git a/arch/arm/mach-mv78xx0/include/mach/mv78xx0.h b/arch/arm/mach-mv78xx0/include/mach/mv78xx0.h index 3674497162e3..e807c4c52a0b 100644 --- a/arch/arm/mach-mv78xx0/include/mach/mv78xx0.h +++ b/arch/arm/mach-mv78xx0/include/mach/mv78xx0.h | |||
@@ -42,6 +42,7 @@ | |||
42 | #define MV78XX0_CORE0_REGS_PHYS_BASE 0xf1020000 | 42 | #define MV78XX0_CORE0_REGS_PHYS_BASE 0xf1020000 |
43 | #define MV78XX0_CORE1_REGS_PHYS_BASE 0xf1024000 | 43 | #define MV78XX0_CORE1_REGS_PHYS_BASE 0xf1024000 |
44 | #define MV78XX0_CORE_REGS_VIRT_BASE 0xfe400000 | 44 | #define MV78XX0_CORE_REGS_VIRT_BASE 0xfe400000 |
45 | #define MV78XX0_CORE_REGS_PHYS_BASE 0xfe400000 | ||
45 | #define MV78XX0_CORE_REGS_SIZE SZ_16K | 46 | #define MV78XX0_CORE_REGS_SIZE SZ_16K |
46 | 47 | ||
47 | #define MV78XX0_PCIE_IO_PHYS_BASE(i) (0xf0800000 + ((i) << 20)) | 48 | #define MV78XX0_PCIE_IO_PHYS_BASE(i) (0xf0800000 + ((i) << 20)) |
@@ -59,6 +60,7 @@ | |||
59 | * Core-specific peripheral registers. | 60 | * Core-specific peripheral registers. |
60 | */ | 61 | */ |
61 | #define BRIDGE_VIRT_BASE (MV78XX0_CORE_REGS_VIRT_BASE) | 62 | #define BRIDGE_VIRT_BASE (MV78XX0_CORE_REGS_VIRT_BASE) |
63 | #define BRIDGE_PHYS_BASE (MV78XX0_CORE_REGS_PHYS_BASE) | ||
62 | 64 | ||
63 | /* | 65 | /* |
64 | * Register Map | 66 | * Register Map |
diff --git a/arch/arm/mach-mxs/mach-apx4devkit.c b/arch/arm/mach-mxs/mach-apx4devkit.c index 5e90b9dcdef8..f5f061757deb 100644 --- a/arch/arm/mach-mxs/mach-apx4devkit.c +++ b/arch/arm/mach-mxs/mach-apx4devkit.c | |||
@@ -205,6 +205,16 @@ static int apx4devkit_phy_fixup(struct phy_device *phy) | |||
205 | return 0; | 205 | return 0; |
206 | } | 206 | } |
207 | 207 | ||
208 | static void __init apx4devkit_fec_phy_clk_enable(void) | ||
209 | { | ||
210 | struct clk *clk; | ||
211 | |||
212 | /* Enable fec phy clock */ | ||
213 | clk = clk_get_sys("enet_out", NULL); | ||
214 | if (!IS_ERR(clk)) | ||
215 | clk_prepare_enable(clk); | ||
216 | } | ||
217 | |||
208 | static void __init apx4devkit_init(void) | 218 | static void __init apx4devkit_init(void) |
209 | { | 219 | { |
210 | mx28_soc_init(); | 220 | mx28_soc_init(); |
@@ -225,6 +235,7 @@ static void __init apx4devkit_init(void) | |||
225 | phy_register_fixup_for_uid(PHY_ID_KS8051, MICREL_PHY_ID_MASK, | 235 | phy_register_fixup_for_uid(PHY_ID_KS8051, MICREL_PHY_ID_MASK, |
226 | apx4devkit_phy_fixup); | 236 | apx4devkit_phy_fixup); |
227 | 237 | ||
238 | apx4devkit_fec_phy_clk_enable(); | ||
228 | mx28_add_fec(0, &mx28_fec_pdata); | 239 | mx28_add_fec(0, &mx28_fec_pdata); |
229 | 240 | ||
230 | mx28_add_mxs_mmc(0, &apx4devkit_mmc_pdata); | 241 | mx28_add_mxs_mmc(0, &apx4devkit_mmc_pdata); |
diff --git a/arch/arm/mach-omap2/board-flash.c b/arch/arm/mach-omap2/board-flash.c index 70a81f900bb5..53c39d239d6e 100644 --- a/arch/arm/mach-omap2/board-flash.c +++ b/arch/arm/mach-omap2/board-flash.c | |||
@@ -97,11 +97,6 @@ __init board_onenand_init(struct mtd_partition *onenand_parts, | |||
97 | 97 | ||
98 | gpmc_onenand_init(&board_onenand_data); | 98 | gpmc_onenand_init(&board_onenand_data); |
99 | } | 99 | } |
100 | #else | ||
101 | void | ||
102 | __init board_onenand_init(struct mtd_partition *nor_parts, u8 nr_parts, u8 cs) | ||
103 | { | ||
104 | } | ||
105 | #endif /* CONFIG_MTD_ONENAND_OMAP2 || CONFIG_MTD_ONENAND_OMAP2_MODULE */ | 100 | #endif /* CONFIG_MTD_ONENAND_OMAP2 || CONFIG_MTD_ONENAND_OMAP2_MODULE */ |
106 | 101 | ||
107 | #if defined(CONFIG_MTD_NAND_OMAP2) || \ | 102 | #if defined(CONFIG_MTD_NAND_OMAP2) || \ |
diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c index 8ca14e88a31a..2c5d0ed75285 100644 --- a/arch/arm/mach-omap2/board-n8x0.c +++ b/arch/arm/mach-omap2/board-n8x0.c | |||
@@ -83,11 +83,9 @@ static struct musb_hdrc_config musb_config = { | |||
83 | }; | 83 | }; |
84 | 84 | ||
85 | static struct musb_hdrc_platform_data tusb_data = { | 85 | static struct musb_hdrc_platform_data tusb_data = { |
86 | #if defined(CONFIG_USB_MUSB_OTG) | 86 | #ifdef CONFIG_USB_GADGET_MUSB_HDRC |
87 | .mode = MUSB_OTG, | 87 | .mode = MUSB_OTG, |
88 | #elif defined(CONFIG_USB_MUSB_PERIPHERAL) | 88 | #else |
89 | .mode = MUSB_PERIPHERAL, | ||
90 | #else /* defined(CONFIG_USB_MUSB_HOST) */ | ||
91 | .mode = MUSB_HOST, | 89 | .mode = MUSB_HOST, |
92 | #endif | 90 | #endif |
93 | .set_power = tusb_set_power, | 91 | .set_power = tusb_set_power, |
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c index 79c6909eeb78..580fd17208da 100644 --- a/arch/arm/mach-omap2/board-omap3beagle.c +++ b/arch/arm/mach-omap2/board-omap3beagle.c | |||
@@ -81,13 +81,13 @@ static u8 omap3_beagle_version; | |||
81 | static struct { | 81 | static struct { |
82 | int mmc1_gpio_wp; | 82 | int mmc1_gpio_wp; |
83 | int usb_pwr_level; | 83 | int usb_pwr_level; |
84 | int reset_gpio; | 84 | int dvi_pd_gpio; |
85 | int usr_button_gpio; | 85 | int usr_button_gpio; |
86 | int mmc_caps; | 86 | int mmc_caps; |
87 | } beagle_config = { | 87 | } beagle_config = { |
88 | .mmc1_gpio_wp = -EINVAL, | 88 | .mmc1_gpio_wp = -EINVAL, |
89 | .usb_pwr_level = GPIOF_OUT_INIT_LOW, | 89 | .usb_pwr_level = GPIOF_OUT_INIT_LOW, |
90 | .reset_gpio = 129, | 90 | .dvi_pd_gpio = -EINVAL, |
91 | .usr_button_gpio = 4, | 91 | .usr_button_gpio = 4, |
92 | .mmc_caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, | 92 | .mmc_caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
93 | }; | 93 | }; |
@@ -126,21 +126,21 @@ static void __init omap3_beagle_init_rev(void) | |||
126 | printk(KERN_INFO "OMAP3 Beagle Rev: Ax/Bx\n"); | 126 | printk(KERN_INFO "OMAP3 Beagle Rev: Ax/Bx\n"); |
127 | omap3_beagle_version = OMAP3BEAGLE_BOARD_AXBX; | 127 | omap3_beagle_version = OMAP3BEAGLE_BOARD_AXBX; |
128 | beagle_config.mmc1_gpio_wp = 29; | 128 | beagle_config.mmc1_gpio_wp = 29; |
129 | beagle_config.reset_gpio = 170; | 129 | beagle_config.dvi_pd_gpio = 170; |
130 | beagle_config.usr_button_gpio = 7; | 130 | beagle_config.usr_button_gpio = 7; |
131 | break; | 131 | break; |
132 | case 6: | 132 | case 6: |
133 | printk(KERN_INFO "OMAP3 Beagle Rev: C1/C2/C3\n"); | 133 | printk(KERN_INFO "OMAP3 Beagle Rev: C1/C2/C3\n"); |
134 | omap3_beagle_version = OMAP3BEAGLE_BOARD_C1_3; | 134 | omap3_beagle_version = OMAP3BEAGLE_BOARD_C1_3; |
135 | beagle_config.mmc1_gpio_wp = 23; | 135 | beagle_config.mmc1_gpio_wp = 23; |
136 | beagle_config.reset_gpio = 170; | 136 | beagle_config.dvi_pd_gpio = 170; |
137 | beagle_config.usr_button_gpio = 7; | 137 | beagle_config.usr_button_gpio = 7; |
138 | break; | 138 | break; |
139 | case 5: | 139 | case 5: |
140 | printk(KERN_INFO "OMAP3 Beagle Rev: C4\n"); | 140 | printk(KERN_INFO "OMAP3 Beagle Rev: C4\n"); |
141 | omap3_beagle_version = OMAP3BEAGLE_BOARD_C4; | 141 | omap3_beagle_version = OMAP3BEAGLE_BOARD_C4; |
142 | beagle_config.mmc1_gpio_wp = 23; | 142 | beagle_config.mmc1_gpio_wp = 23; |
143 | beagle_config.reset_gpio = 170; | 143 | beagle_config.dvi_pd_gpio = 170; |
144 | beagle_config.usr_button_gpio = 7; | 144 | beagle_config.usr_button_gpio = 7; |
145 | break; | 145 | break; |
146 | case 0: | 146 | case 0: |
@@ -274,11 +274,9 @@ static int beagle_twl_gpio_setup(struct device *dev, | |||
274 | if (r) | 274 | if (r) |
275 | pr_err("%s: unable to configure nDVI_PWR_EN\n", | 275 | pr_err("%s: unable to configure nDVI_PWR_EN\n", |
276 | __func__); | 276 | __func__); |
277 | r = gpio_request_one(gpio + 2, GPIOF_OUT_INIT_HIGH, | 277 | |
278 | "DVI_LDO_EN"); | 278 | beagle_config.dvi_pd_gpio = gpio + 2; |
279 | if (r) | 279 | |
280 | pr_err("%s: unable to configure DVI_LDO_EN\n", | ||
281 | __func__); | ||
282 | } else { | 280 | } else { |
283 | /* | 281 | /* |
284 | * REVISIT: need ehci-omap hooks for external VBUS | 282 | * REVISIT: need ehci-omap hooks for external VBUS |
@@ -287,7 +285,7 @@ static int beagle_twl_gpio_setup(struct device *dev, | |||
287 | if (gpio_request_one(gpio + 1, GPIOF_IN, "EHCI_nOC")) | 285 | if (gpio_request_one(gpio + 1, GPIOF_IN, "EHCI_nOC")) |
288 | pr_err("%s: unable to configure EHCI_nOC\n", __func__); | 286 | pr_err("%s: unable to configure EHCI_nOC\n", __func__); |
289 | } | 287 | } |
290 | dvi_panel.power_down_gpio = beagle_config.reset_gpio; | 288 | dvi_panel.power_down_gpio = beagle_config.dvi_pd_gpio; |
291 | 289 | ||
292 | gpio_request_one(gpio + TWL4030_GPIO_MAX, beagle_config.usb_pwr_level, | 290 | gpio_request_one(gpio + TWL4030_GPIO_MAX, beagle_config.usb_pwr_level, |
293 | "nEN_USB_PWR"); | 291 | "nEN_USB_PWR"); |
@@ -499,7 +497,7 @@ static void __init omap3_beagle_init(void) | |||
499 | omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); | 497 | omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); |
500 | omap3_beagle_init_rev(); | 498 | omap3_beagle_init_rev(); |
501 | 499 | ||
502 | if (beagle_config.mmc1_gpio_wp != -EINVAL) | 500 | if (gpio_is_valid(beagle_config.mmc1_gpio_wp)) |
503 | omap_mux_init_gpio(beagle_config.mmc1_gpio_wp, OMAP_PIN_INPUT); | 501 | omap_mux_init_gpio(beagle_config.mmc1_gpio_wp, OMAP_PIN_INPUT); |
504 | mmc[0].caps = beagle_config.mmc_caps; | 502 | mmc[0].caps = beagle_config.mmc_caps; |
505 | omap_hsmmc_init(mmc); | 503 | omap_hsmmc_init(mmc); |
@@ -510,15 +508,13 @@ static void __init omap3_beagle_init(void) | |||
510 | 508 | ||
511 | platform_add_devices(omap3_beagle_devices, | 509 | platform_add_devices(omap3_beagle_devices, |
512 | ARRAY_SIZE(omap3_beagle_devices)); | 510 | ARRAY_SIZE(omap3_beagle_devices)); |
511 | if (gpio_is_valid(beagle_config.dvi_pd_gpio)) | ||
512 | omap_mux_init_gpio(beagle_config.dvi_pd_gpio, OMAP_PIN_OUTPUT); | ||
513 | omap_display_init(&beagle_dss_data); | 513 | omap_display_init(&beagle_dss_data); |
514 | omap_serial_init(); | 514 | omap_serial_init(); |
515 | omap_sdrc_init(mt46h32m32lf6_sdrc_params, | 515 | omap_sdrc_init(mt46h32m32lf6_sdrc_params, |
516 | mt46h32m32lf6_sdrc_params); | 516 | mt46h32m32lf6_sdrc_params); |
517 | 517 | ||
518 | omap_mux_init_gpio(170, OMAP_PIN_INPUT); | ||
519 | /* REVISIT leave DVI powered down until it's needed ... */ | ||
520 | gpio_request_one(170, GPIOF_OUT_INIT_HIGH, "DVI_nPD"); | ||
521 | |||
522 | usb_musb_init(NULL); | 518 | usb_musb_init(NULL); |
523 | usbhs_init(&usbhs_bdata); | 519 | usbhs_init(&usbhs_bdata); |
524 | omap_nand_flash_init(NAND_BUSWIDTH_16, omap3beagle_nand_partitions, | 520 | omap_nand_flash_init(NAND_BUSWIDTH_16, omap3beagle_nand_partitions, |
diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c index 8fa2fc3a4c3c..779734d8ba37 100644 --- a/arch/arm/mach-omap2/board-overo.c +++ b/arch/arm/mach-omap2/board-overo.c | |||
@@ -494,8 +494,8 @@ static void __init overo_init(void) | |||
494 | 494 | ||
495 | regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies)); | 495 | regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies)); |
496 | omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); | 496 | omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); |
497 | omap_hsmmc_init(mmc); | ||
498 | overo_i2c_init(); | 497 | overo_i2c_init(); |
498 | omap_hsmmc_init(mmc); | ||
499 | omap_display_init(&overo_dss_data); | 499 | omap_display_init(&overo_dss_data); |
500 | omap_serial_init(); | 500 | omap_serial_init(); |
501 | omap_sdrc_init(mt46h32m32lf6_sdrc_params, | 501 | omap_sdrc_init(mt46h32m32lf6_sdrc_params, |
diff --git a/arch/arm/mach-omap2/clock44xx_data.c b/arch/arm/mach-omap2/clock44xx_data.c index 2172f6603848..ba6f9a0a43e9 100644 --- a/arch/arm/mach-omap2/clock44xx_data.c +++ b/arch/arm/mach-omap2/clock44xx_data.c | |||
@@ -84,6 +84,7 @@ static struct clk slimbus_clk = { | |||
84 | 84 | ||
85 | static struct clk sys_32k_ck = { | 85 | static struct clk sys_32k_ck = { |
86 | .name = "sys_32k_ck", | 86 | .name = "sys_32k_ck", |
87 | .clkdm_name = "prm_clkdm", | ||
87 | .rate = 32768, | 88 | .rate = 32768, |
88 | .ops = &clkops_null, | 89 | .ops = &clkops_null, |
89 | }; | 90 | }; |
@@ -512,6 +513,7 @@ static struct clk ddrphy_ck = { | |||
512 | .name = "ddrphy_ck", | 513 | .name = "ddrphy_ck", |
513 | .parent = &dpll_core_m2_ck, | 514 | .parent = &dpll_core_m2_ck, |
514 | .ops = &clkops_null, | 515 | .ops = &clkops_null, |
516 | .clkdm_name = "l3_emif_clkdm", | ||
515 | .fixed_div = 2, | 517 | .fixed_div = 2, |
516 | .recalc = &omap_fixed_divisor_recalc, | 518 | .recalc = &omap_fixed_divisor_recalc, |
517 | }; | 519 | }; |
@@ -769,6 +771,7 @@ static const struct clksel dpll_mpu_m2_div[] = { | |||
769 | static struct clk dpll_mpu_m2_ck = { | 771 | static struct clk dpll_mpu_m2_ck = { |
770 | .name = "dpll_mpu_m2_ck", | 772 | .name = "dpll_mpu_m2_ck", |
771 | .parent = &dpll_mpu_ck, | 773 | .parent = &dpll_mpu_ck, |
774 | .clkdm_name = "cm_clkdm", | ||
772 | .clksel = dpll_mpu_m2_div, | 775 | .clksel = dpll_mpu_m2_div, |
773 | .clksel_reg = OMAP4430_CM_DIV_M2_DPLL_MPU, | 776 | .clksel_reg = OMAP4430_CM_DIV_M2_DPLL_MPU, |
774 | .clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_MASK, | 777 | .clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_MASK, |
@@ -1149,6 +1152,7 @@ static const struct clksel l3_div_div[] = { | |||
1149 | static struct clk l3_div_ck = { | 1152 | static struct clk l3_div_ck = { |
1150 | .name = "l3_div_ck", | 1153 | .name = "l3_div_ck", |
1151 | .parent = &div_core_ck, | 1154 | .parent = &div_core_ck, |
1155 | .clkdm_name = "cm_clkdm", | ||
1152 | .clksel = l3_div_div, | 1156 | .clksel = l3_div_div, |
1153 | .clksel_reg = OMAP4430_CM_CLKSEL_CORE, | 1157 | .clksel_reg = OMAP4430_CM_CLKSEL_CORE, |
1154 | .clksel_mask = OMAP4430_CLKSEL_L3_MASK, | 1158 | .clksel_mask = OMAP4430_CLKSEL_L3_MASK, |
@@ -2824,6 +2828,7 @@ static const struct clksel trace_clk_div_div[] = { | |||
2824 | static struct clk trace_clk_div_ck = { | 2828 | static struct clk trace_clk_div_ck = { |
2825 | .name = "trace_clk_div_ck", | 2829 | .name = "trace_clk_div_ck", |
2826 | .parent = &pmd_trace_clk_mux_ck, | 2830 | .parent = &pmd_trace_clk_mux_ck, |
2831 | .clkdm_name = "emu_sys_clkdm", | ||
2827 | .clksel = trace_clk_div_div, | 2832 | .clksel = trace_clk_div_div, |
2828 | .clksel_reg = OMAP4430_CM_EMU_DEBUGSS_CLKCTRL, | 2833 | .clksel_reg = OMAP4430_CM_EMU_DEBUGSS_CLKCTRL, |
2829 | .clksel_mask = OMAP4430_CLKSEL_PMD_TRACE_CLK_MASK, | 2834 | .clksel_mask = OMAP4430_CLKSEL_PMD_TRACE_CLK_MASK, |
@@ -3412,9 +3417,12 @@ int __init omap4xxx_clk_init(void) | |||
3412 | if (cpu_is_omap443x()) { | 3417 | if (cpu_is_omap443x()) { |
3413 | cpu_mask = RATE_IN_4430; | 3418 | cpu_mask = RATE_IN_4430; |
3414 | cpu_clkflg = CK_443X; | 3419 | cpu_clkflg = CK_443X; |
3415 | } else if (cpu_is_omap446x()) { | 3420 | } else if (cpu_is_omap446x() || cpu_is_omap447x()) { |
3416 | cpu_mask = RATE_IN_4460 | RATE_IN_4430; | 3421 | cpu_mask = RATE_IN_4460 | RATE_IN_4430; |
3417 | cpu_clkflg = CK_446X | CK_443X; | 3422 | cpu_clkflg = CK_446X | CK_443X; |
3423 | |||
3424 | if (cpu_is_omap447x()) | ||
3425 | pr_warn("WARNING: OMAP4470 clock data incomplete!\n"); | ||
3418 | } else { | 3426 | } else { |
3419 | return 0; | 3427 | return 0; |
3420 | } | 3428 | } |
diff --git a/arch/arm/mach-omap2/cm.h b/arch/arm/mach-omap2/cm.h index a7bc096bd407..f24e3f7a2bbc 100644 --- a/arch/arm/mach-omap2/cm.h +++ b/arch/arm/mach-omap2/cm.h | |||
@@ -22,4 +22,15 @@ | |||
22 | */ | 22 | */ |
23 | #define MAX_MODULE_READY_TIME 2000 | 23 | #define MAX_MODULE_READY_TIME 2000 |
24 | 24 | ||
25 | /* | ||
26 | * MAX_MODULE_DISABLE_TIME: max duration in microseconds to wait for | ||
27 | * the PRCM to request that a module enter the inactive state in the | ||
28 | * case of OMAP2 & 3. In the case of OMAP4 this is the max duration | ||
29 | * in microseconds for the module to reach the inactive state from | ||
30 | * a functional state. | ||
31 | * XXX FSUSB on OMAP4430 takes ~4ms to idle after reset during | ||
32 | * kernel init. | ||
33 | */ | ||
34 | #define MAX_MODULE_DISABLE_TIME 5000 | ||
35 | |||
25 | #endif | 36 | #endif |
diff --git a/arch/arm/mach-omap2/cminst44xx.c b/arch/arm/mach-omap2/cminst44xx.c index 8c86d294b1a3..1a39945d9ff8 100644 --- a/arch/arm/mach-omap2/cminst44xx.c +++ b/arch/arm/mach-omap2/cminst44xx.c | |||
@@ -313,9 +313,9 @@ int omap4_cminst_wait_module_idle(u8 part, u16 inst, s16 cdoffs, u16 clkctrl_off | |||
313 | 313 | ||
314 | omap_test_timeout((_clkctrl_idlest(part, inst, cdoffs, clkctrl_offs) == | 314 | omap_test_timeout((_clkctrl_idlest(part, inst, cdoffs, clkctrl_offs) == |
315 | CLKCTRL_IDLEST_DISABLED), | 315 | CLKCTRL_IDLEST_DISABLED), |
316 | MAX_MODULE_READY_TIME, i); | 316 | MAX_MODULE_DISABLE_TIME, i); |
317 | 317 | ||
318 | return (i < MAX_MODULE_READY_TIME) ? 0 : -EBUSY; | 318 | return (i < MAX_MODULE_DISABLE_TIME) ? 0 : -EBUSY; |
319 | } | 319 | } |
320 | 320 | ||
321 | /** | 321 | /** |
diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c index 4b46b91cca5c..9fe6829f4c16 100644 --- a/arch/arm/mach-omap2/mux.c +++ b/arch/arm/mach-omap2/mux.c | |||
@@ -41,6 +41,7 @@ | |||
41 | #include "control.h" | 41 | #include "control.h" |
42 | #include "mux.h" | 42 | #include "mux.h" |
43 | #include "prm.h" | 43 | #include "prm.h" |
44 | #include "common.h" | ||
44 | 45 | ||
45 | #define OMAP_MUX_BASE_OFFSET 0x30 /* Offset from CTRL_BASE */ | 46 | #define OMAP_MUX_BASE_OFFSET 0x30 /* Offset from CTRL_BASE */ |
46 | #define OMAP_MUX_BASE_SZ 0x5ca | 47 | #define OMAP_MUX_BASE_SZ 0x5ca |
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index bf86f7e8f91f..773193670ea2 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c | |||
@@ -530,7 +530,7 @@ static int _disable_wakeup(struct omap_hwmod *oh, u32 *v) | |||
530 | if (oh->class->sysc->idlemodes & SIDLE_SMART_WKUP) | 530 | if (oh->class->sysc->idlemodes & SIDLE_SMART_WKUP) |
531 | _set_slave_idlemode(oh, HWMOD_IDLEMODE_SMART, v); | 531 | _set_slave_idlemode(oh, HWMOD_IDLEMODE_SMART, v); |
532 | if (oh->class->sysc->idlemodes & MSTANDBY_SMART_WKUP) | 532 | if (oh->class->sysc->idlemodes & MSTANDBY_SMART_WKUP) |
533 | _set_master_standbymode(oh, HWMOD_IDLEMODE_SMART_WKUP, v); | 533 | _set_master_standbymode(oh, HWMOD_IDLEMODE_SMART, v); |
534 | 534 | ||
535 | /* XXX test pwrdm_get_wken for this hwmod's subsystem */ | 535 | /* XXX test pwrdm_get_wken for this hwmod's subsystem */ |
536 | 536 | ||
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c index 950454a3fa31..b7bcba5221ba 100644 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c | |||
@@ -393,8 +393,7 @@ static struct omap_hwmod_class_sysconfig omap44xx_counter_sysc = { | |||
393 | .rev_offs = 0x0000, | 393 | .rev_offs = 0x0000, |
394 | .sysc_offs = 0x0004, | 394 | .sysc_offs = 0x0004, |
395 | .sysc_flags = SYSC_HAS_SIDLEMODE, | 395 | .sysc_flags = SYSC_HAS_SIDLEMODE, |
396 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | | 396 | .idlemodes = (SIDLE_FORCE | SIDLE_NO), |
397 | SIDLE_SMART_WKUP), | ||
398 | .sysc_fields = &omap_hwmod_sysc_type1, | 397 | .sysc_fields = &omap_hwmod_sysc_type1, |
399 | }; | 398 | }; |
400 | 399 | ||
@@ -854,6 +853,11 @@ static struct omap_hwmod omap44xx_dss_hdmi_hwmod = { | |||
854 | .name = "dss_hdmi", | 853 | .name = "dss_hdmi", |
855 | .class = &omap44xx_hdmi_hwmod_class, | 854 | .class = &omap44xx_hdmi_hwmod_class, |
856 | .clkdm_name = "l3_dss_clkdm", | 855 | .clkdm_name = "l3_dss_clkdm", |
856 | /* | ||
857 | * HDMI audio requires to use no-idle mode. Hence, | ||
858 | * set idle mode by software. | ||
859 | */ | ||
860 | .flags = HWMOD_SWSUP_SIDLE, | ||
857 | .mpu_irqs = omap44xx_dss_hdmi_irqs, | 861 | .mpu_irqs = omap44xx_dss_hdmi_irqs, |
858 | .sdma_reqs = omap44xx_dss_hdmi_sdma_reqs, | 862 | .sdma_reqs = omap44xx_dss_hdmi_sdma_reqs, |
859 | .main_clk = "dss_48mhz_clk", | 863 | .main_clk = "dss_48mhz_clk", |
@@ -1924,7 +1928,7 @@ static struct omap_hwmod_dma_info omap44xx_mcbsp1_sdma_reqs[] = { | |||
1924 | 1928 | ||
1925 | static struct omap_hwmod_opt_clk mcbsp1_opt_clks[] = { | 1929 | static struct omap_hwmod_opt_clk mcbsp1_opt_clks[] = { |
1926 | { .role = "pad_fck", .clk = "pad_clks_ck" }, | 1930 | { .role = "pad_fck", .clk = "pad_clks_ck" }, |
1927 | { .role = "prcm_clk", .clk = "mcbsp1_sync_mux_ck" }, | 1931 | { .role = "prcm_fck", .clk = "mcbsp1_sync_mux_ck" }, |
1928 | }; | 1932 | }; |
1929 | 1933 | ||
1930 | static struct omap_hwmod omap44xx_mcbsp1_hwmod = { | 1934 | static struct omap_hwmod omap44xx_mcbsp1_hwmod = { |
@@ -1959,7 +1963,7 @@ static struct omap_hwmod_dma_info omap44xx_mcbsp2_sdma_reqs[] = { | |||
1959 | 1963 | ||
1960 | static struct omap_hwmod_opt_clk mcbsp2_opt_clks[] = { | 1964 | static struct omap_hwmod_opt_clk mcbsp2_opt_clks[] = { |
1961 | { .role = "pad_fck", .clk = "pad_clks_ck" }, | 1965 | { .role = "pad_fck", .clk = "pad_clks_ck" }, |
1962 | { .role = "prcm_clk", .clk = "mcbsp2_sync_mux_ck" }, | 1966 | { .role = "prcm_fck", .clk = "mcbsp2_sync_mux_ck" }, |
1963 | }; | 1967 | }; |
1964 | 1968 | ||
1965 | static struct omap_hwmod omap44xx_mcbsp2_hwmod = { | 1969 | static struct omap_hwmod omap44xx_mcbsp2_hwmod = { |
@@ -1994,7 +1998,7 @@ static struct omap_hwmod_dma_info omap44xx_mcbsp3_sdma_reqs[] = { | |||
1994 | 1998 | ||
1995 | static struct omap_hwmod_opt_clk mcbsp3_opt_clks[] = { | 1999 | static struct omap_hwmod_opt_clk mcbsp3_opt_clks[] = { |
1996 | { .role = "pad_fck", .clk = "pad_clks_ck" }, | 2000 | { .role = "pad_fck", .clk = "pad_clks_ck" }, |
1997 | { .role = "prcm_clk", .clk = "mcbsp3_sync_mux_ck" }, | 2001 | { .role = "prcm_fck", .clk = "mcbsp3_sync_mux_ck" }, |
1998 | }; | 2002 | }; |
1999 | 2003 | ||
2000 | static struct omap_hwmod omap44xx_mcbsp3_hwmod = { | 2004 | static struct omap_hwmod omap44xx_mcbsp3_hwmod = { |
@@ -2029,7 +2033,7 @@ static struct omap_hwmod_dma_info omap44xx_mcbsp4_sdma_reqs[] = { | |||
2029 | 2033 | ||
2030 | static struct omap_hwmod_opt_clk mcbsp4_opt_clks[] = { | 2034 | static struct omap_hwmod_opt_clk mcbsp4_opt_clks[] = { |
2031 | { .role = "pad_fck", .clk = "pad_clks_ck" }, | 2035 | { .role = "pad_fck", .clk = "pad_clks_ck" }, |
2032 | { .role = "prcm_clk", .clk = "mcbsp4_sync_mux_ck" }, | 2036 | { .role = "prcm_fck", .clk = "mcbsp4_sync_mux_ck" }, |
2033 | }; | 2037 | }; |
2034 | 2038 | ||
2035 | static struct omap_hwmod omap44xx_mcbsp4_hwmod = { | 2039 | static struct omap_hwmod omap44xx_mcbsp4_hwmod = { |
@@ -3860,7 +3864,7 @@ static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_2 = { | |||
3860 | }; | 3864 | }; |
3861 | 3865 | ||
3862 | /* usb_host_fs -> l3_main_2 */ | 3866 | /* usb_host_fs -> l3_main_2 */ |
3863 | static struct omap_hwmod_ocp_if omap44xx_usb_host_fs__l3_main_2 = { | 3867 | static struct omap_hwmod_ocp_if __maybe_unused omap44xx_usb_host_fs__l3_main_2 = { |
3864 | .master = &omap44xx_usb_host_fs_hwmod, | 3868 | .master = &omap44xx_usb_host_fs_hwmod, |
3865 | .slave = &omap44xx_l3_main_2_hwmod, | 3869 | .slave = &omap44xx_l3_main_2_hwmod, |
3866 | .clk = "l3_div_ck", | 3870 | .clk = "l3_div_ck", |
@@ -3918,7 +3922,7 @@ static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_3 = { | |||
3918 | }; | 3922 | }; |
3919 | 3923 | ||
3920 | /* aess -> l4_abe */ | 3924 | /* aess -> l4_abe */ |
3921 | static struct omap_hwmod_ocp_if omap44xx_aess__l4_abe = { | 3925 | static struct omap_hwmod_ocp_if __maybe_unused omap44xx_aess__l4_abe = { |
3922 | .master = &omap44xx_aess_hwmod, | 3926 | .master = &omap44xx_aess_hwmod, |
3923 | .slave = &omap44xx_l4_abe_hwmod, | 3927 | .slave = &omap44xx_l4_abe_hwmod, |
3924 | .clk = "ocp_abe_iclk", | 3928 | .clk = "ocp_abe_iclk", |
@@ -4009,7 +4013,7 @@ static struct omap_hwmod_addr_space omap44xx_aess_addrs[] = { | |||
4009 | }; | 4013 | }; |
4010 | 4014 | ||
4011 | /* l4_abe -> aess */ | 4015 | /* l4_abe -> aess */ |
4012 | static struct omap_hwmod_ocp_if omap44xx_l4_abe__aess = { | 4016 | static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l4_abe__aess = { |
4013 | .master = &omap44xx_l4_abe_hwmod, | 4017 | .master = &omap44xx_l4_abe_hwmod, |
4014 | .slave = &omap44xx_aess_hwmod, | 4018 | .slave = &omap44xx_aess_hwmod, |
4015 | .clk = "ocp_abe_iclk", | 4019 | .clk = "ocp_abe_iclk", |
@@ -4027,7 +4031,7 @@ static struct omap_hwmod_addr_space omap44xx_aess_dma_addrs[] = { | |||
4027 | }; | 4031 | }; |
4028 | 4032 | ||
4029 | /* l4_abe -> aess (dma) */ | 4033 | /* l4_abe -> aess (dma) */ |
4030 | static struct omap_hwmod_ocp_if omap44xx_l4_abe__aess_dma = { | 4034 | static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l4_abe__aess_dma = { |
4031 | .master = &omap44xx_l4_abe_hwmod, | 4035 | .master = &omap44xx_l4_abe_hwmod, |
4032 | .slave = &omap44xx_aess_hwmod, | 4036 | .slave = &omap44xx_aess_hwmod, |
4033 | .clk = "ocp_abe_iclk", | 4037 | .clk = "ocp_abe_iclk", |
@@ -5853,7 +5857,7 @@ static struct omap_hwmod_addr_space omap44xx_usb_host_fs_addrs[] = { | |||
5853 | }; | 5857 | }; |
5854 | 5858 | ||
5855 | /* l4_cfg -> usb_host_fs */ | 5859 | /* l4_cfg -> usb_host_fs */ |
5856 | static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_host_fs = { | 5860 | static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l4_cfg__usb_host_fs = { |
5857 | .master = &omap44xx_l4_cfg_hwmod, | 5861 | .master = &omap44xx_l4_cfg_hwmod, |
5858 | .slave = &omap44xx_usb_host_fs_hwmod, | 5862 | .slave = &omap44xx_usb_host_fs_hwmod, |
5859 | .clk = "l4_div_ck", | 5863 | .clk = "l4_div_ck", |
@@ -6010,13 +6014,13 @@ static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = { | |||
6010 | &omap44xx_iva__l3_main_2, | 6014 | &omap44xx_iva__l3_main_2, |
6011 | &omap44xx_l3_main_1__l3_main_2, | 6015 | &omap44xx_l3_main_1__l3_main_2, |
6012 | &omap44xx_l4_cfg__l3_main_2, | 6016 | &omap44xx_l4_cfg__l3_main_2, |
6013 | &omap44xx_usb_host_fs__l3_main_2, | 6017 | /* &omap44xx_usb_host_fs__l3_main_2, */ |
6014 | &omap44xx_usb_host_hs__l3_main_2, | 6018 | &omap44xx_usb_host_hs__l3_main_2, |
6015 | &omap44xx_usb_otg_hs__l3_main_2, | 6019 | &omap44xx_usb_otg_hs__l3_main_2, |
6016 | &omap44xx_l3_main_1__l3_main_3, | 6020 | &omap44xx_l3_main_1__l3_main_3, |
6017 | &omap44xx_l3_main_2__l3_main_3, | 6021 | &omap44xx_l3_main_2__l3_main_3, |
6018 | &omap44xx_l4_cfg__l3_main_3, | 6022 | &omap44xx_l4_cfg__l3_main_3, |
6019 | &omap44xx_aess__l4_abe, | 6023 | /* &omap44xx_aess__l4_abe, */ |
6020 | &omap44xx_dsp__l4_abe, | 6024 | &omap44xx_dsp__l4_abe, |
6021 | &omap44xx_l3_main_1__l4_abe, | 6025 | &omap44xx_l3_main_1__l4_abe, |
6022 | &omap44xx_mpu__l4_abe, | 6026 | &omap44xx_mpu__l4_abe, |
@@ -6025,8 +6029,8 @@ static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = { | |||
6025 | &omap44xx_l4_cfg__l4_wkup, | 6029 | &omap44xx_l4_cfg__l4_wkup, |
6026 | &omap44xx_mpu__mpu_private, | 6030 | &omap44xx_mpu__mpu_private, |
6027 | &omap44xx_l4_cfg__ocp_wp_noc, | 6031 | &omap44xx_l4_cfg__ocp_wp_noc, |
6028 | &omap44xx_l4_abe__aess, | 6032 | /* &omap44xx_l4_abe__aess, */ |
6029 | &omap44xx_l4_abe__aess_dma, | 6033 | /* &omap44xx_l4_abe__aess_dma, */ |
6030 | &omap44xx_l3_main_2__c2c, | 6034 | &omap44xx_l3_main_2__c2c, |
6031 | &omap44xx_l4_wkup__counter_32k, | 6035 | &omap44xx_l4_wkup__counter_32k, |
6032 | &omap44xx_l4_cfg__ctrl_module_core, | 6036 | &omap44xx_l4_cfg__ctrl_module_core, |
@@ -6132,7 +6136,7 @@ static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = { | |||
6132 | &omap44xx_l4_per__uart2, | 6136 | &omap44xx_l4_per__uart2, |
6133 | &omap44xx_l4_per__uart3, | 6137 | &omap44xx_l4_per__uart3, |
6134 | &omap44xx_l4_per__uart4, | 6138 | &omap44xx_l4_per__uart4, |
6135 | &omap44xx_l4_cfg__usb_host_fs, | 6139 | /* &omap44xx_l4_cfg__usb_host_fs, */ |
6136 | &omap44xx_l4_cfg__usb_host_hs, | 6140 | &omap44xx_l4_cfg__usb_host_hs, |
6137 | &omap44xx_l4_cfg__usb_otg_hs, | 6141 | &omap44xx_l4_cfg__usb_otg_hs, |
6138 | &omap44xx_l4_cfg__usb_tll_hs, | 6142 | &omap44xx_l4_cfg__usb_tll_hs, |
diff --git a/arch/arm/mach-omap2/omap_phy_internal.c b/arch/arm/mach-omap2/omap_phy_internal.c index 4c90477e6f82..d52651a05daa 100644 --- a/arch/arm/mach-omap2/omap_phy_internal.c +++ b/arch/arm/mach-omap2/omap_phy_internal.c | |||
@@ -239,21 +239,15 @@ void am35x_set_mode(u8 musb_mode) | |||
239 | 239 | ||
240 | devconf2 &= ~CONF2_OTGMODE; | 240 | devconf2 &= ~CONF2_OTGMODE; |
241 | switch (musb_mode) { | 241 | switch (musb_mode) { |
242 | #ifdef CONFIG_USB_MUSB_HDRC_HCD | ||
243 | case MUSB_HOST: /* Force VBUS valid, ID = 0 */ | 242 | case MUSB_HOST: /* Force VBUS valid, ID = 0 */ |
244 | devconf2 |= CONF2_FORCE_HOST; | 243 | devconf2 |= CONF2_FORCE_HOST; |
245 | break; | 244 | break; |
246 | #endif | ||
247 | #ifdef CONFIG_USB_GADGET_MUSB_HDRC | ||
248 | case MUSB_PERIPHERAL: /* Force VBUS valid, ID = 1 */ | 245 | case MUSB_PERIPHERAL: /* Force VBUS valid, ID = 1 */ |
249 | devconf2 |= CONF2_FORCE_DEVICE; | 246 | devconf2 |= CONF2_FORCE_DEVICE; |
250 | break; | 247 | break; |
251 | #endif | ||
252 | #ifdef CONFIG_USB_MUSB_OTG | ||
253 | case MUSB_OTG: /* Don't override the VBUS/ID comparators */ | 248 | case MUSB_OTG: /* Don't override the VBUS/ID comparators */ |
254 | devconf2 |= CONF2_NO_OVERRIDE; | 249 | devconf2 |= CONF2_NO_OVERRIDE; |
255 | break; | 250 | break; |
256 | #endif | ||
257 | default: | 251 | default: |
258 | pr_info(KERN_INFO "Unsupported mode %u\n", musb_mode); | 252 | pr_info(KERN_INFO "Unsupported mode %u\n", musb_mode); |
259 | } | 253 | } |
diff --git a/arch/arm/mach-omap2/twl-common.c b/arch/arm/mach-omap2/twl-common.c index 119d5a910f3a..43a979075338 100644 --- a/arch/arm/mach-omap2/twl-common.c +++ b/arch/arm/mach-omap2/twl-common.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include "twl-common.h" | 32 | #include "twl-common.h" |
33 | #include "pm.h" | 33 | #include "pm.h" |
34 | #include "voltage.h" | 34 | #include "voltage.h" |
35 | #include "mux.h" | ||
35 | 36 | ||
36 | static struct i2c_board_info __initdata pmic_i2c_board_info = { | 37 | static struct i2c_board_info __initdata pmic_i2c_board_info = { |
37 | .addr = 0x48, | 38 | .addr = 0x48, |
@@ -77,6 +78,7 @@ void __init omap4_pmic_init(const char *pmic_type, | |||
77 | struct twl6040_platform_data *twl6040_data, int twl6040_irq) | 78 | struct twl6040_platform_data *twl6040_data, int twl6040_irq) |
78 | { | 79 | { |
79 | /* PMIC part*/ | 80 | /* PMIC part*/ |
81 | omap_mux_init_signal("sys_nirq1", OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE); | ||
80 | strncpy(omap4_i2c1_board_info[0].type, pmic_type, | 82 | strncpy(omap4_i2c1_board_info[0].type, pmic_type, |
81 | sizeof(omap4_i2c1_board_info[0].type)); | 83 | sizeof(omap4_i2c1_board_info[0].type)); |
82 | omap4_i2c1_board_info[0].irq = OMAP44XX_IRQ_SYS_1N; | 84 | omap4_i2c1_board_info[0].irq = OMAP44XX_IRQ_SYS_1N; |
diff --git a/arch/arm/mach-omap2/usb-musb.c b/arch/arm/mach-omap2/usb-musb.c index b19d1b43c12e..c4a576856661 100644 --- a/arch/arm/mach-omap2/usb-musb.c +++ b/arch/arm/mach-omap2/usb-musb.c | |||
@@ -41,12 +41,10 @@ static struct musb_hdrc_config musb_config = { | |||
41 | }; | 41 | }; |
42 | 42 | ||
43 | static struct musb_hdrc_platform_data musb_plat = { | 43 | static struct musb_hdrc_platform_data musb_plat = { |
44 | #ifdef CONFIG_USB_MUSB_OTG | 44 | #ifdef CONFIG_USB_GADGET_MUSB_HDRC |
45 | .mode = MUSB_OTG, | 45 | .mode = MUSB_OTG, |
46 | #elif defined(CONFIG_USB_MUSB_HDRC_HCD) | 46 | #else |
47 | .mode = MUSB_HOST, | 47 | .mode = MUSB_HOST, |
48 | #elif defined(CONFIG_USB_GADGET_MUSB_HDRC) | ||
49 | .mode = MUSB_PERIPHERAL, | ||
50 | #endif | 48 | #endif |
51 | /* .clock is set dynamically */ | 49 | /* .clock is set dynamically */ |
52 | .config = &musb_config, | 50 | .config = &musb_config, |
diff --git a/arch/arm/mach-omap2/usb-tusb6010.c b/arch/arm/mach-omap2/usb-tusb6010.c index db84a46ce7fd..805bea6edf17 100644 --- a/arch/arm/mach-omap2/usb-tusb6010.c +++ b/arch/arm/mach-omap2/usb-tusb6010.c | |||
@@ -300,7 +300,7 @@ tusb6010_setup_interface(struct musb_hdrc_platform_data *data, | |||
300 | printk(error, 3, status); | 300 | printk(error, 3, status); |
301 | return status; | 301 | return status; |
302 | } | 302 | } |
303 | tusb_resources[2].start = irq + IH_GPIO_BASE; | 303 | tusb_resources[2].start = gpio_to_irq(irq); |
304 | 304 | ||
305 | /* set up memory timings ... can speed them up later */ | 305 | /* set up memory timings ... can speed them up later */ |
306 | if (!ps_refclk) { | 306 | if (!ps_refclk) { |
diff --git a/arch/arm/mach-orion5x/include/mach/bridge-regs.h b/arch/arm/mach-orion5x/include/mach/bridge-regs.h index 96484bcd34ca..11a3c1e9801f 100644 --- a/arch/arm/mach-orion5x/include/mach/bridge-regs.h +++ b/arch/arm/mach-orion5x/include/mach/bridge-regs.h | |||
@@ -35,5 +35,5 @@ | |||
35 | #define MAIN_IRQ_MASK (ORION5X_BRIDGE_VIRT_BASE | 0x204) | 35 | #define MAIN_IRQ_MASK (ORION5X_BRIDGE_VIRT_BASE | 0x204) |
36 | 36 | ||
37 | #define TIMER_VIRT_BASE (ORION5X_BRIDGE_VIRT_BASE | 0x300) | 37 | #define TIMER_VIRT_BASE (ORION5X_BRIDGE_VIRT_BASE | 0x300) |
38 | 38 | #define TIMER_PHYS_BASE (ORION5X_BRIDGE_PHYS_BASE | 0x300) | |
39 | #endif | 39 | #endif |
diff --git a/arch/arm/mach-orion5x/include/mach/io.h b/arch/arm/mach-orion5x/include/mach/io.h new file mode 100644 index 000000000000..1aa5d0a50a0b --- /dev/null +++ b/arch/arm/mach-orion5x/include/mach/io.h | |||
@@ -0,0 +1,22 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-orion5x/include/mach/io.h | ||
3 | * | ||
4 | * This file is licensed under the terms of the GNU General Public | ||
5 | * License version 2. This program is licensed "as is" without any | ||
6 | * warranty of any kind, whether express or implied. | ||
7 | */ | ||
8 | |||
9 | #ifndef __ASM_ARCH_IO_H | ||
10 | #define __ASM_ARCH_IO_H | ||
11 | |||
12 | #include <mach/orion5x.h> | ||
13 | #include <asm/sizes.h> | ||
14 | |||
15 | #define IO_SPACE_LIMIT SZ_2M | ||
16 | static inline void __iomem *__io(unsigned long addr) | ||
17 | { | ||
18 | return (void __iomem *)(addr + ORION5X_PCIE_IO_VIRT_BASE); | ||
19 | } | ||
20 | |||
21 | #define __io(a) __io(a) | ||
22 | #endif | ||
diff --git a/arch/arm/mach-orion5x/include/mach/orion5x.h b/arch/arm/mach-orion5x/include/mach/orion5x.h index 2745f5d95b3f..683e085ce162 100644 --- a/arch/arm/mach-orion5x/include/mach/orion5x.h +++ b/arch/arm/mach-orion5x/include/mach/orion5x.h | |||
@@ -82,6 +82,7 @@ | |||
82 | #define UART1_VIRT_BASE (ORION5X_DEV_BUS_VIRT_BASE | 0x2100) | 82 | #define UART1_VIRT_BASE (ORION5X_DEV_BUS_VIRT_BASE | 0x2100) |
83 | 83 | ||
84 | #define ORION5X_BRIDGE_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x20000) | 84 | #define ORION5X_BRIDGE_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x20000) |
85 | #define ORION5X_BRIDGE_PHYS_BASE (ORION5X_REGS_PHYS_BASE | 0x20000) | ||
85 | 86 | ||
86 | #define ORION5X_PCI_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x30000) | 87 | #define ORION5X_PCI_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x30000) |
87 | 88 | ||
diff --git a/arch/arm/mach-pxa/hx4700.c b/arch/arm/mach-pxa/hx4700.c index d09da6a746b8..d3de84b0dcbe 100644 --- a/arch/arm/mach-pxa/hx4700.c +++ b/arch/arm/mach-pxa/hx4700.c | |||
@@ -127,7 +127,11 @@ static unsigned long hx4700_pin_config[] __initdata = { | |||
127 | GPIO19_SSP2_SCLK, | 127 | GPIO19_SSP2_SCLK, |
128 | GPIO86_SSP2_RXD, | 128 | GPIO86_SSP2_RXD, |
129 | GPIO87_SSP2_TXD, | 129 | GPIO87_SSP2_TXD, |
130 | GPIO88_GPIO, | 130 | GPIO88_GPIO | MFP_LPM_DRIVE_HIGH, /* TSC2046_CS */ |
131 | |||
132 | /* BQ24022 Regulator */ | ||
133 | GPIO72_GPIO | MFP_LPM_KEEP_OUTPUT, /* BQ24022_nCHARGE_EN */ | ||
134 | GPIO96_GPIO | MFP_LPM_KEEP_OUTPUT, /* BQ24022_ISET2 */ | ||
131 | 135 | ||
132 | /* HX4700 specific input GPIOs */ | 136 | /* HX4700 specific input GPIOs */ |
133 | GPIO12_GPIO | WAKEUP_ON_EDGE_RISE, /* ASIC3_IRQ */ | 137 | GPIO12_GPIO | WAKEUP_ON_EDGE_RISE, /* ASIC3_IRQ */ |
@@ -135,6 +139,10 @@ static unsigned long hx4700_pin_config[] __initdata = { | |||
135 | GPIO14_GPIO, /* nWLAN_IRQ */ | 139 | GPIO14_GPIO, /* nWLAN_IRQ */ |
136 | 140 | ||
137 | /* HX4700 specific output GPIOs */ | 141 | /* HX4700 specific output GPIOs */ |
142 | GPIO61_GPIO | MFP_LPM_DRIVE_HIGH, /* W3220_nRESET */ | ||
143 | GPIO71_GPIO | MFP_LPM_DRIVE_HIGH, /* ASIC3_nRESET */ | ||
144 | GPIO81_GPIO | MFP_LPM_DRIVE_HIGH, /* CPU_GP_nRESET */ | ||
145 | GPIO116_GPIO | MFP_LPM_DRIVE_HIGH, /* CPU_HW_nRESET */ | ||
138 | GPIO102_GPIO | MFP_LPM_DRIVE_LOW, /* SYNAPTICS_POWER_ON */ | 146 | GPIO102_GPIO | MFP_LPM_DRIVE_LOW, /* SYNAPTICS_POWER_ON */ |
139 | 147 | ||
140 | GPIO10_GPIO, /* GSM_IRQ */ | 148 | GPIO10_GPIO, /* GSM_IRQ */ |
@@ -872,14 +880,19 @@ static struct gpio global_gpios[] = { | |||
872 | { GPIO110_HX4700_LCD_LVDD_3V3_ON, GPIOF_OUT_INIT_HIGH, "LCD_LVDD" }, | 880 | { GPIO110_HX4700_LCD_LVDD_3V3_ON, GPIOF_OUT_INIT_HIGH, "LCD_LVDD" }, |
873 | { GPIO111_HX4700_LCD_AVDD_3V3_ON, GPIOF_OUT_INIT_HIGH, "LCD_AVDD" }, | 881 | { GPIO111_HX4700_LCD_AVDD_3V3_ON, GPIOF_OUT_INIT_HIGH, "LCD_AVDD" }, |
874 | { GPIO32_HX4700_RS232_ON, GPIOF_OUT_INIT_HIGH, "RS232_ON" }, | 882 | { GPIO32_HX4700_RS232_ON, GPIOF_OUT_INIT_HIGH, "RS232_ON" }, |
883 | { GPIO61_HX4700_W3220_nRESET, GPIOF_OUT_INIT_HIGH, "W3220_nRESET" }, | ||
875 | { GPIO71_HX4700_ASIC3_nRESET, GPIOF_OUT_INIT_HIGH, "ASIC3_nRESET" }, | 884 | { GPIO71_HX4700_ASIC3_nRESET, GPIOF_OUT_INIT_HIGH, "ASIC3_nRESET" }, |
885 | { GPIO81_HX4700_CPU_GP_nRESET, GPIOF_OUT_INIT_HIGH, "CPU_GP_nRESET" }, | ||
876 | { GPIO82_HX4700_EUART_RESET, GPIOF_OUT_INIT_HIGH, "EUART_RESET" }, | 886 | { GPIO82_HX4700_EUART_RESET, GPIOF_OUT_INIT_HIGH, "EUART_RESET" }, |
887 | { GPIO116_HX4700_CPU_HW_nRESET, GPIOF_OUT_INIT_HIGH, "CPU_HW_nRESET" }, | ||
877 | }; | 888 | }; |
878 | 889 | ||
879 | static void __init hx4700_init(void) | 890 | static void __init hx4700_init(void) |
880 | { | 891 | { |
881 | int ret; | 892 | int ret; |
882 | 893 | ||
894 | PCFR = PCFR_GPR_EN | PCFR_OPDE; | ||
895 | |||
883 | pxa2xx_mfp_config(ARRAY_AND_SIZE(hx4700_pin_config)); | 896 | pxa2xx_mfp_config(ARRAY_AND_SIZE(hx4700_pin_config)); |
884 | gpio_set_wake(GPIO12_HX4700_ASIC3_IRQ, 1); | 897 | gpio_set_wake(GPIO12_HX4700_ASIC3_IRQ, 1); |
885 | ret = gpio_request_array(ARRAY_AND_SIZE(global_gpios)); | 898 | ret = gpio_request_array(ARRAY_AND_SIZE(global_gpios)); |
diff --git a/arch/arm/mach-shmobile/board-armadillo800eva.c b/arch/arm/mach-shmobile/board-armadillo800eva.c index 9e37026ef9dd..9bd135531d76 100644 --- a/arch/arm/mach-shmobile/board-armadillo800eva.c +++ b/arch/arm/mach-shmobile/board-armadillo800eva.c | |||
@@ -779,6 +779,7 @@ DT_MACHINE_START(ARMADILLO800EVA_DT, "armadillo800eva") | |||
779 | .init_irq = r8a7740_init_irq, | 779 | .init_irq = r8a7740_init_irq, |
780 | .handle_irq = shmobile_handle_irq_intc, | 780 | .handle_irq = shmobile_handle_irq_intc, |
781 | .init_machine = eva_init, | 781 | .init_machine = eva_init, |
782 | .init_late = shmobile_init_late, | ||
782 | .timer = &shmobile_timer, | 783 | .timer = &shmobile_timer, |
783 | .dt_compat = eva_boards_compat_dt, | 784 | .dt_compat = eva_boards_compat_dt, |
784 | MACHINE_END | 785 | MACHINE_END |
diff --git a/arch/arm/mach-shmobile/board-kzm9d.c b/arch/arm/mach-shmobile/board-kzm9d.c index 7bc5e7d39f9b..6a33cf393428 100644 --- a/arch/arm/mach-shmobile/board-kzm9d.c +++ b/arch/arm/mach-shmobile/board-kzm9d.c | |||
@@ -80,6 +80,7 @@ DT_MACHINE_START(KZM9D_DT, "kzm9d") | |||
80 | .init_irq = emev2_init_irq, | 80 | .init_irq = emev2_init_irq, |
81 | .handle_irq = gic_handle_irq, | 81 | .handle_irq = gic_handle_irq, |
82 | .init_machine = kzm9d_add_standard_devices, | 82 | .init_machine = kzm9d_add_standard_devices, |
83 | .init_late = shmobile_init_late, | ||
83 | .timer = &shmobile_timer, | 84 | .timer = &shmobile_timer, |
84 | .dt_compat = kzm9d_boards_compat_dt, | 85 | .dt_compat = kzm9d_boards_compat_dt, |
85 | MACHINE_END | 86 | MACHINE_END |
diff --git a/arch/arm/mach-shmobile/board-kzm9g.c b/arch/arm/mach-shmobile/board-kzm9g.c index d8e33b682832..c0ae815e7beb 100644 --- a/arch/arm/mach-shmobile/board-kzm9g.c +++ b/arch/arm/mach-shmobile/board-kzm9g.c | |||
@@ -455,6 +455,7 @@ DT_MACHINE_START(KZM9G_DT, "kzm9g") | |||
455 | .init_irq = sh73a0_init_irq, | 455 | .init_irq = sh73a0_init_irq, |
456 | .handle_irq = gic_handle_irq, | 456 | .handle_irq = gic_handle_irq, |
457 | .init_machine = kzm_init, | 457 | .init_machine = kzm_init, |
458 | .init_late = shmobile_init_late, | ||
458 | .timer = &shmobile_timer, | 459 | .timer = &shmobile_timer, |
459 | .dt_compat = kzm9g_boards_compat_dt, | 460 | .dt_compat = kzm9g_boards_compat_dt, |
460 | MACHINE_END | 461 | MACHINE_END |
diff --git a/arch/arm/mach-shmobile/board-mackerel.c b/arch/arm/mach-shmobile/board-mackerel.c index b577f7c44678..150122a44630 100644 --- a/arch/arm/mach-shmobile/board-mackerel.c +++ b/arch/arm/mach-shmobile/board-mackerel.c | |||
@@ -1512,6 +1512,9 @@ static void __init mackerel_init(void) | |||
1512 | gpio_request(GPIO_FN_SDHID0_1, NULL); | 1512 | gpio_request(GPIO_FN_SDHID0_1, NULL); |
1513 | gpio_request(GPIO_FN_SDHID0_0, NULL); | 1513 | gpio_request(GPIO_FN_SDHID0_0, NULL); |
1514 | 1514 | ||
1515 | /* SDHI0 PORT172 card-detect IRQ26 */ | ||
1516 | gpio_request(GPIO_FN_IRQ26_172, NULL); | ||
1517 | |||
1515 | #if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE) | 1518 | #if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE) |
1516 | /* enable SDHI1 */ | 1519 | /* enable SDHI1 */ |
1517 | gpio_request(GPIO_FN_SDHICMD1, NULL); | 1520 | gpio_request(GPIO_FN_SDHICMD1, NULL); |
diff --git a/arch/arm/mach-shmobile/clock-sh73a0.c b/arch/arm/mach-shmobile/clock-sh73a0.c index 472d1f5361e5..3946c4ba2aa8 100644 --- a/arch/arm/mach-shmobile/clock-sh73a0.c +++ b/arch/arm/mach-shmobile/clock-sh73a0.c | |||
@@ -475,9 +475,9 @@ static struct clk *late_main_clks[] = { | |||
475 | 475 | ||
476 | enum { MSTP001, | 476 | enum { MSTP001, |
477 | MSTP129, MSTP128, MSTP127, MSTP126, MSTP125, MSTP118, MSTP116, MSTP100, | 477 | MSTP129, MSTP128, MSTP127, MSTP126, MSTP125, MSTP118, MSTP116, MSTP100, |
478 | MSTP219, | 478 | MSTP219, MSTP218, |
479 | MSTP207, MSTP206, MSTP204, MSTP203, MSTP202, MSTP201, MSTP200, | 479 | MSTP207, MSTP206, MSTP204, MSTP203, MSTP202, MSTP201, MSTP200, |
480 | MSTP331, MSTP329, MSTP325, MSTP323, MSTP318, | 480 | MSTP331, MSTP329, MSTP325, MSTP323, |
481 | MSTP314, MSTP313, MSTP312, MSTP311, | 481 | MSTP314, MSTP313, MSTP312, MSTP311, |
482 | MSTP303, MSTP302, MSTP301, MSTP300, | 482 | MSTP303, MSTP302, MSTP301, MSTP300, |
483 | MSTP411, MSTP410, MSTP403, | 483 | MSTP411, MSTP410, MSTP403, |
@@ -497,6 +497,7 @@ static struct clk mstp_clks[MSTP_NR] = { | |||
497 | [MSTP116] = MSTP(&div4_clks[DIV4_HP], SMSTPCR1, 16, 0), /* IIC0 */ | 497 | [MSTP116] = MSTP(&div4_clks[DIV4_HP], SMSTPCR1, 16, 0), /* IIC0 */ |
498 | [MSTP100] = MSTP(&div4_clks[DIV4_B], SMSTPCR1, 0, 0), /* LCDC0 */ | 498 | [MSTP100] = MSTP(&div4_clks[DIV4_B], SMSTPCR1, 0, 0), /* LCDC0 */ |
499 | [MSTP219] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 19, 0), /* SCIFA7 */ | 499 | [MSTP219] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 19, 0), /* SCIFA7 */ |
500 | [MSTP218] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 18, 0), /* SY-DMAC */ | ||
500 | [MSTP207] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 7, 0), /* SCIFA5 */ | 501 | [MSTP207] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 7, 0), /* SCIFA5 */ |
501 | [MSTP206] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 6, 0), /* SCIFB */ | 502 | [MSTP206] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 6, 0), /* SCIFB */ |
502 | [MSTP204] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 4, 0), /* SCIFA0 */ | 503 | [MSTP204] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 4, 0), /* SCIFA0 */ |
@@ -508,7 +509,6 @@ static struct clk mstp_clks[MSTP_NR] = { | |||
508 | [MSTP329] = MSTP(&r_clk, SMSTPCR3, 29, 0), /* CMT10 */ | 509 | [MSTP329] = MSTP(&r_clk, SMSTPCR3, 29, 0), /* CMT10 */ |
509 | [MSTP325] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR3, 25, 0), /* IrDA */ | 510 | [MSTP325] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR3, 25, 0), /* IrDA */ |
510 | [MSTP323] = MSTP(&div4_clks[DIV4_HP], SMSTPCR3, 23, 0), /* IIC1 */ | 511 | [MSTP323] = MSTP(&div4_clks[DIV4_HP], SMSTPCR3, 23, 0), /* IIC1 */ |
511 | [MSTP318] = MSTP(&div4_clks[DIV4_HP], SMSTPCR3, 18, 0), /* SY-DMAC */ | ||
512 | [MSTP314] = MSTP(&div6_clks[DIV6_SDHI0], SMSTPCR3, 14, 0), /* SDHI0 */ | 512 | [MSTP314] = MSTP(&div6_clks[DIV6_SDHI0], SMSTPCR3, 14, 0), /* SDHI0 */ |
513 | [MSTP313] = MSTP(&div6_clks[DIV6_SDHI1], SMSTPCR3, 13, 0), /* SDHI1 */ | 513 | [MSTP313] = MSTP(&div6_clks[DIV6_SDHI1], SMSTPCR3, 13, 0), /* SDHI1 */ |
514 | [MSTP312] = MSTP(&div4_clks[DIV4_HP], SMSTPCR3, 12, 0), /* MMCIF0 */ | 514 | [MSTP312] = MSTP(&div4_clks[DIV4_HP], SMSTPCR3, 12, 0), /* MMCIF0 */ |
@@ -552,6 +552,7 @@ static struct clk_lookup lookups[] = { | |||
552 | CLKDEV_DEV_ID("i2c-sh_mobile.0", &mstp_clks[MSTP116]), /* I2C0 */ | 552 | CLKDEV_DEV_ID("i2c-sh_mobile.0", &mstp_clks[MSTP116]), /* I2C0 */ |
553 | CLKDEV_DEV_ID("sh_mobile_lcdc_fb.0", &mstp_clks[MSTP100]), /* LCDC0 */ | 553 | CLKDEV_DEV_ID("sh_mobile_lcdc_fb.0", &mstp_clks[MSTP100]), /* LCDC0 */ |
554 | CLKDEV_DEV_ID("sh-sci.7", &mstp_clks[MSTP219]), /* SCIFA7 */ | 554 | CLKDEV_DEV_ID("sh-sci.7", &mstp_clks[MSTP219]), /* SCIFA7 */ |
555 | CLKDEV_DEV_ID("sh-dma-engine.0", &mstp_clks[MSTP218]), /* SY-DMAC */ | ||
555 | CLKDEV_DEV_ID("sh-sci.5", &mstp_clks[MSTP207]), /* SCIFA5 */ | 556 | CLKDEV_DEV_ID("sh-sci.5", &mstp_clks[MSTP207]), /* SCIFA5 */ |
556 | CLKDEV_DEV_ID("sh-sci.8", &mstp_clks[MSTP206]), /* SCIFB */ | 557 | CLKDEV_DEV_ID("sh-sci.8", &mstp_clks[MSTP206]), /* SCIFB */ |
557 | CLKDEV_DEV_ID("sh-sci.0", &mstp_clks[MSTP204]), /* SCIFA0 */ | 558 | CLKDEV_DEV_ID("sh-sci.0", &mstp_clks[MSTP204]), /* SCIFA0 */ |
@@ -563,7 +564,6 @@ static struct clk_lookup lookups[] = { | |||
563 | CLKDEV_DEV_ID("sh_cmt.10", &mstp_clks[MSTP329]), /* CMT10 */ | 564 | CLKDEV_DEV_ID("sh_cmt.10", &mstp_clks[MSTP329]), /* CMT10 */ |
564 | CLKDEV_DEV_ID("sh_irda.0", &mstp_clks[MSTP325]), /* IrDA */ | 565 | CLKDEV_DEV_ID("sh_irda.0", &mstp_clks[MSTP325]), /* IrDA */ |
565 | CLKDEV_DEV_ID("i2c-sh_mobile.1", &mstp_clks[MSTP323]), /* I2C1 */ | 566 | CLKDEV_DEV_ID("i2c-sh_mobile.1", &mstp_clks[MSTP323]), /* I2C1 */ |
566 | CLKDEV_DEV_ID("sh-dma-engine.0", &mstp_clks[MSTP318]), /* SY-DMAC */ | ||
567 | CLKDEV_DEV_ID("sh_mobile_sdhi.0", &mstp_clks[MSTP314]), /* SDHI0 */ | 567 | CLKDEV_DEV_ID("sh_mobile_sdhi.0", &mstp_clks[MSTP314]), /* SDHI0 */ |
568 | CLKDEV_DEV_ID("sh_mobile_sdhi.1", &mstp_clks[MSTP313]), /* SDHI1 */ | 568 | CLKDEV_DEV_ID("sh_mobile_sdhi.1", &mstp_clks[MSTP313]), /* SDHI1 */ |
569 | CLKDEV_DEV_ID("sh_mmcif.0", &mstp_clks[MSTP312]), /* MMCIF0 */ | 569 | CLKDEV_DEV_ID("sh_mmcif.0", &mstp_clks[MSTP312]), /* MMCIF0 */ |
diff --git a/arch/arm/mach-shmobile/intc-r8a7779.c b/arch/arm/mach-shmobile/intc-r8a7779.c index 550b23df4fd4..f04fad4ec4fb 100644 --- a/arch/arm/mach-shmobile/intc-r8a7779.c +++ b/arch/arm/mach-shmobile/intc-r8a7779.c | |||
@@ -35,6 +35,9 @@ | |||
35 | #define INT2SMSKCR3 0xfe7822ac | 35 | #define INT2SMSKCR3 0xfe7822ac |
36 | #define INT2SMSKCR4 0xfe7822b0 | 36 | #define INT2SMSKCR4 0xfe7822b0 |
37 | 37 | ||
38 | #define INT2NTSR0 0xfe700060 | ||
39 | #define INT2NTSR1 0xfe700064 | ||
40 | |||
38 | static int r8a7779_set_wake(struct irq_data *data, unsigned int on) | 41 | static int r8a7779_set_wake(struct irq_data *data, unsigned int on) |
39 | { | 42 | { |
40 | return 0; /* always allow wakeup */ | 43 | return 0; /* always allow wakeup */ |
@@ -49,6 +52,10 @@ void __init r8a7779_init_irq(void) | |||
49 | gic_init(0, 29, gic_dist_base, gic_cpu_base); | 52 | gic_init(0, 29, gic_dist_base, gic_cpu_base); |
50 | gic_arch_extn.irq_set_wake = r8a7779_set_wake; | 53 | gic_arch_extn.irq_set_wake = r8a7779_set_wake; |
51 | 54 | ||
55 | /* route all interrupts to ARM */ | ||
56 | __raw_writel(0xffffffff, INT2NTSR0); | ||
57 | __raw_writel(0x3fffffff, INT2NTSR1); | ||
58 | |||
52 | /* unmask all known interrupts in INTCS2 */ | 59 | /* unmask all known interrupts in INTCS2 */ |
53 | __raw_writel(0xfffffff0, INT2SMSKCR0); | 60 | __raw_writel(0xfffffff0, INT2SMSKCR0); |
54 | __raw_writel(0xfff7ffff, INT2SMSKCR1); | 61 | __raw_writel(0xfff7ffff, INT2SMSKCR1); |
diff --git a/arch/arm/mach-shmobile/platsmp.c b/arch/arm/mach-shmobile/platsmp.c index bacdd667e3b1..e859fcdb3d58 100644 --- a/arch/arm/mach-shmobile/platsmp.c +++ b/arch/arm/mach-shmobile/platsmp.c | |||
@@ -25,7 +25,12 @@ | |||
25 | #define is_sh73a0() (machine_is_ag5evm() || machine_is_kota2() || \ | 25 | #define is_sh73a0() (machine_is_ag5evm() || machine_is_kota2() || \ |
26 | of_machine_is_compatible("renesas,sh73a0")) | 26 | of_machine_is_compatible("renesas,sh73a0")) |
27 | #define is_r8a7779() machine_is_marzen() | 27 | #define is_r8a7779() machine_is_marzen() |
28 | |||
29 | #ifdef CONFIG_ARCH_EMEV2 | ||
28 | #define is_emev2() of_machine_is_compatible("renesas,emev2") | 30 | #define is_emev2() of_machine_is_compatible("renesas,emev2") |
31 | #else | ||
32 | #define is_emev2() (0) | ||
33 | #endif | ||
29 | 34 | ||
30 | static unsigned int __init shmobile_smp_get_core_count(void) | 35 | static unsigned int __init shmobile_smp_get_core_count(void) |
31 | { | 36 | { |
diff --git a/arch/arm/mach-shmobile/setup-sh7372.c b/arch/arm/mach-shmobile/setup-sh7372.c index 6a4bd582c028..fafce9ce8218 100644 --- a/arch/arm/mach-shmobile/setup-sh7372.c +++ b/arch/arm/mach-shmobile/setup-sh7372.c | |||
@@ -484,7 +484,7 @@ static const struct sh_dmae_slave_config sh7372_dmae_slaves[] = { | |||
484 | }, | 484 | }, |
485 | }; | 485 | }; |
486 | 486 | ||
487 | #define SH7372_CHCLR 0x220 | 487 | #define SH7372_CHCLR (0x220 - 0x20) |
488 | 488 | ||
489 | static const struct sh_dmae_channel sh7372_dmae_channels[] = { | 489 | static const struct sh_dmae_channel sh7372_dmae_channels[] = { |
490 | { | 490 | { |
diff --git a/arch/arm/mach-spear13xx/include/mach/debug-macro.S b/arch/arm/mach-spear13xx/include/mach/debug-macro.S index ea1564609bd4..9e3ae6bfe50d 100644 --- a/arch/arm/mach-spear13xx/include/mach/debug-macro.S +++ b/arch/arm/mach-spear13xx/include/mach/debug-macro.S | |||
@@ -4,7 +4,7 @@ | |||
4 | * Debugging macro include header spear13xx machine family | 4 | * Debugging macro include header spear13xx machine family |
5 | * | 5 | * |
6 | * Copyright (C) 2012 ST Microelectronics | 6 | * Copyright (C) 2012 ST Microelectronics |
7 | * Viresh Kumar <viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-spear13xx/include/mach/dma.h b/arch/arm/mach-spear13xx/include/mach/dma.h index 383ab04dc6c9..d50bdb605925 100644 --- a/arch/arm/mach-spear13xx/include/mach/dma.h +++ b/arch/arm/mach-spear13xx/include/mach/dma.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * DMA information for SPEAr13xx machine family | 4 | * DMA information for SPEAr13xx machine family |
5 | * | 5 | * |
6 | * Copyright (C) 2012 ST Microelectronics | 6 | * Copyright (C) 2012 ST Microelectronics |
7 | * Viresh Kumar <viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-spear13xx/include/mach/generic.h b/arch/arm/mach-spear13xx/include/mach/generic.h index 6d8c45b9f298..dac57fd0cdfd 100644 --- a/arch/arm/mach-spear13xx/include/mach/generic.h +++ b/arch/arm/mach-spear13xx/include/mach/generic.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * spear13xx machine family generic header file | 4 | * spear13xx machine family generic header file |
5 | * | 5 | * |
6 | * Copyright (C) 2012 ST Microelectronics | 6 | * Copyright (C) 2012 ST Microelectronics |
7 | * Viresh Kumar <viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-spear13xx/include/mach/gpio.h b/arch/arm/mach-spear13xx/include/mach/gpio.h index cd6f4f86a56b..85f176311f63 100644 --- a/arch/arm/mach-spear13xx/include/mach/gpio.h +++ b/arch/arm/mach-spear13xx/include/mach/gpio.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * GPIO macros for SPEAr13xx machine family | 4 | * GPIO macros for SPEAr13xx machine family |
5 | * | 5 | * |
6 | * Copyright (C) 2012 ST Microelectronics | 6 | * Copyright (C) 2012 ST Microelectronics |
7 | * Viresh Kumar <viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-spear13xx/include/mach/irqs.h b/arch/arm/mach-spear13xx/include/mach/irqs.h index f542a24aa5f2..271a62b4cd31 100644 --- a/arch/arm/mach-spear13xx/include/mach/irqs.h +++ b/arch/arm/mach-spear13xx/include/mach/irqs.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * IRQ helper macros for spear13xx machine family | 4 | * IRQ helper macros for spear13xx machine family |
5 | * | 5 | * |
6 | * Copyright (C) 2012 ST Microelectronics | 6 | * Copyright (C) 2012 ST Microelectronics |
7 | * Viresh Kumar <viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-spear13xx/include/mach/spear.h b/arch/arm/mach-spear13xx/include/mach/spear.h index 30c57ef72686..65f27def239b 100644 --- a/arch/arm/mach-spear13xx/include/mach/spear.h +++ b/arch/arm/mach-spear13xx/include/mach/spear.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * spear13xx Machine family specific definition | 4 | * spear13xx Machine family specific definition |
5 | * | 5 | * |
6 | * Copyright (C) 2012 ST Microelectronics | 6 | * Copyright (C) 2012 ST Microelectronics |
7 | * Viresh Kumar <viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-spear13xx/include/mach/timex.h b/arch/arm/mach-spear13xx/include/mach/timex.h index 31af3e8d976e..3a58b8284a6a 100644 --- a/arch/arm/mach-spear13xx/include/mach/timex.h +++ b/arch/arm/mach-spear13xx/include/mach/timex.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * SPEAr3XX machine family specific timex definitions | 4 | * SPEAr3XX machine family specific timex definitions |
5 | * | 5 | * |
6 | * Copyright (C) 2012 ST Microelectronics | 6 | * Copyright (C) 2012 ST Microelectronics |
7 | * Viresh Kumar <viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-spear13xx/include/mach/uncompress.h b/arch/arm/mach-spear13xx/include/mach/uncompress.h index c7840896ae6e..70fe72f05dea 100644 --- a/arch/arm/mach-spear13xx/include/mach/uncompress.h +++ b/arch/arm/mach-spear13xx/include/mach/uncompress.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * Serial port stubs for kernel decompress status messages | 4 | * Serial port stubs for kernel decompress status messages |
5 | * | 5 | * |
6 | * Copyright (C) 2012 ST Microelectronics | 6 | * Copyright (C) 2012 ST Microelectronics |
7 | * Viresh Kumar <viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-spear13xx/spear1310.c b/arch/arm/mach-spear13xx/spear1310.c index fefd15b2f380..732d29bc7330 100644 --- a/arch/arm/mach-spear13xx/spear1310.c +++ b/arch/arm/mach-spear13xx/spear1310.c | |||
@@ -4,7 +4,7 @@ | |||
4 | * SPEAr1310 machine source file | 4 | * SPEAr1310 machine source file |
5 | * | 5 | * |
6 | * Copyright (C) 2012 ST Microelectronics | 6 | * Copyright (C) 2012 ST Microelectronics |
7 | * Viresh Kumar <viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-spear13xx/spear1340.c b/arch/arm/mach-spear13xx/spear1340.c index ee38cbc56869..81e4ed76ad06 100644 --- a/arch/arm/mach-spear13xx/spear1340.c +++ b/arch/arm/mach-spear13xx/spear1340.c | |||
@@ -4,7 +4,7 @@ | |||
4 | * SPEAr1340 machine source file | 4 | * SPEAr1340 machine source file |
5 | * | 5 | * |
6 | * Copyright (C) 2012 ST Microelectronics | 6 | * Copyright (C) 2012 ST Microelectronics |
7 | * Viresh Kumar <viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-spear13xx/spear13xx.c b/arch/arm/mach-spear13xx/spear13xx.c index 50b349ae863d..cf936b106e27 100644 --- a/arch/arm/mach-spear13xx/spear13xx.c +++ b/arch/arm/mach-spear13xx/spear13xx.c | |||
@@ -4,7 +4,7 @@ | |||
4 | * SPEAr13XX machines common source file | 4 | * SPEAr13XX machines common source file |
5 | * | 5 | * |
6 | * Copyright (C) 2012 ST Microelectronics | 6 | * Copyright (C) 2012 ST Microelectronics |
7 | * Viresh Kumar <viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-spear3xx/include/mach/debug-macro.S b/arch/arm/mach-spear3xx/include/mach/debug-macro.S index 590519f10d6e..0a6381fad5d9 100644 --- a/arch/arm/mach-spear3xx/include/mach/debug-macro.S +++ b/arch/arm/mach-spear3xx/include/mach/debug-macro.S | |||
@@ -4,7 +4,7 @@ | |||
4 | * Debugging macro include header spear3xx machine family | 4 | * Debugging macro include header spear3xx machine family |
5 | * | 5 | * |
6 | * Copyright (C) 2009 ST Microelectronics | 6 | * Copyright (C) 2009 ST Microelectronics |
7 | * Viresh Kumar<viresh.kumar@st.com> | 7 | * Viresh Kumar<viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-spear3xx/include/mach/generic.h b/arch/arm/mach-spear3xx/include/mach/generic.h index 4a95b9453c2a..ce19113ca791 100644 --- a/arch/arm/mach-spear3xx/include/mach/generic.h +++ b/arch/arm/mach-spear3xx/include/mach/generic.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * SPEAr3XX machine family generic header file | 4 | * SPEAr3XX machine family generic header file |
5 | * | 5 | * |
6 | * Copyright (C) 2009 ST Microelectronics | 6 | * Copyright (C) 2009 ST Microelectronics |
7 | * Viresh Kumar<viresh.kumar@st.com> | 7 | * Viresh Kumar<viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-spear3xx/include/mach/gpio.h b/arch/arm/mach-spear3xx/include/mach/gpio.h index 451b2081bfc9..2ac74c6db7f1 100644 --- a/arch/arm/mach-spear3xx/include/mach/gpio.h +++ b/arch/arm/mach-spear3xx/include/mach/gpio.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * GPIO macros for SPEAr3xx machine family | 4 | * GPIO macros for SPEAr3xx machine family |
5 | * | 5 | * |
6 | * Copyright (C) 2009 ST Microelectronics | 6 | * Copyright (C) 2009 ST Microelectronics |
7 | * Viresh Kumar<viresh.kumar@st.com> | 7 | * Viresh Kumar<viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-spear3xx/include/mach/irqs.h b/arch/arm/mach-spear3xx/include/mach/irqs.h index 51bd62a0254c..803de76f5f36 100644 --- a/arch/arm/mach-spear3xx/include/mach/irqs.h +++ b/arch/arm/mach-spear3xx/include/mach/irqs.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * IRQ helper macros for SPEAr3xx machine family | 4 | * IRQ helper macros for SPEAr3xx machine family |
5 | * | 5 | * |
6 | * Copyright (C) 2009 ST Microelectronics | 6 | * Copyright (C) 2009 ST Microelectronics |
7 | * Viresh Kumar<viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-spear3xx/include/mach/misc_regs.h b/arch/arm/mach-spear3xx/include/mach/misc_regs.h index 18e2ac576f25..6309bf68d6f8 100644 --- a/arch/arm/mach-spear3xx/include/mach/misc_regs.h +++ b/arch/arm/mach-spear3xx/include/mach/misc_regs.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * Miscellaneous registers definitions for SPEAr3xx machine family | 4 | * Miscellaneous registers definitions for SPEAr3xx machine family |
5 | * | 5 | * |
6 | * Copyright (C) 2009 ST Microelectronics | 6 | * Copyright (C) 2009 ST Microelectronics |
7 | * Viresh Kumar<viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-spear3xx/include/mach/spear.h b/arch/arm/mach-spear3xx/include/mach/spear.h index 51eb953148a9..8cca95193d4d 100644 --- a/arch/arm/mach-spear3xx/include/mach/spear.h +++ b/arch/arm/mach-spear3xx/include/mach/spear.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * SPEAr3xx Machine family specific definition | 4 | * SPEAr3xx Machine family specific definition |
5 | * | 5 | * |
6 | * Copyright (C) 2009 ST Microelectronics | 6 | * Copyright (C) 2009 ST Microelectronics |
7 | * Viresh Kumar<viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-spear3xx/include/mach/timex.h b/arch/arm/mach-spear3xx/include/mach/timex.h index a38cc9de876f..9f5d08bd0c44 100644 --- a/arch/arm/mach-spear3xx/include/mach/timex.h +++ b/arch/arm/mach-spear3xx/include/mach/timex.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * SPEAr3XX machine family specific timex definitions | 4 | * SPEAr3XX machine family specific timex definitions |
5 | * | 5 | * |
6 | * Copyright (C) 2009 ST Microelectronics | 6 | * Copyright (C) 2009 ST Microelectronics |
7 | * Viresh Kumar<viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-spear3xx/include/mach/uncompress.h b/arch/arm/mach-spear3xx/include/mach/uncompress.h index 53ba8bbc0dfa..b909b011f7c8 100644 --- a/arch/arm/mach-spear3xx/include/mach/uncompress.h +++ b/arch/arm/mach-spear3xx/include/mach/uncompress.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * Serial port stubs for kernel decompress status messages | 4 | * Serial port stubs for kernel decompress status messages |
5 | * | 5 | * |
6 | * Copyright (C) 2009 ST Microelectronics | 6 | * Copyright (C) 2009 ST Microelectronics |
7 | * Viresh Kumar<viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-spear3xx/spear300.c b/arch/arm/mach-spear3xx/spear300.c index f74a05bdb829..0f882ecb7d81 100644 --- a/arch/arm/mach-spear3xx/spear300.c +++ b/arch/arm/mach-spear3xx/spear300.c | |||
@@ -4,7 +4,7 @@ | |||
4 | * SPEAr300 machine source file | 4 | * SPEAr300 machine source file |
5 | * | 5 | * |
6 | * Copyright (C) 2009-2012 ST Microelectronics | 6 | * Copyright (C) 2009-2012 ST Microelectronics |
7 | * Viresh Kumar <viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-spear3xx/spear310.c b/arch/arm/mach-spear3xx/spear310.c index 84dfb0900747..bbcf4571d361 100644 --- a/arch/arm/mach-spear3xx/spear310.c +++ b/arch/arm/mach-spear3xx/spear310.c | |||
@@ -4,7 +4,7 @@ | |||
4 | * SPEAr310 machine source file | 4 | * SPEAr310 machine source file |
5 | * | 5 | * |
6 | * Copyright (C) 2009-2012 ST Microelectronics | 6 | * Copyright (C) 2009-2012 ST Microelectronics |
7 | * Viresh Kumar <viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-spear3xx/spear320.c b/arch/arm/mach-spear3xx/spear320.c index a88fa841d29d..88d483bcd66a 100644 --- a/arch/arm/mach-spear3xx/spear320.c +++ b/arch/arm/mach-spear3xx/spear320.c | |||
@@ -4,7 +4,7 @@ | |||
4 | * SPEAr320 machine source file | 4 | * SPEAr320 machine source file |
5 | * | 5 | * |
6 | * Copyright (C) 2009-2012 ST Microelectronics | 6 | * Copyright (C) 2009-2012 ST Microelectronics |
7 | * Viresh Kumar <viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-spear3xx/spear3xx.c b/arch/arm/mach-spear3xx/spear3xx.c index f22419ed74a8..0f41bd1c47c3 100644 --- a/arch/arm/mach-spear3xx/spear3xx.c +++ b/arch/arm/mach-spear3xx/spear3xx.c | |||
@@ -4,7 +4,7 @@ | |||
4 | * SPEAr3XX machines common source file | 4 | * SPEAr3XX machines common source file |
5 | * | 5 | * |
6 | * Copyright (C) 2009-2012 ST Microelectronics | 6 | * Copyright (C) 2009-2012 ST Microelectronics |
7 | * Viresh Kumar <viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-spear6xx/include/mach/gpio.h b/arch/arm/mach-spear6xx/include/mach/gpio.h index 3a789dbb69f7..d42cefc0356d 100644 --- a/arch/arm/mach-spear6xx/include/mach/gpio.h +++ b/arch/arm/mach-spear6xx/include/mach/gpio.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * GPIO macros for SPEAr6xx machine family | 4 | * GPIO macros for SPEAr6xx machine family |
5 | * | 5 | * |
6 | * Copyright (C) 2009 ST Microelectronics | 6 | * Copyright (C) 2009 ST Microelectronics |
7 | * Viresh Kumar<viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-spear6xx/include/mach/misc_regs.h b/arch/arm/mach-spear6xx/include/mach/misc_regs.h index 179e45774b3a..c34acc201d34 100644 --- a/arch/arm/mach-spear6xx/include/mach/misc_regs.h +++ b/arch/arm/mach-spear6xx/include/mach/misc_regs.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * Miscellaneous registers definitions for SPEAr6xx machine family | 4 | * Miscellaneous registers definitions for SPEAr6xx machine family |
5 | * | 5 | * |
6 | * Copyright (C) 2009 ST Microelectronics | 6 | * Copyright (C) 2009 ST Microelectronics |
7 | * Viresh Kumar<viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/mach-tegra/reset.c b/arch/arm/mach-tegra/reset.c index 4d6a2ee99c3b..5beb7ebe2948 100644 --- a/arch/arm/mach-tegra/reset.c +++ b/arch/arm/mach-tegra/reset.c | |||
@@ -33,7 +33,7 @@ | |||
33 | 33 | ||
34 | static bool is_enabled; | 34 | static bool is_enabled; |
35 | 35 | ||
36 | static void tegra_cpu_reset_handler_enable(void) | 36 | static void __init tegra_cpu_reset_handler_enable(void) |
37 | { | 37 | { |
38 | void __iomem *iram_base = IO_ADDRESS(TEGRA_IRAM_RESET_BASE); | 38 | void __iomem *iram_base = IO_ADDRESS(TEGRA_IRAM_RESET_BASE); |
39 | void __iomem *evp_cpu_reset = | 39 | void __iomem *evp_cpu_reset = |
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c index 9c74ac545849..1509a3cb5833 100644 --- a/arch/arm/mach-ux500/board-mop500.c +++ b/arch/arm/mach-ux500/board-mop500.c | |||
@@ -580,43 +580,12 @@ static void ux500_uart0_reset(void) | |||
580 | udelay(1); | 580 | udelay(1); |
581 | } | 581 | } |
582 | 582 | ||
583 | /* This needs to be referenced by callbacks */ | ||
584 | struct pinctrl *u0_p; | ||
585 | struct pinctrl_state *u0_def; | ||
586 | struct pinctrl_state *u0_sleep; | ||
587 | |||
588 | static void ux500_uart0_init(void) | ||
589 | { | ||
590 | int ret; | ||
591 | |||
592 | if (IS_ERR(u0_p) || IS_ERR(u0_def)) | ||
593 | return; | ||
594 | |||
595 | ret = pinctrl_select_state(u0_p, u0_def); | ||
596 | if (ret) | ||
597 | pr_err("could not set UART0 defstate\n"); | ||
598 | } | ||
599 | |||
600 | static void ux500_uart0_exit(void) | ||
601 | { | ||
602 | int ret; | ||
603 | |||
604 | if (IS_ERR(u0_p) || IS_ERR(u0_sleep)) | ||
605 | return; | ||
606 | |||
607 | ret = pinctrl_select_state(u0_p, u0_sleep); | ||
608 | if (ret) | ||
609 | pr_err("could not set UART0 idlestate\n"); | ||
610 | } | ||
611 | |||
612 | static struct amba_pl011_data uart0_plat = { | 583 | static struct amba_pl011_data uart0_plat = { |
613 | #ifdef CONFIG_STE_DMA40 | 584 | #ifdef CONFIG_STE_DMA40 |
614 | .dma_filter = stedma40_filter, | 585 | .dma_filter = stedma40_filter, |
615 | .dma_rx_param = &uart0_dma_cfg_rx, | 586 | .dma_rx_param = &uart0_dma_cfg_rx, |
616 | .dma_tx_param = &uart0_dma_cfg_tx, | 587 | .dma_tx_param = &uart0_dma_cfg_tx, |
617 | #endif | 588 | #endif |
618 | .init = ux500_uart0_init, | ||
619 | .exit = ux500_uart0_exit, | ||
620 | .reset = ux500_uart0_reset, | 589 | .reset = ux500_uart0_reset, |
621 | }; | 590 | }; |
622 | 591 | ||
@@ -638,28 +607,7 @@ static struct amba_pl011_data uart2_plat = { | |||
638 | 607 | ||
639 | static void __init mop500_uart_init(struct device *parent) | 608 | static void __init mop500_uart_init(struct device *parent) |
640 | { | 609 | { |
641 | struct amba_device *uart0_device; | 610 | db8500_add_uart0(parent, &uart0_plat); |
642 | |||
643 | uart0_device = db8500_add_uart0(parent, &uart0_plat); | ||
644 | if (uart0_device) { | ||
645 | u0_p = pinctrl_get(&uart0_device->dev); | ||
646 | if (IS_ERR(u0_p)) | ||
647 | dev_err(&uart0_device->dev, | ||
648 | "could not get UART0 pinctrl\n"); | ||
649 | else { | ||
650 | u0_def = pinctrl_lookup_state(u0_p, | ||
651 | PINCTRL_STATE_DEFAULT); | ||
652 | if (IS_ERR(u0_def)) { | ||
653 | dev_err(&uart0_device->dev, | ||
654 | "could not get UART0 defstate\n"); | ||
655 | } | ||
656 | u0_sleep = pinctrl_lookup_state(u0_p, | ||
657 | PINCTRL_STATE_SLEEP); | ||
658 | if (IS_ERR(u0_sleep)) | ||
659 | dev_err(&uart0_device->dev, | ||
660 | "could not get UART0 idlestate\n"); | ||
661 | } | ||
662 | } | ||
663 | db8500_add_uart1(parent, &uart1_plat); | 611 | db8500_add_uart1(parent, &uart1_plat); |
664 | db8500_add_uart2(parent, &uart2_plat); | 612 | db8500_add_uart2(parent, &uart2_plat); |
665 | } | 613 | } |
diff --git a/arch/arm/mach-versatile/pci.c b/arch/arm/mach-versatile/pci.c index bec933b04ef0..e95bf84cc837 100644 --- a/arch/arm/mach-versatile/pci.c +++ b/arch/arm/mach-versatile/pci.c | |||
@@ -339,7 +339,6 @@ void __init pci_versatile_preinit(void) | |||
339 | static int __init versatile_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | 339 | static int __init versatile_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) |
340 | { | 340 | { |
341 | int irq; | 341 | int irq; |
342 | int devslot = PCI_SLOT(dev->devfn); | ||
343 | 342 | ||
344 | /* slot, pin, irq | 343 | /* slot, pin, irq |
345 | * 24 1 27 | 344 | * 24 1 27 |
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c index d766e4256b74..4044abcf6f9d 100644 --- a/arch/arm/mm/dma-mapping.c +++ b/arch/arm/mm/dma-mapping.c | |||
@@ -1067,7 +1067,7 @@ static struct page **__iommu_alloc_buffer(struct device *dev, size_t size, gfp_t | |||
1067 | return NULL; | 1067 | return NULL; |
1068 | 1068 | ||
1069 | while (count) { | 1069 | while (count) { |
1070 | int j, order = __ffs(count); | 1070 | int j, order = __fls(count); |
1071 | 1071 | ||
1072 | pages[i] = alloc_pages(gfp | __GFP_NOWARN, order); | 1072 | pages[i] = alloc_pages(gfp | __GFP_NOWARN, order); |
1073 | while (!pages[i] && order) | 1073 | while (!pages[i] && order) |
diff --git a/arch/arm/mm/mm.h b/arch/arm/mm/mm.h index c471436c7952..2e8a1efdf7b8 100644 --- a/arch/arm/mm/mm.h +++ b/arch/arm/mm/mm.h | |||
@@ -64,7 +64,7 @@ extern void __flush_dcache_page(struct address_space *mapping, struct page *page | |||
64 | #ifdef CONFIG_ZONE_DMA | 64 | #ifdef CONFIG_ZONE_DMA |
65 | extern phys_addr_t arm_dma_limit; | 65 | extern phys_addr_t arm_dma_limit; |
66 | #else | 66 | #else |
67 | #define arm_dma_limit ((u32)~0) | 67 | #define arm_dma_limit ((phys_addr_t)~0) |
68 | #endif | 68 | #endif |
69 | 69 | ||
70 | extern phys_addr_t arm_lowmem_limit; | 70 | extern phys_addr_t arm_lowmem_limit; |
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index e5dad60b558b..cf4528d51774 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c | |||
@@ -791,6 +791,79 @@ void __init iotable_init(struct map_desc *io_desc, int nr) | |||
791 | } | 791 | } |
792 | } | 792 | } |
793 | 793 | ||
794 | #ifndef CONFIG_ARM_LPAE | ||
795 | |||
796 | /* | ||
797 | * The Linux PMD is made of two consecutive section entries covering 2MB | ||
798 | * (see definition in include/asm/pgtable-2level.h). However a call to | ||
799 | * create_mapping() may optimize static mappings by using individual | ||
800 | * 1MB section mappings. This leaves the actual PMD potentially half | ||
801 | * initialized if the top or bottom section entry isn't used, leaving it | ||
802 | * open to problems if a subsequent ioremap() or vmalloc() tries to use | ||
803 | * the virtual space left free by that unused section entry. | ||
804 | * | ||
805 | * Let's avoid the issue by inserting dummy vm entries covering the unused | ||
806 | * PMD halves once the static mappings are in place. | ||
807 | */ | ||
808 | |||
809 | static void __init pmd_empty_section_gap(unsigned long addr) | ||
810 | { | ||
811 | struct vm_struct *vm; | ||
812 | |||
813 | vm = early_alloc_aligned(sizeof(*vm), __alignof__(*vm)); | ||
814 | vm->addr = (void *)addr; | ||
815 | vm->size = SECTION_SIZE; | ||
816 | vm->flags = VM_IOREMAP | VM_ARM_STATIC_MAPPING; | ||
817 | vm->caller = pmd_empty_section_gap; | ||
818 | vm_area_add_early(vm); | ||
819 | } | ||
820 | |||
821 | static void __init fill_pmd_gaps(void) | ||
822 | { | ||
823 | struct vm_struct *vm; | ||
824 | unsigned long addr, next = 0; | ||
825 | pmd_t *pmd; | ||
826 | |||
827 | /* we're still single threaded hence no lock needed here */ | ||
828 | for (vm = vmlist; vm; vm = vm->next) { | ||
829 | if (!(vm->flags & VM_ARM_STATIC_MAPPING)) | ||
830 | continue; | ||
831 | addr = (unsigned long)vm->addr; | ||
832 | if (addr < next) | ||
833 | continue; | ||
834 | |||
835 | /* | ||
836 | * Check if this vm starts on an odd section boundary. | ||
837 | * If so and the first section entry for this PMD is free | ||
838 | * then we block the corresponding virtual address. | ||
839 | */ | ||
840 | if ((addr & ~PMD_MASK) == SECTION_SIZE) { | ||
841 | pmd = pmd_off_k(addr); | ||
842 | if (pmd_none(*pmd)) | ||
843 | pmd_empty_section_gap(addr & PMD_MASK); | ||
844 | } | ||
845 | |||
846 | /* | ||
847 | * Then check if this vm ends on an odd section boundary. | ||
848 | * If so and the second section entry for this PMD is empty | ||
849 | * then we block the corresponding virtual address. | ||
850 | */ | ||
851 | addr += vm->size; | ||
852 | if ((addr & ~PMD_MASK) == SECTION_SIZE) { | ||
853 | pmd = pmd_off_k(addr) + 1; | ||
854 | if (pmd_none(*pmd)) | ||
855 | pmd_empty_section_gap(addr); | ||
856 | } | ||
857 | |||
858 | /* no need to look at any vm entry until we hit the next PMD */ | ||
859 | next = (addr + PMD_SIZE - 1) & PMD_MASK; | ||
860 | } | ||
861 | } | ||
862 | |||
863 | #else | ||
864 | #define fill_pmd_gaps() do { } while (0) | ||
865 | #endif | ||
866 | |||
794 | static void * __initdata vmalloc_min = | 867 | static void * __initdata vmalloc_min = |
795 | (void *)(VMALLOC_END - (240 << 20) - VMALLOC_OFFSET); | 868 | (void *)(VMALLOC_END - (240 << 20) - VMALLOC_OFFSET); |
796 | 869 | ||
@@ -1072,6 +1145,7 @@ static void __init devicemaps_init(struct machine_desc *mdesc) | |||
1072 | */ | 1145 | */ |
1073 | if (mdesc->map_io) | 1146 | if (mdesc->map_io) |
1074 | mdesc->map_io(); | 1147 | mdesc->map_io(); |
1148 | fill_pmd_gaps(); | ||
1075 | 1149 | ||
1076 | /* | 1150 | /* |
1077 | * Finally flush the caches and tlb to ensure that we're in a | 1151 | * Finally flush the caches and tlb to ensure that we're in a |
diff --git a/arch/arm/net/bpf_jit_32.c b/arch/arm/net/bpf_jit_32.c index 62135849f48b..c641fb685017 100644 --- a/arch/arm/net/bpf_jit_32.c +++ b/arch/arm/net/bpf_jit_32.c | |||
@@ -762,6 +762,11 @@ b_epilogue: | |||
762 | update_on_xread(ctx); | 762 | update_on_xread(ctx); |
763 | emit(ARM_MOV_R(r_A, r_X), ctx); | 763 | emit(ARM_MOV_R(r_A, r_X), ctx); |
764 | break; | 764 | break; |
765 | case BPF_S_ANC_ALU_XOR_X: | ||
766 | /* A ^= X */ | ||
767 | update_on_xread(ctx); | ||
768 | emit(ARM_EOR_R(r_A, r_A, r_X), ctx); | ||
769 | break; | ||
765 | case BPF_S_ANC_PROTOCOL: | 770 | case BPF_S_ANC_PROTOCOL: |
766 | /* A = ntohs(skb->protocol) */ | 771 | /* A = ntohs(skb->protocol) */ |
767 | ctx->seen |= SEEN_SKB; | 772 | ctx->seen |= SEEN_SKB; |
diff --git a/arch/arm/net/bpf_jit_32.h b/arch/arm/net/bpf_jit_32.h index 99ae5e3f46d2..7fa2f7d3cb90 100644 --- a/arch/arm/net/bpf_jit_32.h +++ b/arch/arm/net/bpf_jit_32.h | |||
@@ -68,6 +68,8 @@ | |||
68 | #define ARM_INST_CMP_R 0x01500000 | 68 | #define ARM_INST_CMP_R 0x01500000 |
69 | #define ARM_INST_CMP_I 0x03500000 | 69 | #define ARM_INST_CMP_I 0x03500000 |
70 | 70 | ||
71 | #define ARM_INST_EOR_R 0x00200000 | ||
72 | |||
71 | #define ARM_INST_LDRB_I 0x05d00000 | 73 | #define ARM_INST_LDRB_I 0x05d00000 |
72 | #define ARM_INST_LDRB_R 0x07d00000 | 74 | #define ARM_INST_LDRB_R 0x07d00000 |
73 | #define ARM_INST_LDRH_I 0x01d000b0 | 75 | #define ARM_INST_LDRH_I 0x01d000b0 |
@@ -132,6 +134,8 @@ | |||
132 | #define ARM_CMP_R(rn, rm) _AL3_R(ARM_INST_CMP, 0, rn, rm) | 134 | #define ARM_CMP_R(rn, rm) _AL3_R(ARM_INST_CMP, 0, rn, rm) |
133 | #define ARM_CMP_I(rn, imm) _AL3_I(ARM_INST_CMP, 0, rn, imm) | 135 | #define ARM_CMP_I(rn, imm) _AL3_I(ARM_INST_CMP, 0, rn, imm) |
134 | 136 | ||
137 | #define ARM_EOR_R(rd, rn, rm) _AL3_R(ARM_INST_EOR, rd, rn, rm) | ||
138 | |||
135 | #define ARM_LDR_I(rt, rn, off) (ARM_INST_LDR_I | (rt) << 12 | (rn) << 16 \ | 139 | #define ARM_LDR_I(rt, rn, off) (ARM_INST_LDR_I | (rt) << 12 | (rn) << 16 \ |
136 | | (off)) | 140 | | (off)) |
137 | #define ARM_LDRB_I(rt, rn, off) (ARM_INST_LDRB_I | (rt) << 12 | (rn) << 16 \ | 141 | #define ARM_LDRB_I(rt, rn, off) (ARM_INST_LDRB_I | (rt) << 12 | (rn) << 16 \ |
diff --git a/arch/arm/plat-mxc/include/mach/mx2_cam.h b/arch/arm/plat-mxc/include/mach/mx2_cam.h index 7ded6f1f74bc..3c080a32dbf5 100644 --- a/arch/arm/plat-mxc/include/mach/mx2_cam.h +++ b/arch/arm/plat-mxc/include/mach/mx2_cam.h | |||
@@ -23,6 +23,7 @@ | |||
23 | #ifndef __MACH_MX2_CAM_H_ | 23 | #ifndef __MACH_MX2_CAM_H_ |
24 | #define __MACH_MX2_CAM_H_ | 24 | #define __MACH_MX2_CAM_H_ |
25 | 25 | ||
26 | #define MX2_CAMERA_SWAP16 (1 << 0) | ||
26 | #define MX2_CAMERA_EXT_VSYNC (1 << 1) | 27 | #define MX2_CAMERA_EXT_VSYNC (1 << 1) |
27 | #define MX2_CAMERA_CCIR (1 << 2) | 28 | #define MX2_CAMERA_CCIR (1 << 2) |
28 | #define MX2_CAMERA_CCIR_INTERLACE (1 << 3) | 29 | #define MX2_CAMERA_CCIR_INTERLACE (1 << 3) |
@@ -30,6 +31,7 @@ | |||
30 | #define MX2_CAMERA_GATED_CLOCK (1 << 5) | 31 | #define MX2_CAMERA_GATED_CLOCK (1 << 5) |
31 | #define MX2_CAMERA_INV_DATA (1 << 6) | 32 | #define MX2_CAMERA_INV_DATA (1 << 6) |
32 | #define MX2_CAMERA_PCLK_SAMPLE_RISING (1 << 7) | 33 | #define MX2_CAMERA_PCLK_SAMPLE_RISING (1 << 7) |
34 | #define MX2_CAMERA_PACK_DIR_MSB (1 << 8) | ||
33 | 35 | ||
34 | /** | 36 | /** |
35 | * struct mx2_camera_platform_data - optional platform data for mx2_camera | 37 | * struct mx2_camera_platform_data - optional platform data for mx2_camera |
diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c index 62ec5c452792..706b7e29397f 100644 --- a/arch/arm/plat-omap/clock.c +++ b/arch/arm/plat-omap/clock.c | |||
@@ -461,6 +461,7 @@ static int clk_dbg_show_summary(struct seq_file *s, void *unused) | |||
461 | struct clk *c; | 461 | struct clk *c; |
462 | struct clk *pa; | 462 | struct clk *pa; |
463 | 463 | ||
464 | mutex_lock(&clocks_mutex); | ||
464 | seq_printf(s, "%-30s %-30s %-10s %s\n", | 465 | seq_printf(s, "%-30s %-30s %-10s %s\n", |
465 | "clock-name", "parent-name", "rate", "use-count"); | 466 | "clock-name", "parent-name", "rate", "use-count"); |
466 | 467 | ||
@@ -469,6 +470,7 @@ static int clk_dbg_show_summary(struct seq_file *s, void *unused) | |||
469 | seq_printf(s, "%-30s %-30s %-10lu %d\n", | 470 | seq_printf(s, "%-30s %-30s %-10lu %d\n", |
470 | c->name, pa ? pa->name : "none", c->rate, c->usecount); | 471 | c->name, pa ? pa->name : "none", c->rate, c->usecount); |
471 | } | 472 | } |
473 | mutex_unlock(&clocks_mutex); | ||
472 | 474 | ||
473 | return 0; | 475 | return 0; |
474 | } | 476 | } |
diff --git a/arch/arm/plat-orion/common.c b/arch/arm/plat-orion/common.c index 61fd837624a8..c1793786aea9 100644 --- a/arch/arm/plat-orion/common.c +++ b/arch/arm/plat-orion/common.c | |||
@@ -582,7 +582,7 @@ void __init orion_spi_1_init(unsigned long mapbase) | |||
582 | * Watchdog | 582 | * Watchdog |
583 | ****************************************************************************/ | 583 | ****************************************************************************/ |
584 | static struct resource orion_wdt_resource = | 584 | static struct resource orion_wdt_resource = |
585 | DEFINE_RES_MEM(TIMER_VIRT_BASE, 0x28); | 585 | DEFINE_RES_MEM(TIMER_PHYS_BASE, 0x28); |
586 | 586 | ||
587 | static struct platform_device orion_wdt_device = { | 587 | static struct platform_device orion_wdt_device = { |
588 | .name = "orion_wdt", | 588 | .name = "orion_wdt", |
diff --git a/arch/arm/plat-pxa/ssp.c b/arch/arm/plat-pxa/ssp.c index 58b79809d20c..584c9bf8ed2d 100644 --- a/arch/arm/plat-pxa/ssp.c +++ b/arch/arm/plat-pxa/ssp.c | |||
@@ -193,6 +193,7 @@ static const struct platform_device_id ssp_id_table[] = { | |||
193 | { "pxa25x-nssp", PXA25x_NSSP }, | 193 | { "pxa25x-nssp", PXA25x_NSSP }, |
194 | { "pxa27x-ssp", PXA27x_SSP }, | 194 | { "pxa27x-ssp", PXA27x_SSP }, |
195 | { "pxa168-ssp", PXA168_SSP }, | 195 | { "pxa168-ssp", PXA168_SSP }, |
196 | { "pxa910-ssp", PXA910_SSP }, | ||
196 | { }, | 197 | { }, |
197 | }; | 198 | }; |
198 | 199 | ||
diff --git a/arch/arm/plat-samsung/include/plat/map-s3c.h b/arch/arm/plat-samsung/include/plat/map-s3c.h index 7d048759b772..c0c70a895ca8 100644 --- a/arch/arm/plat-samsung/include/plat/map-s3c.h +++ b/arch/arm/plat-samsung/include/plat/map-s3c.h | |||
@@ -22,7 +22,7 @@ | |||
22 | #define S3C24XX_VA_WATCHDOG S3C_VA_WATCHDOG | 22 | #define S3C24XX_VA_WATCHDOG S3C_VA_WATCHDOG |
23 | 23 | ||
24 | #define S3C2412_VA_SSMC S3C_ADDR_CPU(0x00000000) | 24 | #define S3C2412_VA_SSMC S3C_ADDR_CPU(0x00000000) |
25 | #define S3C2412_VA_EBI S3C_ADDR_CPU(0x00010000) | 25 | #define S3C2412_VA_EBI S3C_ADDR_CPU(0x00100000) |
26 | 26 | ||
27 | #define S3C2410_PA_UART (0x50000000) | 27 | #define S3C2410_PA_UART (0x50000000) |
28 | #define S3C24XX_PA_UART S3C2410_PA_UART | 28 | #define S3C24XX_PA_UART S3C2410_PA_UART |
diff --git a/arch/arm/plat-samsung/include/plat/watchdog-reset.h b/arch/arm/plat-samsung/include/plat/watchdog-reset.h index f19aff19205c..bc4db9b04e36 100644 --- a/arch/arm/plat-samsung/include/plat/watchdog-reset.h +++ b/arch/arm/plat-samsung/include/plat/watchdog-reset.h | |||
@@ -25,7 +25,7 @@ static inline void arch_wdt_reset(void) | |||
25 | 25 | ||
26 | __raw_writel(0, S3C2410_WTCON); /* disable watchdog, to be safe */ | 26 | __raw_writel(0, S3C2410_WTCON); /* disable watchdog, to be safe */ |
27 | 27 | ||
28 | if (s3c2410_wdtclk) | 28 | if (!IS_ERR(s3c2410_wdtclk)) |
29 | clk_enable(s3c2410_wdtclk); | 29 | clk_enable(s3c2410_wdtclk); |
30 | 30 | ||
31 | /* put initial values into count and data */ | 31 | /* put initial values into count and data */ |
diff --git a/arch/arm/plat-spear/include/plat/debug-macro.S b/arch/arm/plat-spear/include/plat/debug-macro.S index ab3de721c5db..75b05ad0fbad 100644 --- a/arch/arm/plat-spear/include/plat/debug-macro.S +++ b/arch/arm/plat-spear/include/plat/debug-macro.S | |||
@@ -4,7 +4,7 @@ | |||
4 | * Debugging macro include header for spear platform | 4 | * Debugging macro include header for spear platform |
5 | * | 5 | * |
6 | * Copyright (C) 2009 ST Microelectronics | 6 | * Copyright (C) 2009 ST Microelectronics |
7 | * Viresh Kumar<viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/plat-spear/include/plat/pl080.h b/arch/arm/plat-spear/include/plat/pl080.h index e14a3e4932f9..2bc6b54460a8 100644 --- a/arch/arm/plat-spear/include/plat/pl080.h +++ b/arch/arm/plat-spear/include/plat/pl080.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * DMAC pl080 definitions for SPEAr platform | 4 | * DMAC pl080 definitions for SPEAr platform |
5 | * | 5 | * |
6 | * Copyright (C) 2012 ST Microelectronics | 6 | * Copyright (C) 2012 ST Microelectronics |
7 | * Viresh Kumar <viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/plat-spear/include/plat/shirq.h b/arch/arm/plat-spear/include/plat/shirq.h index 03ed8b585dcf..88a7fbd24793 100644 --- a/arch/arm/plat-spear/include/plat/shirq.h +++ b/arch/arm/plat-spear/include/plat/shirq.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * SPEAr platform shared irq layer header file | 4 | * SPEAr platform shared irq layer header file |
5 | * | 5 | * |
6 | * Copyright (C) 2009 ST Microelectronics | 6 | * Copyright (C) 2009 ST Microelectronics |
7 | * Viresh Kumar<viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/plat-spear/include/plat/timex.h b/arch/arm/plat-spear/include/plat/timex.h index 914d09dd50fd..ef95e5b780bd 100644 --- a/arch/arm/plat-spear/include/plat/timex.h +++ b/arch/arm/plat-spear/include/plat/timex.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * SPEAr platform specific timex definitions | 4 | * SPEAr platform specific timex definitions |
5 | * | 5 | * |
6 | * Copyright (C) 2009 ST Microelectronics | 6 | * Copyright (C) 2009 ST Microelectronics |
7 | * Viresh Kumar<viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/plat-spear/include/plat/uncompress.h b/arch/arm/plat-spear/include/plat/uncompress.h index 6dd455bafdfd..2ce6cb17a98b 100644 --- a/arch/arm/plat-spear/include/plat/uncompress.h +++ b/arch/arm/plat-spear/include/plat/uncompress.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * Serial port stubs for kernel decompress status messages | 4 | * Serial port stubs for kernel decompress status messages |
5 | * | 5 | * |
6 | * Copyright (C) 2009 ST Microelectronics | 6 | * Copyright (C) 2009 ST Microelectronics |
7 | * Viresh Kumar<viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/plat-spear/pl080.c b/arch/arm/plat-spear/pl080.c index a56a067717c1..12cf27f935f9 100644 --- a/arch/arm/plat-spear/pl080.c +++ b/arch/arm/plat-spear/pl080.c | |||
@@ -4,7 +4,7 @@ | |||
4 | * DMAC pl080 definitions for SPEAr platform | 4 | * DMAC pl080 definitions for SPEAr platform |
5 | * | 5 | * |
6 | * Copyright (C) 2012 ST Microelectronics | 6 | * Copyright (C) 2012 ST Microelectronics |
7 | * Viresh Kumar <viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/plat-spear/restart.c b/arch/arm/plat-spear/restart.c index ea0a61302b7e..4f990115b1bd 100644 --- a/arch/arm/plat-spear/restart.c +++ b/arch/arm/plat-spear/restart.c | |||
@@ -4,7 +4,7 @@ | |||
4 | * SPEAr platform specific restart functions | 4 | * SPEAr platform specific restart functions |
5 | * | 5 | * |
6 | * Copyright (C) 2009 ST Microelectronics | 6 | * Copyright (C) 2009 ST Microelectronics |
7 | * Viresh Kumar<viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/arm/plat-spear/shirq.c b/arch/arm/plat-spear/shirq.c index 961fb7261243..853e891e1184 100644 --- a/arch/arm/plat-spear/shirq.c +++ b/arch/arm/plat-spear/shirq.c | |||
@@ -4,7 +4,7 @@ | |||
4 | * SPEAr platform shared irq layer source file | 4 | * SPEAr platform shared irq layer source file |
5 | * | 5 | * |
6 | * Copyright (C) 2009 ST Microelectronics | 6 | * Copyright (C) 2009 ST Microelectronics |
7 | * Viresh Kumar<viresh.kumar@st.com> | 7 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 8 | * |
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 10 | * License version 2. This program is licensed "as is" without any |
diff --git a/arch/h8300/kernel/setup.c b/arch/h8300/kernel/setup.c index 68d651081bd3..d0b1607f2711 100644 --- a/arch/h8300/kernel/setup.c +++ b/arch/h8300/kernel/setup.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <asm/setup.h> | 35 | #include <asm/setup.h> |
36 | #include <asm/irq.h> | 36 | #include <asm/irq.h> |
37 | #include <asm/pgtable.h> | 37 | #include <asm/pgtable.h> |
38 | #include <asm/sections.h> | ||
38 | 39 | ||
39 | #if defined(__H8300H__) | 40 | #if defined(__H8300H__) |
40 | #define CPU "H8/300H" | 41 | #define CPU "H8/300H" |
@@ -54,7 +55,6 @@ unsigned long memory_end; | |||
54 | 55 | ||
55 | char __initdata command_line[COMMAND_LINE_SIZE]; | 56 | char __initdata command_line[COMMAND_LINE_SIZE]; |
56 | 57 | ||
57 | extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end; | ||
58 | extern int _ramstart, _ramend; | 58 | extern int _ramstart, _ramend; |
59 | extern char _target_name[]; | 59 | extern char _target_name[]; |
60 | extern void h8300_gpio_init(void); | 60 | extern void h8300_gpio_init(void); |
@@ -119,9 +119,9 @@ void __init setup_arch(char **cmdline_p) | |||
119 | memory_end = CONFIG_BLKDEV_RESERVE_ADDRESS; | 119 | memory_end = CONFIG_BLKDEV_RESERVE_ADDRESS; |
120 | #endif | 120 | #endif |
121 | 121 | ||
122 | init_mm.start_code = (unsigned long) &_stext; | 122 | init_mm.start_code = (unsigned long) _stext; |
123 | init_mm.end_code = (unsigned long) &_etext; | 123 | init_mm.end_code = (unsigned long) _etext; |
124 | init_mm.end_data = (unsigned long) &_edata; | 124 | init_mm.end_data = (unsigned long) _edata; |
125 | init_mm.brk = (unsigned long) 0; | 125 | init_mm.brk = (unsigned long) 0; |
126 | 126 | ||
127 | #if (defined(CONFIG_H8300H_SIM) || defined(CONFIG_H8S_SIM)) && defined(CONFIG_GDB_MAGICPRINT) | 127 | #if (defined(CONFIG_H8300H_SIM) || defined(CONFIG_H8S_SIM)) && defined(CONFIG_GDB_MAGICPRINT) |
@@ -134,15 +134,12 @@ void __init setup_arch(char **cmdline_p) | |||
134 | printk(KERN_INFO "H8/300 series support by Yoshinori Sato <ysato@users.sourceforge.jp>\n"); | 134 | printk(KERN_INFO "H8/300 series support by Yoshinori Sato <ysato@users.sourceforge.jp>\n"); |
135 | 135 | ||
136 | #ifdef DEBUG | 136 | #ifdef DEBUG |
137 | printk(KERN_DEBUG "KERNEL -> TEXT=0x%06x-0x%06x DATA=0x%06x-0x%06x " | 137 | printk(KERN_DEBUG "KERNEL -> TEXT=0x%p-0x%p DATA=0x%p-0x%p " |
138 | "BSS=0x%06x-0x%06x\n", (int) &_stext, (int) &_etext, | 138 | "BSS=0x%p-0x%p\n", _stext, _etext, _sdata, _edata, __bss_start, |
139 | (int) &_sdata, (int) &_edata, | 139 | __bss_stop); |
140 | (int) &_sbss, (int) &_ebss); | 140 | printk(KERN_DEBUG "KERNEL -> ROMFS=0x%p-0x%06lx MEM=0x%06lx-0x%06lx " |
141 | printk(KERN_DEBUG "KERNEL -> ROMFS=0x%06x-0x%06x MEM=0x%06x-0x%06x " | 141 | "STACK=0x%06lx-0x%p\n", __bss_stop, memory_start, memory_start, |
142 | "STACK=0x%06x-0x%06x\n", | 142 | memory_end, memory_end, &_ramend); |
143 | (int) &_ebss, (int) memory_start, | ||
144 | (int) memory_start, (int) memory_end, | ||
145 | (int) memory_end, (int) &_ramend); | ||
146 | #endif | 143 | #endif |
147 | 144 | ||
148 | #ifdef CONFIG_DEFAULT_CMDLINE | 145 | #ifdef CONFIG_DEFAULT_CMDLINE |
diff --git a/arch/h8300/mm/init.c b/arch/h8300/mm/init.c index 973369c32a95..981e25094b1a 100644 --- a/arch/h8300/mm/init.c +++ b/arch/h8300/mm/init.c | |||
@@ -36,6 +36,7 @@ | |||
36 | #include <asm/segment.h> | 36 | #include <asm/segment.h> |
37 | #include <asm/page.h> | 37 | #include <asm/page.h> |
38 | #include <asm/pgtable.h> | 38 | #include <asm/pgtable.h> |
39 | #include <asm/sections.h> | ||
39 | 40 | ||
40 | #undef DEBUG | 41 | #undef DEBUG |
41 | 42 | ||
@@ -123,7 +124,6 @@ void __init mem_init(void) | |||
123 | int codek = 0, datak = 0, initk = 0; | 124 | int codek = 0, datak = 0, initk = 0; |
124 | /* DAVIDM look at setup memory map generically with reserved area */ | 125 | /* DAVIDM look at setup memory map generically with reserved area */ |
125 | unsigned long tmp; | 126 | unsigned long tmp; |
126 | extern char _etext, _stext, _sdata, _ebss, __init_begin, __init_end; | ||
127 | extern unsigned long _ramend, _ramstart; | 127 | extern unsigned long _ramend, _ramstart; |
128 | unsigned long len = &_ramend - &_ramstart; | 128 | unsigned long len = &_ramend - &_ramstart; |
129 | unsigned long start_mem = memory_start; /* DAVIDM - these must start at end of kernel */ | 129 | unsigned long start_mem = memory_start; /* DAVIDM - these must start at end of kernel */ |
@@ -142,9 +142,9 @@ void __init mem_init(void) | |||
142 | /* this will put all memory onto the freelists */ | 142 | /* this will put all memory onto the freelists */ |
143 | totalram_pages = free_all_bootmem(); | 143 | totalram_pages = free_all_bootmem(); |
144 | 144 | ||
145 | codek = (&_etext - &_stext) >> 10; | 145 | codek = (_etext - _stext) >> 10; |
146 | datak = (&_ebss - &_sdata) >> 10; | 146 | datak = (__bss_stop - _sdata) >> 10; |
147 | initk = (&__init_begin - &__init_end) >> 10; | 147 | initk = (__init_begin - __init_end) >> 10; |
148 | 148 | ||
149 | tmp = nr_free_pages() << PAGE_SHIFT; | 149 | tmp = nr_free_pages() << PAGE_SHIFT; |
150 | printk(KERN_INFO "Memory available: %luk/%luk RAM, %luk/%luk ROM (%dk kernel code, %dk data)\n", | 150 | printk(KERN_INFO "Memory available: %luk/%luk RAM, %luk/%luk ROM (%dk kernel code, %dk data)\n", |
@@ -178,22 +178,21 @@ free_initmem(void) | |||
178 | { | 178 | { |
179 | #ifdef CONFIG_RAMKERNEL | 179 | #ifdef CONFIG_RAMKERNEL |
180 | unsigned long addr; | 180 | unsigned long addr; |
181 | extern char __init_begin, __init_end; | ||
182 | /* | 181 | /* |
183 | * the following code should be cool even if these sections | 182 | * the following code should be cool even if these sections |
184 | * are not page aligned. | 183 | * are not page aligned. |
185 | */ | 184 | */ |
186 | addr = PAGE_ALIGN((unsigned long)(&__init_begin)); | 185 | addr = PAGE_ALIGN((unsigned long)(__init_begin)); |
187 | /* next to check that the page we free is not a partial page */ | 186 | /* next to check that the page we free is not a partial page */ |
188 | for (; addr + PAGE_SIZE < (unsigned long)(&__init_end); addr +=PAGE_SIZE) { | 187 | for (; addr + PAGE_SIZE < (unsigned long)__init_end; addr +=PAGE_SIZE) { |
189 | ClearPageReserved(virt_to_page(addr)); | 188 | ClearPageReserved(virt_to_page(addr)); |
190 | init_page_count(virt_to_page(addr)); | 189 | init_page_count(virt_to_page(addr)); |
191 | free_page(addr); | 190 | free_page(addr); |
192 | totalram_pages++; | 191 | totalram_pages++; |
193 | } | 192 | } |
194 | printk(KERN_INFO "Freeing unused kernel memory: %ldk freed (0x%x - 0x%x)\n", | 193 | printk(KERN_INFO "Freeing unused kernel memory: %ldk freed (0x%x - 0x%x)\n", |
195 | (addr - PAGE_ALIGN((long) &__init_begin)) >> 10, | 194 | (addr - PAGE_ALIGN((long) __init_begin)) >> 10, |
196 | (int)(PAGE_ALIGN((unsigned long)(&__init_begin))), | 195 | (int)(PAGE_ALIGN((unsigned long)__init_begin)), |
197 | (int)(addr - PAGE_SIZE)); | 196 | (int)(addr - PAGE_SIZE)); |
198 | #endif | 197 | #endif |
199 | } | 198 | } |
diff --git a/arch/m68k/platform/coldfire/clk.c b/arch/m68k/platform/coldfire/clk.c index 9f1260c5e2ad..44da406897e5 100644 --- a/arch/m68k/platform/coldfire/clk.c +++ b/arch/m68k/platform/coldfire/clk.c | |||
@@ -42,4 +42,11 @@ unsigned long clk_get_rate(struct clk *clk) | |||
42 | return MCF_CLK; | 42 | return MCF_CLK; |
43 | } | 43 | } |
44 | EXPORT_SYMBOL(clk_get_rate); | 44 | EXPORT_SYMBOL(clk_get_rate); |
45 | |||
46 | struct clk *devm_clk_get(struct device *dev, const char *id) | ||
47 | { | ||
48 | return NULL; | ||
49 | } | ||
50 | EXPORT_SYMBOL(devm_clk_get); | ||
51 | |||
45 | /***************************************************************************/ | 52 | /***************************************************************************/ |
diff --git a/arch/powerpc/include/asm/hw_irq.h b/arch/powerpc/include/asm/hw_irq.h index 32b394f3b854..6eb75b80488c 100644 --- a/arch/powerpc/include/asm/hw_irq.h +++ b/arch/powerpc/include/asm/hw_irq.h | |||
@@ -103,6 +103,11 @@ static inline void hard_irq_disable(void) | |||
103 | /* include/linux/interrupt.h needs hard_irq_disable to be a macro */ | 103 | /* include/linux/interrupt.h needs hard_irq_disable to be a macro */ |
104 | #define hard_irq_disable hard_irq_disable | 104 | #define hard_irq_disable hard_irq_disable |
105 | 105 | ||
106 | static inline bool lazy_irq_pending(void) | ||
107 | { | ||
108 | return !!(get_paca()->irq_happened & ~PACA_IRQ_HARD_DIS); | ||
109 | } | ||
110 | |||
106 | /* | 111 | /* |
107 | * This is called by asynchronous interrupts to conditionally | 112 | * This is called by asynchronous interrupts to conditionally |
108 | * re-enable hard interrupts when soft-disabled after having | 113 | * re-enable hard interrupts when soft-disabled after having |
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S index ed1718feb9d9..5971c85df136 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S | |||
@@ -558,27 +558,54 @@ _GLOBAL(ret_from_except_lite) | |||
558 | mtmsrd r10,1 /* Update machine state */ | 558 | mtmsrd r10,1 /* Update machine state */ |
559 | #endif /* CONFIG_PPC_BOOK3E */ | 559 | #endif /* CONFIG_PPC_BOOK3E */ |
560 | 560 | ||
561 | #ifdef CONFIG_PREEMPT | ||
562 | clrrdi r9,r1,THREAD_SHIFT /* current_thread_info() */ | 561 | clrrdi r9,r1,THREAD_SHIFT /* current_thread_info() */ |
563 | li r0,_TIF_NEED_RESCHED /* bits to check */ | ||
564 | ld r3,_MSR(r1) | 562 | ld r3,_MSR(r1) |
565 | ld r4,TI_FLAGS(r9) | 563 | ld r4,TI_FLAGS(r9) |
566 | /* Move MSR_PR bit in r3 to _TIF_SIGPENDING position in r0 */ | ||
567 | rlwimi r0,r3,32+TIF_SIGPENDING-MSR_PR_LG,_TIF_SIGPENDING | ||
568 | and. r0,r4,r0 /* check NEED_RESCHED and maybe SIGPENDING */ | ||
569 | bne do_work | ||
570 | |||
571 | #else /* !CONFIG_PREEMPT */ | ||
572 | ld r3,_MSR(r1) /* Returning to user mode? */ | ||
573 | andi. r3,r3,MSR_PR | 564 | andi. r3,r3,MSR_PR |
574 | beq restore /* if not, just restore regs and return */ | 565 | beq resume_kernel |
575 | 566 | ||
576 | /* Check current_thread_info()->flags */ | 567 | /* Check current_thread_info()->flags */ |
568 | andi. r0,r4,_TIF_USER_WORK_MASK | ||
569 | beq restore | ||
570 | |||
571 | andi. r0,r4,_TIF_NEED_RESCHED | ||
572 | beq 1f | ||
573 | bl .restore_interrupts | ||
574 | bl .schedule | ||
575 | b .ret_from_except_lite | ||
576 | |||
577 | 1: bl .save_nvgprs | ||
578 | bl .restore_interrupts | ||
579 | addi r3,r1,STACK_FRAME_OVERHEAD | ||
580 | bl .do_notify_resume | ||
581 | b .ret_from_except | ||
582 | |||
583 | resume_kernel: | ||
584 | #ifdef CONFIG_PREEMPT | ||
585 | /* Check if we need to preempt */ | ||
586 | andi. r0,r4,_TIF_NEED_RESCHED | ||
587 | beq+ restore | ||
588 | /* Check that preempt_count() == 0 and interrupts are enabled */ | ||
589 | lwz r8,TI_PREEMPT(r9) | ||
590 | cmpwi cr1,r8,0 | ||
591 | ld r0,SOFTE(r1) | ||
592 | cmpdi r0,0 | ||
593 | crandc eq,cr1*4+eq,eq | ||
594 | bne restore | ||
595 | |||
596 | /* | ||
597 | * Here we are preempting the current task. We want to make | ||
598 | * sure we are soft-disabled first | ||
599 | */ | ||
600 | SOFT_DISABLE_INTS(r3,r4) | ||
601 | 1: bl .preempt_schedule_irq | ||
602 | |||
603 | /* Re-test flags and eventually loop */ | ||
577 | clrrdi r9,r1,THREAD_SHIFT | 604 | clrrdi r9,r1,THREAD_SHIFT |
578 | ld r4,TI_FLAGS(r9) | 605 | ld r4,TI_FLAGS(r9) |
579 | andi. r0,r4,_TIF_USER_WORK_MASK | 606 | andi. r0,r4,_TIF_NEED_RESCHED |
580 | bne do_work | 607 | bne 1b |
581 | #endif /* !CONFIG_PREEMPT */ | 608 | #endif /* CONFIG_PREEMPT */ |
582 | 609 | ||
583 | .globl fast_exc_return_irq | 610 | .globl fast_exc_return_irq |
584 | fast_exc_return_irq: | 611 | fast_exc_return_irq: |
@@ -759,50 +786,6 @@ restore_check_irq_replay: | |||
759 | #endif /* CONFIG_PPC_BOOK3E */ | 786 | #endif /* CONFIG_PPC_BOOK3E */ |
760 | 1: b .ret_from_except /* What else to do here ? */ | 787 | 1: b .ret_from_except /* What else to do here ? */ |
761 | 788 | ||
762 | |||
763 | |||
764 | 3: | ||
765 | do_work: | ||
766 | #ifdef CONFIG_PREEMPT | ||
767 | andi. r0,r3,MSR_PR /* Returning to user mode? */ | ||
768 | bne user_work | ||
769 | /* Check that preempt_count() == 0 and interrupts are enabled */ | ||
770 | lwz r8,TI_PREEMPT(r9) | ||
771 | cmpwi cr1,r8,0 | ||
772 | ld r0,SOFTE(r1) | ||
773 | cmpdi r0,0 | ||
774 | crandc eq,cr1*4+eq,eq | ||
775 | bne restore | ||
776 | |||
777 | /* | ||
778 | * Here we are preempting the current task. We want to make | ||
779 | * sure we are soft-disabled first | ||
780 | */ | ||
781 | SOFT_DISABLE_INTS(r3,r4) | ||
782 | 1: bl .preempt_schedule_irq | ||
783 | |||
784 | /* Re-test flags and eventually loop */ | ||
785 | clrrdi r9,r1,THREAD_SHIFT | ||
786 | ld r4,TI_FLAGS(r9) | ||
787 | andi. r0,r4,_TIF_NEED_RESCHED | ||
788 | bne 1b | ||
789 | b restore | ||
790 | |||
791 | user_work: | ||
792 | #endif /* CONFIG_PREEMPT */ | ||
793 | |||
794 | andi. r0,r4,_TIF_NEED_RESCHED | ||
795 | beq 1f | ||
796 | bl .restore_interrupts | ||
797 | bl .schedule | ||
798 | b .ret_from_except_lite | ||
799 | |||
800 | 1: bl .save_nvgprs | ||
801 | bl .restore_interrupts | ||
802 | addi r3,r1,STACK_FRAME_OVERHEAD | ||
803 | bl .do_notify_resume | ||
804 | b .ret_from_except | ||
805 | |||
806 | unrecov_restore: | 789 | unrecov_restore: |
807 | addi r3,r1,STACK_FRAME_OVERHEAD | 790 | addi r3,r1,STACK_FRAME_OVERHEAD |
808 | bl .unrecoverable_exception | 791 | bl .unrecoverable_exception |
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c index 7835a5e1ea5f..1b415027ec0e 100644 --- a/arch/powerpc/kernel/irq.c +++ b/arch/powerpc/kernel/irq.c | |||
@@ -277,7 +277,7 @@ EXPORT_SYMBOL(arch_local_irq_restore); | |||
277 | * NOTE: This is called with interrupts hard disabled but not marked | 277 | * NOTE: This is called with interrupts hard disabled but not marked |
278 | * as such in paca->irq_happened, so we need to resync this. | 278 | * as such in paca->irq_happened, so we need to resync this. |
279 | */ | 279 | */ |
280 | void restore_interrupts(void) | 280 | void notrace restore_interrupts(void) |
281 | { | 281 | { |
282 | if (irqs_disabled()) { | 282 | if (irqs_disabled()) { |
283 | local_paca->irq_happened |= PACA_IRQ_HARD_DIS; | 283 | local_paca->irq_happened |= PACA_IRQ_HARD_DIS; |
diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c index 1b488e5305c5..0794a3017b1b 100644 --- a/arch/powerpc/kernel/prom_init.c +++ b/arch/powerpc/kernel/prom_init.c | |||
@@ -1312,7 +1312,7 @@ static struct opal_secondary_data { | |||
1312 | 1312 | ||
1313 | extern char opal_secondary_entry; | 1313 | extern char opal_secondary_entry; |
1314 | 1314 | ||
1315 | static void prom_query_opal(void) | 1315 | static void __init prom_query_opal(void) |
1316 | { | 1316 | { |
1317 | long rc; | 1317 | long rc; |
1318 | 1318 | ||
@@ -1436,7 +1436,7 @@ static void __init prom_opal_hold_cpus(void) | |||
1436 | prom_debug("prom_opal_hold_cpus: end...\n"); | 1436 | prom_debug("prom_opal_hold_cpus: end...\n"); |
1437 | } | 1437 | } |
1438 | 1438 | ||
1439 | static void prom_opal_takeover(void) | 1439 | static void __init prom_opal_takeover(void) |
1440 | { | 1440 | { |
1441 | struct opal_secondary_data *data = &RELOC(opal_secondary_data); | 1441 | struct opal_secondary_data *data = &RELOC(opal_secondary_data); |
1442 | struct opal_takeover_args *args = &data->args; | 1442 | struct opal_takeover_args *args = &data->args; |
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c index c6af1d623839..3abe1b86e583 100644 --- a/arch/powerpc/kvm/book3s_hv.c +++ b/arch/powerpc/kvm/book3s_hv.c | |||
@@ -268,24 +268,45 @@ static unsigned long do_h_register_vpa(struct kvm_vcpu *vcpu, | |||
268 | return err; | 268 | return err; |
269 | } | 269 | } |
270 | 270 | ||
271 | static void kvmppc_update_vpa(struct kvm *kvm, struct kvmppc_vpa *vpap) | 271 | static void kvmppc_update_vpa(struct kvm_vcpu *vcpu, struct kvmppc_vpa *vpap) |
272 | { | 272 | { |
273 | struct kvm *kvm = vcpu->kvm; | ||
273 | void *va; | 274 | void *va; |
274 | unsigned long nb; | 275 | unsigned long nb; |
276 | unsigned long gpa; | ||
275 | 277 | ||
276 | vpap->update_pending = 0; | 278 | /* |
277 | va = NULL; | 279 | * We need to pin the page pointed to by vpap->next_gpa, |
278 | if (vpap->next_gpa) { | 280 | * but we can't call kvmppc_pin_guest_page under the lock |
279 | va = kvmppc_pin_guest_page(kvm, vpap->next_gpa, &nb); | 281 | * as it does get_user_pages() and down_read(). So we |
280 | if (nb < vpap->len) { | 282 | * have to drop the lock, pin the page, then get the lock |
281 | /* | 283 | * again and check that a new area didn't get registered |
282 | * If it's now too short, it must be that userspace | 284 | * in the meantime. |
283 | * has changed the mappings underlying guest memory, | 285 | */ |
284 | * so unregister the region. | 286 | for (;;) { |
285 | */ | 287 | gpa = vpap->next_gpa; |
288 | spin_unlock(&vcpu->arch.vpa_update_lock); | ||
289 | va = NULL; | ||
290 | nb = 0; | ||
291 | if (gpa) | ||
292 | va = kvmppc_pin_guest_page(kvm, vpap->next_gpa, &nb); | ||
293 | spin_lock(&vcpu->arch.vpa_update_lock); | ||
294 | if (gpa == vpap->next_gpa) | ||
295 | break; | ||
296 | /* sigh... unpin that one and try again */ | ||
297 | if (va) | ||
286 | kvmppc_unpin_guest_page(kvm, va); | 298 | kvmppc_unpin_guest_page(kvm, va); |
287 | va = NULL; | 299 | } |
288 | } | 300 | |
301 | vpap->update_pending = 0; | ||
302 | if (va && nb < vpap->len) { | ||
303 | /* | ||
304 | * If it's now too short, it must be that userspace | ||
305 | * has changed the mappings underlying guest memory, | ||
306 | * so unregister the region. | ||
307 | */ | ||
308 | kvmppc_unpin_guest_page(kvm, va); | ||
309 | va = NULL; | ||
289 | } | 310 | } |
290 | if (vpap->pinned_addr) | 311 | if (vpap->pinned_addr) |
291 | kvmppc_unpin_guest_page(kvm, vpap->pinned_addr); | 312 | kvmppc_unpin_guest_page(kvm, vpap->pinned_addr); |
@@ -296,20 +317,18 @@ static void kvmppc_update_vpa(struct kvm *kvm, struct kvmppc_vpa *vpap) | |||
296 | 317 | ||
297 | static void kvmppc_update_vpas(struct kvm_vcpu *vcpu) | 318 | static void kvmppc_update_vpas(struct kvm_vcpu *vcpu) |
298 | { | 319 | { |
299 | struct kvm *kvm = vcpu->kvm; | ||
300 | |||
301 | spin_lock(&vcpu->arch.vpa_update_lock); | 320 | spin_lock(&vcpu->arch.vpa_update_lock); |
302 | if (vcpu->arch.vpa.update_pending) { | 321 | if (vcpu->arch.vpa.update_pending) { |
303 | kvmppc_update_vpa(kvm, &vcpu->arch.vpa); | 322 | kvmppc_update_vpa(vcpu, &vcpu->arch.vpa); |
304 | init_vpa(vcpu, vcpu->arch.vpa.pinned_addr); | 323 | init_vpa(vcpu, vcpu->arch.vpa.pinned_addr); |
305 | } | 324 | } |
306 | if (vcpu->arch.dtl.update_pending) { | 325 | if (vcpu->arch.dtl.update_pending) { |
307 | kvmppc_update_vpa(kvm, &vcpu->arch.dtl); | 326 | kvmppc_update_vpa(vcpu, &vcpu->arch.dtl); |
308 | vcpu->arch.dtl_ptr = vcpu->arch.dtl.pinned_addr; | 327 | vcpu->arch.dtl_ptr = vcpu->arch.dtl.pinned_addr; |
309 | vcpu->arch.dtl_index = 0; | 328 | vcpu->arch.dtl_index = 0; |
310 | } | 329 | } |
311 | if (vcpu->arch.slb_shadow.update_pending) | 330 | if (vcpu->arch.slb_shadow.update_pending) |
312 | kvmppc_update_vpa(kvm, &vcpu->arch.slb_shadow); | 331 | kvmppc_update_vpa(vcpu, &vcpu->arch.slb_shadow); |
313 | spin_unlock(&vcpu->arch.vpa_update_lock); | 332 | spin_unlock(&vcpu->arch.vpa_update_lock); |
314 | } | 333 | } |
315 | 334 | ||
@@ -800,12 +819,39 @@ static int kvmppc_run_core(struct kvmppc_vcore *vc) | |||
800 | struct kvm_vcpu *vcpu, *vcpu0, *vnext; | 819 | struct kvm_vcpu *vcpu, *vcpu0, *vnext; |
801 | long ret; | 820 | long ret; |
802 | u64 now; | 821 | u64 now; |
803 | int ptid, i; | 822 | int ptid, i, need_vpa_update; |
804 | 823 | ||
805 | /* don't start if any threads have a signal pending */ | 824 | /* don't start if any threads have a signal pending */ |
806 | list_for_each_entry(vcpu, &vc->runnable_threads, arch.run_list) | 825 | need_vpa_update = 0; |
826 | list_for_each_entry(vcpu, &vc->runnable_threads, arch.run_list) { | ||
807 | if (signal_pending(vcpu->arch.run_task)) | 827 | if (signal_pending(vcpu->arch.run_task)) |
808 | return 0; | 828 | return 0; |
829 | need_vpa_update |= vcpu->arch.vpa.update_pending | | ||
830 | vcpu->arch.slb_shadow.update_pending | | ||
831 | vcpu->arch.dtl.update_pending; | ||
832 | } | ||
833 | |||
834 | /* | ||
835 | * Initialize *vc, in particular vc->vcore_state, so we can | ||
836 | * drop the vcore lock if necessary. | ||
837 | */ | ||
838 | vc->n_woken = 0; | ||
839 | vc->nap_count = 0; | ||
840 | vc->entry_exit_count = 0; | ||
841 | vc->vcore_state = VCORE_RUNNING; | ||
842 | vc->in_guest = 0; | ||
843 | vc->napping_threads = 0; | ||
844 | |||
845 | /* | ||
846 | * Updating any of the vpas requires calling kvmppc_pin_guest_page, | ||
847 | * which can't be called with any spinlocks held. | ||
848 | */ | ||
849 | if (need_vpa_update) { | ||
850 | spin_unlock(&vc->lock); | ||
851 | list_for_each_entry(vcpu, &vc->runnable_threads, arch.run_list) | ||
852 | kvmppc_update_vpas(vcpu); | ||
853 | spin_lock(&vc->lock); | ||
854 | } | ||
809 | 855 | ||
810 | /* | 856 | /* |
811 | * Make sure we are running on thread 0, and that | 857 | * Make sure we are running on thread 0, and that |
@@ -838,20 +884,10 @@ static int kvmppc_run_core(struct kvmppc_vcore *vc) | |||
838 | if (vcpu->arch.ceded) | 884 | if (vcpu->arch.ceded) |
839 | vcpu->arch.ptid = ptid++; | 885 | vcpu->arch.ptid = ptid++; |
840 | 886 | ||
841 | vc->n_woken = 0; | ||
842 | vc->nap_count = 0; | ||
843 | vc->entry_exit_count = 0; | ||
844 | vc->vcore_state = VCORE_RUNNING; | ||
845 | vc->stolen_tb += mftb() - vc->preempt_tb; | 887 | vc->stolen_tb += mftb() - vc->preempt_tb; |
846 | vc->in_guest = 0; | ||
847 | vc->pcpu = smp_processor_id(); | 888 | vc->pcpu = smp_processor_id(); |
848 | vc->napping_threads = 0; | ||
849 | list_for_each_entry(vcpu, &vc->runnable_threads, arch.run_list) { | 889 | list_for_each_entry(vcpu, &vc->runnable_threads, arch.run_list) { |
850 | kvmppc_start_thread(vcpu); | 890 | kvmppc_start_thread(vcpu); |
851 | if (vcpu->arch.vpa.update_pending || | ||
852 | vcpu->arch.slb_shadow.update_pending || | ||
853 | vcpu->arch.dtl.update_pending) | ||
854 | kvmppc_update_vpas(vcpu); | ||
855 | kvmppc_create_dtl_entry(vcpu, vc); | 891 | kvmppc_create_dtl_entry(vcpu, vc); |
856 | } | 892 | } |
857 | /* Grab any remaining hw threads so they can't go into the kernel */ | 893 | /* Grab any remaining hw threads so they can't go into the kernel */ |
diff --git a/arch/powerpc/kvm/book3s_hv_rmhandlers.S b/arch/powerpc/kvm/book3s_hv_rmhandlers.S index a84aafce2a12..a1044f43becd 100644 --- a/arch/powerpc/kvm/book3s_hv_rmhandlers.S +++ b/arch/powerpc/kvm/book3s_hv_rmhandlers.S | |||
@@ -810,7 +810,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_201) | |||
810 | lwz r3,VCORE_NAPPING_THREADS(r5) | 810 | lwz r3,VCORE_NAPPING_THREADS(r5) |
811 | lwz r4,VCPU_PTID(r9) | 811 | lwz r4,VCPU_PTID(r9) |
812 | li r0,1 | 812 | li r0,1 |
813 | sldi r0,r0,r4 | 813 | sld r0,r0,r4 |
814 | andc. r3,r3,r0 /* no sense IPI'ing ourselves */ | 814 | andc. r3,r3,r0 /* no sense IPI'ing ourselves */ |
815 | beq 43f | 815 | beq 43f |
816 | mulli r4,r4,PACA_SIZE /* get paca for thread 0 */ | 816 | mulli r4,r4,PACA_SIZE /* get paca for thread 0 */ |
diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c index b6edbb3b4a54..6e8f677f5646 100644 --- a/arch/powerpc/mm/numa.c +++ b/arch/powerpc/mm/numa.c | |||
@@ -635,7 +635,7 @@ static inline int __init read_usm_ranges(const u32 **usm) | |||
635 | */ | 635 | */ |
636 | static void __init parse_drconf_memory(struct device_node *memory) | 636 | static void __init parse_drconf_memory(struct device_node *memory) |
637 | { | 637 | { |
638 | const u32 *dm, *usm; | 638 | const u32 *uninitialized_var(dm), *usm; |
639 | unsigned int n, rc, ranges, is_kexec_kdump = 0; | 639 | unsigned int n, rc, ranges, is_kexec_kdump = 0; |
640 | unsigned long lmb_size, base, size, sz; | 640 | unsigned long lmb_size, base, size, sz; |
641 | int nid; | 641 | int nid; |
diff --git a/arch/powerpc/net/bpf_jit_64.S b/arch/powerpc/net/bpf_jit_64.S index 55ba3855a97f..7d3a3b5619a2 100644 --- a/arch/powerpc/net/bpf_jit_64.S +++ b/arch/powerpc/net/bpf_jit_64.S | |||
@@ -105,6 +105,7 @@ sk_load_byte_msh_positive_offset: | |||
105 | mr r4, r_addr; \ | 105 | mr r4, r_addr; \ |
106 | li r6, SIZE; \ | 106 | li r6, SIZE; \ |
107 | bl skb_copy_bits; \ | 107 | bl skb_copy_bits; \ |
108 | nop; \ | ||
108 | /* R3 = 0 on success */ \ | 109 | /* R3 = 0 on success */ \ |
109 | addi r1, r1, BPF_PPC_SLOWPATH_FRAME; \ | 110 | addi r1, r1, BPF_PPC_SLOWPATH_FRAME; \ |
110 | ld r0, 16(r1); \ | 111 | ld r0, 16(r1); \ |
@@ -156,6 +157,7 @@ bpf_slow_path_byte_msh: | |||
156 | mr r4, r_addr; \ | 157 | mr r4, r_addr; \ |
157 | li r5, SIZE; \ | 158 | li r5, SIZE; \ |
158 | bl bpf_internal_load_pointer_neg_helper; \ | 159 | bl bpf_internal_load_pointer_neg_helper; \ |
160 | nop; \ | ||
159 | /* R3 != 0 on success */ \ | 161 | /* R3 != 0 on success */ \ |
160 | addi r1, r1, BPF_PPC_SLOWPATH_FRAME; \ | 162 | addi r1, r1, BPF_PPC_SLOWPATH_FRAME; \ |
161 | ld r0, 16(r1); \ | 163 | ld r0, 16(r1); \ |
diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c index 0915b1ad66ce..2d311c0caf8e 100644 --- a/arch/powerpc/platforms/pseries/iommu.c +++ b/arch/powerpc/platforms/pseries/iommu.c | |||
@@ -106,7 +106,7 @@ static int tce_build_pSeries(struct iommu_table *tbl, long index, | |||
106 | tcep++; | 106 | tcep++; |
107 | } | 107 | } |
108 | 108 | ||
109 | if (tbl->it_type == TCE_PCI_SWINV_CREATE) | 109 | if (tbl->it_type & TCE_PCI_SWINV_CREATE) |
110 | tce_invalidate_pSeries_sw(tbl, tces, tcep - 1); | 110 | tce_invalidate_pSeries_sw(tbl, tces, tcep - 1); |
111 | return 0; | 111 | return 0; |
112 | } | 112 | } |
@@ -121,7 +121,7 @@ static void tce_free_pSeries(struct iommu_table *tbl, long index, long npages) | |||
121 | while (npages--) | 121 | while (npages--) |
122 | *(tcep++) = 0; | 122 | *(tcep++) = 0; |
123 | 123 | ||
124 | if (tbl->it_type == TCE_PCI_SWINV_FREE) | 124 | if (tbl->it_type & TCE_PCI_SWINV_FREE) |
125 | tce_invalidate_pSeries_sw(tbl, tces, tcep - 1); | 125 | tce_invalidate_pSeries_sw(tbl, tces, tcep - 1); |
126 | } | 126 | } |
127 | 127 | ||
diff --git a/arch/powerpc/platforms/pseries/nvram.c b/arch/powerpc/platforms/pseries/nvram.c index 36f957f31842..8733a86ad52e 100644 --- a/arch/powerpc/platforms/pseries/nvram.c +++ b/arch/powerpc/platforms/pseries/nvram.c | |||
@@ -68,9 +68,7 @@ static const char *pseries_nvram_os_partitions[] = { | |||
68 | }; | 68 | }; |
69 | 69 | ||
70 | static void oops_to_nvram(struct kmsg_dumper *dumper, | 70 | static void oops_to_nvram(struct kmsg_dumper *dumper, |
71 | enum kmsg_dump_reason reason, | 71 | enum kmsg_dump_reason reason); |
72 | const char *old_msgs, unsigned long old_len, | ||
73 | const char *new_msgs, unsigned long new_len); | ||
74 | 72 | ||
75 | static struct kmsg_dumper nvram_kmsg_dumper = { | 73 | static struct kmsg_dumper nvram_kmsg_dumper = { |
76 | .dump = oops_to_nvram | 74 | .dump = oops_to_nvram |
@@ -504,28 +502,6 @@ int __init pSeries_nvram_init(void) | |||
504 | } | 502 | } |
505 | 503 | ||
506 | /* | 504 | /* |
507 | * Try to capture the last capture_len bytes of the printk buffer. Return | ||
508 | * the amount actually captured. | ||
509 | */ | ||
510 | static size_t capture_last_msgs(const char *old_msgs, size_t old_len, | ||
511 | const char *new_msgs, size_t new_len, | ||
512 | char *captured, size_t capture_len) | ||
513 | { | ||
514 | if (new_len >= capture_len) { | ||
515 | memcpy(captured, new_msgs + (new_len - capture_len), | ||
516 | capture_len); | ||
517 | return capture_len; | ||
518 | } else { | ||
519 | /* Grab the end of old_msgs. */ | ||
520 | size_t old_tail_len = min(old_len, capture_len - new_len); | ||
521 | memcpy(captured, old_msgs + (old_len - old_tail_len), | ||
522 | old_tail_len); | ||
523 | memcpy(captured + old_tail_len, new_msgs, new_len); | ||
524 | return old_tail_len + new_len; | ||
525 | } | ||
526 | } | ||
527 | |||
528 | /* | ||
529 | * Are we using the ibm,rtas-log for oops/panic reports? And if so, | 505 | * Are we using the ibm,rtas-log for oops/panic reports? And if so, |
530 | * would logging this oops/panic overwrite an RTAS event that rtas_errd | 506 | * would logging this oops/panic overwrite an RTAS event that rtas_errd |
531 | * hasn't had a chance to read and process? Return 1 if so, else 0. | 507 | * hasn't had a chance to read and process? Return 1 if so, else 0. |
@@ -541,27 +517,6 @@ static int clobbering_unread_rtas_event(void) | |||
541 | NVRAM_RTAS_READ_TIMEOUT); | 517 | NVRAM_RTAS_READ_TIMEOUT); |
542 | } | 518 | } |
543 | 519 | ||
544 | /* Squeeze out each line's <n> severity prefix. */ | ||
545 | static size_t elide_severities(char *buf, size_t len) | ||
546 | { | ||
547 | char *in, *out, *buf_end = buf + len; | ||
548 | /* Assume a <n> at the very beginning marks the start of a line. */ | ||
549 | int newline = 1; | ||
550 | |||
551 | in = out = buf; | ||
552 | while (in < buf_end) { | ||
553 | if (newline && in+3 <= buf_end && | ||
554 | *in == '<' && isdigit(in[1]) && in[2] == '>') { | ||
555 | in += 3; | ||
556 | newline = 0; | ||
557 | } else { | ||
558 | newline = (*in == '\n'); | ||
559 | *out++ = *in++; | ||
560 | } | ||
561 | } | ||
562 | return out - buf; | ||
563 | } | ||
564 | |||
565 | /* Derived from logfs_compress() */ | 520 | /* Derived from logfs_compress() */ |
566 | static int nvram_compress(const void *in, void *out, size_t inlen, | 521 | static int nvram_compress(const void *in, void *out, size_t inlen, |
567 | size_t outlen) | 522 | size_t outlen) |
@@ -619,9 +574,7 @@ static int zip_oops(size_t text_len) | |||
619 | * partition. If that's too much, go back and capture uncompressed text. | 574 | * partition. If that's too much, go back and capture uncompressed text. |
620 | */ | 575 | */ |
621 | static void oops_to_nvram(struct kmsg_dumper *dumper, | 576 | static void oops_to_nvram(struct kmsg_dumper *dumper, |
622 | enum kmsg_dump_reason reason, | 577 | enum kmsg_dump_reason reason) |
623 | const char *old_msgs, unsigned long old_len, | ||
624 | const char *new_msgs, unsigned long new_len) | ||
625 | { | 578 | { |
626 | static unsigned int oops_count = 0; | 579 | static unsigned int oops_count = 0; |
627 | static bool panicking = false; | 580 | static bool panicking = false; |
@@ -660,14 +613,14 @@ static void oops_to_nvram(struct kmsg_dumper *dumper, | |||
660 | return; | 613 | return; |
661 | 614 | ||
662 | if (big_oops_buf) { | 615 | if (big_oops_buf) { |
663 | text_len = capture_last_msgs(old_msgs, old_len, | 616 | kmsg_dump_get_buffer(dumper, false, |
664 | new_msgs, new_len, big_oops_buf, big_oops_buf_sz); | 617 | big_oops_buf, big_oops_buf_sz, &text_len); |
665 | text_len = elide_severities(big_oops_buf, text_len); | ||
666 | rc = zip_oops(text_len); | 618 | rc = zip_oops(text_len); |
667 | } | 619 | } |
668 | if (rc != 0) { | 620 | if (rc != 0) { |
669 | text_len = capture_last_msgs(old_msgs, old_len, | 621 | kmsg_dump_rewind(dumper); |
670 | new_msgs, new_len, oops_data, oops_data_sz); | 622 | kmsg_dump_get_buffer(dumper, true, |
623 | oops_data, oops_data_sz, &text_len); | ||
671 | err_type = ERR_TYPE_KERNEL_PANIC; | 624 | err_type = ERR_TYPE_KERNEL_PANIC; |
672 | *oops_len = (u16) text_len; | 625 | *oops_len = (u16) text_len; |
673 | } | 626 | } |
diff --git a/arch/powerpc/platforms/pseries/processor_idle.c b/arch/powerpc/platforms/pseries/processor_idle.c index 41a34bc4a9a2..e61483e8e960 100644 --- a/arch/powerpc/platforms/pseries/processor_idle.c +++ b/arch/powerpc/platforms/pseries/processor_idle.c | |||
@@ -106,7 +106,7 @@ static void check_and_cede_processor(void) | |||
106 | * we first hard disable then check. | 106 | * we first hard disable then check. |
107 | */ | 107 | */ |
108 | hard_irq_disable(); | 108 | hard_irq_disable(); |
109 | if (get_paca()->irq_happened == 0) | 109 | if (!lazy_irq_pending()) |
110 | cede_processor(); | 110 | cede_processor(); |
111 | } | 111 | } |
112 | 112 | ||
diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c index 0f3ab06d2222..eab3492a45c5 100644 --- a/arch/powerpc/xmon/xmon.c +++ b/arch/powerpc/xmon/xmon.c | |||
@@ -971,7 +971,7 @@ static int cpu_cmd(void) | |||
971 | /* print cpus waiting or in xmon */ | 971 | /* print cpus waiting or in xmon */ |
972 | printf("cpus stopped:"); | 972 | printf("cpus stopped:"); |
973 | count = 0; | 973 | count = 0; |
974 | for (cpu = 0; cpu < NR_CPUS; ++cpu) { | 974 | for_each_possible_cpu(cpu) { |
975 | if (cpumask_test_cpu(cpu, &cpus_in_xmon)) { | 975 | if (cpumask_test_cpu(cpu, &cpus_in_xmon)) { |
976 | if (count == 0) | 976 | if (count == 0) |
977 | printf(" %x", cpu); | 977 | printf(" %x", cpu); |
diff --git a/arch/sh/boards/mach-kfr2r09/setup.c b/arch/sh/boards/mach-kfr2r09/setup.c index 158c9176e42a..43a179ce9afc 100644 --- a/arch/sh/boards/mach-kfr2r09/setup.c +++ b/arch/sh/boards/mach-kfr2r09/setup.c | |||
@@ -201,8 +201,8 @@ static struct resource kfr2r09_usb0_gadget_resources[] = { | |||
201 | .flags = IORESOURCE_MEM, | 201 | .flags = IORESOURCE_MEM, |
202 | }, | 202 | }, |
203 | [1] = { | 203 | [1] = { |
204 | .start = evtirq(0xa20), | 204 | .start = evt2irq(0xa20), |
205 | .end = evtirq(0xa20), | 205 | .end = evt2irq(0xa20), |
206 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_LOW, | 206 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_LOW, |
207 | }, | 207 | }, |
208 | }; | 208 | }; |
diff --git a/arch/sh/drivers/pci/pcie-sh7786.c b/arch/sh/drivers/pci/pcie-sh7786.c index c045142f7338..9e702f2f8045 100644 --- a/arch/sh/drivers/pci/pcie-sh7786.c +++ b/arch/sh/drivers/pci/pcie-sh7786.c | |||
@@ -239,7 +239,7 @@ static int __init pcie_clk_init(struct sh7786_pcie_port *port) | |||
239 | clk->enable_reg = (void __iomem *)(chan->reg_base + SH4A_PCIEPHYCTLR); | 239 | clk->enable_reg = (void __iomem *)(chan->reg_base + SH4A_PCIEPHYCTLR); |
240 | clk->enable_bit = BITS_CKE; | 240 | clk->enable_bit = BITS_CKE; |
241 | 241 | ||
242 | ret = sh_clk_mstp32_register(clk, 1); | 242 | ret = sh_clk_mstp_register(clk, 1); |
243 | if (unlikely(ret < 0)) | 243 | if (unlikely(ret < 0)) |
244 | goto err_phy; | 244 | goto err_phy; |
245 | 245 | ||
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7343.c b/arch/sh/kernel/cpu/sh4a/clock-sh7343.c index ea01a72f1b94..53638e231cd0 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7343.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7343.c | |||
@@ -283,7 +283,7 @@ int __init arch_clk_init(void) | |||
283 | ret = sh_clk_div6_register(div6_clks, DIV6_NR); | 283 | ret = sh_clk_div6_register(div6_clks, DIV6_NR); |
284 | 284 | ||
285 | if (!ret) | 285 | if (!ret) |
286 | ret = sh_clk_mstp32_register(mstp_clks, MSTP_NR); | 286 | ret = sh_clk_mstp_register(mstp_clks, MSTP_NR); |
287 | 287 | ||
288 | return ret; | 288 | return ret; |
289 | } | 289 | } |
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7366.c b/arch/sh/kernel/cpu/sh4a/clock-sh7366.c index 7ac07b4f75de..22e485d1990b 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7366.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7366.c | |||
@@ -276,7 +276,7 @@ int __init arch_clk_init(void) | |||
276 | ret = sh_clk_div6_register(div6_clks, DIV6_NR); | 276 | ret = sh_clk_div6_register(div6_clks, DIV6_NR); |
277 | 277 | ||
278 | if (!ret) | 278 | if (!ret) |
279 | ret = sh_clk_mstp32_register(mstp_clks, MSTP_NR); | 279 | ret = sh_clk_mstp_register(mstp_clks, MSTP_NR); |
280 | 280 | ||
281 | return ret; | 281 | return ret; |
282 | } | 282 | } |
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7722.c b/arch/sh/kernel/cpu/sh4a/clock-sh7722.c index 8e1f97010c0d..c4cb740e4d10 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7722.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7722.c | |||
@@ -261,7 +261,7 @@ int __init arch_clk_init(void) | |||
261 | ret = sh_clk_div6_register(div6_clks, DIV6_NR); | 261 | ret = sh_clk_div6_register(div6_clks, DIV6_NR); |
262 | 262 | ||
263 | if (!ret) | 263 | if (!ret) |
264 | ret = sh_clk_mstp32_register(mstp_clks, HWBLK_NR); | 264 | ret = sh_clk_mstp_register(mstp_clks, HWBLK_NR); |
265 | 265 | ||
266 | return ret; | 266 | return ret; |
267 | } | 267 | } |
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7723.c b/arch/sh/kernel/cpu/sh4a/clock-sh7723.c index 35f75cf0c7e5..37c41c7747a3 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7723.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7723.c | |||
@@ -311,7 +311,7 @@ int __init arch_clk_init(void) | |||
311 | ret = sh_clk_div6_register(div6_clks, DIV6_NR); | 311 | ret = sh_clk_div6_register(div6_clks, DIV6_NR); |
312 | 312 | ||
313 | if (!ret) | 313 | if (!ret) |
314 | ret = sh_clk_mstp32_register(mstp_clks, HWBLK_NR); | 314 | ret = sh_clk_mstp_register(mstp_clks, HWBLK_NR); |
315 | 315 | ||
316 | return ret; | 316 | return ret; |
317 | } | 317 | } |
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7724.c b/arch/sh/kernel/cpu/sh4a/clock-sh7724.c index 2a87901673fe..c87e78f73234 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7724.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7724.c | |||
@@ -375,7 +375,7 @@ int __init arch_clk_init(void) | |||
375 | ret = sh_clk_div6_reparent_register(div6_clks, DIV6_NR); | 375 | ret = sh_clk_div6_reparent_register(div6_clks, DIV6_NR); |
376 | 376 | ||
377 | if (!ret) | 377 | if (!ret) |
378 | ret = sh_clk_mstp32_register(mstp_clks, HWBLK_NR); | 378 | ret = sh_clk_mstp_register(mstp_clks, HWBLK_NR); |
379 | 379 | ||
380 | return ret; | 380 | return ret; |
381 | } | 381 | } |
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7734.c b/arch/sh/kernel/cpu/sh4a/clock-sh7734.c index 1697642c1f73..deb683abacf0 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7734.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7734.c | |||
@@ -260,7 +260,7 @@ int __init arch_clk_init(void) | |||
260 | &div4_table); | 260 | &div4_table); |
261 | 261 | ||
262 | if (!ret) | 262 | if (!ret) |
263 | ret = sh_clk_mstp32_register(mstp_clks, MSTP_NR); | 263 | ret = sh_clk_mstp_register(mstp_clks, MSTP_NR); |
264 | 264 | ||
265 | return ret; | 265 | return ret; |
266 | } | 266 | } |
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7757.c b/arch/sh/kernel/cpu/sh4a/clock-sh7757.c index 04ab5aeaf920..e84a43229b9c 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7757.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7757.c | |||
@@ -148,7 +148,7 @@ int __init arch_clk_init(void) | |||
148 | ret = sh_clk_div4_register(div4_clks, ARRAY_SIZE(div4_clks), | 148 | ret = sh_clk_div4_register(div4_clks, ARRAY_SIZE(div4_clks), |
149 | &div4_table); | 149 | &div4_table); |
150 | if (!ret) | 150 | if (!ret) |
151 | ret = sh_clk_mstp32_register(mstp_clks, MSTP_NR); | 151 | ret = sh_clk_mstp_register(mstp_clks, MSTP_NR); |
152 | 152 | ||
153 | return ret; | 153 | return ret; |
154 | } | 154 | } |
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7785.c b/arch/sh/kernel/cpu/sh4a/clock-sh7785.c index ab1c58f2d101..1c83788db76a 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7785.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7785.c | |||
@@ -175,7 +175,7 @@ int __init arch_clk_init(void) | |||
175 | ret = sh_clk_div4_register(div4_clks, ARRAY_SIZE(div4_clks), | 175 | ret = sh_clk_div4_register(div4_clks, ARRAY_SIZE(div4_clks), |
176 | &div4_table); | 176 | &div4_table); |
177 | if (!ret) | 177 | if (!ret) |
178 | ret = sh_clk_mstp32_register(mstp_clks, MSTP_NR); | 178 | ret = sh_clk_mstp_register(mstp_clks, MSTP_NR); |
179 | 179 | ||
180 | return ret; | 180 | return ret; |
181 | } | 181 | } |
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7786.c b/arch/sh/kernel/cpu/sh4a/clock-sh7786.c index 491709483e10..8bba6f159023 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7786.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7786.c | |||
@@ -194,7 +194,7 @@ int __init arch_clk_init(void) | |||
194 | ret = sh_clk_div4_register(div4_clks, ARRAY_SIZE(div4_clks), | 194 | ret = sh_clk_div4_register(div4_clks, ARRAY_SIZE(div4_clks), |
195 | &div4_table); | 195 | &div4_table); |
196 | if (!ret) | 196 | if (!ret) |
197 | ret = sh_clk_mstp32_register(mstp_clks, MSTP_NR); | 197 | ret = sh_clk_mstp_register(mstp_clks, MSTP_NR); |
198 | 198 | ||
199 | return ret; | 199 | return ret; |
200 | } | 200 | } |
diff --git a/arch/sh/kernel/cpu/sh4a/clock-shx3.c b/arch/sh/kernel/cpu/sh4a/clock-shx3.c index 0f11b392bf46..a9422dab0ce7 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-shx3.c +++ b/arch/sh/kernel/cpu/sh4a/clock-shx3.c | |||
@@ -149,7 +149,7 @@ int __init arch_clk_init(void) | |||
149 | ret = sh_clk_div4_register(div4_clks, ARRAY_SIZE(div4_clks), | 149 | ret = sh_clk_div4_register(div4_clks, ARRAY_SIZE(div4_clks), |
150 | &div4_table); | 150 | &div4_table); |
151 | if (!ret) | 151 | if (!ret) |
152 | ret = sh_clk_mstp32_register(mstp_clks, MSTP_NR); | 152 | ret = sh_clk_mstp_register(mstp_clks, MSTP_NR); |
153 | 153 | ||
154 | return ret; | 154 | return ret; |
155 | } | 155 | } |
diff --git a/arch/sparc/kernel/vio.c b/arch/sparc/kernel/vio.c index 5cffdc55f075..3e244f31e56b 100644 --- a/arch/sparc/kernel/vio.c +++ b/arch/sparc/kernel/vio.c | |||
@@ -443,7 +443,7 @@ static int __init vio_init(void) | |||
443 | root_vdev = vio_create_one(hp, root, NULL); | 443 | root_vdev = vio_create_one(hp, root, NULL); |
444 | err = -ENODEV; | 444 | err = -ENODEV; |
445 | if (!root_vdev) { | 445 | if (!root_vdev) { |
446 | printk(KERN_ERR "VIO: Coult not create root device.\n"); | 446 | printk(KERN_ERR "VIO: Could not create root device.\n"); |
447 | goto out_release; | 447 | goto out_release; |
448 | } | 448 | } |
449 | 449 | ||
diff --git a/arch/x86/ia32/ia32_signal.c b/arch/x86/ia32/ia32_signal.c index daeca56211e3..673ac9b63d6b 100644 --- a/arch/x86/ia32/ia32_signal.c +++ b/arch/x86/ia32/ia32_signal.c | |||
@@ -38,7 +38,7 @@ | |||
38 | int copy_siginfo_to_user32(compat_siginfo_t __user *to, siginfo_t *from) | 38 | int copy_siginfo_to_user32(compat_siginfo_t __user *to, siginfo_t *from) |
39 | { | 39 | { |
40 | int err = 0; | 40 | int err = 0; |
41 | bool ia32 = is_ia32_task(); | 41 | bool ia32 = test_thread_flag(TIF_IA32); |
42 | 42 | ||
43 | if (!access_ok(VERIFY_WRITE, to, sizeof(compat_siginfo_t))) | 43 | if (!access_ok(VERIFY_WRITE, to, sizeof(compat_siginfo_t))) |
44 | return -EFAULT; | 44 | return -EFAULT; |
diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h index 340ee49961a6..f91e80f4f180 100644 --- a/arch/x86/include/asm/cpufeature.h +++ b/arch/x86/include/asm/cpufeature.h | |||
@@ -176,7 +176,7 @@ | |||
176 | #define X86_FEATURE_XSAVEOPT (7*32+ 4) /* Optimized Xsave */ | 176 | #define X86_FEATURE_XSAVEOPT (7*32+ 4) /* Optimized Xsave */ |
177 | #define X86_FEATURE_PLN (7*32+ 5) /* Intel Power Limit Notification */ | 177 | #define X86_FEATURE_PLN (7*32+ 5) /* Intel Power Limit Notification */ |
178 | #define X86_FEATURE_PTS (7*32+ 6) /* Intel Package Thermal Status */ | 178 | #define X86_FEATURE_PTS (7*32+ 6) /* Intel Package Thermal Status */ |
179 | #define X86_FEATURE_DTS (7*32+ 7) /* Digital Thermal Sensor */ | 179 | #define X86_FEATURE_DTHERM (7*32+ 7) /* Digital Thermal Sensor */ |
180 | #define X86_FEATURE_HW_PSTATE (7*32+ 8) /* AMD HW-PState */ | 180 | #define X86_FEATURE_HW_PSTATE (7*32+ 8) /* AMD HW-PState */ |
181 | 181 | ||
182 | /* Virtualization flags: Linux defined, word 8 */ | 182 | /* Virtualization flags: Linux defined, word 8 */ |
diff --git a/arch/x86/include/asm/pgtable-3level.h b/arch/x86/include/asm/pgtable-3level.h index 43876f16caf1..cb00ccc7d571 100644 --- a/arch/x86/include/asm/pgtable-3level.h +++ b/arch/x86/include/asm/pgtable-3level.h | |||
@@ -47,16 +47,26 @@ static inline void native_set_pte(pte_t *ptep, pte_t pte) | |||
47 | * they can run pmd_offset_map_lock or pmd_trans_huge or other pmd | 47 | * they can run pmd_offset_map_lock or pmd_trans_huge or other pmd |
48 | * operations. | 48 | * operations. |
49 | * | 49 | * |
50 | * Without THP if the mmap_sem is hold for reading, the | 50 | * Without THP if the mmap_sem is hold for reading, the pmd can only |
51 | * pmd can only transition from null to not null while pmd_read_atomic runs. | 51 | * transition from null to not null while pmd_read_atomic runs. So |
52 | * So there's no need of literally reading it atomically. | 52 | * we can always return atomic pmd values with this function. |
53 | * | 53 | * |
54 | * With THP if the mmap_sem is hold for reading, the pmd can become | 54 | * With THP if the mmap_sem is hold for reading, the pmd can become |
55 | * THP or null or point to a pte (and in turn become "stable") at any | 55 | * trans_huge or none or point to a pte (and in turn become "stable") |
56 | * time under pmd_read_atomic, so it's mandatory to read it atomically | 56 | * at any time under pmd_read_atomic. We could read it really |
57 | * with cmpxchg8b. | 57 | * atomically here with a atomic64_read for the THP enabled case (and |
58 | * it would be a whole lot simpler), but to avoid using cmpxchg8b we | ||
59 | * only return an atomic pmdval if the low part of the pmdval is later | ||
60 | * found stable (i.e. pointing to a pte). And we're returning a none | ||
61 | * pmdval if the low part of the pmd is none. In some cases the high | ||
62 | * and low part of the pmdval returned may not be consistent if THP is | ||
63 | * enabled (the low part may point to previously mapped hugepage, | ||
64 | * while the high part may point to a more recently mapped hugepage), | ||
65 | * but pmd_none_or_trans_huge_or_clear_bad() only needs the low part | ||
66 | * of the pmd to be read atomically to decide if the pmd is unstable | ||
67 | * or not, with the only exception of when the low part of the pmd is | ||
68 | * zero in which case we return a none pmd. | ||
58 | */ | 69 | */ |
59 | #ifndef CONFIG_TRANSPARENT_HUGEPAGE | ||
60 | static inline pmd_t pmd_read_atomic(pmd_t *pmdp) | 70 | static inline pmd_t pmd_read_atomic(pmd_t *pmdp) |
61 | { | 71 | { |
62 | pmdval_t ret; | 72 | pmdval_t ret; |
@@ -74,12 +84,6 @@ static inline pmd_t pmd_read_atomic(pmd_t *pmdp) | |||
74 | 84 | ||
75 | return (pmd_t) { ret }; | 85 | return (pmd_t) { ret }; |
76 | } | 86 | } |
77 | #else /* CONFIG_TRANSPARENT_HUGEPAGE */ | ||
78 | static inline pmd_t pmd_read_atomic(pmd_t *pmdp) | ||
79 | { | ||
80 | return (pmd_t) { atomic64_read((atomic64_t *)pmdp) }; | ||
81 | } | ||
82 | #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ | ||
83 | 87 | ||
84 | static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte) | 88 | static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte) |
85 | { | 89 | { |
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index 8afb69319815..b2297e58c6ed 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c | |||
@@ -422,12 +422,14 @@ acpi_parse_int_src_ovr(struct acpi_subtable_header * header, | |||
422 | return 0; | 422 | return 0; |
423 | } | 423 | } |
424 | 424 | ||
425 | if (intsrc->source_irq == 0 && intsrc->global_irq == 2) { | 425 | if (intsrc->source_irq == 0) { |
426 | if (acpi_skip_timer_override) { | 426 | if (acpi_skip_timer_override) { |
427 | printk(PREFIX "BIOS IRQ0 pin2 override ignored.\n"); | 427 | printk(PREFIX "BIOS IRQ0 override ignored.\n"); |
428 | return 0; | 428 | return 0; |
429 | } | 429 | } |
430 | if (acpi_fix_pin2_polarity && (intsrc->inti_flags & ACPI_MADT_POLARITY_MASK)) { | 430 | |
431 | if ((intsrc->global_irq == 2) && acpi_fix_pin2_polarity | ||
432 | && (intsrc->inti_flags & ACPI_MADT_POLARITY_MASK)) { | ||
431 | intsrc->inti_flags &= ~ACPI_MADT_POLARITY_MASK; | 433 | intsrc->inti_flags &= ~ACPI_MADT_POLARITY_MASK; |
432 | printk(PREFIX "BIOS IRQ0 pin2 override: forcing polarity to high active.\n"); | 434 | printk(PREFIX "BIOS IRQ0 pin2 override: forcing polarity to high active.\n"); |
433 | } | 435 | } |
@@ -1334,17 +1336,12 @@ static int __init dmi_disable_acpi(const struct dmi_system_id *d) | |||
1334 | } | 1336 | } |
1335 | 1337 | ||
1336 | /* | 1338 | /* |
1337 | * Force ignoring BIOS IRQ0 pin2 override | 1339 | * Force ignoring BIOS IRQ0 override |
1338 | */ | 1340 | */ |
1339 | static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d) | 1341 | static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d) |
1340 | { | 1342 | { |
1341 | /* | ||
1342 | * The ati_ixp4x0_rev() early PCI quirk should have set | ||
1343 | * the acpi_skip_timer_override flag already: | ||
1344 | */ | ||
1345 | if (!acpi_skip_timer_override) { | 1343 | if (!acpi_skip_timer_override) { |
1346 | WARN(1, KERN_ERR "ati_ixp4x0 quirk not complete.\n"); | 1344 | pr_notice("%s detected: Ignoring BIOS IRQ0 override\n", |
1347 | pr_notice("%s detected: Ignoring BIOS IRQ0 pin2 override\n", | ||
1348 | d->ident); | 1345 | d->ident); |
1349 | acpi_skip_timer_override = 1; | 1346 | acpi_skip_timer_override = 1; |
1350 | } | 1347 | } |
@@ -1438,7 +1435,7 @@ static struct dmi_system_id __initdata acpi_dmi_table_late[] = { | |||
1438 | * is enabled. This input is incorrectly designated the | 1435 | * is enabled. This input is incorrectly designated the |
1439 | * ISA IRQ 0 via an interrupt source override even though | 1436 | * ISA IRQ 0 via an interrupt source override even though |
1440 | * it is wired to the output of the master 8259A and INTIN0 | 1437 | * it is wired to the output of the master 8259A and INTIN0 |
1441 | * is not connected at all. Force ignoring BIOS IRQ0 pin2 | 1438 | * is not connected at all. Force ignoring BIOS IRQ0 |
1442 | * override in that cases. | 1439 | * override in that cases. |
1443 | */ | 1440 | */ |
1444 | { | 1441 | { |
@@ -1473,6 +1470,14 @@ static struct dmi_system_id __initdata acpi_dmi_table_late[] = { | |||
1473 | DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq 6715b"), | 1470 | DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq 6715b"), |
1474 | }, | 1471 | }, |
1475 | }, | 1472 | }, |
1473 | { | ||
1474 | .callback = dmi_ignore_irq0_timer_override, | ||
1475 | .ident = "FUJITSU SIEMENS", | ||
1476 | .matches = { | ||
1477 | DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), | ||
1478 | DMI_MATCH(DMI_PRODUCT_NAME, "AMILO PRO V2030"), | ||
1479 | }, | ||
1480 | }, | ||
1476 | {} | 1481 | {} |
1477 | }; | 1482 | }; |
1478 | 1483 | ||
diff --git a/arch/x86/kernel/cpu/mkcapflags.pl b/arch/x86/kernel/cpu/mkcapflags.pl index dfea390e1608..c7b3fe2d72e0 100644 --- a/arch/x86/kernel/cpu/mkcapflags.pl +++ b/arch/x86/kernel/cpu/mkcapflags.pl | |||
@@ -1,4 +1,4 @@ | |||
1 | #!/usr/bin/perl | 1 | #!/usr/bin/perl -w |
2 | # | 2 | # |
3 | # Generate the x86_cap_flags[] array from include/asm-x86/cpufeature.h | 3 | # Generate the x86_cap_flags[] array from include/asm-x86/cpufeature.h |
4 | # | 4 | # |
@@ -11,22 +11,35 @@ open(OUT, "> $out\0") or die "$0: cannot create: $out: $!\n"; | |||
11 | print OUT "#include <asm/cpufeature.h>\n\n"; | 11 | print OUT "#include <asm/cpufeature.h>\n\n"; |
12 | print OUT "const char * const x86_cap_flags[NCAPINTS*32] = {\n"; | 12 | print OUT "const char * const x86_cap_flags[NCAPINTS*32] = {\n"; |
13 | 13 | ||
14 | %features = (); | ||
15 | $err = 0; | ||
16 | |||
14 | while (defined($line = <IN>)) { | 17 | while (defined($line = <IN>)) { |
15 | if ($line =~ /^\s*\#\s*define\s+(X86_FEATURE_(\S+))\s+(.*)$/) { | 18 | if ($line =~ /^\s*\#\s*define\s+(X86_FEATURE_(\S+))\s+(.*)$/) { |
16 | $macro = $1; | 19 | $macro = $1; |
17 | $feature = $2; | 20 | $feature = "\L$2"; |
18 | $tail = $3; | 21 | $tail = $3; |
19 | if ($tail =~ /\/\*\s*\"([^"]*)\".*\*\//) { | 22 | if ($tail =~ /\/\*\s*\"([^"]*)\".*\*\//) { |
20 | $feature = $1; | 23 | $feature = "\L$1"; |
21 | } | 24 | } |
22 | 25 | ||
23 | if ($feature ne '') { | 26 | next if ($feature eq ''); |
24 | printf OUT "\t%-32s = \"%s\",\n", | 27 | |
25 | "[$macro]", "\L$feature"; | 28 | if ($features{$feature}++) { |
29 | print STDERR "$in: duplicate feature name: $feature\n"; | ||
30 | $err++; | ||
26 | } | 31 | } |
32 | printf OUT "\t%-32s = \"%s\",\n", "[$macro]", $feature; | ||
27 | } | 33 | } |
28 | } | 34 | } |
29 | print OUT "};\n"; | 35 | print OUT "};\n"; |
30 | 36 | ||
31 | close(IN); | 37 | close(IN); |
32 | close(OUT); | 38 | close(OUT); |
39 | |||
40 | if ($err) { | ||
41 | unlink($out); | ||
42 | exit(1); | ||
43 | } | ||
44 | |||
45 | exit(0); | ||
diff --git a/arch/x86/kernel/cpu/scattered.c b/arch/x86/kernel/cpu/scattered.c index addf9e82a7f2..ee8e9abc859f 100644 --- a/arch/x86/kernel/cpu/scattered.c +++ b/arch/x86/kernel/cpu/scattered.c | |||
@@ -31,7 +31,7 @@ void __cpuinit init_scattered_cpuid_features(struct cpuinfo_x86 *c) | |||
31 | const struct cpuid_bit *cb; | 31 | const struct cpuid_bit *cb; |
32 | 32 | ||
33 | static const struct cpuid_bit __cpuinitconst cpuid_bits[] = { | 33 | static const struct cpuid_bit __cpuinitconst cpuid_bits[] = { |
34 | { X86_FEATURE_DTS, CR_EAX, 0, 0x00000006, 0 }, | 34 | { X86_FEATURE_DTHERM, CR_EAX, 0, 0x00000006, 0 }, |
35 | { X86_FEATURE_IDA, CR_EAX, 1, 0x00000006, 0 }, | 35 | { X86_FEATURE_IDA, CR_EAX, 1, 0x00000006, 0 }, |
36 | { X86_FEATURE_ARAT, CR_EAX, 2, 0x00000006, 0 }, | 36 | { X86_FEATURE_ARAT, CR_EAX, 2, 0x00000006, 0 }, |
37 | { X86_FEATURE_PLN, CR_EAX, 4, 0x00000006, 0 }, | 37 | { X86_FEATURE_PLN, CR_EAX, 4, 0x00000006, 0 }, |
diff --git a/arch/x86/kernel/kgdb.c b/arch/x86/kernel/kgdb.c index 8bfb6146f753..3f61904365cf 100644 --- a/arch/x86/kernel/kgdb.c +++ b/arch/x86/kernel/kgdb.c | |||
@@ -444,12 +444,12 @@ void kgdb_roundup_cpus(unsigned long flags) | |||
444 | 444 | ||
445 | /** | 445 | /** |
446 | * kgdb_arch_handle_exception - Handle architecture specific GDB packets. | 446 | * kgdb_arch_handle_exception - Handle architecture specific GDB packets. |
447 | * @vector: The error vector of the exception that happened. | 447 | * @e_vector: The error vector of the exception that happened. |
448 | * @signo: The signal number of the exception that happened. | 448 | * @signo: The signal number of the exception that happened. |
449 | * @err_code: The error code of the exception that happened. | 449 | * @err_code: The error code of the exception that happened. |
450 | * @remcom_in_buffer: The buffer of the packet we have read. | 450 | * @remcomInBuffer: The buffer of the packet we have read. |
451 | * @remcom_out_buffer: The buffer of %BUFMAX bytes to write a packet into. | 451 | * @remcomOutBuffer: The buffer of %BUFMAX bytes to write a packet into. |
452 | * @regs: The &struct pt_regs of the current process. | 452 | * @linux_regs: The &struct pt_regs of the current process. |
453 | * | 453 | * |
454 | * This function MUST handle the 'c' and 's' command packets, | 454 | * This function MUST handle the 'c' and 's' command packets, |
455 | * as well packets to set / remove a hardware breakpoint, if used. | 455 | * as well packets to set / remove a hardware breakpoint, if used. |
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c index 25b48edb847c..5de92f1abd76 100644 --- a/arch/x86/kernel/reboot.c +++ b/arch/x86/kernel/reboot.c | |||
@@ -451,6 +451,14 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = { | |||
451 | DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 990"), | 451 | DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 990"), |
452 | }, | 452 | }, |
453 | }, | 453 | }, |
454 | { /* Handle problems with rebooting on the Precision M6600. */ | ||
455 | .callback = set_pci_reboot, | ||
456 | .ident = "Dell OptiPlex 990", | ||
457 | .matches = { | ||
458 | DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), | ||
459 | DMI_MATCH(DMI_PRODUCT_NAME, "Precision M6600"), | ||
460 | }, | ||
461 | }, | ||
454 | { } | 462 | { } |
455 | }; | 463 | }; |
456 | 464 | ||
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index be3cea4407ff..57e168e27b5b 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c | |||
@@ -3934,6 +3934,9 @@ static void kvm_mmu_remove_some_alloc_mmu_pages(struct kvm *kvm, | |||
3934 | { | 3934 | { |
3935 | struct kvm_mmu_page *page; | 3935 | struct kvm_mmu_page *page; |
3936 | 3936 | ||
3937 | if (list_empty(&kvm->arch.active_mmu_pages)) | ||
3938 | return; | ||
3939 | |||
3937 | page = container_of(kvm->arch.active_mmu_pages.prev, | 3940 | page = container_of(kvm->arch.active_mmu_pages.prev, |
3938 | struct kvm_mmu_page, link); | 3941 | struct kvm_mmu_page, link); |
3939 | kvm_mmu_prepare_zap_page(kvm, page, invalid_list); | 3942 | kvm_mmu_prepare_zap_page(kvm, page, invalid_list); |
diff --git a/arch/x86/lib/csum-wrappers_64.c b/arch/x86/lib/csum-wrappers_64.c index 459b58a8a15c..25b7ae8d058a 100644 --- a/arch/x86/lib/csum-wrappers_64.c +++ b/arch/x86/lib/csum-wrappers_64.c | |||
@@ -115,7 +115,7 @@ EXPORT_SYMBOL(csum_partial_copy_to_user); | |||
115 | * @src: source address | 115 | * @src: source address |
116 | * @dst: destination address | 116 | * @dst: destination address |
117 | * @len: number of bytes to be copied. | 117 | * @len: number of bytes to be copied. |
118 | * @isum: initial sum that is added into the result (32bit unfolded) | 118 | * @sum: initial sum that is added into the result (32bit unfolded) |
119 | * | 119 | * |
120 | * Returns an 32bit unfolded checksum of the buffer. | 120 | * Returns an 32bit unfolded checksum of the buffer. |
121 | */ | 121 | */ |
diff --git a/arch/x86/platform/mrst/early_printk_mrst.c b/arch/x86/platform/mrst/early_printk_mrst.c index 3c6e328483c7..028454f0c3a5 100644 --- a/arch/x86/platform/mrst/early_printk_mrst.c +++ b/arch/x86/platform/mrst/early_printk_mrst.c | |||
@@ -110,19 +110,16 @@ static struct kmsg_dumper dw_dumper; | |||
110 | static int dumper_registered; | 110 | static int dumper_registered; |
111 | 111 | ||
112 | static void dw_kmsg_dump(struct kmsg_dumper *dumper, | 112 | static void dw_kmsg_dump(struct kmsg_dumper *dumper, |
113 | enum kmsg_dump_reason reason, | 113 | enum kmsg_dump_reason reason) |
114 | const char *s1, unsigned long l1, | ||
115 | const char *s2, unsigned long l2) | ||
116 | { | 114 | { |
117 | int i; | 115 | static char line[1024]; |
116 | size_t len; | ||
118 | 117 | ||
119 | /* When run to this, we'd better re-init the HW */ | 118 | /* When run to this, we'd better re-init the HW */ |
120 | mrst_early_console_init(); | 119 | mrst_early_console_init(); |
121 | 120 | ||
122 | for (i = 0; i < l1; i++) | 121 | while (kmsg_dump_get_line(dumper, true, line, sizeof(line), &len)) |
123 | early_mrst_console.write(&early_mrst_console, s1 + i, 1); | 122 | early_mrst_console.write(&early_mrst_console, line, len); |
124 | for (i = 0; i < l2; i++) | ||
125 | early_mrst_console.write(&early_mrst_console, s2 + i, 1); | ||
126 | } | 123 | } |
127 | 124 | ||
128 | /* Set the ratio rate to 115200, 8n1, IRQ disabled */ | 125 | /* Set the ratio rate to 115200, 8n1, IRQ disabled */ |
diff --git a/arch/xtensa/Makefile b/arch/xtensa/Makefile index 7608559de93a..f973754ddf90 100644 --- a/arch/xtensa/Makefile +++ b/arch/xtensa/Makefile | |||
@@ -68,8 +68,8 @@ endif | |||
68 | 68 | ||
69 | # Only build variant and/or platform if it includes a Makefile | 69 | # Only build variant and/or platform if it includes a Makefile |
70 | 70 | ||
71 | buildvar := $(shell test -a $(srctree)/arch/xtensa/variants/$(VARIANT)/Makefile && echo arch/xtensa/variants/$(VARIANT)/) | 71 | buildvar := $(shell test -e $(srctree)/arch/xtensa/variants/$(VARIANT)/Makefile && echo arch/xtensa/variants/$(VARIANT)/) |
72 | buildplf := $(shell test -a $(srctree)/arch/xtensa/platforms/$(PLATFORM)/Makefile && echo arch/xtensa/platforms/$(PLATFORM)/) | 72 | buildplf := $(shell test -e $(srctree)/arch/xtensa/platforms/$(PLATFORM)/Makefile && echo arch/xtensa/platforms/$(PLATFORM)/) |
73 | 73 | ||
74 | # Find libgcc.a | 74 | # Find libgcc.a |
75 | 75 | ||
diff --git a/arch/xtensa/kernel/vmlinux.lds.S b/arch/xtensa/kernel/vmlinux.lds.S index 88ecea3facb4..ee2e2089483d 100644 --- a/arch/xtensa/kernel/vmlinux.lds.S +++ b/arch/xtensa/kernel/vmlinux.lds.S | |||
@@ -83,7 +83,6 @@ SECTIONS | |||
83 | 83 | ||
84 | _text = .; | 84 | _text = .; |
85 | _stext = .; | 85 | _stext = .; |
86 | _ftext = .; | ||
87 | 86 | ||
88 | .text : | 87 | .text : |
89 | { | 88 | { |
@@ -112,7 +111,7 @@ SECTIONS | |||
112 | EXCEPTION_TABLE(16) | 111 | EXCEPTION_TABLE(16) |
113 | /* Data section */ | 112 | /* Data section */ |
114 | 113 | ||
115 | _fdata = .; | 114 | _sdata = .; |
116 | RW_DATA_SECTION(XCHAL_ICACHE_LINESIZE, PAGE_SIZE, THREAD_SIZE) | 115 | RW_DATA_SECTION(XCHAL_ICACHE_LINESIZE, PAGE_SIZE, THREAD_SIZE) |
117 | _edata = .; | 116 | _edata = .; |
118 | 117 | ||
diff --git a/arch/xtensa/mm/init.c b/arch/xtensa/mm/init.c index ba150e5de2eb..db955179da2d 100644 --- a/arch/xtensa/mm/init.c +++ b/arch/xtensa/mm/init.c | |||
@@ -26,11 +26,7 @@ | |||
26 | 26 | ||
27 | #include <asm/bootparam.h> | 27 | #include <asm/bootparam.h> |
28 | #include <asm/page.h> | 28 | #include <asm/page.h> |
29 | 29 | #include <asm/sections.h> | |
30 | /* References to section boundaries */ | ||
31 | |||
32 | extern char _ftext, _etext, _fdata, _edata, _rodata_end; | ||
33 | extern char __init_begin, __init_end; | ||
34 | 30 | ||
35 | /* | 31 | /* |
36 | * mem_reserve(start, end, must_exist) | 32 | * mem_reserve(start, end, must_exist) |
@@ -197,9 +193,9 @@ void __init mem_init(void) | |||
197 | reservedpages++; | 193 | reservedpages++; |
198 | } | 194 | } |
199 | 195 | ||
200 | codesize = (unsigned long) &_etext - (unsigned long) &_ftext; | 196 | codesize = (unsigned long) _etext - (unsigned long) _stext; |
201 | datasize = (unsigned long) &_edata - (unsigned long) &_fdata; | 197 | datasize = (unsigned long) _edata - (unsigned long) _sdata; |
202 | initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin; | 198 | initsize = (unsigned long) __init_end - (unsigned long) __init_begin; |
203 | 199 | ||
204 | printk("Memory: %luk/%luk available (%ldk kernel code, %ldk reserved, " | 200 | printk("Memory: %luk/%luk available (%ldk kernel code, %ldk reserved, " |
205 | "%ldk data, %ldk init %ldk highmem)\n", | 201 | "%ldk data, %ldk init %ldk highmem)\n", |
@@ -237,7 +233,7 @@ void free_initrd_mem(unsigned long start, unsigned long end) | |||
237 | 233 | ||
238 | void free_initmem(void) | 234 | void free_initmem(void) |
239 | { | 235 | { |
240 | free_reserved_mem(&__init_begin, &__init_end); | 236 | free_reserved_mem(__init_begin, __init_end); |
241 | printk("Freeing unused kernel memory: %dk freed\n", | 237 | printk("Freeing unused kernel memory: %zuk freed\n", |
242 | (&__init_end - &__init_begin) >> 10); | 238 | (__init_end - __init_begin) >> 10); |
243 | } | 239 | } |