diff options
31 files changed, 124 insertions, 54 deletions
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index 6825c34646d4..9be21ba648cd 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S | |||
| @@ -1084,6 +1084,6 @@ memdump: mov r12, r0 | |||
| 1084 | reloc_end: | 1084 | reloc_end: |
| 1085 | 1085 | ||
| 1086 | .align | 1086 | .align |
| 1087 | .section ".stack", "w" | 1087 | .section ".stack", "aw", %nobits |
| 1088 | user_stack: .space 4096 | 1088 | user_stack: .space 4096 |
| 1089 | user_stack_end: | 1089 | user_stack_end: |
diff --git a/arch/arm/boot/compressed/vmlinux.lds.in b/arch/arm/boot/compressed/vmlinux.lds.in index d08168941bd6..366a924019ac 100644 --- a/arch/arm/boot/compressed/vmlinux.lds.in +++ b/arch/arm/boot/compressed/vmlinux.lds.in | |||
| @@ -57,7 +57,7 @@ SECTIONS | |||
| 57 | .bss : { *(.bss) } | 57 | .bss : { *(.bss) } |
| 58 | _end = .; | 58 | _end = .; |
| 59 | 59 | ||
| 60 | .stack (NOLOAD) : { *(.stack) } | 60 | .stack : { *(.stack) } |
| 61 | 61 | ||
| 62 | .stab 0 : { *(.stab) } | 62 | .stab 0 : { *(.stab) } |
| 63 | .stabstr 0 : { *(.stabstr) } | 63 | .stabstr 0 : { *(.stabstr) } |
diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h index 062b58c029ab..749bb6622404 100644 --- a/arch/arm/include/asm/assembler.h +++ b/arch/arm/include/asm/assembler.h | |||
| @@ -238,7 +238,7 @@ | |||
| 238 | @ Slightly optimised to avoid incrementing the pointer twice | 238 | @ Slightly optimised to avoid incrementing the pointer twice |
| 239 | usraccoff \instr, \reg, \ptr, \inc, 0, \cond, \abort | 239 | usraccoff \instr, \reg, \ptr, \inc, 0, \cond, \abort |
| 240 | .if \rept == 2 | 240 | .if \rept == 2 |
| 241 | usraccoff \instr, \reg, \ptr, \inc, 4, \cond, \abort | 241 | usraccoff \instr, \reg, \ptr, \inc, \inc, \cond, \abort |
| 242 | .endif | 242 | .endif |
| 243 | 243 | ||
| 244 | add\cond \ptr, #\rept * \inc | 244 | add\cond \ptr, #\rept * \inc |
diff --git a/arch/arm/include/asm/mmu.h b/arch/arm/include/asm/mmu.h index 68870c776671..b4ffe9d5b526 100644 --- a/arch/arm/include/asm/mmu.h +++ b/arch/arm/include/asm/mmu.h | |||
| @@ -13,6 +13,10 @@ typedef struct { | |||
| 13 | 13 | ||
| 14 | #ifdef CONFIG_CPU_HAS_ASID | 14 | #ifdef CONFIG_CPU_HAS_ASID |
| 15 | #define ASID(mm) ((mm)->context.id & 255) | 15 | #define ASID(mm) ((mm)->context.id & 255) |
| 16 | |||
| 17 | /* init_mm.context.id_lock should be initialized. */ | ||
| 18 | #define INIT_MM_CONTEXT(name) \ | ||
| 19 | .context.id_lock = __SPIN_LOCK_UNLOCKED(name.context.id_lock), | ||
| 16 | #else | 20 | #else |
| 17 | #define ASID(mm) (0) | 21 | #define ASID(mm) (0) |
| 18 | #endif | 22 | #endif |
diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h index b155414192da..53d1d5deb111 100644 --- a/arch/arm/include/asm/pgtable.h +++ b/arch/arm/include/asm/pgtable.h | |||
| @@ -374,6 +374,9 @@ static inline pte_t *pmd_page_vaddr(pmd_t pmd) | |||
| 374 | 374 | ||
| 375 | #define pmd_page(pmd) pfn_to_page(__phys_to_pfn(pmd_val(pmd))) | 375 | #define pmd_page(pmd) pfn_to_page(__phys_to_pfn(pmd_val(pmd))) |
| 376 | 376 | ||
| 377 | /* we don't need complex calculations here as the pmd is folded into the pgd */ | ||
| 378 | #define pmd_addr_end(addr,end) (end) | ||
| 379 | |||
| 377 | /* | 380 | /* |
| 378 | * Conversion functions: convert a page and protection to a page entry, | 381 | * Conversion functions: convert a page and protection to a page entry, |
| 379 | * and a page entry and page directory to the page they refer to. | 382 | * and a page entry and page directory to the page they refer to. |
diff --git a/arch/arm/lib/findbit.S b/arch/arm/lib/findbit.S index 1e4cbd4e7be9..64f6bc1a9132 100644 --- a/arch/arm/lib/findbit.S +++ b/arch/arm/lib/findbit.S | |||
| @@ -174,8 +174,8 @@ ENDPROC(_find_next_bit_be) | |||
| 174 | */ | 174 | */ |
| 175 | .L_found: | 175 | .L_found: |
| 176 | #if __LINUX_ARM_ARCH__ >= 5 | 176 | #if __LINUX_ARM_ARCH__ >= 5 |
| 177 | rsb r1, r3, #0 | 177 | rsb r0, r3, #0 |
| 178 | and r3, r3, r1 | 178 | and r3, r3, r0 |
| 179 | clz r3, r3 | 179 | clz r3, r3 |
| 180 | rsb r3, r3, #31 | 180 | rsb r3, r3, #31 |
| 181 | add r0, r2, r3 | 181 | add r0, r2, r3 |
| @@ -190,5 +190,7 @@ ENDPROC(_find_next_bit_be) | |||
| 190 | addeq r2, r2, #1 | 190 | addeq r2, r2, #1 |
| 191 | mov r0, r2 | 191 | mov r0, r2 |
| 192 | #endif | 192 | #endif |
| 193 | cmp r1, r0 @ Clamp to maxbit | ||
| 194 | movlo r0, r1 | ||
| 193 | mov pc, lr | 195 | mov pc, lr |
| 194 | 196 | ||
diff --git a/arch/arm/mach-aaec2000/include/mach/vmalloc.h b/arch/arm/mach-aaec2000/include/mach/vmalloc.h index cff4e0a996ce..a6299e8321bd 100644 --- a/arch/arm/mach-aaec2000/include/mach/vmalloc.h +++ b/arch/arm/mach-aaec2000/include/mach/vmalloc.h | |||
| @@ -11,6 +11,6 @@ | |||
| 11 | #ifndef __ASM_ARCH_VMALLOC_H | 11 | #ifndef __ASM_ARCH_VMALLOC_H |
| 12 | #define __ASM_ARCH_VMALLOC_H | 12 | #define __ASM_ARCH_VMALLOC_H |
| 13 | 13 | ||
| 14 | #define VMALLOC_END 0xd0000000 | 14 | #define VMALLOC_END 0xd0000000UL |
| 15 | 15 | ||
| 16 | #endif /* __ASM_ARCH_VMALLOC_H */ | 16 | #endif /* __ASM_ARCH_VMALLOC_H */ |
diff --git a/arch/arm/mach-bcmring/include/mach/vmalloc.h b/arch/arm/mach-bcmring/include/mach/vmalloc.h index 3db3a09fd398..7397bd7817d9 100644 --- a/arch/arm/mach-bcmring/include/mach/vmalloc.h +++ b/arch/arm/mach-bcmring/include/mach/vmalloc.h | |||
| @@ -22,4 +22,4 @@ | |||
| 22 | * 0xe0000000 to 0xefffffff. This gives us 256 MB of vm space and handles | 22 | * 0xe0000000 to 0xefffffff. This gives us 256 MB of vm space and handles |
| 23 | * larger physical memory designs better. | 23 | * larger physical memory designs better. |
| 24 | */ | 24 | */ |
| 25 | #define VMALLOC_END 0xf0000000 | 25 | #define VMALLOC_END 0xf0000000UL |
diff --git a/arch/arm/mach-clps711x/include/mach/vmalloc.h b/arch/arm/mach-clps711x/include/mach/vmalloc.h index 30b3a287ed88..467b96137e47 100644 --- a/arch/arm/mach-clps711x/include/mach/vmalloc.h +++ b/arch/arm/mach-clps711x/include/mach/vmalloc.h | |||
| @@ -17,4 +17,4 @@ | |||
| 17 | * along with this program; if not, write to the Free Software | 17 | * along with this program; if not, write to the Free Software |
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 19 | */ | 19 | */ |
| 20 | #define VMALLOC_END 0xd0000000 | 20 | #define VMALLOC_END 0xd0000000UL |
diff --git a/arch/arm/mach-ebsa110/include/mach/vmalloc.h b/arch/arm/mach-ebsa110/include/mach/vmalloc.h index 60bde56fba4c..ea141b7a3e03 100644 --- a/arch/arm/mach-ebsa110/include/mach/vmalloc.h +++ b/arch/arm/mach-ebsa110/include/mach/vmalloc.h | |||
| @@ -7,4 +7,4 @@ | |||
| 7 | * it under the terms of the GNU General Public License version 2 as | 7 | * it under the terms of the GNU General Public License version 2 as |
| 8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
| 9 | */ | 9 | */ |
| 10 | #define VMALLOC_END 0xdf000000 | 10 | #define VMALLOC_END 0xdf000000UL |
diff --git a/arch/arm/mach-footbridge/include/mach/vmalloc.h b/arch/arm/mach-footbridge/include/mach/vmalloc.h index 0ffbb7c85e59..40ba78e5782b 100644 --- a/arch/arm/mach-footbridge/include/mach/vmalloc.h +++ b/arch/arm/mach-footbridge/include/mach/vmalloc.h | |||
| @@ -7,4 +7,4 @@ | |||
| 7 | */ | 7 | */ |
| 8 | 8 | ||
| 9 | 9 | ||
| 10 | #define VMALLOC_END 0xf0000000 | 10 | #define VMALLOC_END 0xf0000000UL |
diff --git a/arch/arm/mach-h720x/include/mach/vmalloc.h b/arch/arm/mach-h720x/include/mach/vmalloc.h index a45915b88756..8520b4a4d4e6 100644 --- a/arch/arm/mach-h720x/include/mach/vmalloc.h +++ b/arch/arm/mach-h720x/include/mach/vmalloc.h | |||
| @@ -5,6 +5,6 @@ | |||
| 5 | #ifndef __ARCH_ARM_VMALLOC_H | 5 | #ifndef __ARCH_ARM_VMALLOC_H |
| 6 | #define __ARCH_ARM_VMALLOC_H | 6 | #define __ARCH_ARM_VMALLOC_H |
| 7 | 7 | ||
| 8 | #define VMALLOC_END 0xd0000000 | 8 | #define VMALLOC_END 0xd0000000UL |
| 9 | 9 | ||
| 10 | #endif | 10 | #endif |
diff --git a/arch/arm/mach-imx/eukrea_mbimx27-baseboard.c b/arch/arm/mach-imx/eukrea_mbimx27-baseboard.c index 026263c665ca..7e1e9dc2c8fc 100644 --- a/arch/arm/mach-imx/eukrea_mbimx27-baseboard.c +++ b/arch/arm/mach-imx/eukrea_mbimx27-baseboard.c | |||
| @@ -250,9 +250,6 @@ static const struct imxuart_platform_data uart_pdata __initconst = { | |||
| 250 | .flags = IMXUART_HAVE_RTSCTS, | 250 | .flags = IMXUART_HAVE_RTSCTS, |
| 251 | }; | 251 | }; |
| 252 | 252 | ||
| 253 | #if defined(CONFIG_TOUCHSCREEN_ADS7846) \ | ||
| 254 | || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE) | ||
| 255 | |||
| 256 | #define ADS7846_PENDOWN (GPIO_PORTD | 25) | 253 | #define ADS7846_PENDOWN (GPIO_PORTD | 25) |
| 257 | 254 | ||
| 258 | static void ads7846_dev_init(void) | 255 | static void ads7846_dev_init(void) |
| @@ -273,9 +270,7 @@ static struct ads7846_platform_data ads7846_config __initdata = { | |||
| 273 | .get_pendown_state = ads7846_get_pendown_state, | 270 | .get_pendown_state = ads7846_get_pendown_state, |
| 274 | .keep_vref_on = 1, | 271 | .keep_vref_on = 1, |
| 275 | }; | 272 | }; |
| 276 | #endif | ||
| 277 | 273 | ||
| 278 | #if defined(CONFIG_SPI_IMX) || defined(CONFIG_SPI_IMX_MODULE) | ||
| 279 | static struct spi_board_info eukrea_mbimx27_spi_board_info[] __initdata = { | 274 | static struct spi_board_info eukrea_mbimx27_spi_board_info[] __initdata = { |
| 280 | [0] = { | 275 | [0] = { |
| 281 | .modalias = "ads7846", | 276 | .modalias = "ads7846", |
| @@ -294,7 +289,6 @@ static const struct spi_imx_master eukrea_mbimx27_spi0_data __initconst = { | |||
| 294 | .chipselect = eukrea_mbimx27_spi_cs, | 289 | .chipselect = eukrea_mbimx27_spi_cs, |
| 295 | .num_chipselect = ARRAY_SIZE(eukrea_mbimx27_spi_cs), | 290 | .num_chipselect = ARRAY_SIZE(eukrea_mbimx27_spi_cs), |
| 296 | }; | 291 | }; |
| 297 | #endif | ||
| 298 | 292 | ||
| 299 | static struct i2c_board_info eukrea_mbimx27_i2c_devices[] = { | 293 | static struct i2c_board_info eukrea_mbimx27_i2c_devices[] = { |
| 300 | { | 294 | { |
diff --git a/arch/arm/mach-integrator/include/mach/vmalloc.h b/arch/arm/mach-integrator/include/mach/vmalloc.h index e056e7cf5645..2f5a2bafb11f 100644 --- a/arch/arm/mach-integrator/include/mach/vmalloc.h +++ b/arch/arm/mach-integrator/include/mach/vmalloc.h | |||
| @@ -17,4 +17,4 @@ | |||
| 17 | * along with this program; if not, write to the Free Software | 17 | * along with this program; if not, write to the Free Software |
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 19 | */ | 19 | */ |
| 20 | #define VMALLOC_END 0xd0000000 | 20 | #define VMALLOC_END 0xd0000000UL |
diff --git a/arch/arm/mach-msm/include/mach/vmalloc.h b/arch/arm/mach-msm/include/mach/vmalloc.h index 31a32ad062dc..d138448eff16 100644 --- a/arch/arm/mach-msm/include/mach/vmalloc.h +++ b/arch/arm/mach-msm/include/mach/vmalloc.h | |||
| @@ -16,7 +16,7 @@ | |||
| 16 | #ifndef __ASM_ARCH_MSM_VMALLOC_H | 16 | #ifndef __ASM_ARCH_MSM_VMALLOC_H |
| 17 | #define __ASM_ARCH_MSM_VMALLOC_H | 17 | #define __ASM_ARCH_MSM_VMALLOC_H |
| 18 | 18 | ||
| 19 | #define VMALLOC_END 0xd0000000 | 19 | #define VMALLOC_END 0xd0000000UL |
| 20 | 20 | ||
| 21 | #endif | 21 | #endif |
| 22 | 22 | ||
diff --git a/arch/arm/mach-mx25/devices-imx25.h b/arch/arm/mach-mx25/devices-imx25.h index 93afa10b13cf..d94d282fa676 100644 --- a/arch/arm/mach-mx25/devices-imx25.h +++ b/arch/arm/mach-mx25/devices-imx25.h | |||
| @@ -42,9 +42,9 @@ extern const struct imx_mxc_nand_data imx25_mxc_nand_data __initconst; | |||
| 42 | #define imx25_add_mxc_nand(pdata) \ | 42 | #define imx25_add_mxc_nand(pdata) \ |
| 43 | imx_add_mxc_nand(&imx25_mxc_nand_data, pdata) | 43 | imx_add_mxc_nand(&imx25_mxc_nand_data, pdata) |
| 44 | 44 | ||
| 45 | extern const struct imx_spi_imx_data imx25_spi_imx_data[] __initconst; | 45 | extern const struct imx_spi_imx_data imx25_cspi_data[] __initconst; |
| 46 | #define imx25_add_spi_imx(id, pdata) \ | 46 | #define imx25_add_spi_imx(id, pdata) \ |
| 47 | imx_add_spi_imx(&imx25_spi_imx_data[id], pdata) | 47 | imx_add_spi_imx(&imx25_cspi_data[id], pdata) |
| 48 | #define imx25_add_spi_imx0(pdata) imx25_add_spi_imx(0, pdata) | 48 | #define imx25_add_spi_imx0(pdata) imx25_add_spi_imx(0, pdata) |
| 49 | #define imx25_add_spi_imx1(pdata) imx25_add_spi_imx(1, pdata) | 49 | #define imx25_add_spi_imx1(pdata) imx25_add_spi_imx(1, pdata) |
| 50 | #define imx25_add_spi_imx2(pdata) imx25_add_spi_imx(2, pdata) | 50 | #define imx25_add_spi_imx2(pdata) imx25_add_spi_imx(2, pdata) |
diff --git a/arch/arm/mach-mx3/mach-pcm037_eet.c b/arch/arm/mach-mx3/mach-pcm037_eet.c index 99e0894e07db..fda56545d2fd 100644 --- a/arch/arm/mach-mx3/mach-pcm037_eet.c +++ b/arch/arm/mach-mx3/mach-pcm037_eet.c | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | 14 | ||
| 15 | #include <mach/common.h> | 15 | #include <mach/common.h> |
| 16 | #include <mach/iomux-mx3.h> | 16 | #include <mach/iomux-mx3.h> |
| 17 | #include <mach/spi.h> | ||
| 17 | 18 | ||
| 18 | #include <asm/mach-types.h> | 19 | #include <asm/mach-types.h> |
| 19 | 20 | ||
| @@ -59,14 +60,12 @@ static struct spi_board_info pcm037_spi_dev[] = { | |||
| 59 | }; | 60 | }; |
| 60 | 61 | ||
| 61 | /* Platform Data for MXC CSPI */ | 62 | /* Platform Data for MXC CSPI */ |
| 62 | #if defined(CONFIG_SPI_IMX) || defined(CONFIG_SPI_IMX_MODULE) | ||
| 63 | static int pcm037_spi1_cs[] = {MXC_SPI_CS(1), IOMUX_TO_GPIO(MX31_PIN_KEY_COL7)}; | 63 | static int pcm037_spi1_cs[] = {MXC_SPI_CS(1), IOMUX_TO_GPIO(MX31_PIN_KEY_COL7)}; |
| 64 | 64 | ||
| 65 | static const struct spi_imx_master pcm037_spi1_pdata __initconst = { | 65 | static const struct spi_imx_master pcm037_spi1_pdata __initconst = { |
| 66 | .chipselect = pcm037_spi1_cs, | 66 | .chipselect = pcm037_spi1_cs, |
| 67 | .num_chipselect = ARRAY_SIZE(pcm037_spi1_cs), | 67 | .num_chipselect = ARRAY_SIZE(pcm037_spi1_cs), |
| 68 | }; | 68 | }; |
| 69 | #endif | ||
| 70 | 69 | ||
| 71 | /* GPIO-keys input device */ | 70 | /* GPIO-keys input device */ |
| 72 | static struct gpio_keys_button pcm037_gpio_keys[] = { | 71 | static struct gpio_keys_button pcm037_gpio_keys[] = { |
| @@ -171,7 +170,7 @@ static struct platform_device pcm037_gpio_keys_device = { | |||
| 171 | }, | 170 | }, |
| 172 | }; | 171 | }; |
| 173 | 172 | ||
| 174 | static int eet_init_devices(void) | 173 | static int __init eet_init_devices(void) |
| 175 | { | 174 | { |
| 176 | if (!machine_is_pcm037() || pcm037_variant() != PCM037_EET) | 175 | if (!machine_is_pcm037() || pcm037_variant() != PCM037_EET) |
| 177 | return 0; | 176 | return 0; |
diff --git a/arch/arm/mach-netx/include/mach/vmalloc.h b/arch/arm/mach-netx/include/mach/vmalloc.h index 7cca3574308f..871f1ef7bff5 100644 --- a/arch/arm/mach-netx/include/mach/vmalloc.h +++ b/arch/arm/mach-netx/include/mach/vmalloc.h | |||
| @@ -16,4 +16,4 @@ | |||
| 16 | * along with this program; if not, write to the Free Software | 16 | * along with this program; if not, write to the Free Software |
| 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 18 | */ | 18 | */ |
| 19 | #define VMALLOC_END 0xd0000000 | 19 | #define VMALLOC_END 0xd0000000UL |
diff --git a/arch/arm/mach-omap1/include/mach/vmalloc.h b/arch/arm/mach-omap1/include/mach/vmalloc.h index b001f67d695b..22ec4a479577 100644 --- a/arch/arm/mach-omap1/include/mach/vmalloc.h +++ b/arch/arm/mach-omap1/include/mach/vmalloc.h | |||
| @@ -17,4 +17,4 @@ | |||
| 17 | * along with this program; if not, write to the Free Software | 17 | * along with this program; if not, write to the Free Software |
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 19 | */ | 19 | */ |
| 20 | #define VMALLOC_END 0xd8000000 | 20 | #define VMALLOC_END 0xd8000000UL |
diff --git a/arch/arm/mach-omap2/include/mach/vmalloc.h b/arch/arm/mach-omap2/include/mach/vmalloc.h index 4da31e997efe..866319947760 100644 --- a/arch/arm/mach-omap2/include/mach/vmalloc.h +++ b/arch/arm/mach-omap2/include/mach/vmalloc.h | |||
| @@ -17,4 +17,4 @@ | |||
| 17 | * along with this program; if not, write to the Free Software | 17 | * along with this program; if not, write to the Free Software |
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 19 | */ | 19 | */ |
| 20 | #define VMALLOC_END 0xf8000000 | 20 | #define VMALLOC_END 0xf8000000UL |
diff --git a/arch/arm/mach-pnx4008/include/mach/vmalloc.h b/arch/arm/mach-pnx4008/include/mach/vmalloc.h index 31b65ee07b0b..184913c71141 100644 --- a/arch/arm/mach-pnx4008/include/mach/vmalloc.h +++ b/arch/arm/mach-pnx4008/include/mach/vmalloc.h | |||
| @@ -17,4 +17,4 @@ | |||
| 17 | * The vmalloc() routines leaves a hole of 4kB between each vmalloced | 17 | * The vmalloc() routines leaves a hole of 4kB between each vmalloced |
| 18 | * area for the same reason. ;) | 18 | * area for the same reason. ;) |
| 19 | */ | 19 | */ |
| 20 | #define VMALLOC_END 0xd0000000 | 20 | #define VMALLOC_END 0xd0000000UL |
diff --git a/arch/arm/mach-rpc/include/mach/vmalloc.h b/arch/arm/mach-rpc/include/mach/vmalloc.h index 3bcd86fadb81..fb700228637a 100644 --- a/arch/arm/mach-rpc/include/mach/vmalloc.h +++ b/arch/arm/mach-rpc/include/mach/vmalloc.h | |||
| @@ -7,4 +7,4 @@ | |||
| 7 | * it under the terms of the GNU General Public License version 2 as | 7 | * it under the terms of the GNU General Public License version 2 as |
| 8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
| 9 | */ | 9 | */ |
| 10 | #define VMALLOC_END 0xdc000000 | 10 | #define VMALLOC_END 0xdc000000UL |
diff --git a/arch/arm/mach-shark/include/mach/vmalloc.h b/arch/arm/mach-shark/include/mach/vmalloc.h index 8e845b6a7cb5..b10df988526d 100644 --- a/arch/arm/mach-shark/include/mach/vmalloc.h +++ b/arch/arm/mach-shark/include/mach/vmalloc.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * arch/arm/mach-shark/include/mach/vmalloc.h | 2 | * arch/arm/mach-shark/include/mach/vmalloc.h |
| 3 | */ | 3 | */ |
| 4 | #define VMALLOC_END 0xd0000000 | 4 | #define VMALLOC_END 0xd0000000UL |
diff --git a/arch/arm/mach-ux500/cpu.c b/arch/arm/mach-ux500/cpu.c index 73fb1a551ec6..608a1372b172 100644 --- a/arch/arm/mach-ux500/cpu.c +++ b/arch/arm/mach-ux500/cpu.c | |||
| @@ -75,14 +75,14 @@ void __init ux500_init_irq(void) | |||
| 75 | static inline void ux500_cache_wait(void __iomem *reg, unsigned long mask) | 75 | static inline void ux500_cache_wait(void __iomem *reg, unsigned long mask) |
| 76 | { | 76 | { |
| 77 | /* wait for the operation to complete */ | 77 | /* wait for the operation to complete */ |
| 78 | while (readl(reg) & mask) | 78 | while (readl_relaxed(reg) & mask) |
| 79 | ; | 79 | ; |
| 80 | } | 80 | } |
| 81 | 81 | ||
| 82 | static inline void ux500_cache_sync(void) | 82 | static inline void ux500_cache_sync(void) |
| 83 | { | 83 | { |
| 84 | void __iomem *base = __io_address(UX500_L2CC_BASE); | 84 | void __iomem *base = __io_address(UX500_L2CC_BASE); |
| 85 | writel(0, base + L2X0_CACHE_SYNC); | 85 | writel_relaxed(0, base + L2X0_CACHE_SYNC); |
| 86 | ux500_cache_wait(base + L2X0_CACHE_SYNC, 1); | 86 | ux500_cache_wait(base + L2X0_CACHE_SYNC, 1); |
| 87 | } | 87 | } |
| 88 | 88 | ||
| @@ -107,7 +107,7 @@ static void ux500_l2x0_inv_all(void) | |||
| 107 | uint32_t l2x0_way_mask = (1<<16) - 1; /* Bitmask of active ways */ | 107 | uint32_t l2x0_way_mask = (1<<16) - 1; /* Bitmask of active ways */ |
| 108 | 108 | ||
| 109 | /* invalidate all ways */ | 109 | /* invalidate all ways */ |
| 110 | writel(l2x0_way_mask, l2x0_base + L2X0_INV_WAY); | 110 | writel_relaxed(l2x0_way_mask, l2x0_base + L2X0_INV_WAY); |
| 111 | ux500_cache_wait(l2x0_base + L2X0_INV_WAY, l2x0_way_mask); | 111 | ux500_cache_wait(l2x0_base + L2X0_INV_WAY, l2x0_way_mask); |
| 112 | ux500_cache_sync(); | 112 | ux500_cache_sync(); |
| 113 | } | 113 | } |
diff --git a/arch/arm/mach-versatile/include/mach/vmalloc.h b/arch/arm/mach-versatile/include/mach/vmalloc.h index ebd8a2543d3b..7d8e069ad51b 100644 --- a/arch/arm/mach-versatile/include/mach/vmalloc.h +++ b/arch/arm/mach-versatile/include/mach/vmalloc.h | |||
| @@ -18,4 +18,4 @@ | |||
| 18 | * along with this program; if not, write to the Free Software | 18 | * along with this program; if not, write to the Free Software |
| 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 20 | */ | 20 | */ |
| 21 | #define VMALLOC_END 0xd8000000 | 21 | #define VMALLOC_END 0xd8000000UL |
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c index 17e7b0b57e49..55c17a6fb22f 100644 --- a/arch/arm/mm/ioremap.c +++ b/arch/arm/mm/ioremap.c | |||
| @@ -206,8 +206,8 @@ void __iomem * __arm_ioremap_pfn_caller(unsigned long pfn, | |||
| 206 | */ | 206 | */ |
| 207 | if (pfn_valid(pfn)) { | 207 | if (pfn_valid(pfn)) { |
| 208 | printk(KERN_WARNING "BUG: Your driver calls ioremap() on system memory. This leads\n" | 208 | printk(KERN_WARNING "BUG: Your driver calls ioremap() on system memory. This leads\n" |
| 209 | KERN_WARNING "to architecturally unpredictable behaviour on ARMv6+, and ioremap()\n" | 209 | "to architecturally unpredictable behaviour on ARMv6+, and ioremap()\n" |
| 210 | KERN_WARNING "will fail in the next kernel release. Please fix your driver.\n"); | 210 | "will fail in the next kernel release. Please fix your driver.\n"); |
| 211 | WARN_ON(1); | 211 | WARN_ON(1); |
| 212 | } | 212 | } |
| 213 | 213 | ||
diff --git a/arch/arm/plat-mxc/devices/platform-imx-dma.c b/arch/arm/plat-mxc/devices/platform-imx-dma.c index 02d989018059..3a705c7877dd 100644 --- a/arch/arm/plat-mxc/devices/platform-imx-dma.c +++ b/arch/arm/plat-mxc/devices/platform-imx-dma.c | |||
| @@ -12,15 +12,7 @@ | |||
| 12 | 12 | ||
| 13 | #include <mach/hardware.h> | 13 | #include <mach/hardware.h> |
| 14 | #include <mach/devices-common.h> | 14 | #include <mach/devices-common.h> |
| 15 | #ifdef SDMA_IS_MERGED | ||
| 16 | #include <mach/sdma.h> | 15 | #include <mach/sdma.h> |
| 17 | #else | ||
| 18 | struct sdma_platform_data { | ||
| 19 | int sdma_version; | ||
| 20 | char *cpu_name; | ||
| 21 | int to_version; | ||
| 22 | }; | ||
| 23 | #endif | ||
| 24 | 16 | ||
| 25 | struct imx_imx_sdma_data { | 17 | struct imx_imx_sdma_data { |
| 26 | resource_size_t iobase; | 18 | resource_size_t iobase; |
diff --git a/arch/arm/plat-mxc/devices/platform-spi_imx.c b/arch/arm/plat-mxc/devices/platform-spi_imx.c index e48340ec331e..17f724c9452d 100644 --- a/arch/arm/plat-mxc/devices/platform-spi_imx.c +++ b/arch/arm/plat-mxc/devices/platform-spi_imx.c | |||
| @@ -27,6 +27,7 @@ const struct imx_spi_imx_data imx21_cspi_data[] __initconst = { | |||
| 27 | imx_spi_imx_data_entry(MX21, CSPI, "imx21-cspi", _id, _hwid, SZ_4K) | 27 | imx_spi_imx_data_entry(MX21, CSPI, "imx21-cspi", _id, _hwid, SZ_4K) |
| 28 | imx21_cspi_data_entry(0, 1), | 28 | imx21_cspi_data_entry(0, 1), |
| 29 | imx21_cspi_data_entry(1, 2), | 29 | imx21_cspi_data_entry(1, 2), |
| 30 | }; | ||
| 30 | #endif | 31 | #endif |
| 31 | 32 | ||
| 32 | #ifdef CONFIG_ARCH_MX25 | 33 | #ifdef CONFIG_ARCH_MX25 |
diff --git a/arch/arm/plat-nomadik/timer.c b/arch/arm/plat-nomadik/timer.c index aedf9c1d645e..63cdc6025bd7 100644 --- a/arch/arm/plat-nomadik/timer.c +++ b/arch/arm/plat-nomadik/timer.c | |||
| @@ -3,6 +3,7 @@ | |||
| 3 | * | 3 | * |
| 4 | * Copyright (C) 2008 STMicroelectronics | 4 | * Copyright (C) 2008 STMicroelectronics |
| 5 | * Copyright (C) 2010 Alessandro Rubini | 5 | * Copyright (C) 2010 Alessandro Rubini |
| 6 | * Copyright (C) 2010 Linus Walleij for ST-Ericsson | ||
| 6 | * | 7 | * |
| 7 | * This program is free software; you can redistribute it and/or modify | 8 | * This program is free software; you can redistribute it and/or modify |
| 8 | * it under the terms of the GNU General Public License version 2, as | 9 | * it under the terms of the GNU General Public License version 2, as |
| @@ -16,11 +17,13 @@ | |||
| 16 | #include <linux/clk.h> | 17 | #include <linux/clk.h> |
| 17 | #include <linux/jiffies.h> | 18 | #include <linux/jiffies.h> |
| 18 | #include <linux/err.h> | 19 | #include <linux/err.h> |
| 20 | #include <linux/cnt32_to_63.h> | ||
| 21 | #include <linux/timer.h> | ||
| 19 | #include <asm/mach/time.h> | 22 | #include <asm/mach/time.h> |
| 20 | 23 | ||
| 21 | #include <plat/mtu.h> | 24 | #include <plat/mtu.h> |
| 22 | 25 | ||
| 23 | void __iomem *mtu_base; /* ssigned by machine code */ | 26 | void __iomem *mtu_base; /* Assigned by machine code */ |
| 24 | 27 | ||
| 25 | /* | 28 | /* |
| 26 | * Kernel assumes that sched_clock can be called early | 29 | * Kernel assumes that sched_clock can be called early |
| @@ -48,16 +51,82 @@ static struct clocksource nmdk_clksrc = { | |||
| 48 | /* | 51 | /* |
| 49 | * Override the global weak sched_clock symbol with this | 52 | * Override the global weak sched_clock symbol with this |
| 50 | * local implementation which uses the clocksource to get some | 53 | * local implementation which uses the clocksource to get some |
| 51 | * better resolution when scheduling the kernel. We accept that | 54 | * better resolution when scheduling the kernel. |
| 52 | * this wraps around for now, since it is just a relative time | 55 | * |
| 53 | * stamp. (Inspired by OMAP implementation.) | 56 | * Because the hardware timer period may be quite short |
| 57 | * (32.3 secs on the 133 MHz MTU timer selection on ux500) | ||
| 58 | * and because cnt32_to_63() needs to be called at least once per | ||
| 59 | * half period to work properly, a kernel keepwarm() timer is set up | ||
| 60 | * to ensure this requirement is always met. | ||
| 61 | * | ||
| 62 | * Also the sched_clock timer will wrap around at some point, | ||
| 63 | * here we set it to run continously for a year. | ||
| 54 | */ | 64 | */ |
| 65 | #define SCHED_CLOCK_MIN_WRAP 3600*24*365 | ||
| 66 | static struct timer_list cnt32_to_63_keepwarm_timer; | ||
| 67 | static u32 sched_mult; | ||
| 68 | static u32 sched_shift; | ||
| 69 | |||
| 55 | unsigned long long notrace sched_clock(void) | 70 | unsigned long long notrace sched_clock(void) |
| 56 | { | 71 | { |
| 57 | return clocksource_cyc2ns(nmdk_clksrc.read( | 72 | u64 cycles; |
| 58 | &nmdk_clksrc), | 73 | |
| 59 | nmdk_clksrc.mult, | 74 | if (unlikely(!mtu_base)) |
| 60 | nmdk_clksrc.shift); | 75 | return 0; |
| 76 | |||
| 77 | cycles = cnt32_to_63(-readl(mtu_base + MTU_VAL(0))); | ||
| 78 | /* | ||
| 79 | * sched_mult is guaranteed to be even so will | ||
| 80 | * shift out bit 63 | ||
| 81 | */ | ||
| 82 | return (cycles * sched_mult) >> sched_shift; | ||
| 83 | } | ||
| 84 | |||
| 85 | /* Just kick sched_clock every so often */ | ||
| 86 | static void cnt32_to_63_keepwarm(unsigned long data) | ||
| 87 | { | ||
| 88 | mod_timer(&cnt32_to_63_keepwarm_timer, round_jiffies(jiffies + data)); | ||
| 89 | (void) sched_clock(); | ||
| 90 | } | ||
| 91 | |||
| 92 | /* | ||
| 93 | * Set up a timer to keep sched_clock():s 32_to_63 algorithm warm | ||
| 94 | * once in half a 32bit timer wrap interval. | ||
| 95 | */ | ||
| 96 | static void __init nmdk_sched_clock_init(unsigned long rate) | ||
| 97 | { | ||
| 98 | u32 v; | ||
| 99 | unsigned long delta; | ||
| 100 | u64 days; | ||
| 101 | |||
| 102 | /* Find the apropriate mult and shift factors */ | ||
| 103 | clocks_calc_mult_shift(&sched_mult, &sched_shift, | ||
| 104 | rate, NSEC_PER_SEC, SCHED_CLOCK_MIN_WRAP); | ||
| 105 | /* We need to multiply by an even number to get rid of bit 63 */ | ||
| 106 | if (sched_mult & 1) | ||
| 107 | sched_mult++; | ||
| 108 | |||
| 109 | /* Let's see what we get, take max counter and scale it */ | ||
| 110 | days = (0xFFFFFFFFFFFFFFFFLLU * sched_mult) >> sched_shift; | ||
| 111 | do_div(days, NSEC_PER_SEC); | ||
| 112 | do_div(days, (3600*24)); | ||
| 113 | |||
| 114 | pr_info("sched_clock: using %d bits @ %lu Hz wrap in %lu days\n", | ||
| 115 | (64 - sched_shift), rate, (unsigned long) days); | ||
| 116 | |||
| 117 | /* | ||
| 118 | * Program a timer to kick us at half 32bit wraparound | ||
| 119 | * Formula: seconds per wrap = (2^32) / f | ||
| 120 | */ | ||
| 121 | v = 0xFFFFFFFFUL / rate; | ||
| 122 | /* We want half of the wrap time to keep cnt32_to_63 warm */ | ||
| 123 | v /= 2; | ||
| 124 | pr_debug("sched_clock: prescaled timer rate: %lu Hz, " | ||
| 125 | "initialize keepwarm timer every %d seconds\n", rate, v); | ||
| 126 | /* Convert seconds to jiffies */ | ||
| 127 | delta = msecs_to_jiffies(v*1000); | ||
| 128 | setup_timer(&cnt32_to_63_keepwarm_timer, cnt32_to_63_keepwarm, delta); | ||
| 129 | mod_timer(&cnt32_to_63_keepwarm_timer, round_jiffies(jiffies + delta)); | ||
| 61 | } | 130 | } |
| 62 | 131 | ||
| 63 | /* Clockevent device: use one-shot mode */ | 132 | /* Clockevent device: use one-shot mode */ |
| @@ -161,13 +230,15 @@ void __init nmdk_timer_init(void) | |||
| 161 | writel(0, mtu_base + MTU_BGLR(0)); | 230 | writel(0, mtu_base + MTU_BGLR(0)); |
| 162 | writel(cr | MTU_CRn_ENA, mtu_base + MTU_CR(0)); | 231 | writel(cr | MTU_CRn_ENA, mtu_base + MTU_CR(0)); |
| 163 | 232 | ||
| 164 | /* Now the scheduling clock is ready */ | 233 | /* Now the clock source is ready */ |
| 165 | nmdk_clksrc.read = nmdk_read_timer; | 234 | nmdk_clksrc.read = nmdk_read_timer; |
| 166 | 235 | ||
| 167 | if (clocksource_register(&nmdk_clksrc)) | 236 | if (clocksource_register(&nmdk_clksrc)) |
| 168 | pr_err("timer: failed to initialize clock source %s\n", | 237 | pr_err("timer: failed to initialize clock source %s\n", |
| 169 | nmdk_clksrc.name); | 238 | nmdk_clksrc.name); |
| 170 | 239 | ||
| 240 | nmdk_sched_clock_init(rate); | ||
| 241 | |||
| 171 | /* Timer 1 is used for events */ | 242 | /* Timer 1 is used for events */ |
| 172 | 243 | ||
| 173 | clockevents_calc_mult_shift(&nmdk_clkevt, rate, MTU_MIN_RANGE); | 244 | clockevents_calc_mult_shift(&nmdk_clkevt, rate, MTU_MIN_RANGE); |
diff --git a/drivers/scsi/arm/fas216.h b/drivers/scsi/arm/fas216.h index 377cfb72cc66..f30f8d659dc4 100644 --- a/drivers/scsi/arm/fas216.h +++ b/drivers/scsi/arm/fas216.h | |||
| @@ -345,7 +345,7 @@ extern int fas216_queue_command(struct Scsi_Host *h, struct scsi_cmnd *SCpnt); | |||
| 345 | * : SCpnt - Command to queue | 345 | * : SCpnt - Command to queue |
| 346 | * Returns : 0 - success, else error | 346 | * Returns : 0 - success, else error |
| 347 | */ | 347 | */ |
| 348 | extern int fas216_noqueue_command(struct Scsi_Host *, struct scsi_cmnd *) | 348 | extern int fas216_noqueue_command(struct Scsi_Host *, struct scsi_cmnd *); |
| 349 | 349 | ||
| 350 | /* Function: irqreturn_t fas216_intr (FAS216_Info *info) | 350 | /* Function: irqreturn_t fas216_intr (FAS216_Info *info) |
| 351 | * Purpose : handle interrupts from the interface to progress a command | 351 | * Purpose : handle interrupts from the interface to progress a command |
diff --git a/drivers/video/mx3fb.c b/drivers/video/mx3fb.c index 7cfc170bce19..ca0f6be9d12e 100644 --- a/drivers/video/mx3fb.c +++ b/drivers/video/mx3fb.c | |||
| @@ -27,6 +27,7 @@ | |||
| 27 | #include <linux/clk.h> | 27 | #include <linux/clk.h> |
| 28 | #include <linux/mutex.h> | 28 | #include <linux/mutex.h> |
| 29 | 29 | ||
| 30 | #include <mach/dma.h> | ||
| 30 | #include <mach/hardware.h> | 31 | #include <mach/hardware.h> |
| 31 | #include <mach/ipu.h> | 32 | #include <mach/ipu.h> |
| 32 | #include <mach/mx3fb.h> | 33 | #include <mach/mx3fb.h> |
| @@ -1420,6 +1421,9 @@ static bool chan_filter(struct dma_chan *chan, void *arg) | |||
| 1420 | struct device *dev; | 1421 | struct device *dev; |
| 1421 | struct mx3fb_platform_data *mx3fb_pdata; | 1422 | struct mx3fb_platform_data *mx3fb_pdata; |
| 1422 | 1423 | ||
| 1424 | if (!imx_dma_is_ipu(chan)) | ||
| 1425 | return false; | ||
| 1426 | |||
| 1423 | if (!rq) | 1427 | if (!rq) |
| 1424 | return false; | 1428 | return false; |
| 1425 | 1429 | ||
