diff options
author | Olof Johansson <olof@lixom.net> | 2013-07-12 13:59:39 -0400 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2013-07-12 13:59:39 -0400 |
commit | f4b96f5e4ff8d86699c851c10245e102809b0331 (patch) | |
tree | f766102263bed71738431cabb4d4f6f086005cd8 /arch/arm/boot | |
parent | 9d8812df35be58a5da0c44182c1e4ba2507cc6a7 (diff) | |
parent | c24a6ae18abde53b048372b066b93b71b1b91154 (diff) |
Merge tag 'omap-for-v3.11/fixes-for-merge-window' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into fixes
Omap fixes and minor defconfig updates that would be good to
get in before -rc1.
* tag 'omap-for-v3.11/fixes-for-merge-window' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
ARM: OMAP2+: omap2plus_defconfig: Enable appended DTB support
ARM: OMAP2+: Enable TI_EDMA in omap2plus_defconfig
ARM: OMAP2+: omap2plus_defconfig: enable DRA752 thermal support by default
ARM: OMAP2+: omap2plus_defconfig: enable TI bandgap driver
ARM: OMAP2+: devices: remove duplicated include from devices.c
ARM: OMAP3: igep0020: Set DSS pins in correct mux mode.
ARM: OMAP2+: N900: enable N900-specific drivers even if device tree is enabled
ARM: OMAP2+: Cocci spatch "ptr_ret.spatch"
ARM: OMAP2+: Remove obsolete Makefile line
ARM: OMAP5: Enable Cortex A15 errata 798181
ARM: scu: provide inline dummy functions when SCU is not present
ARM: OMAP4: sleep: build OMAP4 specific functions only for OMAP4
ARM: OMAP2+: timer: initialize before using oh_name
Signed-off-by: Olof Johansson <olof@lixom.net>
Add/move/change conflicts in arch/arm/mach-omap2/Kconfig resolved.
Diffstat (limited to 'arch/arm/boot')
-rw-r--r-- | arch/arm/boot/compressed/Makefile | 2 | ||||
-rw-r--r-- | arch/arm/boot/compressed/atags_to_fdt.c | 44 | ||||
-rw-r--r-- | arch/arm/boot/compressed/head.S | 40 | ||||
-rw-r--r-- | arch/arm/boot/dts/atlas6.dtsi | 2 | ||||
-rw-r--r-- | arch/arm/boot/dts/bcm11351.dtsi | 8 | ||||
-rw-r--r-- | arch/arm/boot/dts/ecx-common.dtsi | 2 | ||||
-rw-r--r-- | arch/arm/boot/dts/prima2.dtsi | 2 |
7 files changed, 77 insertions, 23 deletions
diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile index 120b83bfde20..48d0a44270bd 100644 --- a/arch/arm/boot/compressed/Makefile +++ b/arch/arm/boot/compressed/Makefile | |||
@@ -27,7 +27,7 @@ OBJS += misc.o decompress.o | |||
27 | ifeq ($(CONFIG_DEBUG_UNCOMPRESS),y) | 27 | ifeq ($(CONFIG_DEBUG_UNCOMPRESS),y) |
28 | OBJS += debug.o | 28 | OBJS += debug.o |
29 | endif | 29 | endif |
30 | FONTC = $(srctree)/drivers/video/console/font_acorn_8x8.c | 30 | FONTC = $(srctree)/lib/fonts/font_acorn_8x8.c |
31 | 31 | ||
32 | # string library code (-Os is enforced to keep it much smaller) | 32 | # string library code (-Os is enforced to keep it much smaller) |
33 | OBJS += string.o | 33 | OBJS += string.o |
diff --git a/arch/arm/boot/compressed/atags_to_fdt.c b/arch/arm/boot/compressed/atags_to_fdt.c index aabc02a68482..d1153c8a765a 100644 --- a/arch/arm/boot/compressed/atags_to_fdt.c +++ b/arch/arm/boot/compressed/atags_to_fdt.c | |||
@@ -53,6 +53,17 @@ static const void *getprop(const void *fdt, const char *node_path, | |||
53 | return fdt_getprop(fdt, offset, property, len); | 53 | return fdt_getprop(fdt, offset, property, len); |
54 | } | 54 | } |
55 | 55 | ||
56 | static uint32_t get_cell_size(const void *fdt) | ||
57 | { | ||
58 | int len; | ||
59 | uint32_t cell_size = 1; | ||
60 | const uint32_t *size_len = getprop(fdt, "/", "#size-cells", &len); | ||
61 | |||
62 | if (size_len) | ||
63 | cell_size = fdt32_to_cpu(*size_len); | ||
64 | return cell_size; | ||
65 | } | ||
66 | |||
56 | static void merge_fdt_bootargs(void *fdt, const char *fdt_cmdline) | 67 | static void merge_fdt_bootargs(void *fdt, const char *fdt_cmdline) |
57 | { | 68 | { |
58 | char cmdline[COMMAND_LINE_SIZE]; | 69 | char cmdline[COMMAND_LINE_SIZE]; |
@@ -95,9 +106,11 @@ static void merge_fdt_bootargs(void *fdt, const char *fdt_cmdline) | |||
95 | int atags_to_fdt(void *atag_list, void *fdt, int total_space) | 106 | int atags_to_fdt(void *atag_list, void *fdt, int total_space) |
96 | { | 107 | { |
97 | struct tag *atag = atag_list; | 108 | struct tag *atag = atag_list; |
98 | uint32_t mem_reg_property[2 * NR_BANKS]; | 109 | /* In the case of 64 bits memory size, need to reserve 2 cells for |
110 | * address and size for each bank */ | ||
111 | uint32_t mem_reg_property[2 * 2 * NR_BANKS]; | ||
99 | int memcount = 0; | 112 | int memcount = 0; |
100 | int ret; | 113 | int ret, memsize; |
101 | 114 | ||
102 | /* make sure we've got an aligned pointer */ | 115 | /* make sure we've got an aligned pointer */ |
103 | if ((u32)atag_list & 0x3) | 116 | if ((u32)atag_list & 0x3) |
@@ -137,8 +150,25 @@ int atags_to_fdt(void *atag_list, void *fdt, int total_space) | |||
137 | continue; | 150 | continue; |
138 | if (!atag->u.mem.size) | 151 | if (!atag->u.mem.size) |
139 | continue; | 152 | continue; |
140 | mem_reg_property[memcount++] = cpu_to_fdt32(atag->u.mem.start); | 153 | memsize = get_cell_size(fdt); |
141 | mem_reg_property[memcount++] = cpu_to_fdt32(atag->u.mem.size); | 154 | |
155 | if (memsize == 2) { | ||
156 | /* if memsize is 2, that means that | ||
157 | * each data needs 2 cells of 32 bits, | ||
158 | * so the data are 64 bits */ | ||
159 | uint64_t *mem_reg_prop64 = | ||
160 | (uint64_t *)mem_reg_property; | ||
161 | mem_reg_prop64[memcount++] = | ||
162 | cpu_to_fdt64(atag->u.mem.start); | ||
163 | mem_reg_prop64[memcount++] = | ||
164 | cpu_to_fdt64(atag->u.mem.size); | ||
165 | } else { | ||
166 | mem_reg_property[memcount++] = | ||
167 | cpu_to_fdt32(atag->u.mem.start); | ||
168 | mem_reg_property[memcount++] = | ||
169 | cpu_to_fdt32(atag->u.mem.size); | ||
170 | } | ||
171 | |||
142 | } else if (atag->hdr.tag == ATAG_INITRD2) { | 172 | } else if (atag->hdr.tag == ATAG_INITRD2) { |
143 | uint32_t initrd_start, initrd_size; | 173 | uint32_t initrd_start, initrd_size; |
144 | initrd_start = atag->u.initrd.start; | 174 | initrd_start = atag->u.initrd.start; |
@@ -150,8 +180,10 @@ int atags_to_fdt(void *atag_list, void *fdt, int total_space) | |||
150 | } | 180 | } |
151 | } | 181 | } |
152 | 182 | ||
153 | if (memcount) | 183 | if (memcount) { |
154 | setprop(fdt, "/memory", "reg", mem_reg_property, 4*memcount); | 184 | setprop(fdt, "/memory", "reg", mem_reg_property, |
185 | 4 * memcount * memsize); | ||
186 | } | ||
155 | 187 | ||
156 | return fdt_pack(fdt); | 188 | return fdt_pack(fdt); |
157 | } | 189 | } |
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index 032a8d987148..75189f13cf54 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S | |||
@@ -142,7 +142,6 @@ start: | |||
142 | mov r7, r1 @ save architecture ID | 142 | mov r7, r1 @ save architecture ID |
143 | mov r8, r2 @ save atags pointer | 143 | mov r8, r2 @ save atags pointer |
144 | 144 | ||
145 | #ifndef __ARM_ARCH_2__ | ||
146 | /* | 145 | /* |
147 | * Booting from Angel - need to enter SVC mode and disable | 146 | * Booting from Angel - need to enter SVC mode and disable |
148 | * FIQs/IRQs (numeric definitions from angel arm.h source). | 147 | * FIQs/IRQs (numeric definitions from angel arm.h source). |
@@ -158,10 +157,6 @@ not_angel: | |||
158 | safe_svcmode_maskall r0 | 157 | safe_svcmode_maskall r0 |
159 | msr spsr_cxsf, r9 @ Save the CPU boot mode in | 158 | msr spsr_cxsf, r9 @ Save the CPU boot mode in |
160 | @ SPSR | 159 | @ SPSR |
161 | #else | ||
162 | teqp pc, #0x0c000003 @ turn off interrupts | ||
163 | #endif | ||
164 | |||
165 | /* | 160 | /* |
166 | * Note that some cache flushing and other stuff may | 161 | * Note that some cache flushing and other stuff may |
167 | * be needed here - is there an Angel SWI call for this? | 162 | * be needed here - is there an Angel SWI call for this? |
@@ -183,7 +178,19 @@ not_angel: | |||
183 | ldr r4, =zreladdr | 178 | ldr r4, =zreladdr |
184 | #endif | 179 | #endif |
185 | 180 | ||
186 | bl cache_on | 181 | /* |
182 | * Set up a page table only if it won't overwrite ourself. | ||
183 | * That means r4 < pc && r4 - 16k page directory > &_end. | ||
184 | * Given that r4 > &_end is most unfrequent, we add a rough | ||
185 | * additional 1MB of room for a possible appended DTB. | ||
186 | */ | ||
187 | mov r0, pc | ||
188 | cmp r0, r4 | ||
189 | ldrcc r0, LC0+32 | ||
190 | addcc r0, r0, pc | ||
191 | cmpcc r4, r0 | ||
192 | orrcc r4, r4, #1 @ remember we skipped cache_on | ||
193 | blcs cache_on | ||
187 | 194 | ||
188 | restart: adr r0, LC0 | 195 | restart: adr r0, LC0 |
189 | ldmia r0, {r1, r2, r3, r6, r10, r11, r12} | 196 | ldmia r0, {r1, r2, r3, r6, r10, r11, r12} |
@@ -229,7 +236,7 @@ restart: adr r0, LC0 | |||
229 | * r0 = delta | 236 | * r0 = delta |
230 | * r2 = BSS start | 237 | * r2 = BSS start |
231 | * r3 = BSS end | 238 | * r3 = BSS end |
232 | * r4 = final kernel address | 239 | * r4 = final kernel address (possibly with LSB set) |
233 | * r5 = appended dtb size (still unknown) | 240 | * r5 = appended dtb size (still unknown) |
234 | * r6 = _edata | 241 | * r6 = _edata |
235 | * r7 = architecture ID | 242 | * r7 = architecture ID |
@@ -277,6 +284,7 @@ restart: adr r0, LC0 | |||
277 | */ | 284 | */ |
278 | cmp r0, #1 | 285 | cmp r0, #1 |
279 | sub r0, r4, #TEXT_OFFSET | 286 | sub r0, r4, #TEXT_OFFSET |
287 | bic r0, r0, #1 | ||
280 | add r0, r0, #0x100 | 288 | add r0, r0, #0x100 |
281 | mov r1, r6 | 289 | mov r1, r6 |
282 | sub r2, sp, r6 | 290 | sub r2, sp, r6 |
@@ -323,12 +331,13 @@ dtb_check_done: | |||
323 | 331 | ||
324 | /* | 332 | /* |
325 | * Check to see if we will overwrite ourselves. | 333 | * Check to see if we will overwrite ourselves. |
326 | * r4 = final kernel address | 334 | * r4 = final kernel address (possibly with LSB set) |
327 | * r9 = size of decompressed image | 335 | * r9 = size of decompressed image |
328 | * r10 = end of this image, including bss/stack/malloc space if non XIP | 336 | * r10 = end of this image, including bss/stack/malloc space if non XIP |
329 | * We basically want: | 337 | * We basically want: |
330 | * r4 - 16k page directory >= r10 -> OK | 338 | * r4 - 16k page directory >= r10 -> OK |
331 | * r4 + image length <= address of wont_overwrite -> OK | 339 | * r4 + image length <= address of wont_overwrite -> OK |
340 | * Note: the possible LSB in r4 is harmless here. | ||
332 | */ | 341 | */ |
333 | add r10, r10, #16384 | 342 | add r10, r10, #16384 |
334 | cmp r4, r10 | 343 | cmp r4, r10 |
@@ -390,7 +399,8 @@ dtb_check_done: | |||
390 | add sp, sp, r6 | 399 | add sp, sp, r6 |
391 | #endif | 400 | #endif |
392 | 401 | ||
393 | bl cache_clean_flush | 402 | tst r4, #1 |
403 | bleq cache_clean_flush | ||
394 | 404 | ||
395 | adr r0, BSYM(restart) | 405 | adr r0, BSYM(restart) |
396 | add r0, r0, r6 | 406 | add r0, r0, r6 |
@@ -402,7 +412,7 @@ wont_overwrite: | |||
402 | * r0 = delta | 412 | * r0 = delta |
403 | * r2 = BSS start | 413 | * r2 = BSS start |
404 | * r3 = BSS end | 414 | * r3 = BSS end |
405 | * r4 = kernel execution address | 415 | * r4 = kernel execution address (possibly with LSB set) |
406 | * r5 = appended dtb size (0 if not present) | 416 | * r5 = appended dtb size (0 if not present) |
407 | * r7 = architecture ID | 417 | * r7 = architecture ID |
408 | * r8 = atags pointer | 418 | * r8 = atags pointer |
@@ -465,6 +475,15 @@ not_relocated: mov r0, #0 | |||
465 | cmp r2, r3 | 475 | cmp r2, r3 |
466 | blo 1b | 476 | blo 1b |
467 | 477 | ||
478 | /* | ||
479 | * Did we skip the cache setup earlier? | ||
480 | * That is indicated by the LSB in r4. | ||
481 | * Do it now if so. | ||
482 | */ | ||
483 | tst r4, #1 | ||
484 | bic r4, r4, #1 | ||
485 | blne cache_on | ||
486 | |||
468 | /* | 487 | /* |
469 | * The C runtime environment should now be setup sufficiently. | 488 | * The C runtime environment should now be setup sufficiently. |
470 | * Set up some pointers, and start decompressing. | 489 | * Set up some pointers, and start decompressing. |
@@ -513,6 +532,7 @@ LC0: .word LC0 @ r1 | |||
513 | .word _got_start @ r11 | 532 | .word _got_start @ r11 |
514 | .word _got_end @ ip | 533 | .word _got_end @ ip |
515 | .word .L_user_stack_end @ sp | 534 | .word .L_user_stack_end @ sp |
535 | .word _end - restart + 16384 + 1024*1024 | ||
516 | .size LC0, . - LC0 | 536 | .size LC0, . - LC0 |
517 | 537 | ||
518 | #ifdef CONFIG_ARCH_RPC | 538 | #ifdef CONFIG_ARCH_RPC |
diff --git a/arch/arm/boot/dts/atlas6.dtsi b/arch/arm/boot/dts/atlas6.dtsi index 7d1a27949c13..9866cd736dee 100644 --- a/arch/arm/boot/dts/atlas6.dtsi +++ b/arch/arm/boot/dts/atlas6.dtsi | |||
@@ -613,7 +613,7 @@ | |||
613 | }; | 613 | }; |
614 | 614 | ||
615 | rtc-iobg { | 615 | rtc-iobg { |
616 | compatible = "sirf,prima2-rtciobg", "sirf-prima2-rtciobg-bus"; | 616 | compatible = "sirf,prima2-rtciobg", "sirf-prima2-rtciobg-bus", "simple-bus"; |
617 | #address-cells = <1>; | 617 | #address-cells = <1>; |
618 | #size-cells = <1>; | 618 | #size-cells = <1>; |
619 | reg = <0x80030000 0x10000>; | 619 | reg = <0x80030000 0x10000>; |
diff --git a/arch/arm/boot/dts/bcm11351.dtsi b/arch/arm/boot/dts/bcm11351.dtsi index 17979d5f23b4..c0cdf66f8964 100644 --- a/arch/arm/boot/dts/bcm11351.dtsi +++ b/arch/arm/boot/dts/bcm11351.dtsi | |||
@@ -50,10 +50,10 @@ | |||
50 | }; | 50 | }; |
51 | 51 | ||
52 | L2: l2-cache { | 52 | L2: l2-cache { |
53 | compatible = "arm,pl310-cache"; | 53 | compatible = "bcm,bcm11351-a2-pl310-cache"; |
54 | reg = <0x3ff20000 0x1000>; | 54 | reg = <0x3ff20000 0x1000>; |
55 | cache-unified; | 55 | cache-unified; |
56 | cache-level = <2>; | 56 | cache-level = <2>; |
57 | }; | 57 | }; |
58 | 58 | ||
59 | timer@35006000 { | 59 | timer@35006000 { |
diff --git a/arch/arm/boot/dts/ecx-common.dtsi b/arch/arm/boot/dts/ecx-common.dtsi index d61b535f682a..e8559b753c9d 100644 --- a/arch/arm/boot/dts/ecx-common.dtsi +++ b/arch/arm/boot/dts/ecx-common.dtsi | |||
@@ -33,6 +33,8 @@ | |||
33 | calxeda,port-phys = <&combophy5 0 &combophy0 0 | 33 | calxeda,port-phys = <&combophy5 0 &combophy0 0 |
34 | &combophy0 1 &combophy0 2 | 34 | &combophy0 1 &combophy0 2 |
35 | &combophy0 3>; | 35 | &combophy0 3>; |
36 | calxeda,sgpio-gpio =<&gpioh 5 1 &gpioh 6 1 &gpioh 7 1>; | ||
37 | calxeda,led-order = <4 0 1 2 3>; | ||
36 | }; | 38 | }; |
37 | 39 | ||
38 | sdhci@ffe0e000 { | 40 | sdhci@ffe0e000 { |
diff --git a/arch/arm/boot/dts/prima2.dtsi b/arch/arm/boot/dts/prima2.dtsi index 02edd8965f8a..05e9489cf95c 100644 --- a/arch/arm/boot/dts/prima2.dtsi +++ b/arch/arm/boot/dts/prima2.dtsi | |||
@@ -610,7 +610,7 @@ | |||
610 | }; | 610 | }; |
611 | 611 | ||
612 | rtc-iobg { | 612 | rtc-iobg { |
613 | compatible = "sirf,prima2-rtciobg", "sirf-prima2-rtciobg-bus"; | 613 | compatible = "sirf,prima2-rtciobg", "sirf-prima2-rtciobg-bus", "simple-bus"; |
614 | #address-cells = <1>; | 614 | #address-cells = <1>; |
615 | #size-cells = <1>; | 615 | #size-cells = <1>; |
616 | reg = <0x80030000 0x10000>; | 616 | reg = <0x80030000 0x10000>; |