diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-08-31 00:54:57 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-08-31 00:54:57 -0400 |
commit | feabb06bd70551668540f2305047675667f5f60f (patch) | |
tree | da65dedf73cae1e6fa59f923267a1b25501523a9 | |
parent | 62e6f1e8bb7c48c02b8bdb3085c5f6365682149b (diff) | |
parent | a98b38b83db3d377ede6b72cebe7ed2dc4127766 (diff) |
Merge master.kernel.org:/home/rmk/linux-2.6-arm
* master.kernel.org:/home/rmk/linux-2.6-arm:
[ARM] 4561/1: i.MX/MX1 GPIO parenthes omission and input setup fix
[ARM] 4557/1: Fix PXA irq gpio initialization
[ARM] 4551/1: s3c24xx: fix wrong virtual address offsets
[ARM] 4552/1: i.MX/MX1 GPIO output setup fix
[ARM] 4553/1: ARM at91: define FIQ_START
[ARM] 4554/1: replace consistent_sync() with flush_ioremap_region()
ARM: OMAP: Enable serial idling and wakeup features
ARM: OMAP2: Force APLLs always active
ARM: OMAP: H3 workqueue fixes
ARM: OMAP: OSK led fixes
ARM: OMAP: fix OMAP1 dmtimer build warning
ARM: OMAP: Fix 32k timer unsupported one-shot mode
-rw-r--r-- | arch/arm/Kconfig | 7 | ||||
-rw-r--r-- | arch/arm/mach-imx/generic.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-h3.c | 12 | ||||
-rw-r--r-- | arch/arm/mach-omap1/leds-osk.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-omap1/pm.c | 11 | ||||
-rw-r--r-- | arch/arm/mach-omap2/clock.c | 13 | ||||
-rw-r--r-- | arch/arm/mach-omap2/serial.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-pxa/irq.c | 2 | ||||
-rw-r--r-- | arch/arm/plat-omap/common.c | 2 | ||||
-rw-r--r-- | arch/arm/plat-omap/dmtimer.c | 5 | ||||
-rw-r--r-- | arch/arm/plat-omap/timer32k.c | 10 | ||||
-rw-r--r-- | drivers/mtd/maps/lubbock-flash.c | 6 | ||||
-rw-r--r-- | drivers/mtd/maps/mainstone-flash.c | 5 | ||||
-rw-r--r-- | include/asm-arm/arch-at91/irqs.h | 3 | ||||
-rw-r--r-- | include/asm-arm/arch-omap/irda.h | 1 | ||||
-rw-r--r-- | include/asm-arm/cacheflush.h | 7 | ||||
-rw-r--r-- | include/asm-arm/plat-s3c/map.h | 12 |
17 files changed, 49 insertions, 62 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index d6145298a325..691aae309c8a 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -721,7 +721,8 @@ config LEDS | |||
721 | 721 | ||
722 | config LEDS_TIMER | 722 | config LEDS_TIMER |
723 | bool "Timer LED" if (!ARCH_CDB89712 && !ARCH_OMAP) || \ | 723 | bool "Timer LED" if (!ARCH_CDB89712 && !ARCH_OMAP) || \ |
724 | MACH_OMAP_H2 || MACH_OMAP_PERSEUS2 | 724 | OMAP_OSK_MISTRAL || MACH_OMAP_H2 \ |
725 | || MACH_OMAP_PERSEUS2 | ||
725 | depends on LEDS | 726 | depends on LEDS |
726 | depends on !GENERIC_CLOCKEVENTS | 727 | depends on !GENERIC_CLOCKEVENTS |
727 | default y if ARCH_EBSA110 | 728 | default y if ARCH_EBSA110 |
@@ -738,7 +739,9 @@ config LEDS_TIMER | |||
738 | 739 | ||
739 | config LEDS_CPU | 740 | config LEDS_CPU |
740 | bool "CPU usage LED" if (!ARCH_CDB89712 && !ARCH_EBSA110 && \ | 741 | bool "CPU usage LED" if (!ARCH_CDB89712 && !ARCH_EBSA110 && \ |
741 | !ARCH_OMAP) || MACH_OMAP_H2 || MACH_OMAP_PERSEUS2 | 742 | !ARCH_OMAP) \ |
743 | || OMAP_OSK_MISTRAL || MACH_OMAP_H2 \ | ||
744 | || MACH_OMAP_PERSEUS2 | ||
742 | depends on LEDS | 745 | depends on LEDS |
743 | help | 746 | help |
744 | If you say Y here, the red LED will be used to give a good real | 747 | If you say Y here, the red LED will be used to give a good real |
diff --git a/arch/arm/mach-imx/generic.c b/arch/arm/mach-imx/generic.c index a58b678006df..4cfc9d3af28a 100644 --- a/arch/arm/mach-imx/generic.c +++ b/arch/arm/mach-imx/generic.c | |||
@@ -101,10 +101,11 @@ EXPORT_SYMBOL(imx_gpio_mode); | |||
101 | 101 | ||
102 | int imx_gpio_request(unsigned gpio, const char *label) | 102 | int imx_gpio_request(unsigned gpio, const char *label) |
103 | { | 103 | { |
104 | if(gpio >= (GPIO_PORT_MAX + 1) * 32) | 104 | if(gpio >= (GPIO_PORT_MAX + 1) * 32) { |
105 | printk(KERN_ERR "imx_gpio: Attempt to request nonexistent GPIO %d for \"%s\"\n", | 105 | printk(KERN_ERR "imx_gpio: Attempt to request nonexistent GPIO %d for \"%s\"\n", |
106 | gpio, label ? label : "?"); | 106 | gpio, label ? label : "?"); |
107 | return -EINVAL; | 107 | return -EINVAL; |
108 | } | ||
108 | 109 | ||
109 | if(test_and_set_bit(gpio, imx_gpio_alloc_map)) { | 110 | if(test_and_set_bit(gpio, imx_gpio_alloc_map)) { |
110 | printk(KERN_ERR "imx_gpio: GPIO %d already used. Allocation for \"%s\" failed\n", | 111 | printk(KERN_ERR "imx_gpio: GPIO %d already used. Allocation for \"%s\" failed\n", |
@@ -129,7 +130,7 @@ EXPORT_SYMBOL(imx_gpio_free); | |||
129 | 130 | ||
130 | int imx_gpio_direction_input(unsigned gpio) | 131 | int imx_gpio_direction_input(unsigned gpio) |
131 | { | 132 | { |
132 | imx_gpio_mode(gpio| GPIO_IN); | 133 | imx_gpio_mode(gpio | GPIO_IN | GPIO_GIUS | GPIO_DR); |
133 | return 0; | 134 | return 0; |
134 | } | 135 | } |
135 | 136 | ||
@@ -138,7 +139,7 @@ EXPORT_SYMBOL(imx_gpio_direction_input); | |||
138 | int imx_gpio_direction_output(unsigned gpio, int value) | 139 | int imx_gpio_direction_output(unsigned gpio, int value) |
139 | { | 140 | { |
140 | imx_gpio_set_value(gpio, value); | 141 | imx_gpio_set_value(gpio, value); |
141 | imx_gpio_mode(gpio| GPIO_OUT); | 142 | imx_gpio_mode(gpio | GPIO_OUT | GPIO_GIUS | GPIO_DR); |
142 | return 0; | 143 | return 0; |
143 | } | 144 | } |
144 | 145 | ||
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c index 7b260b7c537b..79d4ef4c54d4 100644 --- a/arch/arm/mach-omap1/board-h3.c +++ b/arch/arm/mach-omap1/board-h3.c | |||
@@ -294,9 +294,11 @@ static int h3_select_irda(struct device *dev, int state) | |||
294 | return err; | 294 | return err; |
295 | } | 295 | } |
296 | 296 | ||
297 | static void set_trans_mode(void *data) | 297 | static void set_trans_mode(struct work_struct *work) |
298 | { | 298 | { |
299 | int *mode = data; | 299 | struct omap_irda_config *irda_config = |
300 | container_of(work, struct omap_irda_config, gpio_expa.work); | ||
301 | int mode = irda_config->mode; | ||
300 | unsigned char expa; | 302 | unsigned char expa; |
301 | int err = 0; | 303 | int err = 0; |
302 | 304 | ||
@@ -306,7 +308,7 @@ static void set_trans_mode(void *data) | |||
306 | 308 | ||
307 | expa &= ~0x03; | 309 | expa &= ~0x03; |
308 | 310 | ||
309 | if (*mode & IR_SIRMODE) { | 311 | if (mode & IR_SIRMODE) { |
310 | expa |= 0x01; | 312 | expa |= 0x01; |
311 | } else { /* MIR/FIR */ | 313 | } else { /* MIR/FIR */ |
312 | expa |= 0x03; | 314 | expa |= 0x03; |
@@ -321,9 +323,9 @@ static int h3_transceiver_mode(struct device *dev, int mode) | |||
321 | { | 323 | { |
322 | struct omap_irda_config *irda_config = dev->platform_data; | 324 | struct omap_irda_config *irda_config = dev->platform_data; |
323 | 325 | ||
326 | irda_config->mode = mode; | ||
324 | cancel_delayed_work(&irda_config->gpio_expa); | 327 | cancel_delayed_work(&irda_config->gpio_expa); |
325 | PREPARE_WORK(&irda_config->gpio_expa, set_trans_mode, &mode); | 328 | PREPARE_DELAYED_WORK(&irda_config->gpio_expa, set_trans_mode); |
326 | #error this is not permitted - mode is an argument variable | ||
327 | schedule_delayed_work(&irda_config->gpio_expa, 0); | 329 | schedule_delayed_work(&irda_config->gpio_expa, 0); |
328 | 330 | ||
329 | return 0; | 331 | return 0; |
diff --git a/arch/arm/mach-omap1/leds-osk.c b/arch/arm/mach-omap1/leds-osk.c index 0cbf1b0071f8..86de303ecab2 100644 --- a/arch/arm/mach-omap1/leds-osk.c +++ b/arch/arm/mach-omap1/leds-osk.c | |||
@@ -133,13 +133,13 @@ void osk_leds_event(led_event_t evt) | |||
133 | mistral_setled(); | 133 | mistral_setled(); |
134 | break; | 134 | break; |
135 | 135 | ||
136 | case led_idle_start: | 136 | case led_idle_start: /* idle == off */ |
137 | hw_led_state |= IDLE_LED; | 137 | hw_led_state &= ~IDLE_LED; |
138 | mistral_setled(); | 138 | mistral_setled(); |
139 | break; | 139 | break; |
140 | 140 | ||
141 | case led_idle_end: | 141 | case led_idle_end: |
142 | hw_led_state &= ~IDLE_LED; | 142 | hw_led_state |= IDLE_LED; |
143 | mistral_setled(); | 143 | mistral_setled(); |
144 | break; | 144 | break; |
145 | 145 | ||
diff --git a/arch/arm/mach-omap1/pm.c b/arch/arm/mach-omap1/pm.c index 5bb348e2e315..2e68be607295 100644 --- a/arch/arm/mach-omap1/pm.c +++ b/arch/arm/mach-omap1/pm.c | |||
@@ -57,7 +57,6 @@ | |||
57 | #include <asm/arch/tc.h> | 57 | #include <asm/arch/tc.h> |
58 | #include <asm/arch/pm.h> | 58 | #include <asm/arch/pm.h> |
59 | #include <asm/arch/mux.h> | 59 | #include <asm/arch/mux.h> |
60 | #include <asm/arch/tps65010.h> | ||
61 | #include <asm/arch/dma.h> | 60 | #include <asm/arch/dma.h> |
62 | #include <asm/arch/dsp_common.h> | 61 | #include <asm/arch/dsp_common.h> |
63 | #include <asm/arch/dmtimer.h> | 62 | #include <asm/arch/dmtimer.h> |
@@ -250,11 +249,6 @@ void omap_pm_suspend(void) | |||
250 | 249 | ||
251 | omap_serial_wake_trigger(1); | 250 | omap_serial_wake_trigger(1); |
252 | 251 | ||
253 | if (machine_is_omap_osk()) { | ||
254 | /* Stop LED1 (D9) blink */ | ||
255 | tps65010_set_led(LED1, OFF); | ||
256 | } | ||
257 | |||
258 | if (!cpu_is_omap15xx()) | 252 | if (!cpu_is_omap15xx()) |
259 | omap_writew(0xffff, ULPD_SOFT_DISABLE_REQ_REG); | 253 | omap_writew(0xffff, ULPD_SOFT_DISABLE_REQ_REG); |
260 | 254 | ||
@@ -447,11 +441,6 @@ void omap_pm_suspend(void) | |||
447 | omap_serial_wake_trigger(0); | 441 | omap_serial_wake_trigger(0); |
448 | 442 | ||
449 | printk("PM: OMAP%x is re-starting from deep sleep...\n", system_rev); | 443 | printk("PM: OMAP%x is re-starting from deep sleep...\n", system_rev); |
450 | |||
451 | if (machine_is_omap_osk()) { | ||
452 | /* Let LED1 (D9) blink again */ | ||
453 | tps65010_set_led(LED1, BLINK); | ||
454 | } | ||
455 | } | 444 | } |
456 | 445 | ||
457 | #if defined(DEBUG) && defined(CONFIG_PROC_FS) | 446 | #if defined(DEBUG) && defined(CONFIG_PROC_FS) |
diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c index 588adb5ab47f..d9af4367f8bb 100644 --- a/arch/arm/mach-omap2/clock.c +++ b/arch/arm/mach-omap2/clock.c | |||
@@ -1160,8 +1160,8 @@ int __init omap2_clk_init(void) | |||
1160 | clk_enable(&sync_32k_ick); | 1160 | clk_enable(&sync_32k_ick); |
1161 | clk_enable(&omapctrl_ick); | 1161 | clk_enable(&omapctrl_ick); |
1162 | 1162 | ||
1163 | /* Force the APLLs active during bootup to avoid disabling and | 1163 | /* Force the APLLs always active. The clocks are idled |
1164 | * enabling them unnecessarily. */ | 1164 | * automatically by hardware. */ |
1165 | clk_enable(&apll96_ck); | 1165 | clk_enable(&apll96_ck); |
1166 | clk_enable(&apll54_ck); | 1166 | clk_enable(&apll54_ck); |
1167 | 1167 | ||
@@ -1174,12 +1174,3 @@ int __init omap2_clk_init(void) | |||
1174 | 1174 | ||
1175 | return 0; | 1175 | return 0; |
1176 | } | 1176 | } |
1177 | |||
1178 | static int __init omap2_disable_aplls(void) | ||
1179 | { | ||
1180 | clk_disable(&apll96_ck); | ||
1181 | clk_disable(&apll54_ck); | ||
1182 | |||
1183 | return 0; | ||
1184 | } | ||
1185 | late_initcall(omap2_disable_aplls); | ||
diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c index aaa5589e8169..e9c367fc9f61 100644 --- a/arch/arm/mach-omap2/serial.c +++ b/arch/arm/mach-omap2/serial.c | |||
@@ -84,7 +84,7 @@ static inline void __init omap_serial_reset(struct plat_serial8250_port *p) | |||
84 | serial_write_reg(p, UART_OMAP_MDR1, 0x07); | 84 | serial_write_reg(p, UART_OMAP_MDR1, 0x07); |
85 | serial_write_reg(p, UART_OMAP_SCR, 0x08); | 85 | serial_write_reg(p, UART_OMAP_SCR, 0x08); |
86 | serial_write_reg(p, UART_OMAP_MDR1, 0x00); | 86 | serial_write_reg(p, UART_OMAP_MDR1, 0x00); |
87 | serial_write_reg(p, UART_OMAP_SYSC, 0x01); | 87 | serial_write_reg(p, UART_OMAP_SYSC, (0x02 << 3) | (1 << 2) | (1 << 0)); |
88 | } | 88 | } |
89 | 89 | ||
90 | void __init omap_serial_init() | 90 | void __init omap_serial_init() |
diff --git a/arch/arm/mach-pxa/irq.c b/arch/arm/mach-pxa/irq.c index 4b867b0789d5..ae2ae08032d7 100644 --- a/arch/arm/mach-pxa/irq.c +++ b/arch/arm/mach-pxa/irq.c | |||
@@ -365,7 +365,7 @@ void __init pxa_init_irq_gpio(int gpio_nr) | |||
365 | set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); | 365 | set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); |
366 | } | 366 | } |
367 | 367 | ||
368 | for (irq = IRQ_GPIO(2); irq <= IRQ_GPIO(gpio_nr); irq++) { | 368 | for (irq = IRQ_GPIO(2); irq < IRQ_GPIO(gpio_nr); irq++) { |
369 | set_irq_chip(irq, &pxa_muxed_gpio_chip); | 369 | set_irq_chip(irq, &pxa_muxed_gpio_chip); |
370 | set_irq_handler(irq, handle_edge_irq); | 370 | set_irq_handler(irq, handle_edge_irq); |
371 | set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); | 371 | set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); |
diff --git a/arch/arm/plat-omap/common.c b/arch/arm/plat-omap/common.c index 7987aa6e95f8..4f0f9c4e938e 100644 --- a/arch/arm/plat-omap/common.c +++ b/arch/arm/plat-omap/common.c | |||
@@ -172,7 +172,7 @@ console_initcall(omap_add_serial_console); | |||
172 | #if defined(CONFIG_ARCH_OMAP16XX) | 172 | #if defined(CONFIG_ARCH_OMAP16XX) |
173 | #define TIMER_32K_SYNCHRONIZED 0xfffbc410 | 173 | #define TIMER_32K_SYNCHRONIZED 0xfffbc410 |
174 | #elif defined(CONFIG_ARCH_OMAP24XX) | 174 | #elif defined(CONFIG_ARCH_OMAP24XX) |
175 | #define TIMER_32K_SYNCHRONIZED 0x48004010 | 175 | #define TIMER_32K_SYNCHRONIZED (OMAP24XX_32KSYNCT_BASE + 0x10) |
176 | #endif | 176 | #endif |
177 | 177 | ||
178 | #ifdef TIMER_32K_SYNCHRONIZED | 178 | #ifdef TIMER_32K_SYNCHRONIZED |
diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c index 36073dfaa4db..3856f5aedfc1 100644 --- a/arch/arm/plat-omap/dmtimer.c +++ b/arch/arm/plat-omap/dmtimer.c | |||
@@ -271,11 +271,6 @@ int omap_dm_timer_get_irq(struct omap_dm_timer *timer) | |||
271 | 271 | ||
272 | #if defined(CONFIG_ARCH_OMAP1) | 272 | #if defined(CONFIG_ARCH_OMAP1) |
273 | 273 | ||
274 | struct clk *omap_dm_timer_get_fclk(struct omap_dm_timer *timer) | ||
275 | { | ||
276 | BUG(); | ||
277 | } | ||
278 | |||
279 | /** | 274 | /** |
280 | * omap_dm_timer_modify_idlect_mask - Check if any running timers use ARMXOR | 275 | * omap_dm_timer_modify_idlect_mask - Check if any running timers use ARMXOR |
281 | * @inputmask: current value of idlect mask | 276 | * @inputmask: current value of idlect mask |
diff --git a/arch/arm/plat-omap/timer32k.c b/arch/arm/plat-omap/timer32k.c index b0af014b0e2c..ea76f1979a3d 100644 --- a/arch/arm/plat-omap/timer32k.c +++ b/arch/arm/plat-omap/timer32k.c | |||
@@ -71,7 +71,7 @@ struct sys_timer omap_timer; | |||
71 | #if defined(CONFIG_ARCH_OMAP16XX) | 71 | #if defined(CONFIG_ARCH_OMAP16XX) |
72 | #define TIMER_32K_SYNCHRONIZED 0xfffbc410 | 72 | #define TIMER_32K_SYNCHRONIZED 0xfffbc410 |
73 | #elif defined(CONFIG_ARCH_OMAP24XX) | 73 | #elif defined(CONFIG_ARCH_OMAP24XX) |
74 | #define TIMER_32K_SYNCHRONIZED 0x48004010 | 74 | #define TIMER_32K_SYNCHRONIZED (OMAP24XX_32KSYNCT_BASE + 0x10) |
75 | #else | 75 | #else |
76 | #error OMAP 32KHz timer does not currently work on 15XX! | 76 | #error OMAP 32KHz timer does not currently work on 15XX! |
77 | #endif | 77 | #endif |
@@ -147,14 +147,15 @@ static inline void omap_32k_timer_ack_irq(void) | |||
147 | static void omap_32k_timer_set_mode(enum clock_event_mode mode, | 147 | static void omap_32k_timer_set_mode(enum clock_event_mode mode, |
148 | struct clock_event_device *evt) | 148 | struct clock_event_device *evt) |
149 | { | 149 | { |
150 | omap_32k_timer_stop(); | ||
151 | |||
150 | switch (mode) { | 152 | switch (mode) { |
151 | case CLOCK_EVT_MODE_ONESHOT: | ||
152 | case CLOCK_EVT_MODE_PERIODIC: | 153 | case CLOCK_EVT_MODE_PERIODIC: |
153 | omap_32k_timer_start(OMAP_32K_TIMER_TICK_PERIOD); | 154 | omap_32k_timer_start(OMAP_32K_TIMER_TICK_PERIOD); |
154 | break; | 155 | break; |
156 | case CLOCK_EVT_MODE_ONESHOT: | ||
155 | case CLOCK_EVT_MODE_UNUSED: | 157 | case CLOCK_EVT_MODE_UNUSED: |
156 | case CLOCK_EVT_MODE_SHUTDOWN: | 158 | case CLOCK_EVT_MODE_SHUTDOWN: |
157 | omap_32k_timer_stop(); | ||
158 | break; | 159 | break; |
159 | case CLOCK_EVT_MODE_RESUME: | 160 | case CLOCK_EVT_MODE_RESUME: |
160 | break; | 161 | break; |
@@ -194,8 +195,6 @@ omap_32k_ticks_to_nsecs(unsigned long ticks_32k) | |||
194 | return (unsigned long long) ticks_32k * 1000 * 5*5*5*5*5*5 >> 9; | 195 | return (unsigned long long) ticks_32k * 1000 * 5*5*5*5*5*5 >> 9; |
195 | } | 196 | } |
196 | 197 | ||
197 | static unsigned long omap_32k_last_tick = 0; | ||
198 | |||
199 | /* | 198 | /* |
200 | * Returns current time from boot in nsecs. It's OK for this to wrap | 199 | * Returns current time from boot in nsecs. It's OK for this to wrap |
201 | * around for now, as it's just a relative time stamp. | 200 | * around for now, as it's just a relative time stamp. |
@@ -225,7 +224,6 @@ static __init void omap_init_32k_timer(void) | |||
225 | { | 224 | { |
226 | if (cpu_class_is_omap1()) | 225 | if (cpu_class_is_omap1()) |
227 | setup_irq(INT_OS_TIMER, &omap_32k_timer_irq); | 226 | setup_irq(INT_OS_TIMER, &omap_32k_timer_irq); |
228 | omap_32k_last_tick = omap_32k_sync_timer_read(); | ||
229 | 227 | ||
230 | #ifdef CONFIG_ARCH_OMAP2 | 228 | #ifdef CONFIG_ARCH_OMAP2 |
231 | /* REVISIT: Check 24xx TIOCP_CFG settings after idle works */ | 229 | /* REVISIT: Check 24xx TIOCP_CFG settings after idle works */ |
diff --git a/drivers/mtd/maps/lubbock-flash.c b/drivers/mtd/maps/lubbock-flash.c index 1aa0447c5e66..e8560683b973 100644 --- a/drivers/mtd/maps/lubbock-flash.c +++ b/drivers/mtd/maps/lubbock-flash.c | |||
@@ -15,9 +15,7 @@ | |||
15 | #include <linux/types.h> | 15 | #include <linux/types.h> |
16 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | #include <linux/slab.h> | ||
19 | 18 | ||
20 | #include <linux/dma-mapping.h> | ||
21 | #include <linux/mtd/mtd.h> | 19 | #include <linux/mtd/mtd.h> |
22 | #include <linux/mtd/map.h> | 20 | #include <linux/mtd/map.h> |
23 | #include <linux/mtd/partitions.h> | 21 | #include <linux/mtd/partitions.h> |
@@ -26,7 +24,7 @@ | |||
26 | #include <asm/hardware.h> | 24 | #include <asm/hardware.h> |
27 | #include <asm/arch/pxa-regs.h> | 25 | #include <asm/arch/pxa-regs.h> |
28 | #include <asm/arch/lubbock.h> | 26 | #include <asm/arch/lubbock.h> |
29 | 27 | #include <asm/cacheflush.h> | |
30 | 28 | ||
31 | #define ROM_ADDR 0x00000000 | 29 | #define ROM_ADDR 0x00000000 |
32 | #define FLASH_ADDR 0x04000000 | 30 | #define FLASH_ADDR 0x04000000 |
@@ -35,7 +33,7 @@ | |||
35 | 33 | ||
36 | static void lubbock_map_inval_cache(struct map_info *map, unsigned long from, ssize_t len) | 34 | static void lubbock_map_inval_cache(struct map_info *map, unsigned long from, ssize_t len) |
37 | { | 35 | { |
38 | consistent_sync((char *)map->cached + from, len, DMA_FROM_DEVICE); | 36 | flush_ioremap_region(map->phys, map->cached, from, len); |
39 | } | 37 | } |
40 | 38 | ||
41 | static struct map_info lubbock_maps[2] = { { | 39 | static struct map_info lubbock_maps[2] = { { |
diff --git a/drivers/mtd/maps/mainstone-flash.c b/drivers/mtd/maps/mainstone-flash.c index eaa4bbb868a3..d76487d82dcd 100644 --- a/drivers/mtd/maps/mainstone-flash.c +++ b/drivers/mtd/maps/mainstone-flash.c | |||
@@ -15,8 +15,6 @@ | |||
15 | #include <linux/types.h> | 15 | #include <linux/types.h> |
16 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | #include <linux/dma-mapping.h> | ||
19 | #include <linux/slab.h> | ||
20 | 18 | ||
21 | #include <linux/mtd/mtd.h> | 19 | #include <linux/mtd/mtd.h> |
22 | #include <linux/mtd/map.h> | 20 | #include <linux/mtd/map.h> |
@@ -26,6 +24,7 @@ | |||
26 | #include <asm/hardware.h> | 24 | #include <asm/hardware.h> |
27 | #include <asm/arch/pxa-regs.h> | 25 | #include <asm/arch/pxa-regs.h> |
28 | #include <asm/arch/mainstone.h> | 26 | #include <asm/arch/mainstone.h> |
27 | #include <asm/cacheflush.h> | ||
29 | 28 | ||
30 | 29 | ||
31 | #define ROM_ADDR 0x00000000 | 30 | #define ROM_ADDR 0x00000000 |
@@ -36,7 +35,7 @@ | |||
36 | static void mainstone_map_inval_cache(struct map_info *map, unsigned long from, | 35 | static void mainstone_map_inval_cache(struct map_info *map, unsigned long from, |
37 | ssize_t len) | 36 | ssize_t len) |
38 | { | 37 | { |
39 | consistent_sync((char *)map->cached + from, len, DMA_FROM_DEVICE); | 38 | flush_ioremap_region(map->phys, map->cached, from, len); |
40 | } | 39 | } |
41 | 40 | ||
42 | static struct map_info mainstone_maps[2] = { { | 41 | static struct map_info mainstone_maps[2] = { { |
diff --git a/include/asm-arm/arch-at91/irqs.h b/include/asm-arm/arch-at91/irqs.h index 1127a3b5e928..70b1216dce5d 100644 --- a/include/asm-arm/arch-at91/irqs.h +++ b/include/asm-arm/arch-at91/irqs.h | |||
@@ -42,4 +42,7 @@ | |||
42 | */ | 42 | */ |
43 | #define NR_IRQS (NR_AIC_IRQS + (5 * 32)) | 43 | #define NR_IRQS (NR_AIC_IRQS + (5 * 32)) |
44 | 44 | ||
45 | /* FIQ is AIC source 0. */ | ||
46 | #define FIQ_START AT91_ID_FIQ | ||
47 | |||
45 | #endif | 48 | #endif |
diff --git a/include/asm-arm/arch-omap/irda.h b/include/asm-arm/arch-omap/irda.h index 345a649ec838..96bb12fab438 100644 --- a/include/asm-arm/arch-omap/irda.h +++ b/include/asm-arm/arch-omap/irda.h | |||
@@ -31,6 +31,7 @@ struct omap_irda_config { | |||
31 | unsigned long src_start; | 31 | unsigned long src_start; |
32 | int tx_trigger; | 32 | int tx_trigger; |
33 | int rx_trigger; | 33 | int rx_trigger; |
34 | int mode; | ||
34 | }; | 35 | }; |
35 | 36 | ||
36 | #endif | 37 | #endif |
diff --git a/include/asm-arm/cacheflush.h b/include/asm-arm/cacheflush.h index d1294a46c70c..6c1c968b2987 100644 --- a/include/asm-arm/cacheflush.h +++ b/include/asm-arm/cacheflush.h | |||
@@ -426,6 +426,13 @@ static inline void flush_anon_page(struct vm_area_struct *vma, | |||
426 | */ | 426 | */ |
427 | #define flush_icache_page(vma,page) do { } while (0) | 427 | #define flush_icache_page(vma,page) do { } while (0) |
428 | 428 | ||
429 | static inline void flush_ioremap_region(unsigned long phys, void __iomem *virt, | ||
430 | unsigned offset, size_t size) | ||
431 | { | ||
432 | const void *start = (void __force *)virt + offset; | ||
433 | dmac_inv_range(start, start + size); | ||
434 | } | ||
435 | |||
429 | #define __cacheid_present(val) (val != read_cpuid(CPUID_ID)) | 436 | #define __cacheid_present(val) (val != read_cpuid(CPUID_ID)) |
430 | #define __cacheid_type_v7(val) ((val & (7 << 29)) == (4 << 29)) | 437 | #define __cacheid_type_v7(val) ((val & (7 << 29)) == (4 << 29)) |
431 | 438 | ||
diff --git a/include/asm-arm/plat-s3c/map.h b/include/asm-arm/plat-s3c/map.h index 95a82b0e84a1..b84289d32a54 100644 --- a/include/asm-arm/plat-s3c/map.h +++ b/include/asm-arm/plat-s3c/map.h | |||
@@ -30,11 +30,11 @@ | |||
30 | #define S3C_ADDR(x) (S3C_ADDR_BASE + (x)) | 30 | #define S3C_ADDR(x) (S3C_ADDR_BASE + (x)) |
31 | #endif | 31 | #endif |
32 | 32 | ||
33 | #define S3C_VA_IRQ S3C_ADDR(0x000000000) /* irq controller(s) */ | 33 | #define S3C_VA_IRQ S3C_ADDR(0x00000000) /* irq controller(s) */ |
34 | #define S3C_VA_SYS S3C_ADDR(0x001000000) /* system control */ | 34 | #define S3C_VA_SYS S3C_ADDR(0x00100000) /* system control */ |
35 | #define S3C_VA_MEM S3C_ADDR(0x002000000) /* system control */ | 35 | #define S3C_VA_MEM S3C_ADDR(0x00200000) /* system control */ |
36 | #define S3C_VA_TIMER S3C_ADDR(0x003000000) /* timer block */ | 36 | #define S3C_VA_TIMER S3C_ADDR(0x00300000) /* timer block */ |
37 | #define S3C_VA_WATCHDOG S3C_ADDR(0x004000000) /* watchdog */ | 37 | #define S3C_VA_WATCHDOG S3C_ADDR(0x00400000) /* watchdog */ |
38 | #define S3C_VA_UART S3C_ADDR(0x010000000) /* UART */ | 38 | #define S3C_VA_UART S3C_ADDR(0x01000000) /* UART */ |
39 | 39 | ||
40 | #endif /* __ASM_PLAT_MAP_H */ | 40 | #endif /* __ASM_PLAT_MAP_H */ |