diff options
author | David S. Miller <davem@davemloft.net> | 2008-04-03 17:33:42 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-04-03 17:33:42 -0400 |
commit | 3bb5da3837cc1aa17736b05139c9a22c3794851a (patch) | |
tree | c92d5684a866542b1cb20641607ac1643ce03a47 /arch/arm | |
parent | 7feb49c82a74bc7c091b8ab2a3f96baa33d08ece (diff) | |
parent | 9597362d354f8655ece324b01d0c640a0e99c077 (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/Kconfig | 1 | ||||
-rw-r--r-- | arch/arm/common/it8152.c | 5 | ||||
-rw-r--r-- | arch/arm/kernel/calls.S | 2 | ||||
-rw-r--r-- | arch/arm/kernel/signal.c | 4 | ||||
-rw-r--r-- | arch/arm/kernel/sys_oabi-compat.c | 24 | ||||
-rw-r--r-- | arch/arm/mach-iop32x/glantank.c | 12 | ||||
-rw-r--r-- | arch/arm/mach-omap1/time.c | 12 | ||||
-rw-r--r-- | arch/arm/mm/proc-xscale.S | 4 | ||||
-rw-r--r-- | arch/arm/plat-omap/Kconfig | 1 | ||||
-rw-r--r-- | arch/arm/plat-omap/Makefile | 5 | ||||
-rw-r--r-- | arch/arm/plat-omap/dma.c | 9 | ||||
-rw-r--r-- | arch/arm/plat-omap/gpio.c | 3 |
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 | ||
173 | asmlinkage 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 | |||
192 | out: | ||
193 | return error; | ||
194 | } | ||
195 | |||
172 | struct oabi_flock64 { | 196 | struct 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 | ||
172 | static struct f75375s_platform_data glantank_f75375s = { | ||
173 | .pwm = { 255, 255 }, | ||
174 | .pwm_enable = { 0, 0 }, | ||
175 | }; | ||
176 | |||
170 | static struct i2c_board_info __initdata glantank_i2c_devices[] = { | 177 | static 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 | ||
177 | static void glantank_power_off(void) | 189 | static 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 | ||
135 | static 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 | */ |
140 | static int omap_mpu_set_next_event(unsigned long cycles, | 147 | static 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 | ||
164 | static struct clock_event_device clockevent_mpu_timer1 = { | 172 | static 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 | */ |
116 | ENTRY(cpu_xscale_proc_init) | 116 | ENTRY(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 | ||
12 | config ARCH_OMAP1 | 12 | config ARCH_OMAP1 |
13 | bool "TI OMAP1" | 13 | bool "TI OMAP1" |
14 | select GENERIC_CLOCKEVENTS | ||
15 | 14 | ||
16 | config ARCH_OMAP2 | 15 | config 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 |
15 | obj-$(CONFIG_ARCH_OMAP16XX) += ocpi.o | 15 | obj-$(CONFIG_ARCH_OMAP16XX) += ocpi.o |
16 | 16 | ||
17 | obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o | ||
17 | 18 | ||
18 | obj-$(CONFIG_CPU_FREQ) += cpu-omap.o | 19 | obj-$(CONFIG_CPU_FREQ) += cpu-omap.o |
19 | obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o | 20 | obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o |
20 | obj-$(CONFIG_OMAP_DEBUG_DEVICES) += debug-devices.o | 21 | obj-$(CONFIG_OMAP_DEBUG_DEVICES) += debug-devices.o |
21 | obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o | 22 | obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o |
22 | obj-$(CONFIG_I2C_OMAP) += i2c.o | 23 | obj-$(CONFIG_I2C_OMAP) += i2c.o |
24 | |||
25 | # OMAP mailbox framework | ||
26 | obj-$(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 | */ |
1254 | int omap_dma_chain_a_transfer(int chain_id, int src_start, int dest_start, | 1254 | int 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 | } |
1372 | EXPORT_SYMBOL(omap_dma_chain_a_transfer); | 1372 | EXPORT_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) | |||
1134 | static void gpio_unmask_irq(unsigned int irq) | 1134 | static 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 | ||
1143 | static struct irq_chip gpio_irq_chip = { | 1142 | static struct irq_chip gpio_irq_chip = { |