diff options
Diffstat (limited to 'arch/avr32')
25 files changed, 31 insertions, 241 deletions
diff --git a/arch/avr32/Kconfig b/arch/avr32/Kconfig index c1a868d398bd..22c40308360b 100644 --- a/arch/avr32/Kconfig +++ b/arch/avr32/Kconfig | |||
@@ -250,20 +250,7 @@ config ARCH_SUSPEND_POSSIBLE | |||
250 | def_bool y | 250 | def_bool y |
251 | 251 | ||
252 | menu "CPU Frequency scaling" | 252 | menu "CPU Frequency scaling" |
253 | |||
254 | source "drivers/cpufreq/Kconfig" | 253 | source "drivers/cpufreq/Kconfig" |
255 | |||
256 | config CPU_FREQ_AT32AP | ||
257 | bool "CPU frequency driver for AT32AP" | ||
258 | depends on CPU_FREQ && PLATFORM_AT32AP | ||
259 | default n | ||
260 | help | ||
261 | This enables the CPU frequency driver for AT32AP processors. | ||
262 | |||
263 | For details, take a look in <file:Documentation/cpu-freq>. | ||
264 | |||
265 | If in doubt, say N. | ||
266 | |||
267 | endmenu | 254 | endmenu |
268 | 255 | ||
269 | endmenu | 256 | endmenu |
diff --git a/arch/avr32/configs/atngw100_defconfig b/arch/avr32/configs/atngw100_defconfig index f4025db184ff..d5aff36ade92 100644 --- a/arch/avr32/configs/atngw100_defconfig +++ b/arch/avr32/configs/atngw100_defconfig | |||
@@ -26,7 +26,7 @@ CONFIG_CPU_FREQ=y | |||
26 | # CONFIG_CPU_FREQ_STAT is not set | 26 | # CONFIG_CPU_FREQ_STAT is not set |
27 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y | 27 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y |
28 | CONFIG_CPU_FREQ_GOV_USERSPACE=y | 28 | CONFIG_CPU_FREQ_GOV_USERSPACE=y |
29 | CONFIG_CPU_FREQ_AT32AP=y | 29 | CONFIG_AVR32_AT32AP_CPUFREQ=y |
30 | CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y | 30 | CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y |
31 | CONFIG_NET=y | 31 | CONFIG_NET=y |
32 | CONFIG_PACKET=y | 32 | CONFIG_PACKET=y |
diff --git a/arch/avr32/configs/atngw100_evklcd100_defconfig b/arch/avr32/configs/atngw100_evklcd100_defconfig index c76a49b9e9d0..4abcf435d599 100644 --- a/arch/avr32/configs/atngw100_evklcd100_defconfig +++ b/arch/avr32/configs/atngw100_evklcd100_defconfig | |||
@@ -28,7 +28,7 @@ CONFIG_CPU_FREQ=y | |||
28 | # CONFIG_CPU_FREQ_STAT is not set | 28 | # CONFIG_CPU_FREQ_STAT is not set |
29 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y | 29 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y |
30 | CONFIG_CPU_FREQ_GOV_USERSPACE=y | 30 | CONFIG_CPU_FREQ_GOV_USERSPACE=y |
31 | CONFIG_CPU_FREQ_AT32AP=y | 31 | CONFIG_AVR32_AT32AP_CPUFREQ=y |
32 | CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y | 32 | CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y |
33 | CONFIG_NET=y | 33 | CONFIG_NET=y |
34 | CONFIG_PACKET=y | 34 | CONFIG_PACKET=y |
diff --git a/arch/avr32/configs/atngw100_evklcd101_defconfig b/arch/avr32/configs/atngw100_evklcd101_defconfig index 2d8ab089a64e..18f3fa0470ff 100644 --- a/arch/avr32/configs/atngw100_evklcd101_defconfig +++ b/arch/avr32/configs/atngw100_evklcd101_defconfig | |||
@@ -27,7 +27,7 @@ CONFIG_CPU_FREQ=y | |||
27 | # CONFIG_CPU_FREQ_STAT is not set | 27 | # CONFIG_CPU_FREQ_STAT is not set |
28 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y | 28 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y |
29 | CONFIG_CPU_FREQ_GOV_USERSPACE=y | 29 | CONFIG_CPU_FREQ_GOV_USERSPACE=y |
30 | CONFIG_CPU_FREQ_AT32AP=y | 30 | CONFIG_AVR32_AT32AP_CPUFREQ=y |
31 | CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y | 31 | CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y |
32 | CONFIG_NET=y | 32 | CONFIG_NET=y |
33 | CONFIG_PACKET=y | 33 | CONFIG_PACKET=y |
diff --git a/arch/avr32/configs/atngw100_mrmt_defconfig b/arch/avr32/configs/atngw100_mrmt_defconfig index b189e0cab04b..06e389cfcd12 100644 --- a/arch/avr32/configs/atngw100_mrmt_defconfig +++ b/arch/avr32/configs/atngw100_mrmt_defconfig | |||
@@ -23,7 +23,7 @@ CONFIG_CPU_FREQ=y | |||
23 | CONFIG_CPU_FREQ_GOV_POWERSAVE=y | 23 | CONFIG_CPU_FREQ_GOV_POWERSAVE=y |
24 | CONFIG_CPU_FREQ_GOV_USERSPACE=y | 24 | CONFIG_CPU_FREQ_GOV_USERSPACE=y |
25 | CONFIG_CPU_FREQ_GOV_ONDEMAND=y | 25 | CONFIG_CPU_FREQ_GOV_ONDEMAND=y |
26 | CONFIG_CPU_FREQ_AT32AP=y | 26 | CONFIG_AVR32_AT32AP_CPUFREQ=y |
27 | CONFIG_NET=y | 27 | CONFIG_NET=y |
28 | CONFIG_PACKET=y | 28 | CONFIG_PACKET=y |
29 | CONFIG_UNIX=y | 29 | CONFIG_UNIX=y |
diff --git a/arch/avr32/configs/atngw100mkii_defconfig b/arch/avr32/configs/atngw100mkii_defconfig index 2e4de42a53c4..2518a1368d7c 100644 --- a/arch/avr32/configs/atngw100mkii_defconfig +++ b/arch/avr32/configs/atngw100mkii_defconfig | |||
@@ -26,7 +26,7 @@ CONFIG_CPU_FREQ=y | |||
26 | # CONFIG_CPU_FREQ_STAT is not set | 26 | # CONFIG_CPU_FREQ_STAT is not set |
27 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y | 27 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y |
28 | CONFIG_CPU_FREQ_GOV_USERSPACE=y | 28 | CONFIG_CPU_FREQ_GOV_USERSPACE=y |
29 | CONFIG_CPU_FREQ_AT32AP=y | 29 | CONFIG_AVR32_AT32AP_CPUFREQ=y |
30 | CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y | 30 | CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y |
31 | CONFIG_NET=y | 31 | CONFIG_NET=y |
32 | CONFIG_PACKET=y | 32 | CONFIG_PACKET=y |
diff --git a/arch/avr32/configs/atngw100mkii_evklcd100_defconfig b/arch/avr32/configs/atngw100mkii_evklcd100_defconfig index fad3cd22dfd3..245ef6bd0fa6 100644 --- a/arch/avr32/configs/atngw100mkii_evklcd100_defconfig +++ b/arch/avr32/configs/atngw100mkii_evklcd100_defconfig | |||
@@ -29,7 +29,7 @@ CONFIG_CPU_FREQ=y | |||
29 | # CONFIG_CPU_FREQ_STAT is not set | 29 | # CONFIG_CPU_FREQ_STAT is not set |
30 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y | 30 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y |
31 | CONFIG_CPU_FREQ_GOV_USERSPACE=y | 31 | CONFIG_CPU_FREQ_GOV_USERSPACE=y |
32 | CONFIG_CPU_FREQ_AT32AP=y | 32 | CONFIG_AVR32_AT32AP_CPUFREQ=y |
33 | CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y | 33 | CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y |
34 | CONFIG_NET=y | 34 | CONFIG_NET=y |
35 | CONFIG_PACKET=y | 35 | CONFIG_PACKET=y |
diff --git a/arch/avr32/configs/atngw100mkii_evklcd101_defconfig b/arch/avr32/configs/atngw100mkii_evklcd101_defconfig index 29986230aaa5..fa6cbac6e418 100644 --- a/arch/avr32/configs/atngw100mkii_evklcd101_defconfig +++ b/arch/avr32/configs/atngw100mkii_evklcd101_defconfig | |||
@@ -28,7 +28,7 @@ CONFIG_CPU_FREQ=y | |||
28 | # CONFIG_CPU_FREQ_STAT is not set | 28 | # CONFIG_CPU_FREQ_STAT is not set |
29 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y | 29 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y |
30 | CONFIG_CPU_FREQ_GOV_USERSPACE=y | 30 | CONFIG_CPU_FREQ_GOV_USERSPACE=y |
31 | CONFIG_CPU_FREQ_AT32AP=y | 31 | CONFIG_AVR32_AT32AP_CPUFREQ=y |
32 | CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y | 32 | CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y |
33 | CONFIG_NET=y | 33 | CONFIG_NET=y |
34 | CONFIG_PACKET=y | 34 | CONFIG_PACKET=y |
diff --git a/arch/avr32/configs/atstk1002_defconfig b/arch/avr32/configs/atstk1002_defconfig index a582465e1cef..bbd5131021a5 100644 --- a/arch/avr32/configs/atstk1002_defconfig +++ b/arch/avr32/configs/atstk1002_defconfig | |||
@@ -25,7 +25,7 @@ CONFIG_CPU_FREQ=y | |||
25 | # CONFIG_CPU_FREQ_STAT is not set | 25 | # CONFIG_CPU_FREQ_STAT is not set |
26 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y | 26 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y |
27 | CONFIG_CPU_FREQ_GOV_USERSPACE=y | 27 | CONFIG_CPU_FREQ_GOV_USERSPACE=y |
28 | CONFIG_CPU_FREQ_AT32AP=y | 28 | CONFIG_AVR32_AT32AP_CPUFREQ=y |
29 | CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y | 29 | CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y |
30 | CONFIG_NET=y | 30 | CONFIG_NET=y |
31 | CONFIG_PACKET=y | 31 | CONFIG_PACKET=y |
diff --git a/arch/avr32/configs/atstk1003_defconfig b/arch/avr32/configs/atstk1003_defconfig index 57a79df2ce5d..c1cd726f9012 100644 --- a/arch/avr32/configs/atstk1003_defconfig +++ b/arch/avr32/configs/atstk1003_defconfig | |||
@@ -26,7 +26,7 @@ CONFIG_CPU_FREQ=y | |||
26 | # CONFIG_CPU_FREQ_STAT is not set | 26 | # CONFIG_CPU_FREQ_STAT is not set |
27 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y | 27 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y |
28 | CONFIG_CPU_FREQ_GOV_USERSPACE=y | 28 | CONFIG_CPU_FREQ_GOV_USERSPACE=y |
29 | CONFIG_CPU_FREQ_AT32AP=y | 29 | CONFIG_AVR32_AT32AP_CPUFREQ=y |
30 | CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y | 30 | CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y |
31 | CONFIG_NET=y | 31 | CONFIG_NET=y |
32 | CONFIG_PACKET=y | 32 | CONFIG_PACKET=y |
diff --git a/arch/avr32/configs/atstk1004_defconfig b/arch/avr32/configs/atstk1004_defconfig index 1a49bd8c6340..754ae56b2767 100644 --- a/arch/avr32/configs/atstk1004_defconfig +++ b/arch/avr32/configs/atstk1004_defconfig | |||
@@ -26,7 +26,7 @@ CONFIG_CPU_FREQ=y | |||
26 | # CONFIG_CPU_FREQ_STAT is not set | 26 | # CONFIG_CPU_FREQ_STAT is not set |
27 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y | 27 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y |
28 | CONFIG_CPU_FREQ_GOV_USERSPACE=y | 28 | CONFIG_CPU_FREQ_GOV_USERSPACE=y |
29 | CONFIG_CPU_FREQ_AT32AP=y | 29 | CONFIG_AVR32_AT32AP_CPUFREQ=y |
30 | CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y | 30 | CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y |
31 | CONFIG_NET=y | 31 | CONFIG_NET=y |
32 | CONFIG_PACKET=y | 32 | CONFIG_PACKET=y |
diff --git a/arch/avr32/configs/atstk1006_defconfig b/arch/avr32/configs/atstk1006_defconfig index 206a1b67f763..58589d8cc0ac 100644 --- a/arch/avr32/configs/atstk1006_defconfig +++ b/arch/avr32/configs/atstk1006_defconfig | |||
@@ -26,7 +26,7 @@ CONFIG_CPU_FREQ=y | |||
26 | # CONFIG_CPU_FREQ_STAT is not set | 26 | # CONFIG_CPU_FREQ_STAT is not set |
27 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y | 27 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y |
28 | CONFIG_CPU_FREQ_GOV_USERSPACE=y | 28 | CONFIG_CPU_FREQ_GOV_USERSPACE=y |
29 | CONFIG_CPU_FREQ_AT32AP=y | 29 | CONFIG_AVR32_AT32AP_CPUFREQ=y |
30 | CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y | 30 | CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y |
31 | CONFIG_NET=y | 31 | CONFIG_NET=y |
32 | CONFIG_PACKET=y | 32 | CONFIG_PACKET=y |
diff --git a/arch/avr32/configs/favr-32_defconfig b/arch/avr32/configs/favr-32_defconfig index 0421498d666b..c90fbf6d35bc 100644 --- a/arch/avr32/configs/favr-32_defconfig +++ b/arch/avr32/configs/favr-32_defconfig | |||
@@ -27,7 +27,7 @@ CONFIG_CPU_FREQ=y | |||
27 | # CONFIG_CPU_FREQ_STAT is not set | 27 | # CONFIG_CPU_FREQ_STAT is not set |
28 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y | 28 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y |
29 | CONFIG_CPU_FREQ_GOV_USERSPACE=y | 29 | CONFIG_CPU_FREQ_GOV_USERSPACE=y |
30 | CONFIG_CPU_FREQ_AT32AP=y | 30 | CONFIG_AVR32_AT32AP_CPUFREQ=y |
31 | CONFIG_NET=y | 31 | CONFIG_NET=y |
32 | CONFIG_PACKET=y | 32 | CONFIG_PACKET=y |
33 | CONFIG_UNIX=y | 33 | CONFIG_UNIX=y |
@@ -122,7 +122,6 @@ CONFIG_USB_G_SERIAL=m | |||
122 | CONFIG_USB_CDC_COMPOSITE=m | 122 | CONFIG_USB_CDC_COMPOSITE=m |
123 | CONFIG_MMC=y | 123 | CONFIG_MMC=y |
124 | CONFIG_MMC_ATMELMCI=y | 124 | CONFIG_MMC_ATMELMCI=y |
125 | CONFIG_MMC_ATMELMCI_DMA=y | ||
126 | CONFIG_NEW_LEDS=y | 125 | CONFIG_NEW_LEDS=y |
127 | CONFIG_LEDS_CLASS=y | 126 | CONFIG_LEDS_CLASS=y |
128 | CONFIG_LEDS_ATMEL_PWM=m | 127 | CONFIG_LEDS_ATMEL_PWM=m |
diff --git a/arch/avr32/configs/hammerhead_defconfig b/arch/avr32/configs/hammerhead_defconfig index 82f24eb251bd..ba7c31e269cb 100644 --- a/arch/avr32/configs/hammerhead_defconfig +++ b/arch/avr32/configs/hammerhead_defconfig | |||
@@ -31,7 +31,7 @@ CONFIG_CPU_FREQ=y | |||
31 | # CONFIG_CPU_FREQ_STAT is not set | 31 | # CONFIG_CPU_FREQ_STAT is not set |
32 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y | 32 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y |
33 | CONFIG_CPU_FREQ_GOV_USERSPACE=y | 33 | CONFIG_CPU_FREQ_GOV_USERSPACE=y |
34 | CONFIG_CPU_FREQ_AT32AP=y | 34 | CONFIG_AVR32_AT32AP_CPUFREQ=y |
35 | CONFIG_NET=y | 35 | CONFIG_NET=y |
36 | CONFIG_PACKET=y | 36 | CONFIG_PACKET=y |
37 | CONFIG_UNIX=y | 37 | CONFIG_UNIX=y |
diff --git a/arch/avr32/configs/merisc_defconfig b/arch/avr32/configs/merisc_defconfig index 3befab966827..65de4431108c 100644 --- a/arch/avr32/configs/merisc_defconfig +++ b/arch/avr32/configs/merisc_defconfig | |||
@@ -102,7 +102,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=y | |||
102 | CONFIG_LOGO=y | 102 | CONFIG_LOGO=y |
103 | CONFIG_MMC=y | 103 | CONFIG_MMC=y |
104 | CONFIG_MMC_ATMELMCI=y | 104 | CONFIG_MMC_ATMELMCI=y |
105 | CONFIG_MMC_ATMELMCI_DMA=y | ||
106 | CONFIG_NEW_LEDS=y | 105 | CONFIG_NEW_LEDS=y |
107 | CONFIG_LEDS_CLASS=y | 106 | CONFIG_LEDS_CLASS=y |
108 | CONFIG_LEDS_ATMEL_PWM=y | 107 | CONFIG_LEDS_ATMEL_PWM=y |
diff --git a/arch/avr32/configs/mimc200_defconfig b/arch/avr32/configs/mimc200_defconfig index 1bee51f22154..0a8bfdc420e0 100644 --- a/arch/avr32/configs/mimc200_defconfig +++ b/arch/avr32/configs/mimc200_defconfig | |||
@@ -24,7 +24,7 @@ CONFIG_CPU_FREQ=y | |||
24 | # CONFIG_CPU_FREQ_STAT is not set | 24 | # CONFIG_CPU_FREQ_STAT is not set |
25 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y | 25 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y |
26 | CONFIG_CPU_FREQ_GOV_USERSPACE=y | 26 | CONFIG_CPU_FREQ_GOV_USERSPACE=y |
27 | CONFIG_CPU_FREQ_AT32AP=y | 27 | CONFIG_AVR32_AT32AP_CPUFREQ=y |
28 | CONFIG_NET=y | 28 | CONFIG_NET=y |
29 | CONFIG_PACKET=y | 29 | CONFIG_PACKET=y |
30 | CONFIG_UNIX=y | 30 | CONFIG_UNIX=y |
diff --git a/arch/avr32/include/asm/unistd.h b/arch/avr32/include/asm/unistd.h index dc4d5a931112..c1eb080e45fe 100644 --- a/arch/avr32/include/asm/unistd.h +++ b/arch/avr32/include/asm/unistd.h | |||
@@ -41,12 +41,4 @@ | |||
41 | #define __ARCH_WANT_SYS_VFORK | 41 | #define __ARCH_WANT_SYS_VFORK |
42 | #define __ARCH_WANT_SYS_CLONE | 42 | #define __ARCH_WANT_SYS_CLONE |
43 | 43 | ||
44 | /* | ||
45 | * "Conditional" syscalls | ||
46 | * | ||
47 | * What we want is __attribute__((weak,alias("sys_ni_syscall"))), | ||
48 | * but it doesn't work on all toolchains, so we just do it by hand | ||
49 | */ | ||
50 | #define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall"); | ||
51 | |||
52 | #endif /* __ASM_AVR32_UNISTD_H */ | 44 | #endif /* __ASM_AVR32_UNISTD_H */ |
diff --git a/arch/avr32/kernel/process.c b/arch/avr32/kernel/process.c index fd78f58ea79a..e7b61494c312 100644 --- a/arch/avr32/kernel/process.c +++ b/arch/avr32/kernel/process.c | |||
@@ -30,18 +30,9 @@ EXPORT_SYMBOL(pm_power_off); | |||
30 | * This file handles the architecture-dependent parts of process handling.. | 30 | * This file handles the architecture-dependent parts of process handling.. |
31 | */ | 31 | */ |
32 | 32 | ||
33 | void cpu_idle(void) | 33 | void arch_cpu_idle(void) |
34 | { | 34 | { |
35 | /* endless idle loop with no priority at all */ | 35 | cpu_enter_idle(); |
36 | while (1) { | ||
37 | tick_nohz_idle_enter(); | ||
38 | rcu_idle_enter(); | ||
39 | while (!need_resched()) | ||
40 | cpu_idle_sleep(); | ||
41 | rcu_idle_exit(); | ||
42 | tick_nohz_idle_exit(); | ||
43 | schedule_preempt_disabled(); | ||
44 | } | ||
45 | } | 36 | } |
46 | 37 | ||
47 | void machine_halt(void) | 38 | void machine_halt(void) |
@@ -213,14 +204,6 @@ void show_stack(struct task_struct *tsk, unsigned long *stack) | |||
213 | show_stack_log_lvl(tsk, (unsigned long)stack, NULL, ""); | 204 | show_stack_log_lvl(tsk, (unsigned long)stack, NULL, ""); |
214 | } | 205 | } |
215 | 206 | ||
216 | void dump_stack(void) | ||
217 | { | ||
218 | unsigned long stack; | ||
219 | |||
220 | show_trace_log_lvl(current, &stack, NULL, ""); | ||
221 | } | ||
222 | EXPORT_SYMBOL(dump_stack); | ||
223 | |||
224 | static const char *cpu_modes[] = { | 207 | static const char *cpu_modes[] = { |
225 | "Application", "Supervisor", "Interrupt level 0", "Interrupt level 1", | 208 | "Application", "Supervisor", "Interrupt level 0", "Interrupt level 1", |
226 | "Interrupt level 2", "Interrupt level 3", "Exception", "NMI" | 209 | "Interrupt level 2", "Interrupt level 3", "Exception", "NMI" |
@@ -232,6 +215,8 @@ void show_regs_log_lvl(struct pt_regs *regs, const char *log_lvl) | |||
232 | unsigned long lr = regs->lr; | 215 | unsigned long lr = regs->lr; |
233 | unsigned long mode = (regs->sr & MODE_MASK) >> MODE_SHIFT; | 216 | unsigned long mode = (regs->sr & MODE_MASK) >> MODE_SHIFT; |
234 | 217 | ||
218 | show_regs_print_info(log_lvl); | ||
219 | |||
235 | if (!user_mode(regs)) { | 220 | if (!user_mode(regs)) { |
236 | sp = (unsigned long)regs + FRAME_SIZE_FULL; | 221 | sp = (unsigned long)regs + FRAME_SIZE_FULL; |
237 | 222 | ||
@@ -269,9 +254,6 @@ void show_regs_log_lvl(struct pt_regs *regs, const char *log_lvl) | |||
269 | regs->sr & SR_I0M ? '0' : '.', | 254 | regs->sr & SR_I0M ? '0' : '.', |
270 | regs->sr & SR_GM ? 'G' : 'g'); | 255 | regs->sr & SR_GM ? 'G' : 'g'); |
271 | printk("%sCPU Mode: %s\n", log_lvl, cpu_modes[mode]); | 256 | printk("%sCPU Mode: %s\n", log_lvl, cpu_modes[mode]); |
272 | printk("%sProcess: %s [%d] (task: %p thread: %p)\n", | ||
273 | log_lvl, current->comm, current->pid, current, | ||
274 | task_thread_info(current)); | ||
275 | } | 257 | } |
276 | 258 | ||
277 | void show_regs(struct pt_regs *regs) | 259 | void show_regs(struct pt_regs *regs) |
diff --git a/arch/avr32/kernel/time.c b/arch/avr32/kernel/time.c index 05ad29112ff4..869a1c6ffeee 100644 --- a/arch/avr32/kernel/time.c +++ b/arch/avr32/kernel/time.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/irq.h> | 12 | #include <linux/irq.h> |
13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
14 | #include <linux/time.h> | 14 | #include <linux/time.h> |
15 | #include <linux/cpu.h> | ||
15 | 16 | ||
16 | #include <asm/sysreg.h> | 17 | #include <asm/sysreg.h> |
17 | 18 | ||
@@ -87,13 +88,17 @@ static void comparator_mode(enum clock_event_mode mode, | |||
87 | pr_debug("%s: start\n", evdev->name); | 88 | pr_debug("%s: start\n", evdev->name); |
88 | /* FALLTHROUGH */ | 89 | /* FALLTHROUGH */ |
89 | case CLOCK_EVT_MODE_RESUME: | 90 | case CLOCK_EVT_MODE_RESUME: |
90 | cpu_disable_idle_sleep(); | 91 | /* |
92 | * If we're using the COUNT and COMPARE registers we | ||
93 | * need to force idle poll. | ||
94 | */ | ||
95 | cpu_idle_poll_ctrl(true); | ||
91 | break; | 96 | break; |
92 | case CLOCK_EVT_MODE_UNUSED: | 97 | case CLOCK_EVT_MODE_UNUSED: |
93 | case CLOCK_EVT_MODE_SHUTDOWN: | 98 | case CLOCK_EVT_MODE_SHUTDOWN: |
94 | sysreg_write(COMPARE, 0); | 99 | sysreg_write(COMPARE, 0); |
95 | pr_debug("%s: stop\n", evdev->name); | 100 | pr_debug("%s: stop\n", evdev->name); |
96 | cpu_enable_idle_sleep(); | 101 | cpu_idle_poll_ctrl(false); |
97 | break; | 102 | break; |
98 | default: | 103 | default: |
99 | BUG(); | 104 | BUG(); |
diff --git a/arch/avr32/mach-at32ap/Makefile b/arch/avr32/mach-at32ap/Makefile index 514c9a9b009a..fc09ec4bc725 100644 --- a/arch/avr32/mach-at32ap/Makefile +++ b/arch/avr32/mach-at32ap/Makefile | |||
@@ -1,7 +1,6 @@ | |||
1 | obj-y += pdc.o clock.o intc.o extint.o pio.o hsmc.o | 1 | obj-y += pdc.o clock.o intc.o extint.o pio.o hsmc.o |
2 | obj-y += hmatrix.o | 2 | obj-y += hmatrix.o |
3 | obj-$(CONFIG_CPU_AT32AP700X) += at32ap700x.o pm-at32ap700x.o | 3 | obj-$(CONFIG_CPU_AT32AP700X) += at32ap700x.o pm-at32ap700x.o |
4 | obj-$(CONFIG_CPU_FREQ_AT32AP) += cpufreq.o | ||
5 | obj-$(CONFIG_PM) += pm.o | 4 | obj-$(CONFIG_PM) += pm.o |
6 | 5 | ||
7 | ifeq ($(CONFIG_PM_DEBUG),y) | 6 | ifeq ($(CONFIG_PM_DEBUG),y) |
diff --git a/arch/avr32/mach-at32ap/at32ap700x.c b/arch/avr32/mach-at32ap/at32ap700x.c index b323d8d3185b..7c2f6685bf43 100644 --- a/arch/avr32/mach-at32ap/at32ap700x.c +++ b/arch/avr32/mach-at32ap/at32ap700x.c | |||
@@ -1453,7 +1453,7 @@ static struct resource atmel_lcdfb0_resource[] = { | |||
1453 | }, | 1453 | }, |
1454 | }; | 1454 | }; |
1455 | DEFINE_DEV_DATA(atmel_lcdfb, 0); | 1455 | DEFINE_DEV_DATA(atmel_lcdfb, 0); |
1456 | DEV_CLK(hck1, atmel_lcdfb0, hsb, 7); | 1456 | DEV_CLK(hclk, atmel_lcdfb0, hsb, 7); |
1457 | static struct clk atmel_lcdfb0_pixclk = { | 1457 | static struct clk atmel_lcdfb0_pixclk = { |
1458 | .name = "lcdc_clk", | 1458 | .name = "lcdc_clk", |
1459 | .dev = &atmel_lcdfb0_device.dev, | 1459 | .dev = &atmel_lcdfb0_device.dev, |
@@ -1530,6 +1530,8 @@ at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_info *data, | |||
1530 | memcpy(info, data, sizeof(struct atmel_lcdfb_info)); | 1530 | memcpy(info, data, sizeof(struct atmel_lcdfb_info)); |
1531 | info->default_monspecs = monspecs; | 1531 | info->default_monspecs = monspecs; |
1532 | 1532 | ||
1533 | pdev->name = "at32ap-lcdfb"; | ||
1534 | |||
1533 | platform_device_register(pdev); | 1535 | platform_device_register(pdev); |
1534 | return pdev; | 1536 | return pdev; |
1535 | 1537 | ||
@@ -2246,7 +2248,7 @@ static __initdata struct clk *init_clocks[] = { | |||
2246 | &atmel_twi0_pclk, | 2248 | &atmel_twi0_pclk, |
2247 | &atmel_mci0_pclk, | 2249 | &atmel_mci0_pclk, |
2248 | #if defined(CONFIG_CPU_AT32AP7000) || defined(CONFIG_CPU_AT32AP7002) | 2250 | #if defined(CONFIG_CPU_AT32AP7000) || defined(CONFIG_CPU_AT32AP7002) |
2249 | &atmel_lcdfb0_hck1, | 2251 | &atmel_lcdfb0_hclk, |
2250 | &atmel_lcdfb0_pixclk, | 2252 | &atmel_lcdfb0_pixclk, |
2251 | #endif | 2253 | #endif |
2252 | &ssc0_pclk, | 2254 | &ssc0_pclk, |
diff --git a/arch/avr32/mach-at32ap/cpufreq.c b/arch/avr32/mach-at32ap/cpufreq.c deleted file mode 100644 index 18b765629a0c..000000000000 --- a/arch/avr32/mach-at32ap/cpufreq.c +++ /dev/null | |||
@@ -1,124 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2004-2007 Atmel Corporation | ||
3 | * | ||
4 | * Based on MIPS implementation arch/mips/kernel/time.c | ||
5 | * Copyright 2001 MontaVista Software Inc. | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | */ | ||
11 | |||
12 | /*#define DEBUG*/ | ||
13 | |||
14 | #include <linux/kernel.h> | ||
15 | #include <linux/types.h> | ||
16 | #include <linux/init.h> | ||
17 | #include <linux/cpufreq.h> | ||
18 | #include <linux/io.h> | ||
19 | #include <linux/clk.h> | ||
20 | #include <linux/err.h> | ||
21 | #include <linux/export.h> | ||
22 | |||
23 | static struct clk *cpuclk; | ||
24 | |||
25 | static int at32_verify_speed(struct cpufreq_policy *policy) | ||
26 | { | ||
27 | if (policy->cpu != 0) | ||
28 | return -EINVAL; | ||
29 | |||
30 | cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq, | ||
31 | policy->cpuinfo.max_freq); | ||
32 | return 0; | ||
33 | } | ||
34 | |||
35 | static unsigned int at32_get_speed(unsigned int cpu) | ||
36 | { | ||
37 | /* No SMP support */ | ||
38 | if (cpu) | ||
39 | return 0; | ||
40 | return (unsigned int)((clk_get_rate(cpuclk) + 500) / 1000); | ||
41 | } | ||
42 | |||
43 | static unsigned int ref_freq; | ||
44 | static unsigned long loops_per_jiffy_ref; | ||
45 | |||
46 | static int at32_set_target(struct cpufreq_policy *policy, | ||
47 | unsigned int target_freq, | ||
48 | unsigned int relation) | ||
49 | { | ||
50 | struct cpufreq_freqs freqs; | ||
51 | long freq; | ||
52 | |||
53 | /* Convert target_freq from kHz to Hz */ | ||
54 | freq = clk_round_rate(cpuclk, target_freq * 1000); | ||
55 | |||
56 | /* Check if policy->min <= new_freq <= policy->max */ | ||
57 | if(freq < (policy->min * 1000) || freq > (policy->max * 1000)) | ||
58 | return -EINVAL; | ||
59 | |||
60 | pr_debug("cpufreq: requested frequency %u Hz\n", target_freq * 1000); | ||
61 | |||
62 | freqs.old = at32_get_speed(0); | ||
63 | freqs.new = (freq + 500) / 1000; | ||
64 | freqs.cpu = 0; | ||
65 | freqs.flags = 0; | ||
66 | |||
67 | if (!ref_freq) { | ||
68 | ref_freq = freqs.old; | ||
69 | loops_per_jiffy_ref = boot_cpu_data.loops_per_jiffy; | ||
70 | } | ||
71 | |||
72 | cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); | ||
73 | if (freqs.old < freqs.new) | ||
74 | boot_cpu_data.loops_per_jiffy = cpufreq_scale( | ||
75 | loops_per_jiffy_ref, ref_freq, freqs.new); | ||
76 | clk_set_rate(cpuclk, freq); | ||
77 | if (freqs.new < freqs.old) | ||
78 | boot_cpu_data.loops_per_jiffy = cpufreq_scale( | ||
79 | loops_per_jiffy_ref, ref_freq, freqs.new); | ||
80 | cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); | ||
81 | |||
82 | pr_debug("cpufreq: set frequency %lu Hz\n", freq); | ||
83 | |||
84 | return 0; | ||
85 | } | ||
86 | |||
87 | static int __init at32_cpufreq_driver_init(struct cpufreq_policy *policy) | ||
88 | { | ||
89 | if (policy->cpu != 0) | ||
90 | return -EINVAL; | ||
91 | |||
92 | cpuclk = clk_get(NULL, "cpu"); | ||
93 | if (IS_ERR(cpuclk)) { | ||
94 | pr_debug("cpufreq: could not get CPU clk\n"); | ||
95 | return PTR_ERR(cpuclk); | ||
96 | } | ||
97 | |||
98 | policy->cpuinfo.min_freq = (clk_round_rate(cpuclk, 1) + 500) / 1000; | ||
99 | policy->cpuinfo.max_freq = (clk_round_rate(cpuclk, ~0UL) + 500) / 1000; | ||
100 | policy->cpuinfo.transition_latency = 0; | ||
101 | policy->cur = at32_get_speed(0); | ||
102 | policy->min = policy->cpuinfo.min_freq; | ||
103 | policy->max = policy->cpuinfo.max_freq; | ||
104 | |||
105 | printk("cpufreq: AT32AP CPU frequency driver\n"); | ||
106 | |||
107 | return 0; | ||
108 | } | ||
109 | |||
110 | static struct cpufreq_driver at32_driver = { | ||
111 | .name = "at32ap", | ||
112 | .owner = THIS_MODULE, | ||
113 | .init = at32_cpufreq_driver_init, | ||
114 | .verify = at32_verify_speed, | ||
115 | .target = at32_set_target, | ||
116 | .get = at32_get_speed, | ||
117 | .flags = CPUFREQ_STICKY, | ||
118 | }; | ||
119 | |||
120 | static int __init at32_cpufreq_init(void) | ||
121 | { | ||
122 | return cpufreq_register_driver(&at32_driver); | ||
123 | } | ||
124 | late_initcall(at32_cpufreq_init); | ||
diff --git a/arch/avr32/mach-at32ap/include/mach/pm.h b/arch/avr32/mach-at32ap/include/mach/pm.h index 979b355b77b6..f29ff2cd23d3 100644 --- a/arch/avr32/mach-at32ap/include/mach/pm.h +++ b/arch/avr32/mach-at32ap/include/mach/pm.h | |||
@@ -21,30 +21,6 @@ | |||
21 | extern void cpu_enter_idle(void); | 21 | extern void cpu_enter_idle(void); |
22 | extern void cpu_enter_standby(unsigned long sdramc_base); | 22 | extern void cpu_enter_standby(unsigned long sdramc_base); |
23 | 23 | ||
24 | extern bool disable_idle_sleep; | ||
25 | |||
26 | static inline void cpu_disable_idle_sleep(void) | ||
27 | { | ||
28 | disable_idle_sleep = true; | ||
29 | } | ||
30 | |||
31 | static inline void cpu_enable_idle_sleep(void) | ||
32 | { | ||
33 | disable_idle_sleep = false; | ||
34 | } | ||
35 | |||
36 | static inline void cpu_idle_sleep(void) | ||
37 | { | ||
38 | /* | ||
39 | * If we're using the COUNT and COMPARE registers for | ||
40 | * timekeeping, we can't use the IDLE state. | ||
41 | */ | ||
42 | if (disable_idle_sleep) | ||
43 | cpu_relax(); | ||
44 | else | ||
45 | cpu_enter_idle(); | ||
46 | } | ||
47 | |||
48 | void intc_set_suspend_handler(unsigned long offset); | 24 | void intc_set_suspend_handler(unsigned long offset); |
49 | #endif | 25 | #endif |
50 | 26 | ||
diff --git a/arch/avr32/mach-at32ap/pm-at32ap700x.S b/arch/avr32/mach-at32ap/pm-at32ap700x.S index f868f4ce761b..1c8e4e6bff03 100644 --- a/arch/avr32/mach-at32ap/pm-at32ap700x.S +++ b/arch/avr32/mach-at32ap/pm-at32ap700x.S | |||
@@ -18,13 +18,6 @@ | |||
18 | /* Same as 0xfff00000 but fits in a 21 bit signed immediate */ | 18 | /* Same as 0xfff00000 but fits in a 21 bit signed immediate */ |
19 | #define PM_BASE -0x100000 | 19 | #define PM_BASE -0x100000 |
20 | 20 | ||
21 | .section .bss, "wa", @nobits | ||
22 | .global disable_idle_sleep | ||
23 | .type disable_idle_sleep, @object | ||
24 | disable_idle_sleep: | ||
25 | .int 4 | ||
26 | .size disable_idle_sleep, . - disable_idle_sleep | ||
27 | |||
28 | /* Keep this close to the irq handlers */ | 21 | /* Keep this close to the irq handlers */ |
29 | .section .irq.text, "ax", @progbits | 22 | .section .irq.text, "ax", @progbits |
30 | 23 | ||
diff --git a/arch/avr32/mm/init.c b/arch/avr32/mm/init.c index 2798c2d4a1cf..e66e8406f992 100644 --- a/arch/avr32/mm/init.c +++ b/arch/avr32/mm/init.c | |||
@@ -146,34 +146,14 @@ void __init mem_init(void) | |||
146 | initsize >> 10); | 146 | initsize >> 10); |
147 | } | 147 | } |
148 | 148 | ||
149 | static inline void free_area(unsigned long addr, unsigned long end, char *s) | ||
150 | { | ||
151 | unsigned int size = (end - addr) >> 10; | ||
152 | |||
153 | for (; addr < end; addr += PAGE_SIZE) { | ||
154 | struct page *page = virt_to_page(addr); | ||
155 | ClearPageReserved(page); | ||
156 | init_page_count(page); | ||
157 | free_page(addr); | ||
158 | totalram_pages++; | ||
159 | } | ||
160 | |||
161 | if (size && s) | ||
162 | printk(KERN_INFO "Freeing %s memory: %dK (%lx - %lx)\n", | ||
163 | s, size, end - (size << 10), end); | ||
164 | } | ||
165 | |||
166 | void free_initmem(void) | 149 | void free_initmem(void) |
167 | { | 150 | { |
168 | free_area((unsigned long)__init_begin, (unsigned long)__init_end, | 151 | free_initmem_default(0); |
169 | "init"); | ||
170 | } | 152 | } |
171 | 153 | ||
172 | #ifdef CONFIG_BLK_DEV_INITRD | 154 | #ifdef CONFIG_BLK_DEV_INITRD |
173 | |||
174 | void free_initrd_mem(unsigned long start, unsigned long end) | 155 | void free_initrd_mem(unsigned long start, unsigned long end) |
175 | { | 156 | { |
176 | free_area(start, end, "initrd"); | 157 | free_reserved_area(start, end, 0, "initrd"); |
177 | } | 158 | } |
178 | |||
179 | #endif | 159 | #endif |