diff options
-rw-r--r-- | arch/arm/boot/compressed/misc.c | 1 | ||||
-rw-r--r-- | arch/arm/include/asm/elf.h | 1 | ||||
-rw-r--r-- | arch/arm/include/asm/pgtable-nommu.h | 1 | ||||
-rw-r--r-- | arch/arm/kernel/perf_event.c | 5 | ||||
-rw-r--r-- | arch/arm/kernel/smp.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-at91/board-sam9g20ek.c | 10 | ||||
-rw-r--r-- | arch/arm/plat-samsung/include/plat/uncompress.h | 2 | ||||
-rw-r--r-- | drivers/video/amba-clcd.c | 31 | ||||
-rw-r--r-- | include/linux/amba/clcd.h | 33 |
9 files changed, 56 insertions, 32 deletions
diff --git a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/misc.c index d32bc71c1f78..d2b2ef41cd4f 100644 --- a/arch/arm/boot/compressed/misc.c +++ b/arch/arm/boot/compressed/misc.c | |||
@@ -33,6 +33,7 @@ unsigned int __machine_arch_type; | |||
33 | #else | 33 | #else |
34 | 34 | ||
35 | static void putstr(const char *ptr); | 35 | static void putstr(const char *ptr); |
36 | extern void error(char *x); | ||
36 | 37 | ||
37 | #include <mach/uncompress.h> | 38 | #include <mach/uncompress.h> |
38 | 39 | ||
diff --git a/arch/arm/include/asm/elf.h b/arch/arm/include/asm/elf.h index a399bb5730f1..bff056489cc1 100644 --- a/arch/arm/include/asm/elf.h +++ b/arch/arm/include/asm/elf.h | |||
@@ -98,6 +98,7 @@ extern int elf_check_arch(const struct elf32_hdr *); | |||
98 | extern int arm_elf_read_implies_exec(const struct elf32_hdr *, int); | 98 | extern int arm_elf_read_implies_exec(const struct elf32_hdr *, int); |
99 | #define elf_read_implies_exec(ex,stk) arm_elf_read_implies_exec(&(ex), stk) | 99 | #define elf_read_implies_exec(ex,stk) arm_elf_read_implies_exec(&(ex), stk) |
100 | 100 | ||
101 | struct task_struct; | ||
101 | int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs); | 102 | int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs); |
102 | #define ELF_CORE_COPY_TASK_REGS dump_task_regs | 103 | #define ELF_CORE_COPY_TASK_REGS dump_task_regs |
103 | 104 | ||
diff --git a/arch/arm/include/asm/pgtable-nommu.h b/arch/arm/include/asm/pgtable-nommu.h index 013cfcdc4839..ffc0e85775b4 100644 --- a/arch/arm/include/asm/pgtable-nommu.h +++ b/arch/arm/include/asm/pgtable-nommu.h | |||
@@ -67,6 +67,7 @@ static inline int pte_file(pte_t pte) { return 0; } | |||
67 | */ | 67 | */ |
68 | #define pgprot_noncached(prot) __pgprot(0) | 68 | #define pgprot_noncached(prot) __pgprot(0) |
69 | #define pgprot_writecombine(prot) __pgprot(0) | 69 | #define pgprot_writecombine(prot) __pgprot(0) |
70 | #define pgprot_dmacoherent(prot) __pgprot(0) | ||
70 | 71 | ||
71 | 72 | ||
72 | /* | 73 | /* |
diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c index 3875d99cc40f..9e70f2053f9a 100644 --- a/arch/arm/kernel/perf_event.c +++ b/arch/arm/kernel/perf_event.c | |||
@@ -332,7 +332,8 @@ armpmu_reserve_hardware(void) | |||
332 | 332 | ||
333 | for (i = 0; i < pmu_irqs->num_irqs; ++i) { | 333 | for (i = 0; i < pmu_irqs->num_irqs; ++i) { |
334 | err = request_irq(pmu_irqs->irqs[i], armpmu->handle_irq, | 334 | err = request_irq(pmu_irqs->irqs[i], armpmu->handle_irq, |
335 | IRQF_DISABLED, "armpmu", NULL); | 335 | IRQF_DISABLED | IRQF_NOBALANCING, |
336 | "armpmu", NULL); | ||
336 | if (err) { | 337 | if (err) { |
337 | pr_warning("unable to request IRQ%d for ARM " | 338 | pr_warning("unable to request IRQ%d for ARM " |
338 | "perf counters\n", pmu_irqs->irqs[i]); | 339 | "perf counters\n", pmu_irqs->irqs[i]); |
@@ -1624,7 +1625,7 @@ enum armv7_counters { | |||
1624 | /* | 1625 | /* |
1625 | * EVTSEL: Event selection reg | 1626 | * EVTSEL: Event selection reg |
1626 | */ | 1627 | */ |
1627 | #define ARMV7_EVTSEL_MASK 0x7f /* Mask for writable bits */ | 1628 | #define ARMV7_EVTSEL_MASK 0xff /* Mask for writable bits */ |
1628 | 1629 | ||
1629 | /* | 1630 | /* |
1630 | * SELECT: Counter selection reg | 1631 | * SELECT: Counter selection reg |
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index 57162af53dc9..577543f3857f 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c | |||
@@ -99,6 +99,7 @@ int __cpuinit __cpu_up(unsigned int cpu) | |||
99 | *pmd = __pmd((PHYS_OFFSET & PGDIR_MASK) | | 99 | *pmd = __pmd((PHYS_OFFSET & PGDIR_MASK) | |
100 | PMD_TYPE_SECT | PMD_SECT_AP_WRITE); | 100 | PMD_TYPE_SECT | PMD_SECT_AP_WRITE); |
101 | flush_pmd_entry(pmd); | 101 | flush_pmd_entry(pmd); |
102 | outer_clean_range(__pa(pmd), __pa(pmd + 1)); | ||
102 | 103 | ||
103 | /* | 104 | /* |
104 | * We need to tell the secondary core where to find | 105 | * We need to tell the secondary core where to find |
@@ -106,7 +107,8 @@ int __cpuinit __cpu_up(unsigned int cpu) | |||
106 | */ | 107 | */ |
107 | secondary_data.stack = task_stack_page(idle) + THREAD_START_SP; | 108 | secondary_data.stack = task_stack_page(idle) + THREAD_START_SP; |
108 | secondary_data.pgdir = virt_to_phys(pgd); | 109 | secondary_data.pgdir = virt_to_phys(pgd); |
109 | wmb(); | 110 | __cpuc_flush_dcache_area(&secondary_data, sizeof(secondary_data)); |
111 | outer_clean_range(__pa(&secondary_data), __pa(&secondary_data + 1)); | ||
110 | 112 | ||
111 | /* | 113 | /* |
112 | * Now bring the CPU into our world. | 114 | * Now bring the CPU into our world. |
diff --git a/arch/arm/mach-at91/board-sam9g20ek.c b/arch/arm/mach-at91/board-sam9g20ek.c index 29cf83177484..c11fd47aec5d 100644 --- a/arch/arm/mach-at91/board-sam9g20ek.c +++ b/arch/arm/mach-at91/board-sam9g20ek.c | |||
@@ -271,10 +271,12 @@ static void __init ek_add_device_buttons(void) {} | |||
271 | 271 | ||
272 | 272 | ||
273 | static struct i2c_board_info __initdata ek_i2c_devices[] = { | 273 | static struct i2c_board_info __initdata ek_i2c_devices[] = { |
274 | { | 274 | { |
275 | I2C_BOARD_INFO("24c512", 0x50), | 275 | I2C_BOARD_INFO("24c512", 0x50) |
276 | I2C_BOARD_INFO("wm8731", 0x1b), | 276 | }, |
277 | }, | 277 | { |
278 | I2C_BOARD_INFO("wm8731", 0x1b) | ||
279 | }, | ||
278 | }; | 280 | }; |
279 | 281 | ||
280 | 282 | ||
diff --git a/arch/arm/plat-samsung/include/plat/uncompress.h b/arch/arm/plat-samsung/include/plat/uncompress.h index e87ce8ffbbcd..7d6ed7263d57 100644 --- a/arch/arm/plat-samsung/include/plat/uncompress.h +++ b/arch/arm/plat-samsung/include/plat/uncompress.h | |||
@@ -140,8 +140,6 @@ static void arch_decomp_error(const char *x) | |||
140 | #define arch_error arch_decomp_error | 140 | #define arch_error arch_decomp_error |
141 | #endif | 141 | #endif |
142 | 142 | ||
143 | static void error(char *err); | ||
144 | |||
145 | #ifdef CONFIG_S3C_BOOT_UART_FORCE_FIFO | 143 | #ifdef CONFIG_S3C_BOOT_UART_FORCE_FIFO |
146 | static inline void arch_enable_uart_fifo(void) | 144 | static inline void arch_enable_uart_fifo(void) |
147 | { | 145 | { |
diff --git a/drivers/video/amba-clcd.c b/drivers/video/amba-clcd.c index a21efcd10b78..afe21e6eb544 100644 --- a/drivers/video/amba-clcd.c +++ b/drivers/video/amba-clcd.c | |||
@@ -65,16 +65,16 @@ static void clcdfb_disable(struct clcd_fb *fb) | |||
65 | if (fb->board->disable) | 65 | if (fb->board->disable) |
66 | fb->board->disable(fb); | 66 | fb->board->disable(fb); |
67 | 67 | ||
68 | val = readl(fb->regs + CLCD_CNTL); | 68 | val = readl(fb->regs + fb->off_cntl); |
69 | if (val & CNTL_LCDPWR) { | 69 | if (val & CNTL_LCDPWR) { |
70 | val &= ~CNTL_LCDPWR; | 70 | val &= ~CNTL_LCDPWR; |
71 | writel(val, fb->regs + CLCD_CNTL); | 71 | writel(val, fb->regs + fb->off_cntl); |
72 | 72 | ||
73 | clcdfb_sleep(20); | 73 | clcdfb_sleep(20); |
74 | } | 74 | } |
75 | if (val & CNTL_LCDEN) { | 75 | if (val & CNTL_LCDEN) { |
76 | val &= ~CNTL_LCDEN; | 76 | val &= ~CNTL_LCDEN; |
77 | writel(val, fb->regs + CLCD_CNTL); | 77 | writel(val, fb->regs + fb->off_cntl); |
78 | } | 78 | } |
79 | 79 | ||
80 | /* | 80 | /* |
@@ -94,7 +94,7 @@ static void clcdfb_enable(struct clcd_fb *fb, u32 cntl) | |||
94 | * Bring up by first enabling.. | 94 | * Bring up by first enabling.. |
95 | */ | 95 | */ |
96 | cntl |= CNTL_LCDEN; | 96 | cntl |= CNTL_LCDEN; |
97 | writel(cntl, fb->regs + CLCD_CNTL); | 97 | writel(cntl, fb->regs + fb->off_cntl); |
98 | 98 | ||
99 | clcdfb_sleep(20); | 99 | clcdfb_sleep(20); |
100 | 100 | ||
@@ -102,7 +102,7 @@ static void clcdfb_enable(struct clcd_fb *fb, u32 cntl) | |||
102 | * and now apply power. | 102 | * and now apply power. |
103 | */ | 103 | */ |
104 | cntl |= CNTL_LCDPWR; | 104 | cntl |= CNTL_LCDPWR; |
105 | writel(cntl, fb->regs + CLCD_CNTL); | 105 | writel(cntl, fb->regs + fb->off_cntl); |
106 | 106 | ||
107 | /* | 107 | /* |
108 | * finally, enable the interface. | 108 | * finally, enable the interface. |
@@ -233,7 +233,7 @@ static int clcdfb_set_par(struct fb_info *info) | |||
233 | readl(fb->regs + CLCD_TIM0), readl(fb->regs + CLCD_TIM1), | 233 | readl(fb->regs + CLCD_TIM0), readl(fb->regs + CLCD_TIM1), |
234 | readl(fb->regs + CLCD_TIM2), readl(fb->regs + CLCD_TIM3), | 234 | readl(fb->regs + CLCD_TIM2), readl(fb->regs + CLCD_TIM3), |
235 | readl(fb->regs + CLCD_UBAS), readl(fb->regs + CLCD_LBAS), | 235 | readl(fb->regs + CLCD_UBAS), readl(fb->regs + CLCD_LBAS), |
236 | readl(fb->regs + CLCD_IENB), readl(fb->regs + CLCD_CNTL)); | 236 | readl(fb->regs + fb->off_ienb), readl(fb->regs + fb->off_cntl)); |
237 | #endif | 237 | #endif |
238 | 238 | ||
239 | return 0; | 239 | return 0; |
@@ -345,6 +345,23 @@ static int clcdfb_register(struct clcd_fb *fb) | |||
345 | { | 345 | { |
346 | int ret; | 346 | int ret; |
347 | 347 | ||
348 | /* | ||
349 | * ARM PL111 always has IENB at 0x1c; it's only PL110 | ||
350 | * which is reversed on some platforms. | ||
351 | */ | ||
352 | if (amba_manf(fb->dev) == 0x41 && amba_part(fb->dev) == 0x111) { | ||
353 | fb->off_ienb = CLCD_PL111_IENB; | ||
354 | fb->off_cntl = CLCD_PL111_CNTL; | ||
355 | } else { | ||
356 | #ifdef CONFIG_ARCH_VERSATILE | ||
357 | fb->off_ienb = CLCD_PL111_IENB; | ||
358 | fb->off_cntl = CLCD_PL111_CNTL; | ||
359 | #else | ||
360 | fb->off_ienb = CLCD_PL110_IENB; | ||
361 | fb->off_cntl = CLCD_PL110_CNTL; | ||
362 | #endif | ||
363 | } | ||
364 | |||
348 | fb->clk = clk_get(&fb->dev->dev, NULL); | 365 | fb->clk = clk_get(&fb->dev->dev, NULL); |
349 | if (IS_ERR(fb->clk)) { | 366 | if (IS_ERR(fb->clk)) { |
350 | ret = PTR_ERR(fb->clk); | 367 | ret = PTR_ERR(fb->clk); |
@@ -416,7 +433,7 @@ static int clcdfb_register(struct clcd_fb *fb) | |||
416 | /* | 433 | /* |
417 | * Ensure interrupts are disabled. | 434 | * Ensure interrupts are disabled. |
418 | */ | 435 | */ |
419 | writel(0, fb->regs + CLCD_IENB); | 436 | writel(0, fb->regs + fb->off_ienb); |
420 | 437 | ||
421 | fb_set_var(&fb->fb, &fb->fb.var); | 438 | fb_set_var(&fb->fb, &fb->fb.var); |
422 | 439 | ||
diff --git a/include/linux/amba/clcd.h b/include/linux/amba/clcd.h index 29c0448265cf..ca16c3801a1e 100644 --- a/include/linux/amba/clcd.h +++ b/include/linux/amba/clcd.h | |||
@@ -21,22 +21,21 @@ | |||
21 | #define CLCD_UBAS 0x00000010 | 21 | #define CLCD_UBAS 0x00000010 |
22 | #define CLCD_LBAS 0x00000014 | 22 | #define CLCD_LBAS 0x00000014 |
23 | 23 | ||
24 | #if !defined(CONFIG_ARCH_VERSATILE) && !defined(CONFIG_ARCH_REALVIEW) | 24 | #define CLCD_PL110_IENB 0x00000018 |
25 | #define CLCD_IENB 0x00000018 | 25 | #define CLCD_PL110_CNTL 0x0000001c |
26 | #define CLCD_CNTL 0x0000001c | 26 | #define CLCD_PL110_STAT 0x00000020 |
27 | #else | 27 | #define CLCD_PL110_INTR 0x00000024 |
28 | /* | 28 | #define CLCD_PL110_UCUR 0x00000028 |
29 | * Someone rearranged these two registers on the Versatile | 29 | #define CLCD_PL110_LCUR 0x0000002C |
30 | * platform... | 30 | |
31 | */ | 31 | #define CLCD_PL111_CNTL 0x00000018 |
32 | #define CLCD_IENB 0x0000001c | 32 | #define CLCD_PL111_IENB 0x0000001c |
33 | #define CLCD_CNTL 0x00000018 | 33 | #define CLCD_PL111_RIS 0x00000020 |
34 | #endif | 34 | #define CLCD_PL111_MIS 0x00000024 |
35 | 35 | #define CLCD_PL111_ICR 0x00000028 | |
36 | #define CLCD_STAT 0x00000020 | 36 | #define CLCD_PL111_UCUR 0x0000002c |
37 | #define CLCD_INTR 0x00000024 | 37 | #define CLCD_PL111_LCUR 0x00000030 |
38 | #define CLCD_UCUR 0x00000028 | 38 | |
39 | #define CLCD_LCUR 0x0000002C | ||
40 | #define CLCD_PALL 0x00000200 | 39 | #define CLCD_PALL 0x00000200 |
41 | #define CLCD_PALETTE 0x00000200 | 40 | #define CLCD_PALETTE 0x00000200 |
42 | 41 | ||
@@ -147,6 +146,8 @@ struct clcd_fb { | |||
147 | struct clcd_board *board; | 146 | struct clcd_board *board; |
148 | void *board_data; | 147 | void *board_data; |
149 | void __iomem *regs; | 148 | void __iomem *regs; |
149 | u16 off_ienb; | ||
150 | u16 off_cntl; | ||
150 | u32 clcd_cntl; | 151 | u32 clcd_cntl; |
151 | u32 cmap[16]; | 152 | u32 cmap[16]; |
152 | }; | 153 | }; |