diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-29 19:18:19 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-29 19:18:19 -0400 |
commit | ec9c45d456fd7f1e400c75e6c8040d1deb9d4fff (patch) | |
tree | 1266a162bbb28e4f85f6327c8c2bb19f95170e8d | |
parent | aa221cb61792b941234ab458020c93ed97810161 (diff) | |
parent | 59c5fe6d848cae8fd51498d17532f5aad3866f98 (diff) |
Merge master.kernel.org:/home/rmk/linux-2.6-arm
* master.kernel.org:/home/rmk/linux-2.6-arm: (28 commits)
[ARM] 5562/2: at91: add gpio button support for at91sam9g20ek
[ARM] 5563/1: at91: at91sam9rlek lcd interface correction
[ARM] 5565/2: Use PAGE_SIZE and RO_DATA() in link script
[ARM] 5560/1: Avoid buffer overrun in case of an invalid IRQ
[ARM] GTA02: build fixes (s3c2410_nand_set usage)
[ARM] MINI2440: Add missing flash_bbt flat to NAND
[ARM] s3c2410_defconfig: add MINI2440 machine to build
[ARM] S3C: Fix S3C24XX build to not include s3c64xx IIS devices
[ARM] S3C24XX: Fix missing s3c_iis_device.
[ARM] MINI2440: remove duplicated #include
[ARM] S3C24XX: Fix spi-bus configuration build errors
OMAP: Fix IOMEM macro for assembly
[ARM] S3C: Remove unused CONFIG_DEBUG_S3C_PORT
[ARM] S3C24XX: Fix use of CONFIG_S3C24XX_PWM
OMAP2/3: Initialize gpio debounce register
OMAP: IOMMU: function flush_iotlb_page is not flushing correct entry
OMAP3: RX51: Use OneNAND sync read / write
OMAP2/3: gpmc-onenand: correct use of async timings
OMAP3: DMA: Enable idlemodes for DMA OCP
OMAP3: SRAM size fix for HS/EMU devices
...
31 files changed, 232 insertions, 71 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 3ba68dc9fe48..05a9a563042f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -867,12 +867,22 @@ M: alex@shark-linux.de | |||
867 | W: http://www.shark-linux.de/shark.html | 867 | W: http://www.shark-linux.de/shark.html |
868 | S: Maintained | 868 | S: Maintained |
869 | 869 | ||
870 | ARM/SAMSUNG ARM ARCHITECTURES | ||
871 | P: Ben Dooks | ||
872 | M: ben-linux@fluff.org | ||
873 | L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) | ||
874 | W: http://www.fluff.org/ben/linux/ | ||
875 | S: Maintained | ||
876 | F: arch/arm/plat-s3c/ | ||
877 | F: arch/arm/plat-s3c24xx/ | ||
878 | |||
870 | ARM/S3C2410 ARM ARCHITECTURE | 879 | ARM/S3C2410 ARM ARCHITECTURE |
871 | P: Ben Dooks | 880 | P: Ben Dooks |
872 | M: ben-linux@fluff.org | 881 | M: ben-linux@fluff.org |
873 | L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) | 882 | L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) |
874 | W: http://www.fluff.org/ben/linux/ | 883 | W: http://www.fluff.org/ben/linux/ |
875 | S: Maintained | 884 | S: Maintained |
885 | F: arch/arm/mach-s3c2410/ | ||
876 | 886 | ||
877 | ARM/S3C2440 ARM ARCHITECTURE | 887 | ARM/S3C2440 ARM ARCHITECTURE |
878 | P: Ben Dooks | 888 | P: Ben Dooks |
@@ -880,6 +890,39 @@ M: ben-linux@fluff.org | |||
880 | L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) | 890 | L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) |
881 | W: http://www.fluff.org/ben/linux/ | 891 | W: http://www.fluff.org/ben/linux/ |
882 | S: Maintained | 892 | S: Maintained |
893 | F: arch/arm/mach-s3c2440/ | ||
894 | |||
895 | ARM/S3C2442 ARM ARCHITECTURE | ||
896 | P: Ben Dooks | ||
897 | M: ben-linux@fluff.org | ||
898 | L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) | ||
899 | W: http://www.fluff.org/ben/linux/ | ||
900 | S: Maintained | ||
901 | F: arch/arm/mach-s3c2442/ | ||
902 | |||
903 | ARM/S3C2443 ARM ARCHITECTURE | ||
904 | P: Ben Dooks | ||
905 | M: ben-linux@fluff.org | ||
906 | L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) | ||
907 | W: http://www.fluff.org/ben/linux/ | ||
908 | S: Maintained | ||
909 | F: arch/arm/mach-s3c2443/ | ||
910 | |||
911 | ARM/S3C6400 ARM ARCHITECTURE | ||
912 | P: Ben Dooks | ||
913 | M: ben-linux@fluff.org | ||
914 | L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) | ||
915 | W: http://www.fluff.org/ben/linux/ | ||
916 | S: Maintained | ||
917 | F: arch/arm/mach-s3c6400/ | ||
918 | |||
919 | ARM/S3C6410 ARM ARCHITECTURE | ||
920 | P: Ben Dooks | ||
921 | M: ben-linux@fluff.org | ||
922 | L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) | ||
923 | W: http://www.fluff.org/ben/linux/ | ||
924 | S: Maintained | ||
925 | F: arch/arm/mach-s3c6410/ | ||
883 | 926 | ||
884 | ARM/TECHNOLOGIC SYSTEMS TS7250 MACHINE SUPPORT | 927 | ARM/TECHNOLOGIC SYSTEMS TS7250 MACHINE SUPPORT |
885 | P: Lennert Buytenhek | 928 | P: Lennert Buytenhek |
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug index a71fd941ade7..a89e4734b8f0 100644 --- a/arch/arm/Kconfig.debug +++ b/arch/arm/Kconfig.debug | |||
@@ -99,14 +99,6 @@ config DEBUG_CLPS711X_UART2 | |||
99 | output to the second serial port on these devices. Saying N will | 99 | output to the second serial port on these devices. Saying N will |
100 | cause the debug messages to appear on the first serial port. | 100 | cause the debug messages to appear on the first serial port. |
101 | 101 | ||
102 | config DEBUG_S3C_PORT | ||
103 | depends on DEBUG_LL && PLAT_S3C | ||
104 | bool "Kernel low-level debugging messages via S3C UART" | ||
105 | help | ||
106 | Say Y here if you want debug print routines to go to one of the | ||
107 | S3C internal UARTs. The chosen UART must have been configured | ||
108 | before it is used. | ||
109 | |||
110 | config DEBUG_S3C_UART | 102 | config DEBUG_S3C_UART |
111 | depends on PLAT_S3C | 103 | depends on PLAT_S3C |
112 | int "S3C UART to use for low-level debug" | 104 | int "S3C UART to use for low-level debug" |
diff --git a/arch/arm/configs/s3c2410_defconfig b/arch/arm/configs/s3c2410_defconfig index 2d58b8fe59be..b49810461e41 100644 --- a/arch/arm/configs/s3c2410_defconfig +++ b/arch/arm/configs/s3c2410_defconfig | |||
@@ -260,6 +260,7 @@ CONFIG_MACH_NEXCODER_2440=y | |||
260 | CONFIG_SMDK2440_CPU2440=y | 260 | CONFIG_SMDK2440_CPU2440=y |
261 | CONFIG_MACH_AT2440EVB=y | 261 | CONFIG_MACH_AT2440EVB=y |
262 | CONFIG_CPU_S3C2442=y | 262 | CONFIG_CPU_S3C2442=y |
263 | CONFIG_MACH_MINI2440=y | ||
263 | 264 | ||
264 | # | 265 | # |
265 | # S3C2442 Machines | 266 | # S3C2442 Machines |
@@ -2298,7 +2299,6 @@ CONFIG_DEBUG_ERRORS=y | |||
2298 | # CONFIG_DEBUG_STACK_USAGE is not set | 2299 | # CONFIG_DEBUG_STACK_USAGE is not set |
2299 | CONFIG_DEBUG_LL=y | 2300 | CONFIG_DEBUG_LL=y |
2300 | # CONFIG_DEBUG_ICEDCC is not set | 2301 | # CONFIG_DEBUG_ICEDCC is not set |
2301 | CONFIG_DEBUG_S3C_PORT=y | ||
2302 | CONFIG_DEBUG_S3C_UART=0 | 2302 | CONFIG_DEBUG_S3C_UART=0 |
2303 | 2303 | ||
2304 | # | 2304 | # |
diff --git a/arch/arm/configs/s3c6400_defconfig b/arch/arm/configs/s3c6400_defconfig index 2e8fa50e9a09..32860609e057 100644 --- a/arch/arm/configs/s3c6400_defconfig +++ b/arch/arm/configs/s3c6400_defconfig | |||
@@ -816,7 +816,6 @@ CONFIG_DEBUG_ERRORS=y | |||
816 | # CONFIG_DEBUG_STACK_USAGE is not set | 816 | # CONFIG_DEBUG_STACK_USAGE is not set |
817 | CONFIG_DEBUG_LL=y | 817 | CONFIG_DEBUG_LL=y |
818 | # CONFIG_DEBUG_ICEDCC is not set | 818 | # CONFIG_DEBUG_ICEDCC is not set |
819 | CONFIG_DEBUG_S3C_PORT=y | ||
820 | CONFIG_DEBUG_S3C_UART=0 | 819 | CONFIG_DEBUG_S3C_UART=0 |
821 | 820 | ||
822 | # | 821 | # |
diff --git a/arch/arm/configs/tct_hammer_defconfig b/arch/arm/configs/tct_hammer_defconfig index 07dfb98df4f0..9d32faef05f6 100644 --- a/arch/arm/configs/tct_hammer_defconfig +++ b/arch/arm/configs/tct_hammer_defconfig | |||
@@ -857,7 +857,6 @@ CONFIG_DEBUG_ERRORS=y | |||
857 | # CONFIG_DEBUG_STACK_USAGE is not set | 857 | # CONFIG_DEBUG_STACK_USAGE is not set |
858 | CONFIG_DEBUG_LL=y | 858 | CONFIG_DEBUG_LL=y |
859 | # CONFIG_DEBUG_ICEDCC is not set | 859 | # CONFIG_DEBUG_ICEDCC is not set |
860 | # CONFIG_DEBUG_S3C_PORT is not set | ||
861 | CONFIG_DEBUG_S3C_UART=0 | 860 | CONFIG_DEBUG_S3C_UART=0 |
862 | 861 | ||
863 | # | 862 | # |
diff --git a/arch/arm/include/asm/page.h b/arch/arm/include/asm/page.h index be962c1349c4..9c746af1bf6e 100644 --- a/arch/arm/include/asm/page.h +++ b/arch/arm/include/asm/page.h | |||
@@ -12,7 +12,7 @@ | |||
12 | 12 | ||
13 | /* PAGE_SHIFT determines the page size */ | 13 | /* PAGE_SHIFT determines the page size */ |
14 | #define PAGE_SHIFT 12 | 14 | #define PAGE_SHIFT 12 |
15 | #define PAGE_SIZE (1UL << PAGE_SHIFT) | 15 | #define PAGE_SIZE (_AC(1,UL) << PAGE_SHIFT) |
16 | #define PAGE_MASK (~(PAGE_SIZE-1)) | 16 | #define PAGE_MASK (~(PAGE_SIZE-1)) |
17 | 17 | ||
18 | #ifndef __ASSEMBLY__ | 18 | #ifndef __ASSEMBLY__ |
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index 096f600dc8d8..b7c3490eaa24 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c | |||
@@ -98,17 +98,6 @@ unlock: | |||
98 | return 0; | 98 | return 0; |
99 | } | 99 | } |
100 | 100 | ||
101 | /* Handle bad interrupts */ | ||
102 | static struct irq_desc bad_irq_desc = { | ||
103 | .handle_irq = handle_bad_irq, | ||
104 | .lock = __SPIN_LOCK_UNLOCKED(bad_irq_desc.lock), | ||
105 | }; | ||
106 | |||
107 | #ifdef CONFIG_CPUMASK_OFFSTACK | ||
108 | /* We are not allocating bad_irq_desc.affinity or .pending_mask */ | ||
109 | #error "ARM architecture does not support CONFIG_CPUMASK_OFFSTACK." | ||
110 | #endif | ||
111 | |||
112 | /* | 101 | /* |
113 | * do_IRQ handles all hardware IRQ's. Decoded IRQs should not | 102 | * do_IRQ handles all hardware IRQ's. Decoded IRQs should not |
114 | * come via this function. Instead, they should provide their | 103 | * come via this function. Instead, they should provide their |
@@ -124,10 +113,13 @@ asmlinkage void __exception asm_do_IRQ(unsigned int irq, struct pt_regs *regs) | |||
124 | * Some hardware gives randomly wrong interrupts. Rather | 113 | * Some hardware gives randomly wrong interrupts. Rather |
125 | * than crashing, do something sensible. | 114 | * than crashing, do something sensible. |
126 | */ | 115 | */ |
127 | if (irq >= NR_IRQS) | 116 | if (unlikely(irq >= NR_IRQS)) { |
128 | handle_bad_irq(irq, &bad_irq_desc); | 117 | if (printk_ratelimit()) |
129 | else | 118 | printk(KERN_WARNING "Bad IRQ%u\n", irq); |
119 | ack_bad_irq(irq); | ||
120 | } else { | ||
130 | generic_handle_irq(irq); | 121 | generic_handle_irq(irq); |
122 | } | ||
131 | 123 | ||
132 | /* AT91 specific workaround */ | 124 | /* AT91 specific workaround */ |
133 | irq_finish(irq); | 125 | irq_finish(irq); |
@@ -165,10 +157,6 @@ void __init init_IRQ(void) | |||
165 | for (irq = 0; irq < NR_IRQS; irq++) | 157 | for (irq = 0; irq < NR_IRQS; irq++) |
166 | irq_desc[irq].status |= IRQ_NOREQUEST | IRQ_NOPROBE; | 158 | irq_desc[irq].status |= IRQ_NOREQUEST | IRQ_NOPROBE; |
167 | 159 | ||
168 | #ifdef CONFIG_SMP | ||
169 | cpumask_setall(bad_irq_desc.affinity); | ||
170 | bad_irq_desc.node = smp_processor_id(); | ||
171 | #endif | ||
172 | init_arch_irq(); | 160 | init_arch_irq(); |
173 | } | 161 | } |
174 | 162 | ||
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S index 4340bf3d2c84..69371028a202 100644 --- a/arch/arm/kernel/vmlinux.lds.S +++ b/arch/arm/kernel/vmlinux.lds.S | |||
@@ -6,6 +6,7 @@ | |||
6 | #include <asm-generic/vmlinux.lds.h> | 6 | #include <asm-generic/vmlinux.lds.h> |
7 | #include <asm/thread_info.h> | 7 | #include <asm/thread_info.h> |
8 | #include <asm/memory.h> | 8 | #include <asm/memory.h> |
9 | #include <asm/page.h> | ||
9 | 10 | ||
10 | OUTPUT_ARCH(arm) | 11 | OUTPUT_ARCH(arm) |
11 | ENTRY(stext) | 12 | ENTRY(stext) |
@@ -63,7 +64,7 @@ SECTIONS | |||
63 | usr/built-in.o(.init.ramfs) | 64 | usr/built-in.o(.init.ramfs) |
64 | __initramfs_end = .; | 65 | __initramfs_end = .; |
65 | #endif | 66 | #endif |
66 | . = ALIGN(4096); | 67 | . = ALIGN(PAGE_SIZE); |
67 | __per_cpu_load = .; | 68 | __per_cpu_load = .; |
68 | __per_cpu_start = .; | 69 | __per_cpu_start = .; |
69 | *(.data.percpu.page_aligned) | 70 | *(.data.percpu.page_aligned) |
@@ -73,7 +74,7 @@ SECTIONS | |||
73 | #ifndef CONFIG_XIP_KERNEL | 74 | #ifndef CONFIG_XIP_KERNEL |
74 | __init_begin = _stext; | 75 | __init_begin = _stext; |
75 | INIT_DATA | 76 | INIT_DATA |
76 | . = ALIGN(4096); | 77 | . = ALIGN(PAGE_SIZE); |
77 | __init_end = .; | 78 | __init_end = .; |
78 | #endif | 79 | #endif |
79 | } | 80 | } |
@@ -118,7 +119,7 @@ SECTIONS | |||
118 | *(.got) /* Global offset table */ | 119 | *(.got) /* Global offset table */ |
119 | } | 120 | } |
120 | 121 | ||
121 | RODATA | 122 | RO_DATA(PAGE_SIZE) |
122 | 123 | ||
123 | _etext = .; /* End of text and rodata section */ | 124 | _etext = .; /* End of text and rodata section */ |
124 | 125 | ||
@@ -158,17 +159,17 @@ SECTIONS | |||
158 | *(.data.init_task) | 159 | *(.data.init_task) |
159 | 160 | ||
160 | #ifdef CONFIG_XIP_KERNEL | 161 | #ifdef CONFIG_XIP_KERNEL |
161 | . = ALIGN(4096); | 162 | . = ALIGN(PAGE_SIZE); |
162 | __init_begin = .; | 163 | __init_begin = .; |
163 | INIT_DATA | 164 | INIT_DATA |
164 | . = ALIGN(4096); | 165 | . = ALIGN(PAGE_SIZE); |
165 | __init_end = .; | 166 | __init_end = .; |
166 | #endif | 167 | #endif |
167 | 168 | ||
168 | . = ALIGN(4096); | 169 | . = ALIGN(PAGE_SIZE); |
169 | __nosave_begin = .; | 170 | __nosave_begin = .; |
170 | *(.data.nosave) | 171 | *(.data.nosave) |
171 | . = ALIGN(4096); | 172 | . = ALIGN(PAGE_SIZE); |
172 | __nosave_end = .; | 173 | __nosave_end = .; |
173 | 174 | ||
174 | /* | 175 | /* |
diff --git a/arch/arm/mach-at91/board-sam9g20ek.c b/arch/arm/mach-at91/board-sam9g20ek.c index cc270beadd5d..a55398ed1211 100644 --- a/arch/arm/mach-at91/board-sam9g20ek.c +++ b/arch/arm/mach-at91/board-sam9g20ek.c | |||
@@ -24,6 +24,8 @@ | |||
24 | #include <linux/platform_device.h> | 24 | #include <linux/platform_device.h> |
25 | #include <linux/spi/spi.h> | 25 | #include <linux/spi/spi.h> |
26 | #include <linux/spi/at73c213.h> | 26 | #include <linux/spi/at73c213.h> |
27 | #include <linux/gpio_keys.h> | ||
28 | #include <linux/input.h> | ||
27 | #include <linux/clk.h> | 29 | #include <linux/clk.h> |
28 | 30 | ||
29 | #include <mach/hardware.h> | 31 | #include <mach/hardware.h> |
@@ -218,6 +220,56 @@ static struct gpio_led ek_leds[] = { | |||
218 | } | 220 | } |
219 | }; | 221 | }; |
220 | 222 | ||
223 | |||
224 | /* | ||
225 | * GPIO Buttons | ||
226 | */ | ||
227 | #if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) | ||
228 | static struct gpio_keys_button ek_buttons[] = { | ||
229 | { | ||
230 | .gpio = AT91_PIN_PA30, | ||
231 | .code = BTN_3, | ||
232 | .desc = "Button 3", | ||
233 | .active_low = 1, | ||
234 | .wakeup = 1, | ||
235 | }, | ||
236 | { | ||
237 | .gpio = AT91_PIN_PA31, | ||
238 | .code = BTN_4, | ||
239 | .desc = "Button 4", | ||
240 | .active_low = 1, | ||
241 | .wakeup = 1, | ||
242 | } | ||
243 | }; | ||
244 | |||
245 | static struct gpio_keys_platform_data ek_button_data = { | ||
246 | .buttons = ek_buttons, | ||
247 | .nbuttons = ARRAY_SIZE(ek_buttons), | ||
248 | }; | ||
249 | |||
250 | static struct platform_device ek_button_device = { | ||
251 | .name = "gpio-keys", | ||
252 | .id = -1, | ||
253 | .num_resources = 0, | ||
254 | .dev = { | ||
255 | .platform_data = &ek_button_data, | ||
256 | } | ||
257 | }; | ||
258 | |||
259 | static void __init ek_add_device_buttons(void) | ||
260 | { | ||
261 | at91_set_gpio_input(AT91_PIN_PA30, 1); /* btn3 */ | ||
262 | at91_set_deglitch(AT91_PIN_PA30, 1); | ||
263 | at91_set_gpio_input(AT91_PIN_PA31, 1); /* btn4 */ | ||
264 | at91_set_deglitch(AT91_PIN_PA31, 1); | ||
265 | |||
266 | platform_device_register(&ek_button_device); | ||
267 | } | ||
268 | #else | ||
269 | static void __init ek_add_device_buttons(void) {} | ||
270 | #endif | ||
271 | |||
272 | |||
221 | static struct i2c_board_info __initdata ek_i2c_devices[] = { | 273 | static struct i2c_board_info __initdata ek_i2c_devices[] = { |
222 | { | 274 | { |
223 | I2C_BOARD_INFO("24c512", 0x50), | 275 | I2C_BOARD_INFO("24c512", 0x50), |
@@ -245,6 +297,8 @@ static void __init ek_board_init(void) | |||
245 | at91_add_device_i2c(ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices)); | 297 | at91_add_device_i2c(ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices)); |
246 | /* LEDs */ | 298 | /* LEDs */ |
247 | at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds)); | 299 | at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds)); |
300 | /* Push Buttons */ | ||
301 | ek_add_device_buttons(); | ||
248 | /* PCK0 provides MCLK to the WM8731 */ | 302 | /* PCK0 provides MCLK to the WM8731 */ |
249 | at91_set_B_periph(AT91_PIN_PC1, 0); | 303 | at91_set_B_periph(AT91_PIN_PC1, 0); |
250 | /* SSC (for WM8731) */ | 304 | /* SSC (for WM8731) */ |
diff --git a/arch/arm/mach-at91/board-sam9rlek.c b/arch/arm/mach-at91/board-sam9rlek.c index 35e12a49d1a6..f6b5672cabd6 100644 --- a/arch/arm/mach-at91/board-sam9rlek.c +++ b/arch/arm/mach-at91/board-sam9rlek.c | |||
@@ -186,19 +186,21 @@ static struct fb_monspecs at91fb_default_monspecs = { | |||
186 | static void at91_lcdc_power_control(int on) | 186 | static void at91_lcdc_power_control(int on) |
187 | { | 187 | { |
188 | if (on) | 188 | if (on) |
189 | at91_set_gpio_value(AT91_PIN_PA30, 0); /* power up */ | 189 | at91_set_gpio_value(AT91_PIN_PC1, 0); /* power up */ |
190 | else | 190 | else |
191 | at91_set_gpio_value(AT91_PIN_PA30, 1); /* power down */ | 191 | at91_set_gpio_value(AT91_PIN_PC1, 1); /* power down */ |
192 | } | 192 | } |
193 | 193 | ||
194 | /* Driver datas */ | 194 | /* Driver datas */ |
195 | static struct atmel_lcdfb_info __initdata ek_lcdc_data = { | 195 | static struct atmel_lcdfb_info __initdata ek_lcdc_data = { |
196 | .lcdcon_is_backlight = true, | ||
196 | .default_bpp = 16, | 197 | .default_bpp = 16, |
197 | .default_dmacon = ATMEL_LCDC_DMAEN, | 198 | .default_dmacon = ATMEL_LCDC_DMAEN, |
198 | .default_lcdcon2 = AT91SAM9RL_DEFAULT_LCDCON2, | 199 | .default_lcdcon2 = AT91SAM9RL_DEFAULT_LCDCON2, |
199 | .default_monspecs = &at91fb_default_monspecs, | 200 | .default_monspecs = &at91fb_default_monspecs, |
200 | .atmel_lcdfb_power_control = at91_lcdc_power_control, | 201 | .atmel_lcdfb_power_control = at91_lcdc_power_control, |
201 | .guard_time = 1, | 202 | .guard_time = 1, |
203 | .lcd_wiring_mode = ATMEL_LCDC_WIRING_RGB, | ||
202 | }; | 204 | }; |
203 | 205 | ||
204 | #else | 206 | #else |
diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c index e70fc7c66bbb..ed2a48a9ce74 100644 --- a/arch/arm/mach-omap1/board-nokia770.c +++ b/arch/arm/mach-omap1/board-nokia770.c | |||
@@ -36,7 +36,6 @@ | |||
36 | #include <mach/hwa742.h> | 36 | #include <mach/hwa742.h> |
37 | #include <mach/lcd_mipid.h> | 37 | #include <mach/lcd_mipid.h> |
38 | #include <mach/mmc.h> | 38 | #include <mach/mmc.h> |
39 | #include <mach/usb.h> | ||
40 | #include <mach/clock.h> | 39 | #include <mach/clock.h> |
41 | 40 | ||
42 | #define ADS7846_PENDOWN_GPIO 15 | 41 | #define ADS7846_PENDOWN_GPIO 15 |
@@ -205,9 +204,11 @@ static int nokia770_mmc_get_cover_state(struct device *dev, int slot) | |||
205 | static struct omap_mmc_platform_data nokia770_mmc2_data = { | 204 | static struct omap_mmc_platform_data nokia770_mmc2_data = { |
206 | .nr_slots = 1, | 205 | .nr_slots = 1, |
207 | .dma_mask = 0xffffffff, | 206 | .dma_mask = 0xffffffff, |
207 | .max_freq = 12000000, | ||
208 | .slots[0] = { | 208 | .slots[0] = { |
209 | .set_power = nokia770_mmc_set_power, | 209 | .set_power = nokia770_mmc_set_power, |
210 | .get_cover_state = nokia770_mmc_get_cover_state, | 210 | .get_cover_state = nokia770_mmc_get_cover_state, |
211 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, | ||
211 | .name = "mmcblk", | 212 | .name = "mmcblk", |
212 | }, | 213 | }, |
213 | }; | 214 | }; |
diff --git a/arch/arm/mach-omap1/mailbox.c b/arch/arm/mach-omap1/mailbox.c index 0af4d6c85b47..6810b4aeb02c 100644 --- a/arch/arm/mach-omap1/mailbox.c +++ b/arch/arm/mach-omap1/mailbox.c | |||
@@ -203,5 +203,5 @@ module_exit(omap1_mbox_exit); | |||
203 | 203 | ||
204 | MODULE_LICENSE("GPL v2"); | 204 | MODULE_LICENSE("GPL v2"); |
205 | MODULE_DESCRIPTION("omap mailbox: omap1 architecture specific functions"); | 205 | MODULE_DESCRIPTION("omap mailbox: omap1 architecture specific functions"); |
206 | MODULE_AUTHOR("Hiroshi DOYU" <Hiroshi.DOYU@nokia.com>); | 206 | MODULE_AUTHOR("Hiroshi DOYU <Hiroshi.DOYU@nokia.com>"); |
207 | MODULE_ALIAS("platform:omap1-mailbox"); | 207 | MODULE_ALIAS("platform:omap1-mailbox"); |
diff --git a/arch/arm/mach-omap2/board-rx51-peripherals.c b/arch/arm/mach-omap2/board-rx51-peripherals.c index da93b86234ed..9a0bf6744a05 100644 --- a/arch/arm/mach-omap2/board-rx51-peripherals.c +++ b/arch/arm/mach-omap2/board-rx51-peripherals.c | |||
@@ -362,6 +362,7 @@ static struct omap_onenand_platform_data board_onenand_data = { | |||
362 | .gpio_irq = 65, | 362 | .gpio_irq = 65, |
363 | .parts = onenand_partitions, | 363 | .parts = onenand_partitions, |
364 | .nr_parts = ARRAY_SIZE(onenand_partitions), | 364 | .nr_parts = ARRAY_SIZE(onenand_partitions), |
365 | .flags = ONENAND_SYNC_READWRITE, | ||
365 | }; | 366 | }; |
366 | 367 | ||
367 | static void __init board_onenand_init(void) | 368 | static void __init board_onenand_init(void) |
diff --git a/arch/arm/mach-omap2/gpmc-onenand.c b/arch/arm/mach-omap2/gpmc-onenand.c index 2fd22f9c5f0e..54fec53a48e7 100644 --- a/arch/arm/mach-omap2/gpmc-onenand.c +++ b/arch/arm/mach-omap2/gpmc-onenand.c | |||
@@ -31,6 +31,8 @@ static struct platform_device gpmc_onenand_device = { | |||
31 | static int omap2_onenand_set_async_mode(int cs, void __iomem *onenand_base) | 31 | static int omap2_onenand_set_async_mode(int cs, void __iomem *onenand_base) |
32 | { | 32 | { |
33 | struct gpmc_timings t; | 33 | struct gpmc_timings t; |
34 | u32 reg; | ||
35 | int err; | ||
34 | 36 | ||
35 | const int t_cer = 15; | 37 | const int t_cer = 15; |
36 | const int t_avdp = 12; | 38 | const int t_avdp = 12; |
@@ -43,6 +45,11 @@ static int omap2_onenand_set_async_mode(int cs, void __iomem *onenand_base) | |||
43 | const int t_wpl = 40; | 45 | const int t_wpl = 40; |
44 | const int t_wph = 30; | 46 | const int t_wph = 30; |
45 | 47 | ||
48 | /* Ensure sync read and sync write are disabled */ | ||
49 | reg = readw(onenand_base + ONENAND_REG_SYS_CFG1); | ||
50 | reg &= ~ONENAND_SYS_CFG1_SYNC_READ & ~ONENAND_SYS_CFG1_SYNC_WRITE; | ||
51 | writew(reg, onenand_base + ONENAND_REG_SYS_CFG1); | ||
52 | |||
46 | memset(&t, 0, sizeof(t)); | 53 | memset(&t, 0, sizeof(t)); |
47 | t.sync_clk = 0; | 54 | t.sync_clk = 0; |
48 | t.cs_on = 0; | 55 | t.cs_on = 0; |
@@ -74,7 +81,16 @@ static int omap2_onenand_set_async_mode(int cs, void __iomem *onenand_base) | |||
74 | GPMC_CONFIG1_DEVICESIZE_16 | | 81 | GPMC_CONFIG1_DEVICESIZE_16 | |
75 | GPMC_CONFIG1_MUXADDDATA); | 82 | GPMC_CONFIG1_MUXADDDATA); |
76 | 83 | ||
77 | return gpmc_cs_set_timings(cs, &t); | 84 | err = gpmc_cs_set_timings(cs, &t); |
85 | if (err) | ||
86 | return err; | ||
87 | |||
88 | /* Ensure sync read and sync write are disabled */ | ||
89 | reg = readw(onenand_base + ONENAND_REG_SYS_CFG1); | ||
90 | reg &= ~ONENAND_SYS_CFG1_SYNC_READ & ~ONENAND_SYS_CFG1_SYNC_WRITE; | ||
91 | writew(reg, onenand_base + ONENAND_REG_SYS_CFG1); | ||
92 | |||
93 | return 0; | ||
78 | } | 94 | } |
79 | 95 | ||
80 | static void set_onenand_cfg(void __iomem *onenand_base, int latency, | 96 | static void set_onenand_cfg(void __iomem *onenand_base, int latency, |
@@ -124,7 +140,8 @@ static int omap2_onenand_set_sync_mode(struct omap_onenand_platform_data *cfg, | |||
124 | } else if (cfg->flags & ONENAND_SYNC_READWRITE) { | 140 | } else if (cfg->flags & ONENAND_SYNC_READWRITE) { |
125 | sync_read = 1; | 141 | sync_read = 1; |
126 | sync_write = 1; | 142 | sync_write = 1; |
127 | } | 143 | } else |
144 | return omap2_onenand_set_async_mode(cs, onenand_base); | ||
128 | 145 | ||
129 | if (!freq) { | 146 | if (!freq) { |
130 | /* Very first call freq is not known */ | 147 | /* Very first call freq is not known */ |
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c index 458990e20c60..a98201cc265c 100644 --- a/arch/arm/mach-omap2/id.c +++ b/arch/arm/mach-omap2/id.c | |||
@@ -48,6 +48,28 @@ int omap_chip_is(struct omap_chip_id oci) | |||
48 | } | 48 | } |
49 | EXPORT_SYMBOL(omap_chip_is); | 49 | EXPORT_SYMBOL(omap_chip_is); |
50 | 50 | ||
51 | int omap_type(void) | ||
52 | { | ||
53 | u32 val = 0; | ||
54 | |||
55 | if (cpu_is_omap24xx()) | ||
56 | val = omap_ctrl_readl(OMAP24XX_CONTROL_STATUS); | ||
57 | else if (cpu_is_omap34xx()) | ||
58 | val = omap_ctrl_readl(OMAP343X_CONTROL_STATUS); | ||
59 | else { | ||
60 | pr_err("Cannot detect omap type!\n"); | ||
61 | goto out; | ||
62 | } | ||
63 | |||
64 | val &= OMAP2_DEVICETYPE_MASK; | ||
65 | val >>= 8; | ||
66 | |||
67 | out: | ||
68 | return val; | ||
69 | } | ||
70 | EXPORT_SYMBOL(omap_type); | ||
71 | |||
72 | |||
51 | /*----------------------------------------------------------------------------*/ | 73 | /*----------------------------------------------------------------------------*/ |
52 | 74 | ||
53 | #define OMAP_TAP_IDCODE 0x0204 | 75 | #define OMAP_TAP_IDCODE 0x0204 |
diff --git a/arch/arm/mach-omap2/mailbox.c b/arch/arm/mach-omap2/mailbox.c index fd5b8a5925cc..6f71f3730c97 100644 --- a/arch/arm/mach-omap2/mailbox.c +++ b/arch/arm/mach-omap2/mailbox.c | |||
@@ -282,12 +282,12 @@ static int __devinit omap2_mbox_probe(struct platform_device *pdev) | |||
282 | return -ENOMEM; | 282 | return -ENOMEM; |
283 | 283 | ||
284 | /* DSP or IVA2 IRQ */ | 284 | /* DSP or IVA2 IRQ */ |
285 | mbox_dsp_info.irq = platform_get_irq(pdev, 0); | 285 | ret = platform_get_irq(pdev, 0); |
286 | if (mbox_dsp_info.irq < 0) { | 286 | if (ret < 0) { |
287 | dev_err(&pdev->dev, "invalid irq resource\n"); | 287 | dev_err(&pdev->dev, "invalid irq resource\n"); |
288 | ret = -ENODEV; | ||
289 | goto err_dsp; | 288 | goto err_dsp; |
290 | } | 289 | } |
290 | mbox_dsp_info.irq = ret; | ||
291 | 291 | ||
292 | ret = omap_mbox_register(&pdev->dev, &mbox_dsp_info); | 292 | ret = omap_mbox_register(&pdev->dev, &mbox_dsp_info); |
293 | if (ret) | 293 | if (ret) |
diff --git a/arch/arm/mach-omap2/mmc-twl4030.c b/arch/arm/mach-omap2/mmc-twl4030.c index 9756a878fd90..1541fd4c8d0f 100644 --- a/arch/arm/mach-omap2/mmc-twl4030.c +++ b/arch/arm/mach-omap2/mmc-twl4030.c | |||
@@ -263,8 +263,19 @@ static int twl_mmc1_set_power(struct device *dev, int slot, int power_on, | |||
263 | static int twl_mmc23_set_power(struct device *dev, int slot, int power_on, int vdd) | 263 | static int twl_mmc23_set_power(struct device *dev, int slot, int power_on, int vdd) |
264 | { | 264 | { |
265 | int ret = 0; | 265 | int ret = 0; |
266 | struct twl_mmc_controller *c = &hsmmc[1]; | 266 | struct twl_mmc_controller *c = NULL; |
267 | struct omap_mmc_platform_data *mmc = dev->platform_data; | 267 | struct omap_mmc_platform_data *mmc = dev->platform_data; |
268 | int i; | ||
269 | |||
270 | for (i = 1; i < ARRAY_SIZE(hsmmc); i++) { | ||
271 | if (mmc == hsmmc[i].mmc) { | ||
272 | c = &hsmmc[i]; | ||
273 | break; | ||
274 | } | ||
275 | } | ||
276 | |||
277 | if (c == NULL) | ||
278 | return -ENODEV; | ||
268 | 279 | ||
269 | /* If we don't see a Vcc regulator, assume it's a fixed | 280 | /* If we don't see a Vcc regulator, assume it's a fixed |
270 | * voltage always-on regulator. | 281 | * voltage always-on regulator. |
diff --git a/arch/arm/mach-s3c2440/mach-mini2440.c b/arch/arm/mach-s3c2440/mach-mini2440.c index 6a5bc3021bdb..ec71a6965786 100644 --- a/arch/arm/mach-s3c2440/mach-mini2440.c +++ b/arch/arm/mach-s3c2440/mach-mini2440.c | |||
@@ -48,8 +48,6 @@ | |||
48 | #include <plat/mci.h> | 48 | #include <plat/mci.h> |
49 | #include <plat/udc.h> | 49 | #include <plat/udc.h> |
50 | 50 | ||
51 | #include <plat/regs-serial.h> | ||
52 | |||
53 | #include <linux/mtd/mtd.h> | 51 | #include <linux/mtd/mtd.h> |
54 | #include <linux/mtd/nand.h> | 52 | #include <linux/mtd/nand.h> |
55 | #include <linux/mtd/nand_ecc.h> | 53 | #include <linux/mtd/nand_ecc.h> |
@@ -275,6 +273,7 @@ static struct s3c2410_nand_set mini2440_nand_sets[] __initdata = { | |||
275 | .nr_chips = 1, | 273 | .nr_chips = 1, |
276 | .nr_partitions = ARRAY_SIZE(mini2440_default_nand_part), | 274 | .nr_partitions = ARRAY_SIZE(mini2440_default_nand_part), |
277 | .partitions = mini2440_default_nand_part, | 275 | .partitions = mini2440_default_nand_part, |
276 | .flash_bbt = 1, /* we use u-boot to create a BBT */ | ||
278 | }, | 277 | }, |
279 | }; | 278 | }; |
280 | 279 | ||
diff --git a/arch/arm/mach-s3c2442/mach-gta02.c b/arch/arm/mach-s3c2442/mach-gta02.c index e23b581aa0e1..0fb385bd9cd9 100644 --- a/arch/arm/mach-s3c2442/mach-gta02.c +++ b/arch/arm/mach-s3c2442/mach-gta02.c | |||
@@ -433,8 +433,7 @@ static struct s3c2410_nand_set gta02_nand_sets[] = { | |||
433 | */ | 433 | */ |
434 | .name = "neo1973-nand", | 434 | .name = "neo1973-nand", |
435 | .nr_chips = 1, | 435 | .nr_chips = 1, |
436 | .use_bbt = 1, | 436 | .flash_bbt = 1, |
437 | .force_soft_ecc = 1, | ||
438 | }, | 437 | }, |
439 | }; | 438 | }; |
440 | 439 | ||
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index def14ec265b3..7677a4a1cef2 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c | |||
@@ -2457,6 +2457,19 @@ static int __init omap_init_dma(void) | |||
2457 | setup_irq(irq, &omap24xx_dma_irq); | 2457 | setup_irq(irq, &omap24xx_dma_irq); |
2458 | } | 2458 | } |
2459 | 2459 | ||
2460 | /* Enable smartidle idlemodes and autoidle */ | ||
2461 | if (cpu_is_omap34xx()) { | ||
2462 | u32 v = dma_read(OCP_SYSCONFIG); | ||
2463 | v &= ~(DMA_SYSCONFIG_MIDLEMODE_MASK | | ||
2464 | DMA_SYSCONFIG_SIDLEMODE_MASK | | ||
2465 | DMA_SYSCONFIG_AUTOIDLE); | ||
2466 | v |= (DMA_SYSCONFIG_MIDLEMODE(DMA_IDLEMODE_SMARTIDLE) | | ||
2467 | DMA_SYSCONFIG_SIDLEMODE(DMA_IDLEMODE_SMARTIDLE) | | ||
2468 | DMA_SYSCONFIG_AUTOIDLE); | ||
2469 | dma_write(v , OCP_SYSCONFIG); | ||
2470 | } | ||
2471 | |||
2472 | |||
2460 | /* FIXME: Update LCD DMA to work on 24xx */ | 2473 | /* FIXME: Update LCD DMA to work on 24xx */ |
2461 | if (cpu_class_is_omap1()) { | 2474 | if (cpu_class_is_omap1()) { |
2462 | r = request_irq(INT_DMA_LCD, lcd_dma_irq_handler, 0, | 2475 | r = request_irq(INT_DMA_LCD, lcd_dma_irq_handler, 0, |
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c index 7fd89ba8d3b5..26b387c12423 100644 --- a/arch/arm/plat-omap/gpio.c +++ b/arch/arm/plat-omap/gpio.c | |||
@@ -1585,6 +1585,7 @@ static int __init _omap_gpio_init(void) | |||
1585 | __raw_writel(0x00000000, bank->base + OMAP24XX_GPIO_IRQENABLE1); | 1585 | __raw_writel(0x00000000, bank->base + OMAP24XX_GPIO_IRQENABLE1); |
1586 | __raw_writel(0xffffffff, bank->base + OMAP24XX_GPIO_IRQSTATUS1); | 1586 | __raw_writel(0xffffffff, bank->base + OMAP24XX_GPIO_IRQSTATUS1); |
1587 | __raw_writew(0x0015, bank->base + OMAP24XX_GPIO_SYSCONFIG); | 1587 | __raw_writew(0x0015, bank->base + OMAP24XX_GPIO_SYSCONFIG); |
1588 | __raw_writel(0x00000000, bank->base + OMAP24XX_GPIO_DEBOUNCE_EN); | ||
1588 | 1589 | ||
1589 | /* Initialize interface clock ungated, module enabled */ | 1590 | /* Initialize interface clock ungated, module enabled */ |
1590 | __raw_writel(0, bank->base + OMAP24XX_GPIO_CTRL); | 1591 | __raw_writel(0, bank->base + OMAP24XX_GPIO_CTRL); |
diff --git a/arch/arm/plat-omap/include/mach/cpu.h b/arch/arm/plat-omap/include/mach/cpu.h index fc60c4ebcc28..285eaa3a8275 100644 --- a/arch/arm/plat-omap/include/mach/cpu.h +++ b/arch/arm/plat-omap/include/mach/cpu.h | |||
@@ -30,6 +30,17 @@ | |||
30 | #ifndef __ASM_ARCH_OMAP_CPU_H | 30 | #ifndef __ASM_ARCH_OMAP_CPU_H |
31 | #define __ASM_ARCH_OMAP_CPU_H | 31 | #define __ASM_ARCH_OMAP_CPU_H |
32 | 32 | ||
33 | /* | ||
34 | * Omap device type i.e. EMU/HS/TST/GP/BAD | ||
35 | */ | ||
36 | #define OMAP2_DEVICE_TYPE_TEST 0 | ||
37 | #define OMAP2_DEVICE_TYPE_EMU 1 | ||
38 | #define OMAP2_DEVICE_TYPE_SEC 2 | ||
39 | #define OMAP2_DEVICE_TYPE_GP 3 | ||
40 | #define OMAP2_DEVICE_TYPE_BAD 4 | ||
41 | |||
42 | int omap_type(void); | ||
43 | |||
33 | struct omap_chip_id { | 44 | struct omap_chip_id { |
34 | u8 oc; | 45 | u8 oc; |
35 | u8 type; | 46 | u8 type; |
@@ -424,17 +435,6 @@ IS_OMAP_TYPE(3430, 0x3430) | |||
424 | 435 | ||
425 | 436 | ||
426 | int omap_chip_is(struct omap_chip_id oci); | 437 | int omap_chip_is(struct omap_chip_id oci); |
427 | int omap_type(void); | ||
428 | |||
429 | /* | ||
430 | * Macro to detect device type i.e. EMU/HS/TST/GP/BAD | ||
431 | */ | ||
432 | #define OMAP2_DEVICE_TYPE_TEST 0 | ||
433 | #define OMAP2_DEVICE_TYPE_EMU 1 | ||
434 | #define OMAP2_DEVICE_TYPE_SEC 2 | ||
435 | #define OMAP2_DEVICE_TYPE_GP 3 | ||
436 | #define OMAP2_DEVICE_TYPE_BAD 4 | ||
437 | |||
438 | void omap2_check_revision(void); | 438 | void omap2_check_revision(void); |
439 | 439 | ||
440 | #endif /* defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) */ | 440 | #endif /* defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) */ |
diff --git a/arch/arm/plat-omap/include/mach/dma.h b/arch/arm/plat-omap/include/mach/dma.h index 8c1eae88737e..7b939cc01962 100644 --- a/arch/arm/plat-omap/include/mach/dma.h +++ b/arch/arm/plat-omap/include/mach/dma.h | |||
@@ -389,6 +389,21 @@ | |||
389 | #define DMA_THREAD_FIFO_25 (0x02 << 14) | 389 | #define DMA_THREAD_FIFO_25 (0x02 << 14) |
390 | #define DMA_THREAD_FIFO_50 (0x03 << 14) | 390 | #define DMA_THREAD_FIFO_50 (0x03 << 14) |
391 | 391 | ||
392 | /* DMA4_OCP_SYSCONFIG bits */ | ||
393 | #define DMA_SYSCONFIG_MIDLEMODE_MASK (3 << 12) | ||
394 | #define DMA_SYSCONFIG_CLOCKACTIVITY_MASK (3 << 8) | ||
395 | #define DMA_SYSCONFIG_EMUFREE (1 << 5) | ||
396 | #define DMA_SYSCONFIG_SIDLEMODE_MASK (3 << 3) | ||
397 | #define DMA_SYSCONFIG_SOFTRESET (1 << 2) | ||
398 | #define DMA_SYSCONFIG_AUTOIDLE (1 << 0) | ||
399 | |||
400 | #define DMA_SYSCONFIG_MIDLEMODE(n) ((n) << 12) | ||
401 | #define DMA_SYSCONFIG_SIDLEMODE(n) ((n) << 3) | ||
402 | |||
403 | #define DMA_IDLEMODE_SMARTIDLE 0x2 | ||
404 | #define DMA_IDLEMODE_NO_IDLE 0x1 | ||
405 | #define DMA_IDLEMODE_FORCE_IDLE 0x0 | ||
406 | |||
392 | /* Chaining modes*/ | 407 | /* Chaining modes*/ |
393 | #ifndef CONFIG_ARCH_OMAP1 | 408 | #ifndef CONFIG_ARCH_OMAP1 |
394 | #define OMAP_DMA_STATIC_CHAIN 0x1 | 409 | #define OMAP_DMA_STATIC_CHAIN 0x1 |
diff --git a/arch/arm/plat-omap/include/mach/io.h b/arch/arm/plat-omap/include/mach/io.h index 3b2814720569..73f483d56ca6 100644 --- a/arch/arm/plat-omap/include/mach/io.h +++ b/arch/arm/plat-omap/include/mach/io.h | |||
@@ -201,7 +201,7 @@ | |||
201 | #define OMAP2_IO_ADDRESS(pa) IOMEM(__OMAP2_IO_ADDRESS(pa)) | 201 | #define OMAP2_IO_ADDRESS(pa) IOMEM(__OMAP2_IO_ADDRESS(pa)) |
202 | 202 | ||
203 | #ifdef __ASSEMBLER__ | 203 | #ifdef __ASSEMBLER__ |
204 | #define IOMEM(x) x | 204 | #define IOMEM(x) (x) |
205 | #else | 205 | #else |
206 | #define IOMEM(x) ((void __force __iomem *)(x)) | 206 | #define IOMEM(x) ((void __force __iomem *)(x)) |
207 | 207 | ||
diff --git a/arch/arm/plat-omap/iommu.c b/arch/arm/plat-omap/iommu.c index 4cf449fa2cb5..4a0301399013 100644 --- a/arch/arm/plat-omap/iommu.c +++ b/arch/arm/plat-omap/iommu.c | |||
@@ -298,7 +298,7 @@ void flush_iotlb_page(struct iommu *obj, u32 da) | |||
298 | if ((start <= da) && (da < start + bytes)) { | 298 | if ((start <= da) && (da < start + bytes)) { |
299 | dev_dbg(obj->dev, "%s: %08x<=%08x(%x)\n", | 299 | dev_dbg(obj->dev, "%s: %08x<=%08x(%x)\n", |
300 | __func__, start, da, bytes); | 300 | __func__, start, da, bytes); |
301 | 301 | iotlb_load_cr(obj, &cr); | |
302 | iommu_write_reg(obj, 1, MMU_FLUSH_ENTRY); | 302 | iommu_write_reg(obj, 1, MMU_FLUSH_ENTRY); |
303 | } | 303 | } |
304 | } | 304 | } |
diff --git a/arch/arm/plat-omap/sram.c b/arch/arm/plat-omap/sram.c index 65006df3f1b7..4ea73804d21e 100644 --- a/arch/arm/plat-omap/sram.c +++ b/arch/arm/plat-omap/sram.c | |||
@@ -133,7 +133,12 @@ void __init omap_detect_sram(void) | |||
133 | if (cpu_is_omap34xx()) { | 133 | if (cpu_is_omap34xx()) { |
134 | omap_sram_base = OMAP3_SRAM_PUB_VA; | 134 | omap_sram_base = OMAP3_SRAM_PUB_VA; |
135 | omap_sram_start = OMAP3_SRAM_PUB_PA; | 135 | omap_sram_start = OMAP3_SRAM_PUB_PA; |
136 | omap_sram_size = 0x8000; /* 32K */ | 136 | if ((omap_type() == OMAP2_DEVICE_TYPE_EMU) || |
137 | (omap_type() == OMAP2_DEVICE_TYPE_SEC)) { | ||
138 | omap_sram_size = 0x7000; /* 28K */ | ||
139 | } else { | ||
140 | omap_sram_size = 0x8000; /* 32K */ | ||
141 | } | ||
137 | } else { | 142 | } else { |
138 | omap_sram_base = OMAP2_SRAM_PUB_VA; | 143 | omap_sram_base = OMAP2_SRAM_PUB_VA; |
139 | omap_sram_start = OMAP2_SRAM_PUB_PA; | 144 | omap_sram_start = OMAP2_SRAM_PUB_PA; |
diff --git a/arch/arm/plat-s3c/Makefile b/arch/arm/plat-s3c/Makefile index 74bb7cb5da49..0761766b1833 100644 --- a/arch/arm/plat-s3c/Makefile +++ b/arch/arm/plat-s3c/Makefile | |||
@@ -34,7 +34,7 @@ obj-$(CONFIG_S3C_DEV_HSMMC) += dev-hsmmc.o | |||
34 | obj-$(CONFIG_S3C_DEV_HSMMC1) += dev-hsmmc1.o | 34 | obj-$(CONFIG_S3C_DEV_HSMMC1) += dev-hsmmc1.o |
35 | obj-y += dev-i2c0.o | 35 | obj-y += dev-i2c0.o |
36 | obj-$(CONFIG_S3C_DEV_I2C1) += dev-i2c1.o | 36 | obj-$(CONFIG_S3C_DEV_I2C1) += dev-i2c1.o |
37 | obj-$(CONFIG_SND_S3C24XX_SOC) += dev-audio.o | 37 | obj-$(CONFIG_SND_S3C64XX_SOC_I2S) += dev-audio.o |
38 | obj-$(CONFIG_S3C_DEV_FB) += dev-fb.o | 38 | obj-$(CONFIG_S3C_DEV_FB) += dev-fb.o |
39 | obj-$(CONFIG_S3C_DEV_USB_HOST) += dev-usb.o | 39 | obj-$(CONFIG_S3C_DEV_USB_HOST) += dev-usb.o |
40 | obj-$(CONFIG_S3C_DEV_USB_HSOTG) += dev-usb-hsotg.o | 40 | obj-$(CONFIG_S3C_DEV_USB_HSOTG) += dev-usb-hsotg.o |
diff --git a/arch/arm/plat-s3c/include/plat/devs.h b/arch/arm/plat-s3c/include/plat/devs.h index b5b9c4d46e9a..2e170827e0b0 100644 --- a/arch/arm/plat-s3c/include/plat/devs.h +++ b/arch/arm/plat-s3c/include/plat/devs.h | |||
@@ -37,6 +37,7 @@ extern struct platform_device s3c_device_i2c1; | |||
37 | extern struct platform_device s3c_device_rtc; | 37 | extern struct platform_device s3c_device_rtc; |
38 | extern struct platform_device s3c_device_adc; | 38 | extern struct platform_device s3c_device_adc; |
39 | extern struct platform_device s3c_device_sdi; | 39 | extern struct platform_device s3c_device_sdi; |
40 | extern struct platform_device s3c_device_iis; | ||
40 | extern struct platform_device s3c_device_hwmon; | 41 | extern struct platform_device s3c_device_hwmon; |
41 | extern struct platform_device s3c_device_hsmmc0; | 42 | extern struct platform_device s3c_device_hsmmc0; |
42 | extern struct platform_device s3c_device_hsmmc1; | 43 | extern struct platform_device s3c_device_hsmmc1; |
diff --git a/arch/arm/plat-s3c24xx/Makefile b/arch/arm/plat-s3c24xx/Makefile index 636cb12711df..579a165c2827 100644 --- a/arch/arm/plat-s3c24xx/Makefile +++ b/arch/arm/plat-s3c24xx/Makefile | |||
@@ -29,7 +29,7 @@ obj-$(CONFIG_PM_SIMTEC) += pm-simtec.o | |||
29 | obj-$(CONFIG_PM) += pm.o | 29 | obj-$(CONFIG_PM) += pm.o |
30 | obj-$(CONFIG_PM) += irq-pm.o | 30 | obj-$(CONFIG_PM) += irq-pm.o |
31 | obj-$(CONFIG_PM) += sleep.o | 31 | obj-$(CONFIG_PM) += sleep.o |
32 | obj-$(CONFIG_HAVE_PWM) += pwm.o | 32 | obj-$(CONFIG_S3C24XX_PWM) += pwm.o |
33 | obj-$(CONFIG_S3C2410_CLOCK) += s3c2410-clock.o | 33 | obj-$(CONFIG_S3C2410_CLOCK) += s3c2410-clock.o |
34 | obj-$(CONFIG_S3C2410_DMA) += dma.o | 34 | obj-$(CONFIG_S3C2410_DMA) += dma.o |
35 | obj-$(CONFIG_S3C24XX_ADC) += adc.o | 35 | obj-$(CONFIG_S3C24XX_ADC) += adc.o |
diff --git a/arch/arm/plat-s3c24xx/spi-bus0-gpe11_12_13.c b/arch/arm/plat-s3c24xx/spi-bus0-gpe11_12_13.c index 9edf7894eedd..da7a61728c18 100644 --- a/arch/arm/plat-s3c24xx/spi-bus0-gpe11_12_13.c +++ b/arch/arm/plat-s3c24xx/spi-bus0-gpe11_12_13.c | |||
@@ -12,8 +12,7 @@ | |||
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | 15 | #include <linux/gpio.h> | |
16 | #include <mach/hardware.h> | ||
17 | 16 | ||
18 | #include <mach/spi.h> | 17 | #include <mach/spi.h> |
19 | #include <mach/regs-gpio.h> | 18 | #include <mach/regs-gpio.h> |
diff --git a/arch/arm/plat-s3c24xx/spi-bus1-gpg5_6_7.c b/arch/arm/plat-s3c24xx/spi-bus1-gpg5_6_7.c index f34d0fc69ad8..86b9edc67413 100644 --- a/arch/arm/plat-s3c24xx/spi-bus1-gpg5_6_7.c +++ b/arch/arm/plat-s3c24xx/spi-bus1-gpg5_6_7.c | |||
@@ -12,8 +12,7 @@ | |||
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | 15 | #include <linux/gpio.h> | |
16 | #include <mach/hardware.h> | ||
17 | 16 | ||
18 | #include <mach/spi.h> | 17 | #include <mach/spi.h> |
19 | #include <mach/regs-gpio.h> | 18 | #include <mach/regs-gpio.h> |