aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2008-04-03 17:33:42 -0400
committerDavid S. Miller <davem@davemloft.net>2008-04-03 17:33:42 -0400
commit3bb5da3837cc1aa17736b05139c9a22c3794851a (patch)
treec92d5684a866542b1cb20641607ac1643ce03a47 /arch/arm
parent7feb49c82a74bc7c091b8ab2a3f96baa33d08ece (diff)
parent9597362d354f8655ece324b01d0c640a0e99c077 (diff)
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/Kconfig1
-rw-r--r--arch/arm/common/it8152.c5
-rw-r--r--arch/arm/kernel/calls.S2
-rw-r--r--arch/arm/kernel/signal.c4
-rw-r--r--arch/arm/kernel/sys_oabi-compat.c24
-rw-r--r--arch/arm/mach-iop32x/glantank.c12
-rw-r--r--arch/arm/mach-omap1/time.c12
-rw-r--r--arch/arm/mm/proc-xscale.S4
-rw-r--r--arch/arm/plat-omap/Kconfig1
-rw-r--r--arch/arm/plat-omap/Makefile5
-rw-r--r--arch/arm/plat-omap/dma.c9
-rw-r--r--arch/arm/plat-omap/gpio.c3
12 files changed, 68 insertions, 14 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 955fc53c1c01..4039a133006e 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -469,6 +469,7 @@ config ARCH_OMAP
469 bool "TI OMAP" 469 bool "TI OMAP"
470 select GENERIC_GPIO 470 select GENERIC_GPIO
471 select GENERIC_TIME 471 select GENERIC_TIME
472 select GENERIC_CLOCKEVENTS
472 help 473 help
473 Support for TI's OMAP platform (OMAP1 and OMAP2). 474 Support for TI's OMAP platform (OMAP1 and OMAP2).
474 475
diff --git a/arch/arm/common/it8152.c b/arch/arm/common/it8152.c
index 538262241483..5fe9588db077 100644
--- a/arch/arm/common/it8152.c
+++ b/arch/arm/common/it8152.c
@@ -120,6 +120,7 @@ void it8152_irq_demux(unsigned int irq, struct irq_desc *desc)
120 time, when they all three were 0. */ 120 time, when they all three were 0. */
121 bits_pd = __raw_readl(IT8152_INTC_PDCNIRR); 121 bits_pd = __raw_readl(IT8152_INTC_PDCNIRR);
122 bits_lp = __raw_readl(IT8152_INTC_LPCNIRR); 122 bits_lp = __raw_readl(IT8152_INTC_LPCNIRR);
123 bits_ld = __raw_readl(IT8152_INTC_LDCNIRR);
123 if (!(bits_ld | bits_lp | bits_pd)) 124 if (!(bits_ld | bits_lp | bits_pd))
124 return; 125 return;
125 } 126 }
@@ -133,14 +134,14 @@ void it8152_irq_demux(unsigned int irq, struct irq_desc *desc)
133 134
134 bits_lp &= ((1 << IT8152_LP_IRQ_COUNT) - 1); 135 bits_lp &= ((1 << IT8152_LP_IRQ_COUNT) - 1);
135 while (bits_lp) { 136 while (bits_lp) {
136 i = __ffs(bits_pd); 137 i = __ffs(bits_lp);
137 it8152_irq(IT8152_LP_IRQ(i)); 138 it8152_irq(IT8152_LP_IRQ(i));
138 bits_lp &= ~(1 << i); 139 bits_lp &= ~(1 << i);
139 } 140 }
140 141
141 bits_ld &= ((1 << IT8152_LD_IRQ_COUNT) - 1); 142 bits_ld &= ((1 << IT8152_LD_IRQ_COUNT) - 1);
142 while (bits_ld) { 143 while (bits_ld) {
143 i = __ffs(bits_pd); 144 i = __ffs(bits_ld);
144 it8152_irq(IT8152_LD_IRQ(i)); 145 it8152_irq(IT8152_LD_IRQ(i));
145 bits_ld &= ~(1 << i); 146 bits_ld &= ~(1 << i);
146 } 147 }
diff --git a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S
index 283e14fff993..7e97b7376563 100644
--- a/arch/arm/kernel/calls.S
+++ b/arch/arm/kernel/calls.S
@@ -336,7 +336,7 @@
336 CALL(sys_mknodat) 336 CALL(sys_mknodat)
337/* 325 */ CALL(sys_fchownat) 337/* 325 */ CALL(sys_fchownat)
338 CALL(sys_futimesat) 338 CALL(sys_futimesat)
339 CALL(sys_fstatat64) 339 CALL(ABI(sys_fstatat64, sys_oabi_fstatat64))
340 CALL(sys_unlinkat) 340 CALL(sys_unlinkat)
341 CALL(sys_renameat) 341 CALL(sys_renameat)
342/* 330 */ CALL(sys_linkat) 342/* 330 */ CALL(sys_linkat)
diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c
index 54cdf1aeefc3..ef2f86a5e78a 100644
--- a/arch/arm/kernel/signal.c
+++ b/arch/arm/kernel/signal.c
@@ -26,8 +26,8 @@
26/* 26/*
27 * For ARM syscalls, we encode the syscall number into the instruction. 27 * For ARM syscalls, we encode the syscall number into the instruction.
28 */ 28 */
29#define SWI_SYS_SIGRETURN (0xef000000|(__NR_sigreturn)) 29#define SWI_SYS_SIGRETURN (0xef000000|(__NR_sigreturn)|(__NR_OABI_SYSCALL_BASE))
30#define SWI_SYS_RT_SIGRETURN (0xef000000|(__NR_rt_sigreturn)) 30#define SWI_SYS_RT_SIGRETURN (0xef000000|(__NR_rt_sigreturn)|(__NR_OABI_SYSCALL_BASE))
31 31
32/* 32/*
33 * With EABI, the syscall number has to be loaded into r7. 33 * With EABI, the syscall number has to be loaded into r7.
diff --git a/arch/arm/kernel/sys_oabi-compat.c b/arch/arm/kernel/sys_oabi-compat.c
index e8b98046895b..96ab5f52949c 100644
--- a/arch/arm/kernel/sys_oabi-compat.c
+++ b/arch/arm/kernel/sys_oabi-compat.c
@@ -25,6 +25,7 @@
25 * sys_stat64: 25 * sys_stat64:
26 * sys_lstat64: 26 * sys_lstat64:
27 * sys_fstat64: 27 * sys_fstat64:
28 * sys_fstatat64:
28 * 29 *
29 * struct stat64 has different sizes and some members are shifted 30 * struct stat64 has different sizes and some members are shifted
30 * Compatibility wrappers are needed for them and provided below. 31 * Compatibility wrappers are needed for them and provided below.
@@ -169,6 +170,29 @@ asmlinkage long sys_oabi_fstat64(unsigned long fd,
169 return error; 170 return error;
170} 171}
171 172
173asmlinkage long sys_oabi_fstatat64(int dfd,
174 char __user *filename,
175 struct oldabi_stat64 __user *statbuf,
176 int flag)
177{
178 struct kstat stat;
179 int error = -EINVAL;
180
181 if ((flag & ~AT_SYMLINK_NOFOLLOW) != 0)
182 goto out;
183
184 if (flag & AT_SYMLINK_NOFOLLOW)
185 error = vfs_lstat_fd(dfd, filename, &stat);
186 else
187 error = vfs_stat_fd(dfd, filename, &stat);
188
189 if (!error)
190 error = cp_oldabi_stat64(&stat, statbuf);
191
192out:
193 return error;
194}
195
172struct oabi_flock64 { 196struct oabi_flock64 {
173 short l_type; 197 short l_type;
174 short l_whence; 198 short l_whence;
diff --git a/arch/arm/mach-iop32x/glantank.c b/arch/arm/mach-iop32x/glantank.c
index 74c65ce221de..d2a7b04f1cb0 100644
--- a/arch/arm/mach-iop32x/glantank.c
+++ b/arch/arm/mach-iop32x/glantank.c
@@ -14,8 +14,10 @@
14 14
15#include <linux/mm.h> 15#include <linux/mm.h>
16#include <linux/init.h> 16#include <linux/init.h>
17#include <linux/f75375s.h>
17#include <linux/kernel.h> 18#include <linux/kernel.h>
18#include <linux/pci.h> 19#include <linux/pci.h>
20#include <linux/pm.h>
19#include <linux/string.h> 21#include <linux/string.h>
20#include <linux/slab.h> 22#include <linux/slab.h>
21#include <linux/serial_core.h> 23#include <linux/serial_core.h>
@@ -167,11 +169,21 @@ static struct platform_device glantank_serial_device = {
167 .resource = &glantank_uart_resource, 169 .resource = &glantank_uart_resource,
168}; 170};
169 171
172static struct f75375s_platform_data glantank_f75375s = {
173 .pwm = { 255, 255 },
174 .pwm_enable = { 0, 0 },
175};
176
170static struct i2c_board_info __initdata glantank_i2c_devices[] = { 177static struct i2c_board_info __initdata glantank_i2c_devices[] = {
171 { 178 {
172 I2C_BOARD_INFO("rtc-rs5c372", 0x32), 179 I2C_BOARD_INFO("rtc-rs5c372", 0x32),
173 .type = "rs5c372a", 180 .type = "rs5c372a",
174 }, 181 },
182 {
183 I2C_BOARD_INFO("f75375", 0x2e),
184 .type = "f75375",
185 .platform_data = &glantank_f75375s,
186 },
175}; 187};
176 188
177static void glantank_power_off(void) 189static void glantank_power_off(void)
diff --git a/arch/arm/mach-omap1/time.c b/arch/arm/mach-omap1/time.c
index 237651ebae5d..a4f8b2055437 100644
--- a/arch/arm/mach-omap1/time.c
+++ b/arch/arm/mach-omap1/time.c
@@ -132,13 +132,20 @@ static inline void omap_mpu_timer_start(int nr, unsigned long load_val,
132 timer->cntl = timerflags; 132 timer->cntl = timerflags;
133} 133}
134 134
135static inline void omap_mpu_timer_stop(int nr)
136{
137 volatile omap_mpu_timer_regs_t* timer = omap_mpu_timer_base(nr);
138
139 timer->cntl &= ~MPU_TIMER_ST;
140}
141
135/* 142/*
136 * --------------------------------------------------------------------------- 143 * ---------------------------------------------------------------------------
137 * MPU timer 1 ... count down to zero, interrupt, reload 144 * MPU timer 1 ... count down to zero, interrupt, reload
138 * --------------------------------------------------------------------------- 145 * ---------------------------------------------------------------------------
139 */ 146 */
140static int omap_mpu_set_next_event(unsigned long cycles, 147static int omap_mpu_set_next_event(unsigned long cycles,
141 struct clock_event_device *evt) 148 struct clock_event_device *evt)
142{ 149{
143 omap_mpu_timer_start(0, cycles, 0); 150 omap_mpu_timer_start(0, cycles, 0);
144 return 0; 151 return 0;
@@ -152,6 +159,7 @@ static void omap_mpu_set_mode(enum clock_event_mode mode,
152 omap_mpu_set_autoreset(0); 159 omap_mpu_set_autoreset(0);
153 break; 160 break;
154 case CLOCK_EVT_MODE_ONESHOT: 161 case CLOCK_EVT_MODE_ONESHOT:
162 omap_mpu_timer_stop(0);
155 omap_mpu_remove_autoreset(0); 163 omap_mpu_remove_autoreset(0);
156 break; 164 break;
157 case CLOCK_EVT_MODE_UNUSED: 165 case CLOCK_EVT_MODE_UNUSED:
@@ -163,7 +171,7 @@ static void omap_mpu_set_mode(enum clock_event_mode mode,
163 171
164static struct clock_event_device clockevent_mpu_timer1 = { 172static struct clock_event_device clockevent_mpu_timer1 = {
165 .name = "mpu_timer1", 173 .name = "mpu_timer1",
166 .features = CLOCK_EVT_FEAT_PERIODIC, CLOCK_EVT_FEAT_ONESHOT, 174 .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
167 .shift = 32, 175 .shift = 32,
168 .set_next_event = omap_mpu_set_next_event, 176 .set_next_event = omap_mpu_set_next_event,
169 .set_mode = omap_mpu_set_mode, 177 .set_mode = omap_mpu_set_mode,
diff --git a/arch/arm/mm/proc-xscale.S b/arch/arm/mm/proc-xscale.S
index c156ddab9a2d..016690b9d564 100644
--- a/arch/arm/mm/proc-xscale.S
+++ b/arch/arm/mm/proc-xscale.S
@@ -114,6 +114,10 @@ clean_addr: .word CLEAN_ADDR
114 * Nothing too exciting at the moment 114 * Nothing too exciting at the moment
115 */ 115 */
116ENTRY(cpu_xscale_proc_init) 116ENTRY(cpu_xscale_proc_init)
117 @ enable write buffer coalescing. Some bootloader disable it
118 mrc p15, 0, r1, c1, c0, 1
119 bic r1, r1, #1
120 mcr p15, 0, r1, c1, c0, 1
117 mov pc, lr 121 mov pc, lr
118 122
119/* 123/*
diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig
index c1f7e5a819a3..b917206ee906 100644
--- a/arch/arm/plat-omap/Kconfig
+++ b/arch/arm/plat-omap/Kconfig
@@ -11,7 +11,6 @@ choice
11 11
12config ARCH_OMAP1 12config ARCH_OMAP1
13 bool "TI OMAP1" 13 bool "TI OMAP1"
14 select GENERIC_CLOCKEVENTS
15 14
16config ARCH_OMAP2 15config ARCH_OMAP2
17 bool "TI OMAP2" 16 bool "TI OMAP2"
diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile
index ce17df31b845..8f56c255d1ee 100644
--- a/arch/arm/plat-omap/Makefile
+++ b/arch/arm/plat-omap/Makefile
@@ -14,9 +14,14 @@ obj-$(CONFIG_OMAP_32K_TIMER) += timer32k.o
14# OCPI interconnect support for 1710, 1610 and 5912 14# OCPI interconnect support for 1710, 1610 and 5912
15obj-$(CONFIG_ARCH_OMAP16XX) += ocpi.o 15obj-$(CONFIG_ARCH_OMAP16XX) += ocpi.o
16 16
17obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o
17 18
18obj-$(CONFIG_CPU_FREQ) += cpu-omap.o 19obj-$(CONFIG_CPU_FREQ) += cpu-omap.o
19obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o 20obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o
20obj-$(CONFIG_OMAP_DEBUG_DEVICES) += debug-devices.o 21obj-$(CONFIG_OMAP_DEBUG_DEVICES) += debug-devices.o
21obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o 22obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o
22obj-$(CONFIG_I2C_OMAP) += i2c.o 23obj-$(CONFIG_I2C_OMAP) += i2c.o
24
25# OMAP mailbox framework
26obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox.o
27
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c
index 91004a3c4794..793740686be2 100644
--- a/arch/arm/plat-omap/dma.c
+++ b/arch/arm/plat-omap/dma.c
@@ -1020,12 +1020,12 @@ static void create_dma_lch_chain(int lch_head, int lch_queue)
1020 } 1020 }
1021 1021
1022 w = OMAP_DMA_CLNK_CTRL_REG(lch_head); 1022 w = OMAP_DMA_CLNK_CTRL_REG(lch_head);
1023 w &= ~(0x0f); 1023 w &= ~(0x1f);
1024 w |= lch_queue; 1024 w |= lch_queue;
1025 OMAP_DMA_CLNK_CTRL_REG(lch_head) = w; 1025 OMAP_DMA_CLNK_CTRL_REG(lch_head) = w;
1026 1026
1027 w = OMAP_DMA_CLNK_CTRL_REG(lch_queue); 1027 w = OMAP_DMA_CLNK_CTRL_REG(lch_queue);
1028 w &= ~(0x0f); 1028 w &= ~(0x1f);
1029 w |= (dma_chan[lch_queue].next_linked_ch); 1029 w |= (dma_chan[lch_queue].next_linked_ch);
1030 OMAP_DMA_CLNK_CTRL_REG(lch_queue) = w; 1030 OMAP_DMA_CLNK_CTRL_REG(lch_queue) = w;
1031} 1031}
@@ -1248,7 +1248,7 @@ EXPORT_SYMBOL(omap_dma_chain_status);
1248 * @param frame_count 1248 * @param frame_count
1249 * @param callbk_data - channel callback parameter data. 1249 * @param callbk_data - channel callback parameter data.
1250 * 1250 *
1251 * @return - Success : start_dma status 1251 * @return - Success : 0
1252 * Failure: -EINVAL/-EBUSY 1252 * Failure: -EINVAL/-EBUSY
1253 */ 1253 */
1254int omap_dma_chain_a_transfer(int chain_id, int src_start, int dest_start, 1254int omap_dma_chain_a_transfer(int chain_id, int src_start, int dest_start,
@@ -1367,7 +1367,7 @@ int omap_dma_chain_a_transfer(int chain_id, int src_start, int dest_start,
1367 dma_chan[lch].flags |= OMAP_DMA_ACTIVE; 1367 dma_chan[lch].flags |= OMAP_DMA_ACTIVE;
1368 } 1368 }
1369 } 1369 }
1370 return start_dma; 1370 return 0;
1371} 1371}
1372EXPORT_SYMBOL(omap_dma_chain_a_transfer); 1372EXPORT_SYMBOL(omap_dma_chain_a_transfer);
1373 1373
@@ -1663,6 +1663,7 @@ static int omap2_dma_handle_ch(int ch)
1663 if (!status) { 1663 if (!status) {
1664 if (printk_ratelimit()) 1664 if (printk_ratelimit())
1665 printk(KERN_WARNING "Spurious DMA IRQ for lch %d\n", ch); 1665 printk(KERN_WARNING "Spurious DMA IRQ for lch %d\n", ch);
1666 omap_writel(1 << ch, OMAP_DMA4_IRQSTATUS_L0);
1666 return 0; 1667 return 0;
1667 } 1668 }
1668 if (unlikely(dma_chan[ch].dev_id == -1)) { 1669 if (unlikely(dma_chan[ch].dev_id == -1)) {
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c
index 66a1455595f4..8c78e4e57b5c 100644
--- a/arch/arm/plat-omap/gpio.c
+++ b/arch/arm/plat-omap/gpio.c
@@ -1134,10 +1134,9 @@ static void gpio_mask_irq(unsigned int irq)
1134static void gpio_unmask_irq(unsigned int irq) 1134static void gpio_unmask_irq(unsigned int irq)
1135{ 1135{
1136 unsigned int gpio = irq - IH_GPIO_BASE; 1136 unsigned int gpio = irq - IH_GPIO_BASE;
1137 unsigned int gpio_idx = get_gpio_index(gpio);
1138 struct gpio_bank *bank = get_irq_chip_data(irq); 1137 struct gpio_bank *bank = get_irq_chip_data(irq);
1139 1138
1140 _set_gpio_irqenable(bank, gpio_idx, 1); 1139 _set_gpio_irqenable(bank, gpio, 1);
1141} 1140}
1142 1141
1143static struct irq_chip gpio_irq_chip = { 1142static struct irq_chip gpio_irq_chip = {