diff options
author | Jeff Garzik <jgarzik@pobox.com> | 2006-02-17 16:20:30 -0500 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2006-02-17 16:20:30 -0500 |
commit | b04a92e1601eb6df3a3b6599e7fb7ee021eef2cb (patch) | |
tree | f190980d5bffae81a67c0cea0d913ed2444ceb0c /arch/arm | |
parent | 70c07e02625ec46d0ffbfce1acef42d660803528 (diff) | |
parent | f5e2a7b22e7d7dfda8794906d0fddeaaa09bb944 (diff) |
Merge branch 'upstream-fixes'
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/kernel/calls.S | 2 | ||||
-rw-r--r-- | arch/arm/kernel/setup.c | 5 | ||||
-rw-r--r-- | arch/arm/kernel/smp.c | 1 | ||||
-rw-r--r-- | arch/arm/kernel/sys_oabi-compat.c | 30 | ||||
-rw-r--r-- | arch/arm/mach-integrator/platsmp.c | 21 | ||||
-rw-r--r-- | arch/arm/mach-iop3xx/iop321-setup.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-iop3xx/iop331-setup.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-ixp4xx/nslu2-setup.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-realview/platsmp.c | 21 | ||||
-rw-r--r-- | arch/arm/mach-s3c2410/mach-h1940.c | 29 | ||||
-rw-r--r-- | arch/arm/mach-s3c2410/s3c2400.h | 31 | ||||
-rw-r--r-- | arch/arm/plat-omap/pm.c | 1 |
12 files changed, 128 insertions, 21 deletions
diff --git a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S index 8c3035d5ffc9..3173924a9b60 100644 --- a/arch/arm/kernel/calls.S +++ b/arch/arm/kernel/calls.S | |||
@@ -111,7 +111,7 @@ | |||
111 | CALL(sys_statfs) | 111 | CALL(sys_statfs) |
112 | /* 100 */ CALL(sys_fstatfs) | 112 | /* 100 */ CALL(sys_fstatfs) |
113 | CALL(sys_ni_syscall) | 113 | CALL(sys_ni_syscall) |
114 | CALL(OBSOLETE(sys_socketcall)) | 114 | CALL(OBSOLETE(ABI(sys_socketcall, sys_oabi_socketcall))) |
115 | CALL(sys_syslog) | 115 | CALL(sys_syslog) |
116 | CALL(sys_setitimer) | 116 | CALL(sys_setitimer) |
117 | /* 105 */ CALL(sys_getitimer) | 117 | /* 105 */ CALL(sys_getitimer) |
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index c45d10d07bde..68273b4dc882 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <linux/root_dev.h> | 23 | #include <linux/root_dev.h> |
24 | #include <linux/cpu.h> | 24 | #include <linux/cpu.h> |
25 | #include <linux/interrupt.h> | 25 | #include <linux/interrupt.h> |
26 | #include <linux/smp.h> | ||
26 | 27 | ||
27 | #include <asm/cpu.h> | 28 | #include <asm/cpu.h> |
28 | #include <asm/elf.h> | 29 | #include <asm/elf.h> |
@@ -771,6 +772,10 @@ void __init setup_arch(char **cmdline_p) | |||
771 | paging_init(&meminfo, mdesc); | 772 | paging_init(&meminfo, mdesc); |
772 | request_standard_resources(&meminfo, mdesc); | 773 | request_standard_resources(&meminfo, mdesc); |
773 | 774 | ||
775 | #ifdef CONFIG_SMP | ||
776 | smp_init_cpus(); | ||
777 | #endif | ||
778 | |||
774 | cpu_init(); | 779 | cpu_init(); |
775 | 780 | ||
776 | /* | 781 | /* |
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index 7338948bd7d3..02aa300c4633 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c | |||
@@ -338,7 +338,6 @@ void __init smp_prepare_boot_cpu(void) | |||
338 | 338 | ||
339 | per_cpu(cpu_data, cpu).idle = current; | 339 | per_cpu(cpu_data, cpu).idle = current; |
340 | 340 | ||
341 | cpu_set(cpu, cpu_possible_map); | ||
342 | cpu_set(cpu, cpu_present_map); | 341 | cpu_set(cpu, cpu_present_map); |
343 | cpu_set(cpu, cpu_online_map); | 342 | cpu_set(cpu, cpu_online_map); |
344 | } | 343 | } |
diff --git a/arch/arm/kernel/sys_oabi-compat.c b/arch/arm/kernel/sys_oabi-compat.c index 9d4b76409c64..8e2f9bc3368b 100644 --- a/arch/arm/kernel/sys_oabi-compat.c +++ b/arch/arm/kernel/sys_oabi-compat.c | |||
@@ -64,6 +64,7 @@ | |||
64 | * sys_connect: | 64 | * sys_connect: |
65 | * sys_sendmsg: | 65 | * sys_sendmsg: |
66 | * sys_sendto: | 66 | * sys_sendto: |
67 | * sys_socketcall: | ||
67 | * | 68 | * |
68 | * struct sockaddr_un loses its padding with EABI. Since the size of the | 69 | * struct sockaddr_un loses its padding with EABI. Since the size of the |
69 | * structure is used as a validation test in unix_mkname(), we need to | 70 | * structure is used as a validation test in unix_mkname(), we need to |
@@ -78,6 +79,7 @@ | |||
78 | #include <linux/eventpoll.h> | 79 | #include <linux/eventpoll.h> |
79 | #include <linux/sem.h> | 80 | #include <linux/sem.h> |
80 | #include <linux/socket.h> | 81 | #include <linux/socket.h> |
82 | #include <linux/net.h> | ||
81 | #include <asm/ipc.h> | 83 | #include <asm/ipc.h> |
82 | #include <asm/uaccess.h> | 84 | #include <asm/uaccess.h> |
83 | 85 | ||
@@ -408,3 +410,31 @@ asmlinkage long sys_oabi_sendmsg(int fd, struct msghdr __user *msg, unsigned fla | |||
408 | return sys_sendmsg(fd, msg, flags); | 410 | return sys_sendmsg(fd, msg, flags); |
409 | } | 411 | } |
410 | 412 | ||
413 | asmlinkage long sys_oabi_socketcall(int call, unsigned long __user *args) | ||
414 | { | ||
415 | unsigned long r = -EFAULT, a[6]; | ||
416 | |||
417 | switch (call) { | ||
418 | case SYS_BIND: | ||
419 | if (copy_from_user(a, args, 3 * sizeof(long)) == 0) | ||
420 | r = sys_oabi_bind(a[0], (struct sockaddr __user *)a[1], a[2]); | ||
421 | break; | ||
422 | case SYS_CONNECT: | ||
423 | if (copy_from_user(a, args, 3 * sizeof(long)) == 0) | ||
424 | r = sys_oabi_connect(a[0], (struct sockaddr __user *)a[1], a[2]); | ||
425 | break; | ||
426 | case SYS_SENDTO: | ||
427 | if (copy_from_user(a, args, 6 * sizeof(long)) == 0) | ||
428 | r = sys_oabi_sendto(a[0], (void __user *)a[1], a[2], a[3], | ||
429 | (struct sockaddr __user *)a[4], a[5]); | ||
430 | break; | ||
431 | case SYS_SENDMSG: | ||
432 | if (copy_from_user(a, args, 3 * sizeof(long)) == 0) | ||
433 | r = sys_oabi_sendmsg(a[0], (struct msghdr __user *)a[1], a[2]); | ||
434 | break; | ||
435 | default: | ||
436 | r = sys_socketcall(call, args); | ||
437 | } | ||
438 | |||
439 | return r; | ||
440 | } | ||
diff --git a/arch/arm/mach-integrator/platsmp.c b/arch/arm/mach-integrator/platsmp.c index ea10bd8c972c..1bc8534ef0c6 100644 --- a/arch/arm/mach-integrator/platsmp.c +++ b/arch/arm/mach-integrator/platsmp.c | |||
@@ -140,6 +140,18 @@ static void __init poke_milo(void) | |||
140 | mb(); | 140 | mb(); |
141 | } | 141 | } |
142 | 142 | ||
143 | /* | ||
144 | * Initialise the CPU possible map early - this describes the CPUs | ||
145 | * which may be present or become present in the system. | ||
146 | */ | ||
147 | void __init smp_init_cpus(void) | ||
148 | { | ||
149 | unsigned int i, ncores = get_core_count(); | ||
150 | |||
151 | for (i = 0; i < ncores; i++) | ||
152 | cpu_set(i, cpu_possible_map); | ||
153 | } | ||
154 | |||
143 | void __init smp_prepare_cpus(unsigned int max_cpus) | 155 | void __init smp_prepare_cpus(unsigned int max_cpus) |
144 | { | 156 | { |
145 | unsigned int ncores = get_core_count(); | 157 | unsigned int ncores = get_core_count(); |
@@ -176,14 +188,11 @@ void __init smp_prepare_cpus(unsigned int max_cpus) | |||
176 | max_cpus = ncores; | 188 | max_cpus = ncores; |
177 | 189 | ||
178 | /* | 190 | /* |
179 | * Initialise the possible/present maps. | 191 | * Initialise the present map, which describes the set of CPUs |
180 | * cpu_possible_map describes the set of CPUs which may be present | 192 | * actually populated at the present time. |
181 | * cpu_present_map describes the set of CPUs populated | ||
182 | */ | 193 | */ |
183 | for (i = 0; i < max_cpus; i++) { | 194 | for (i = 0; i < max_cpus; i++) |
184 | cpu_set(i, cpu_possible_map); | ||
185 | cpu_set(i, cpu_present_map); | 195 | cpu_set(i, cpu_present_map); |
186 | } | ||
187 | 196 | ||
188 | /* | 197 | /* |
189 | * Do we need any more CPUs? If so, then let them know where | 198 | * Do we need any more CPUs? If so, then let them know where |
diff --git a/arch/arm/mach-iop3xx/iop321-setup.c b/arch/arm/mach-iop3xx/iop321-setup.c index e4f4c52d93d4..0ebbcb20c6ae 100644 --- a/arch/arm/mach-iop3xx/iop321-setup.c +++ b/arch/arm/mach-iop3xx/iop321-setup.c | |||
@@ -13,7 +13,6 @@ | |||
13 | #include <linux/mm.h> | 13 | #include <linux/mm.h> |
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <linux/config.h> | 15 | #include <linux/config.h> |
16 | #include <linux/init.h> | ||
17 | #include <linux/major.h> | 16 | #include <linux/major.h> |
18 | #include <linux/fs.h> | 17 | #include <linux/fs.h> |
19 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
diff --git a/arch/arm/mach-iop3xx/iop331-setup.c b/arch/arm/mach-iop3xx/iop331-setup.c index 63585485123e..2d6abe5be14d 100644 --- a/arch/arm/mach-iop3xx/iop331-setup.c +++ b/arch/arm/mach-iop3xx/iop331-setup.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <linux/mm.h> | 12 | #include <linux/mm.h> |
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | #include <linux/config.h> | 14 | #include <linux/config.h> |
15 | #include <linux/init.h> | ||
16 | #include <linux/major.h> | 15 | #include <linux/major.h> |
17 | #include <linux/fs.h> | 16 | #include <linux/fs.h> |
18 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
diff --git a/arch/arm/mach-ixp4xx/nslu2-setup.c b/arch/arm/mach-ixp4xx/nslu2-setup.c index da9340a53434..f260a9d34f70 100644 --- a/arch/arm/mach-ixp4xx/nslu2-setup.c +++ b/arch/arm/mach-ixp4xx/nslu2-setup.c | |||
@@ -27,8 +27,6 @@ static struct flash_platform_data nslu2_flash_data = { | |||
27 | }; | 27 | }; |
28 | 28 | ||
29 | static struct resource nslu2_flash_resource = { | 29 | static struct resource nslu2_flash_resource = { |
30 | .start = NSLU2_FLASH_BASE, | ||
31 | .end = NSLU2_FLASH_BASE + NSLU2_FLASH_SIZE, | ||
32 | .flags = IORESOURCE_MEM, | 30 | .flags = IORESOURCE_MEM, |
33 | }; | 31 | }; |
34 | 32 | ||
@@ -116,6 +114,10 @@ static void __init nslu2_init(void) | |||
116 | { | 114 | { |
117 | ixp4xx_sys_init(); | 115 | ixp4xx_sys_init(); |
118 | 116 | ||
117 | nslu2_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); | ||
118 | nslu2_flash_resource.end = | ||
119 | IXP4XX_EXP_BUS_BASE(0) + ixp4xx_exp_bus_size - 1; | ||
120 | |||
119 | pm_power_off = nslu2_power_off; | 121 | pm_power_off = nslu2_power_off; |
120 | 122 | ||
121 | platform_add_devices(nslu2_devices, ARRAY_SIZE(nslu2_devices)); | 123 | platform_add_devices(nslu2_devices, ARRAY_SIZE(nslu2_devices)); |
diff --git a/arch/arm/mach-realview/platsmp.c b/arch/arm/mach-realview/platsmp.c index a8fbd76d8be5..b8484e15dacb 100644 --- a/arch/arm/mach-realview/platsmp.c +++ b/arch/arm/mach-realview/platsmp.c | |||
@@ -143,6 +143,18 @@ static void __init poke_milo(void) | |||
143 | mb(); | 143 | mb(); |
144 | } | 144 | } |
145 | 145 | ||
146 | /* | ||
147 | * Initialise the CPU possible map early - this describes the CPUs | ||
148 | * which may be present or become present in the system. | ||
149 | */ | ||
150 | void __init smp_init_cpus(void) | ||
151 | { | ||
152 | unsigned int i, ncores = get_core_count(); | ||
153 | |||
154 | for (i = 0; i < ncores; i++) | ||
155 | cpu_set(i, cpu_possible_map); | ||
156 | } | ||
157 | |||
146 | void __init smp_prepare_cpus(unsigned int max_cpus) | 158 | void __init smp_prepare_cpus(unsigned int max_cpus) |
147 | { | 159 | { |
148 | unsigned int ncores = get_core_count(); | 160 | unsigned int ncores = get_core_count(); |
@@ -179,14 +191,11 @@ void __init smp_prepare_cpus(unsigned int max_cpus) | |||
179 | local_timer_setup(cpu); | 191 | local_timer_setup(cpu); |
180 | 192 | ||
181 | /* | 193 | /* |
182 | * Initialise the possible/present maps. | 194 | * Initialise the present map, which describes the set of CPUs |
183 | * cpu_possible_map describes the set of CPUs which may be present | 195 | * actually populated at the present time. |
184 | * cpu_present_map describes the set of CPUs populated | ||
185 | */ | 196 | */ |
186 | for (i = 0; i < max_cpus; i++) { | 197 | for (i = 0; i < max_cpus; i++) |
187 | cpu_set(i, cpu_possible_map); | ||
188 | cpu_set(i, cpu_present_map); | 198 | cpu_set(i, cpu_present_map); |
189 | } | ||
190 | 199 | ||
191 | /* | 200 | /* |
192 | * Do we need any more CPUs? If so, then let them know where | 201 | * Do we need any more CPUs? If so, then let them know where |
diff --git a/arch/arm/mach-s3c2410/mach-h1940.c b/arch/arm/mach-s3c2410/mach-h1940.c index 1c316f14ed94..646a3a5d33a5 100644 --- a/arch/arm/mach-s3c2410/mach-h1940.c +++ b/arch/arm/mach-s3c2410/mach-h1940.c | |||
@@ -46,10 +46,11 @@ | |||
46 | #include <asm/irq.h> | 46 | #include <asm/irq.h> |
47 | #include <asm/mach-types.h> | 47 | #include <asm/mach-types.h> |
48 | 48 | ||
49 | //#include <asm/debug-ll.h> | 49 | |
50 | #include <asm/arch/regs-serial.h> | 50 | #include <asm/arch/regs-serial.h> |
51 | #include <asm/arch/regs-lcd.h> | 51 | #include <asm/arch/regs-lcd.h> |
52 | 52 | ||
53 | #include <asm/arch/h1940-latch.h> | ||
53 | #include <asm/arch/fb.h> | 54 | #include <asm/arch/fb.h> |
54 | 55 | ||
55 | #include <linux/serial_core.h> | 56 | #include <linux/serial_core.h> |
@@ -59,7 +60,12 @@ | |||
59 | #include "cpu.h" | 60 | #include "cpu.h" |
60 | 61 | ||
61 | static struct map_desc h1940_iodesc[] __initdata = { | 62 | static struct map_desc h1940_iodesc[] __initdata = { |
62 | /* nothing here yet */ | 63 | [0] = { |
64 | .virtual = (unsigned long)H1940_LATCH, | ||
65 | .pfn = __phys_to_pfn(H1940_PA_LATCH), | ||
66 | .length = SZ_16K, | ||
67 | .type = MT_DEVICE | ||
68 | }, | ||
63 | }; | 69 | }; |
64 | 70 | ||
65 | #define UCON S3C2410_UCON_DEFAULT | S3C2410_UCON_UCLK | 71 | #define UCON S3C2410_UCON_DEFAULT | S3C2410_UCON_UCLK |
@@ -92,6 +98,25 @@ static struct s3c2410_uartcfg h1940_uartcfgs[] = { | |||
92 | } | 98 | } |
93 | }; | 99 | }; |
94 | 100 | ||
101 | /* Board control latch control */ | ||
102 | |||
103 | static unsigned int latch_state = H1940_LATCH_DEFAULT; | ||
104 | |||
105 | void h1940_latch_control(unsigned int clear, unsigned int set) | ||
106 | { | ||
107 | unsigned long flags; | ||
108 | |||
109 | local_irq_save(flags); | ||
110 | |||
111 | latch_state &= ~clear; | ||
112 | latch_state |= set; | ||
113 | |||
114 | __raw_writel(latch_state, H1940_LATCH); | ||
115 | |||
116 | local_irq_restore(flags); | ||
117 | } | ||
118 | |||
119 | EXPORT_SYMBOL_GPL(h1940_latch_control); | ||
95 | 120 | ||
96 | 121 | ||
97 | /** | 122 | /** |
diff --git a/arch/arm/mach-s3c2410/s3c2400.h b/arch/arm/mach-s3c2410/s3c2400.h new file mode 100644 index 000000000000..8b2394e1ed40 --- /dev/null +++ b/arch/arm/mach-s3c2410/s3c2400.h | |||
@@ -0,0 +1,31 @@ | |||
1 | /* arch/arm/mach-s3c2410/s3c2400.h | ||
2 | * | ||
3 | * Copyright (c) 2004 Simtec Electronics | ||
4 | * Ben Dooks <ben@simtec.co.uk> | ||
5 | * | ||
6 | * Header file for S3C2400 cpu support | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License version 2 as | ||
10 | * published by the Free Software Foundation. | ||
11 | * | ||
12 | * Modifications: | ||
13 | * 09-Fev-2006 LCVR First version, based on s3c2410.h | ||
14 | */ | ||
15 | |||
16 | #ifdef CONFIG_CPU_S3C2400 | ||
17 | |||
18 | extern int s3c2400_init(void); | ||
19 | |||
20 | extern void s3c2400_map_io(struct map_desc *mach_desc, int size); | ||
21 | |||
22 | extern void s3c2400_init_uarts(struct s3c2410_uartcfg *cfg, int no); | ||
23 | |||
24 | extern void s3c2400_init_clocks(int xtal); | ||
25 | |||
26 | #else | ||
27 | #define s3c2400_init_clocks NULL | ||
28 | #define s3c2400_init_uarts NULL | ||
29 | #define s3c2400_map_io NULL | ||
30 | #define s3c2400_init NULL | ||
31 | #endif | ||
diff --git a/arch/arm/plat-omap/pm.c b/arch/arm/plat-omap/pm.c index 1a24e2c10714..093efd786f21 100644 --- a/arch/arm/plat-omap/pm.c +++ b/arch/arm/plat-omap/pm.c | |||
@@ -38,7 +38,6 @@ | |||
38 | #include <linux/pm.h> | 38 | #include <linux/pm.h> |
39 | #include <linux/sched.h> | 39 | #include <linux/sched.h> |
40 | #include <linux/proc_fs.h> | 40 | #include <linux/proc_fs.h> |
41 | #include <linux/pm.h> | ||
42 | #include <linux/interrupt.h> | 41 | #include <linux/interrupt.h> |
43 | 42 | ||
44 | #include <asm/io.h> | 43 | #include <asm/io.h> |