| Index: apps/installer-ipodnano4g/bootstub/bootstub.S | 
| — | — | @@ -24,7 +24,6 @@ | 
| 25 | 25 |  | 
| 26 | 26 | .global _start | 
| 27 | 27 | _start: | 
| 28 |  | -
 | 
| 29 | 28 | msr	cpsr_c, #0xd3 | 
| 30 | 29 | mrc	p15, 0, r0,c1,c0 | 
| 31 | 30 | bic	r0, r0, #1 | 
| — | — | @@ -31,25 +30,27 @@ | 
| 32 | 31 | mcr	p15, 0, r0,c1,c0 @ disable mmu | 
| 33 | 32 |  | 
| 34 | 33 | mov	lr, #0 | 
| 35 |  | -	adr	sp, values1
 | 
| 36 | 34 | mcr	p15, 0, lr,c7,c14,0 @ clean & invalidate data cache | 
| 37 | 35 | mcr	p15, 0, lr,c7,c10,4 @ drain write buffer | 
| 38 | 36 | mcr	p15, 0, lr,c7,c5    @ invalidate instruction cache | 
|  | 37 | +	mcr	p15, 0, lr,c7,c5,4  @ flush prefetch buffer | 
| 39 | 38 | mcr	p15, 0, lr,c8,c7    @ invalidate all unlocked entries in the TLB | 
| 40 | 39 | mcr	p15, 0, lr,c13,c0,0 @ disable context id register | 
| 41 | 40 |  | 
| 42 |  | -.macro block0_constpool	   @ Block 0 (MMU, DMA) register map:
 | 
|  | 41 | +	adr	sp, values1 | 
|  | 42 | + | 
|  | 43 | +.macro block0_constpool    @ Block 0 (MMU) register map: | 
| 43 | 44 | @ R0: Unused | 
| 44 | 45 | @ R1: Unused | 
| 45 | 46 | @ R2: Unused | 
| 46 | 47 | @ R3: Scratchpad | 
| 47 |  | -	                   @ R4: Unused
 | 
| 48 |  | -	                   @ R5: Unused
 | 
| 49 |  | -	                   @ R6: Unused
 | 
| 50 |  | -	                   @ R7: Unused
 | 
| 51 |  | -	                   @ R8: Unused
 | 
| 52 |  | -	                   @ R9: Unused
 | 
| 53 |  | -	.word	0x0005107D @ R10: CP15r1
 | 
|  | 48 | +                           @ R4: Unused | 
|  | 49 | +                           @ R5: Unused | 
|  | 50 | +                           @ R6: Unused | 
|  | 51 | +                           @ R7: Unused | 
|  | 52 | +                           @ R8: Unused | 
|  | 53 | +                           @ R9: Unused | 
|  | 54 | +	.word	0x0005187D @ R10: CP15r1 | 
| 54 | 55 | .word	0x2202C000 @ R11: First level page table | 
| 55 | 56 | .word	0x00000C1E @ R12: Default segment flags | 
| 56 | 57 | @ R13: Constant pool pointer | 
| — | — | @@ -59,6 +60,9 @@ | 
| 60 | 61 | mcr	p15, 0, r11,c2,c0 @ set first level translation table | 
| 61 | 62 | mov	r3, #-1 | 
| 62 | 63 | mcr	p15, 0, r3,c3,c0 @ disable domain access control                  @ R3: Unused | 
|  | 64 | +	orr	r0, r12, #0x22000000 | 
|  | 65 | +	str	r0, [r11], #4 | 
|  | 66 | +	add	r12, r12, #0x00100000 | 
| 63 | 67 | mmuloop: | 
| 64 | 68 | str	r12, [r11], #4 | 
| 65 | 69 | add	r12, r12, #0x00100000 | 
| — | — | @@ -66,11 +70,12 @@ | 
| 67 | 71 | biccs	r12, r12, #0xc | 
| 68 | 72 | tst	r12, #0x40000000 | 
| 69 | 73 | beq	mmuloop | 
| 70 |  | -                       								  @ R11: Unused
 | 
| 71 |  | -    										  @ R12: Unused
 | 
|  | 74 | +                                                                                  @ R11: Unused | 
|  | 75 | +                                                                                  @ R12: Unused | 
| 72 | 76 | mcr	p15, 0, r10,c1,c0                                                 @ R10: Unused | 
| 73 | 77 |  | 
| 74 |  | -.macro block1_constpool	   @ Block 1 (SYSCON) register map:
 | 
|  | 78 | + | 
|  | 79 | +.macro block1_constpool    @ Block 1 (SYSCON) register map: | 
| 75 | 80 | .word	0x000327E5 @ R0: PWRCON(0) | 
| 76 | 81 | .word	0xFE2BED6D @ R1: PWRCON(1) | 
| 77 | 82 | .word	0x00DCF779 @ R2: PWRCON(4) | 
| — | — | @@ -88,7 +93,7 @@ | 
| 89 | 94 | .endm                      @ R14: 0 | 
| 90 | 95 |  | 
| 91 | 96 | ldmia	sp!, {r0-r12} | 
| 92 |  | -	str	r0, [r12,#0x48]  @ PWRCON0 ...					  @ R0: Scratchpad
 | 
|  | 97 | +	str	r0, [r12,#0x48]  @ PWRCON0 ...                                    @ R0: Scratchpad | 
| 93 | 98 | str	r1, [r12,#0x4c] | 
| 94 | 99 | mov	r0, #0x73 | 
| 95 | 100 | str	r0, [r12,#0x58] | 
| — | — | @@ -111,7 +116,7 @@ | 
| 112 | 117 | str	r0, [r12,#0x44] | 
| 113 | 118 | str	lr, [r12,#0x44] | 
| 114 | 119 | str	lr, [r12,#0x3c] | 
| 115 |  | -	str	r4, [r12,#0x20]							  @ R4: Scratchpad
 | 
|  | 120 | +	str	r4, [r12,#0x20]                                                   @ R4: Scratchpad | 
| 116 | 121 | str	r5, [r12,#0x30] | 
| 117 | 122 | mov	r5, #1                                                            @ R5: 1 | 
| 118 | 123 | str	r5, [r12,#0x44] | 
| — | — | @@ -122,14 +127,14 @@ | 
| 123 | 128 | tst	r4, #0x1 | 
| 124 | 129 | beq	sysconwait3      @ while (!([SYSCON+0x40] & 1)) | 
| 125 | 130 |  | 
| 126 |  | -	str	r6, [r12,#0x04]							  @ R6: Unused
 | 
|  | 131 | +	str	r6, [r12,#0x04]                                                   @ R6: Unused | 
| 127 | 132 | add	r3, r3, #0x3e                                                     @ R3: 0x003E3E3E | 
| 128 | 133 | sysconwait4: | 
| 129 | 134 | ldr	r4, [r12,#0x04] | 
| 130 |  | -	tst	r4, r3								  @ R3: Unused
 | 
|  | 135 | +	tst	r4, r3                                                            @ R3: Unused | 
| 131 | 136 | bne	sysconwait4 | 
| 132 | 137 |  | 
| 133 |  | -	str	r7, [r12]							  @ R7: Unused
 | 
|  | 138 | +	str	r7, [r12]                                                         @ R7: Unused | 
| 134 | 139 | sysconwait5: | 
| 135 | 140 | ldr	r2, [r12] | 
| 136 | 141 | tst	r4, #0xf | 
| — | — | @@ -136,7 +141,7 @@ | 
| 137 | 142 | bne	sysconwait5 | 
| 138 | 143 |  | 
| 139 | 144 | str	r8, [r12,#0x08] | 
| 140 |  | -	orr	r4, r8, r8,lsr#1						  @ R8: Unused
 | 
|  | 145 | +	orr	r4, r8, r8,lsr#1                                                  @ R8: Unused | 
| 141 | 146 | str	r4, [r12,#0x0c] | 
| 142 | 147 | mov	r4, #0xc000 | 
| 143 | 148 | str	r4, [r12,#0x10] | 
| — | — | @@ -147,26 +152,26 @@ | 
| 148 | 153 | str	r4, [r9]                                                          @ R9: Unused | 
| 149 | 154 | mov	r0, #0x10                                                         @ R5: 0x10 | 
| 150 | 155 |  | 
| 151 |  | -	                   @ Block 2 (TIMER) register map:
 | 
| 152 |  | -	                   @ R0: 1
 | 
| 153 |  | -	                   @ R1: PWRCON(1)
 | 
| 154 |  | -	                   @ R2: PWRCON(4)
 | 
| 155 |  | -	                   @ R3: Scratchpad
 | 
| 156 |  | -	                   @ R4: Scratchpad
 | 
| 157 |  | -	                   @ R5: 0x10
 | 
| 158 |  | -	                   @ R6: Unused
 | 
| 159 |  | -	                   @ R7: Unused
 | 
| 160 |  | -	                   @ R8: Unused
 | 
| 161 |  | -	                   @ R9: Unused
 | 
| 162 |  | -	                   @ R10: PWRCON(1) during timer setup
 | 
| 163 |  | -	                   @ R11: PWRCON(4) during timer setup
 | 
| 164 |  | -	                   @ R12: SYSCON base address
 | 
|  | 156 | +                           @ Block 2 (TIMER) register map: | 
|  | 157 | +                           @ R0: 1 | 
|  | 158 | +                           @ R1: PWRCON(1) | 
|  | 159 | +                           @ R2: PWRCON(4) | 
|  | 160 | +                           @ R3: Scratchpad | 
|  | 161 | +                           @ R4: Scratchpad | 
|  | 162 | +                           @ R5: 0x10 | 
|  | 163 | +                           @ R6: Unused | 
|  | 164 | +                           @ R7: Unused | 
|  | 165 | +                           @ R8: Unused | 
|  | 166 | +                           @ R9: Unused | 
|  | 167 | +                           @ R10: PWRCON(1) during timer setup | 
|  | 168 | +                           @ R11: PWRCON(4) during timer setup | 
|  | 169 | +                           @ R12: SYSCON base address | 
| 165 | 170 | @ R13: Constant pool pointer | 
| 166 | 171 | @ R14: 0 | 
| 167 | 172 |  | 
| 168 | 173 | str	r10, [r12,#0x4c]     @ PWRCON(1) for timer setup                  @ R10: Unused | 
| 169 | 174 | mov	r4, #0x13 | 
| 170 |  | -	str	r4, [r12,#0x58]	     @ PWRCON(2) for timer setup
 | 
|  | 175 | +	str	r4, [r12,#0x58]             @ PWRCON(2) for timer setup | 
| 171 | 176 | str	r11, [r12,#0x6c]     @ PWRCON(4) for timer setup                  @ R11: Unused | 
| 172 | 177 | orr     r11, r12, #0x00200000                                             @ R11: TIMER base address | 
| 173 | 178 | str	r0, [r11,#0x4]       @ TACMD = 0x10 | 
| — | — | @@ -188,23 +193,23 @@ | 
| 189 | 194 | str	r1, [r12,#0x4c]      @ PWRCON(1)                                  @ R1: Unused | 
| 190 | 195 | mov	r3, #0x73 | 
| 191 | 196 | str	r3, [r12,#0x58]      @ PWRCON(2) | 
| 192 |  | -	str	r2, [r12,#0x6c]      @ PWRCON(4)				  @ R2: Unused
 | 
|  | 197 | +	str	r2, [r12,#0x6c]      @ PWRCON(4)                                  @ R2: Unused | 
| 193 | 198 | orr	r10, r11, #0x00800000                                             @ R10: GPIO base address | 
| 194 | 199 |  | 
| 195 |  | -	                   @ Block 3 (GPIO) register map:
 | 
| 196 |  | -	                   @ R0: Unused
 | 
| 197 |  | -	                   @ R1: Unused
 | 
| 198 |  | -	                   @ R2: Unused
 | 
| 199 |  | -	                   @ R3: Scratchpad
 | 
| 200 |  | -	                   @ R4: -1
 | 
| 201 |  | -	                   @ R5: 1
 | 
| 202 |  | -	                   @ R6: Unused
 | 
| 203 |  | -	                   @ R7: Unused
 | 
| 204 |  | -	                   @ R8: Unused
 | 
| 205 |  | -	                   @ R9: Unused
 | 
| 206 |  | -	                   @ R10: GPIO base address
 | 
| 207 |  | -	                   @ R11: TIMER base address
 | 
| 208 |  | -	                   @ R12: SYSCON base address
 | 
|  | 200 | +                           @ Block 3 (GPIO) register map: | 
|  | 201 | +                           @ R0: Unused | 
|  | 202 | +                           @ R1: Unused | 
|  | 203 | +                           @ R2: Unused | 
|  | 204 | +                           @ R3: Scratchpad | 
|  | 205 | +                           @ R4: -1 | 
|  | 206 | +                           @ R5: 1 | 
|  | 207 | +                           @ R6: Unused | 
|  | 208 | +                           @ R7: Unused | 
|  | 209 | +                           @ R8: Unused | 
|  | 210 | +                           @ R9: Unused | 
|  | 211 | +                           @ R10: GPIO base address | 
|  | 212 | +                           @ R11: TIMER base address | 
|  | 213 | +                           @ R12: SYSCON base address | 
| 209 | 214 | @ R13: Constant pool pointer | 
| 210 | 215 | @ R14: 0 | 
| 211 | 216 |  | 
| — | — | @@ -227,7 +232,7 @@ | 
| 228 | 233 | .endm | 
| 229 | 234 |  | 
| 230 | 235 | ldr	r3, [sp], #0x4 | 
| 231 |  | -	str	r3, [r10], #0xc                                       		  @ R10: PCONx iterator
 | 
|  | 236 | +	str	r3, [r10], #0xc                                                   @ R10: PCONx iterator | 
| 232 | 237 | mov	r3, #0x20 | 
| 233 | 238 | str	r3, [r10], #0x4     @ PCON0 + 0xc = 0x20 | 
| 234 | 239 | mov	r3, #0x40 | 
| — | — | @@ -240,7 +245,7 @@ | 
| 241 | 246 | str	lr, [r10], #0x10    @ PCON + 0x10 = 0 | 
| 242 | 247 | cmp	r10, r9 | 
| 243 | 248 | bls	gpioloop1 | 
| 244 |  | -										  @ R10: 0x3CF001E0
 | 
|  | 249 | +                                                                                  @ R10: 0x3CF001E0 | 
| 245 | 250 | ldr	r3, [r10,#0x1a8] | 
| 246 | 251 | bic	r3, r3, #2 | 
| 247 | 252 | orr	r3, r3, #1 | 
| — | — | @@ -255,12 +260,12 @@ | 
| 256 | 261 | add	r8, r8, #4 | 
| 257 | 262 | subs	r9, r9, #1 | 
| 258 | 263 | bne	gpioloop2 | 
| 259 |  | -    										  @ R9: 0
 | 
| 260 |  | -	ldr	r8, [r10,#-0x180]						  @ R8: PCON3 backup
 | 
|  | 264 | +                                                                                  @ R9: 0 | 
|  | 265 | +	ldr	r8, [r10,#-0x180]                                                 @ R8: PCON3 backup | 
| 261 | 266 | and	r3, r8, #0xff | 
| 262 | 267 | str	r3, [r10,#-0x180]   @ *PCON3 &= 0xff | 
| 263 |  | -	mov	r0, #0x3e8							  @ R0: Scratchpad
 | 
| 264 |  | -	bl	udelay	                                                          @ R14: Return address
 | 
|  | 268 | +	mov	r0, #0x3e8                                                        @ R0: Scratchpad | 
|  | 269 | +	bl	udelay                                                            @ R14: Return address | 
| 265 | 270 | ldr	r3, [r10,#-0x17c] | 
| 266 | 271 | and	r3, r3, #0xfc | 
| 267 | 272 | mov	r6, r3, lsr #0x2                                                  @ R6: Data for first PMU access | 
| — | — | @@ -267,20 +272,20 @@ | 
| 268 | 273 | str	r8, [r10,#-0x180] | 
| 269 | 274 | bic	r10, r11, #0x00100000                                             @ R10: I2C base address | 
| 270 | 275 |  | 
| 271 |  | -	                   @ Block 4 (I2C) register map:
 | 
| 272 |  | -	                   @ R0: Scratchpad
 | 
| 273 |  | -	                   @ R1: Scratchpad
 | 
| 274 |  | -	                   @ R2: Unused
 | 
| 275 |  | -	                   @ R3: Unused
 | 
| 276 |  | -	                   @ R4: -1
 | 
| 277 |  | -	                   @ R5: 1
 | 
| 278 |  | -	                   @ R6: Data for first PMU access
 | 
| 279 |  | -	                   @ R7: Unused
 | 
| 280 |  | -	                   @ R8: Unused
 | 
| 281 |  | -	                   @ R9: 0
 | 
| 282 |  | -	                   @ R10: I2C base address
 | 
| 283 |  | -	                   @ R11: TIMER base address
 | 
| 284 |  | -	                   @ R12: SYSCON base address
 | 
|  | 276 | +                           @ Block 4 (I2C) register map: | 
|  | 277 | +                           @ R0: Scratchpad | 
|  | 278 | +                           @ R1: Scratchpad | 
|  | 279 | +                           @ R2: Unused | 
|  | 280 | +                           @ R3: Unused | 
|  | 281 | +                           @ R4: -1 | 
|  | 282 | +                           @ R5: 1 | 
|  | 283 | +                           @ R6: Data for first PMU access | 
|  | 284 | +                           @ R7: Unused | 
|  | 285 | +                           @ R8: Unused | 
|  | 286 | +                           @ R9: 0 | 
|  | 287 | +                           @ R10: I2C base address | 
|  | 288 | +                           @ R11: TIMER base address | 
|  | 289 | +                           @ R12: SYSCON base address | 
| 285 | 290 | @ R13: Constant pool pointer | 
| 286 | 291 | @ R14: Return address / Scratchpad | 
| 287 | 292 |  | 
| — | — | @@ -308,20 +313,20 @@ | 
| 309 | 314 | str	r0, [r10,#0x04] | 
| 310 | 315 | bl	i2cwaitrdy | 
| 311 | 316 |  | 
| 312 |  | -	                   @ Block 5 (PMU) register map:
 | 
| 313 |  | -	                   @ R0: Address / Scratchpad (trashed by pmubatch)
 | 
| 314 |  | -	                   @ R1: Data / Scratchpad (trashed by pmubatch)
 | 
| 315 |  | -	                   @ R2: Scratchpad (set to 0xb7 by pmu accesses)
 | 
| 316 |  | -	                   @ R3: Scratchpad (set to 0x10 by pmu accesses)
 | 
| 317 |  | -	                   @ R4: Scratchpad (trashed by pmu accesses)
 | 
| 318 |  | -	                   @ R5: 1
 | 
| 319 |  | -	                   @ R6: Data for first PMU access
 | 
| 320 |  | -	                   @ R7: Scratchpad (trashed by pmubatch)
 | 
| 321 |  | -	                   @ R8: Used to store warmboot flag
 | 
| 322 |  | -	                   @ R9: 0 / pmubatch transfer count (reset to 0 by pmubatch)
 | 
| 323 |  | -	                   @ R10: I2C base address
 | 
| 324 |  | -	                   @ R11: TIMER base address
 | 
| 325 |  | -	                   @ R12: SYSCON base address
 | 
|  | 317 | +                           @ Block 5 (PMU) register map: | 
|  | 318 | +                           @ R0: Address / Scratchpad (trashed by pmubatch) | 
|  | 319 | +                           @ R1: Data / Scratchpad (trashed by pmubatch) | 
|  | 320 | +                           @ R2: Scratchpad (set to 0xb7 by pmu accesses) | 
|  | 321 | +                           @ R3: Scratchpad (set to 0x10 by pmu accesses) | 
|  | 322 | +                           @ R4: Scratchpad (trashed by pmu accesses) | 
|  | 323 | +                           @ R5: 1 | 
|  | 324 | +                           @ R6: Data for first PMU access | 
|  | 325 | +                           @ R7: Scratchpad (trashed by pmubatch) | 
|  | 326 | +                           @ R8: Used to store warmboot flag | 
|  | 327 | +                           @ R9: 0 / pmubatch transfer count (reset to 0 by pmubatch) | 
|  | 328 | +                           @ R10: I2C base address | 
|  | 329 | +                           @ R11: TIMER base address | 
|  | 330 | +                           @ R12: SYSCON base address | 
| 326 | 331 | @ R13: Constant pool / pmubatch data pointer | 
| 327 | 332 | @ R14: Return address / Scratchpad | 
| 328 | 333 |  | 
| — | — | @@ -344,7 +349,7 @@ | 
| 345 | 350 | .endm | 
| 346 | 351 | mov	r9, #(pmu_batch_1_end - pmu_batch_1_begin) / 2 | 
| 347 | 352 | bl	pmubatch | 
| 348 |  | -	tst	r6, #1							          @ R6: Unused
 | 
|  | 353 | +	tst	r6, #1                                                            @ R6: Unused | 
| 349 | 354 | beq	pmu_skip | 
| 350 | 355 | mov	r0, #0x0d | 
| 351 | 356 | bl	pmuread | 
| — | — | @@ -367,7 +372,7 @@ | 
| 368 | 373 | bl	pmuread | 
| 369 | 374 | bic	r1, r1, #0x80 | 
| 370 | 375 | orr	r1, r1, #0x60 | 
| 371 |  | -nop@	bl	pmuwrite
 | 
|  | 376 | +	bl	pmuwrite | 
| 372 | 377 | .macro pmu_batch_3 | 
| 373 | 378 | pmu_batch_3_begin: | 
| 374 | 379 | .byte	0x44, 0x72 | 
| — | — | @@ -421,9 +426,9 @@ | 
| 422 | 427 | mov	r9, #(pmu_batch_5_end - pmu_batch_5_begin) / 2 | 
| 423 | 428 | bl	pmubatch | 
| 424 | 429 |  | 
| 425 |  | -	orr	lr, r11, #0x00800000						  @ R14: GPIO base address
 | 
|  | 430 | +	orr	lr, r11, #0x00800000                                              @ R14: GPIO base address | 
| 426 | 431 | str	r9, [lr,#0x384] | 
| 427 |  | -	orr	lr, r11, #0x01000000						  @ R14: MIU base address
 | 
|  | 432 | +	orr	lr, r11, #0x01000000                                              @ R14: MIU base address | 
| 428 | 433 | str	r5, [lr] | 
| 429 | 434 | ldrh	r0, [sp], #2 | 
| 430 | 435 | str	r0, [lr,#0x100] | 
| — | — | @@ -431,7 +436,7 @@ | 
| 432 | 437 | str	r0, [lr,#0x11c] | 
| 433 | 438 | str	r0, [lr,#0x120] | 
| 434 | 439 |  | 
| 435 |  | -.macro block6_constpool	   @ Block 6 (SDRAM) register map:
 | 
|  | 440 | +.macro block6_constpool           @ Block 6 (SDRAM) register map: | 
| 436 | 441 | .hword	0x1030 | 
| 437 | 442 | .word	0x008AAC25 @ R0 | 
| 438 | 443 | .word	0x050D67E5 @ R1 | 
| — | — | @@ -441,18 +446,18 @@ | 
| 442 | 447 | .word	0x00008040 @ R5 | 
| 443 | 448 | .word	0x8000100F @ R6: For LCD init at end of block | 
| 444 | 449 | .word	0x41100DB8 @ R7: For LCD init at end of block | 
| 445 |  | -	                   @ R8: Warmboot flag
 | 
| 446 |  | -	                   @ R9: 0
 | 
| 447 |  | -	                   @ R10: I2C base address
 | 
| 448 |  | -	                   @ R11: TIMER base address
 | 
| 449 |  | -	                   @ R12: SYSCON base address
 | 
|  | 450 | +                           @ R8: Warmboot flag | 
|  | 451 | +                           @ R9: 0 | 
|  | 452 | +                           @ R10: I2C base address | 
|  | 453 | +                           @ R11: TIMER base address | 
|  | 454 | +                           @ R12: SYSCON base address | 
| 450 | 455 | @ R13: Constant pool pointer | 
| 451 | 456 | .endm                      @ R14: MIU base address | 
| 452 | 457 |  | 
| 453 | 458 | ldmia	sp!, {r0-r7} | 
| 454 |  | -	str	r0, [lr,#0x114]							  @ R0: Unused
 | 
| 455 |  | -	str	r1, [lr,#0x124]							  @ R1: Unused
 | 
| 456 |  | -	mov	r0, #0x18							  @ R0: Scratchpad
 | 
|  | 459 | +	str	r0, [lr,#0x114]                                                   @ R0: Unused | 
|  | 460 | +	str	r1, [lr,#0x124]                                                   @ R1: Unused | 
|  | 461 | +	mov	r0, #8                                                            @ R0: Scratchpad | 
| 457 | 462 | str	r0, [lr,#0x118] | 
| 458 | 463 | str	r2, [lr,#0x108] | 
| 459 | 464 | mov	r0, #4 | 
| — | — | @@ -463,7 +468,7 @@ | 
| 464 | 469 | ldr	r0, [lr,#0x140] | 
| 465 | 470 | tst	r0, #2 | 
| 466 | 471 | beq	miu_wait1 | 
| 467 |  | -	add	r0, r3, #1							  @ R3: Unused
 | 
|  | 472 | +	add	r0, r3, #1                                                        @ R3: Unused | 
| 468 | 473 | str	r0, [lr,#0x140] | 
| 469 | 474 | miu_wait2: | 
| 470 | 475 | ldr	r0, [lr,#0x144] | 
| — | — | @@ -470,20 +475,20 @@ | 
| 471 | 476 | mvn	r0, r0 | 
| 472 | 477 | tst	r0, #3 | 
| 473 | 478 | bne	miu_wait2 | 
| 474 |  | -	ldr	r1, [lr,#0x144]			                                  @ R1: Scratchpad
 | 
|  | 479 | +	ldr	r1, [lr,#0x144]                                                   @ R1: Scratchpad | 
| 475 | 480 | mov	r0, #0x0ff00000 | 
| 476 |  | -	and	r0, r0, r1, lsl #0x2
 | 
| 477 |  | -	add	r0, r0, r4	                                                  @ R4: Unused
 | 
|  | 481 | +	and	r0, r0, r1, lsl#2 | 
|  | 482 | +	add	r0, r0, r4                                                        @ R4: Unused | 
| 478 | 483 | str	r0, [lr,#0x140] | 
| 479 | 484 | mov	r0, #0x10 | 
| 480 | 485 | str	r0, [lr,#0x150] | 
| 481 |  | -	cmp	r8, #0								  @ R8: Unused
 | 
|  | 486 | +	cmp	r8, #0                                                            @ R8: Unused | 
| 482 | 487 | sub	r8, r10, #0x04300000                                              @ R8: LCD base address | 
| 483 | 488 | str	r6, [r12,#0x08]                                                   @ R6: Unused | 
| 484 | 489 | str	r7, [r8]                                                          @ R7: Unused | 
| 485 | 490 | mov	r0, #0x11 | 
| 486 | 491 | str	r0, [r8,#0x20] | 
| 487 |  | -	mov	r3, #0x33							  @ R3: 0x33
 | 
|  | 492 | +	mov	r3, #0x33                                                         @ R3: 0x33 | 
| 488 | 493 | beq	miu_coldboot | 
| 489 | 494 | str	r0, [lr,#0x104] | 
| 490 | 495 | b	miu_common | 
| — | — | @@ -516,8 +521,8 @@ | 
| 517 | 522 | str	r3, [lr,#0x104] | 
| 518 | 523 | str	r3, [lr,#0x104] | 
| 519 | 524 | str	r3, [lr,#0x110] | 
| 520 |  | -	orr	r1, r3, #0x100
 | 
| 521 |  | -	str	r1, [lr,#0x104]
 | 
|  | 525 | +	orr	r0, r3, #0x100 | 
|  | 526 | +	str	r0, [lr,#0x104] | 
| 522 | 527 | miu_wait6: | 
| 523 | 528 | ldr	r0, [lr,#0x104] | 
| 524 | 529 | tst	r0, #0x110000 | 
| — | — | @@ -525,7 +530,7 @@ | 
| 526 | 531 | str	r3, [lr,#0x104] | 
| 527 | 532 | str	r3, [lr,#0x104] | 
| 528 | 533 | str	r3, [lr,#0x104] | 
| 529 |  | -	str	r5, [lr,#0x110]							  @ R5: Unused
 | 
|  | 534 | +	str	r5, [lr,#0x110]                                                   @ R5: Unused | 
| 530 | 535 | str	r1, [lr,#0x104] | 
| 531 | 536 | miu_wait7: | 
| 532 | 537 | ldr	r0, [lr,#0x104] | 
| — | — | @@ -534,7 +539,7 @@ | 
| 535 | 540 | str	r3, [lr,#0x104] | 
| 536 | 541 | str	r3, [lr,#0x104] | 
| 537 | 542 | miu_common: | 
| 538 |  | -	str	r3, [lr,#0x104]							  @ R3: Unused
 | 
|  | 543 | +	str	r3, [lr,#0x104]                                                   @ R3: Unused | 
| 539 | 544 | mov	r0, #0x40 | 
| 540 | 545 | str	r0, [lr,#0x10c] | 
| 541 | 546 | ldr	r0, [lr,#0x100] | 
| — | — | @@ -544,7 +549,7 @@ | 
| 545 | 550 | str	r0, [lr,#0x11c] | 
| 546 | 551 | mov	r0, #1 | 
| 547 | 552 | str	r0, [lr,#0x120] | 
| 548 |  | -	orr	r1, r2, #0x1000							  @ R2: Unused
 | 
|  | 553 | +	orr	r1, r2, #0x1000                                                   @ R2: Unused | 
| 549 | 554 | str	r1, [lr,#0x108] | 
| 550 | 555 | str	r0, [lr,#0x08] | 
| 551 | 556 | mov	r1, #0x3e000000 | 
| — | — | @@ -552,7 +557,7 @@ | 
| 553 | 558 | str	r0, [r1,#0x08] | 
| 554 | 559 |  | 
| 555 | 560 | @ Block 7 (LCD) register map: | 
| 556 |  | -	                   @ R0: Cmd/Data to be written / Scratchpad
 | 
|  | 561 | +                           @ R0: Cmd/Data to be written / Scratchpad | 
| 557 | 562 | @ R1: Scratchpad | 
| 558 | 563 | @ R2: Scratchpad | 
| 559 | 564 | @ R3: Scratchpad | 
| — | — | @@ -560,11 +565,11 @@ | 
| 561 | 566 | @ R5: Scratchpad | 
| 562 | 567 | @ R6: Unused | 
| 563 | 568 | @ R7: Unused | 
| 564 |  | -	                   @ R8: LCD base address
 | 
| 565 |  | -	                   @ R9: 0
 | 
| 566 |  | -	                   @ R10: I2C base address
 | 
| 567 |  | -	                   @ R11: TIMER base address
 | 
| 568 |  | -	                   @ R12: SYSCON base address
 | 
|  | 569 | +                           @ R8: LCD base address | 
|  | 570 | +                           @ R9: 0 | 
|  | 571 | +                           @ R10: I2C base address | 
|  | 572 | +                           @ R11: TIMER base address | 
|  | 573 | +                           @ R12: SYSCON base address | 
| 569 | 574 | @ R13: LCD init script pointer / Scratchpad | 
| 570 | 575 | @ R14: Return address / Scratchpad | 
| 571 | 576 |  | 
| — | — | @@ -575,6 +580,7 @@ | 
| 576 | 581 | .word	lcd_sequence_e6 - lcd_sequences_begin | 
| 577 | 582 | .word	lcd_sequence_b3 - lcd_sequences_begin | 
| 578 | 583 | lcd_sequence_b3: | 
|  | 584 | +.byte 0x01, 0x11, 0xf8, 0x01, 0x13, 0x01, 0x29, 0x80 | 
| 579 | 585 | .byte	0x01, 0x11 | 
| 580 | 586 | .byte	0xf8 | 
| 581 | 587 | .byte	0x02, 0xfe, 0x00 | 
| — | — | @@ -597,12 +603,13 @@ | 
| 598 | 604 | .byte	0x0c, 0xe2, 0x7e, 0x04, 0x43, 0x40, 0x00, 0x02, 0x13, 0x00, 0x00, 0x01, 0x0b | 
| 599 | 605 | .byte	0x0c, 0xe3, 0x40, 0x40, 0x03, 0x74, 0x0e, 0x00, 0x00, 0x31, 0x02, 0x0b, 0x01 | 
| 600 | 606 | .byte	0x0c, 0xe4, 0x5a, 0x43, 0x67, 0x56, 0x00, 0x02, 0x67, 0x72, 0x00, 0x05, 0x12 | 
| 601 |  | -	.byte	0x0c, 0xe5, 0x50, 0x66, 0x47, 0x53, 0x0a, 0x00, 0x27, 0x76, 0x02, 0x12, 0x02
 | 
|  | 607 | +	.byte	0x0c, 0xe5, 0x50, 0x66, 0x47, 0x53, 0x0a, 0x00, 0x27, 0x76, 0x02, 0x12, 0x05 | 
| 602 | 608 | .byte	0x02, 0x3a, 0x06 | 
| 603 | 609 | .byte	0x01, 0x13 | 
| 604 | 610 | .byte	0x01, 0x29 | 
| 605 | 611 | .byte	0x80 | 
| 606 | 612 | lcd_sequence_c4: | 
|  | 613 | +.byte 0x01, 0x01, 0x85, 0x01, 0x11, 0x01, 0x29, 0x80 | 
| 607 | 614 | .byte	0x01, 0x01 | 
| 608 | 615 | .byte	0x85 | 
| 609 | 616 | .byte	0x02, 0xc0, 0x00 | 
| — | — | @@ -612,7 +619,7 @@ | 
| 613 | 620 | .byte	0x03, 0xc4, 0x73, 0x03 | 
| 614 | 621 | .byte	0x03, 0xc5, 0x3c, 0x3c | 
| 615 | 622 | .byte	0x02, 0xfe, 0x00 | 
| 616 |  | -@	.byte	0x03, 0xb1, 0x6a, 0x15
 | 
|  | 623 | +	.byte	0x03, 0xb1, 0x6a, 0x15 | 
| 617 | 624 | .byte	0x03, 0xb2, 0x6a, 0x15 | 
| 618 | 625 | .byte	0x03, 0xb3, 0x6a, 0x15 | 
| 619 | 626 | .byte	0x02, 0xb4, 0x02 | 
| — | — | @@ -625,12 +632,13 @@ | 
| 626 | 633 | .byte	0x0c, 0xe3, 0x3f, 0x10, 0x16, 0x44, 0x0e, 0x04, 0x6c, 0x44, 0x04, 0x03, 0x0b | 
| 627 | 634 | .byte	0x0c, 0xe4, 0x00, 0x61, 0x77, 0x04, 0x02, 0x04, 0x72, 0x32, 0x09, 0x19, 0x06 | 
| 628 | 635 | .byte	0x0c, 0xe5, 0x4f, 0x42, 0x27, 0x67, 0x0f, 0x02, 0x26, 0x33, 0x01, 0x03, 0x09 | 
| 629 |  | -@	.byte	0x02, 0x3a, 0x66
 | 
|  | 636 | +	.byte	0x02, 0x3a, 0x66 | 
| 630 | 637 | .byte	0x02, 0x36, 0x00 | 
| 631 | 638 | .byte	0x01, 0x11 | 
| 632 | 639 | .byte	0x01, 0x29 | 
| 633 | 640 | .byte	0x80 | 
| 634 | 641 | lcd_sequence_d5: | 
|  | 642 | +.byte 0x01, 0x01, 0x85, 0x01, 0x11, 0x01, 0x29, 0x80 | 
| 635 | 643 | .byte	0x02, 0xfe, 0x00 | 
| 636 | 644 | .byte	0x02, 0xc0, 0x01 | 
| 637 | 645 | .byte	0x02, 0xc1, 0x01 | 
| — | — | @@ -658,6 +666,7 @@ | 
| 659 | 667 | .byte	0x01, 0x29 | 
| 660 | 668 | .byte	0x80 | 
| 661 | 669 | lcd_sequence_e6: | 
|  | 670 | +.byte 0x01, 0x11, 0xf8, 0x01, 0x13, 0x01, 0x29, 0x80 | 
| 662 | 671 | .byte	0x01, 0x11 | 
| 663 | 672 | .byte	0xf8 | 
| 664 | 673 | .byte	0x02, 0xfe, 0x00 | 
| — | — | @@ -715,10 +724,23 @@ | 
| 716 | 725 | bl	sendlcdd | 
| 717 | 726 | b	lcdbyte | 
| 718 | 727 |  | 
| 719 |  | -	                   @ udelay register map:
 | 
| 720 |  | -	                   @ R0: Microseconds
 | 
| 721 |  | -	                   @ R1: Trashed
 | 
| 722 |  | -	                   @ R11: TIMER base address
 | 
|  | 728 | +values1: | 
|  | 729 | +	block0_constpool | 
|  | 730 | +	block1_constpool | 
|  | 731 | +	gpio_initdata | 
|  | 732 | +	pmu_batch_1 | 
|  | 733 | +	pmu_batch_2 | 
|  | 734 | +	pmu_batch_3 | 
|  | 735 | +	pmu_batch_4 | 
|  | 736 | +	pmu_batch_5 | 
|  | 737 | +	block6_constpool | 
|  | 738 | +	lcd_sequences | 
|  | 739 | +	.align	2 | 
|  | 740 | + | 
|  | 741 | +                           @ udelay register map: | 
|  | 742 | +                           @ R0: Microseconds | 
|  | 743 | +                           @ R1: Trashed | 
|  | 744 | +                           @ R11: TIMER base address | 
| 723 | 745 | @ R14: Return address | 
| 724 | 746 |  | 
| 725 | 747 | udelay: | 
| — | — | @@ -730,9 +752,9 @@ | 
| 731 | 753 | bmi	udelayloop | 
| 732 | 754 | mov	pc, lr | 
| 733 | 755 |  | 
| 734 |  | -	                   @ i2cwaitrdy register map:
 | 
| 735 |  | -	                   @ R9: Set to 0
 | 
| 736 |  | -	                   @ R10: I2C base address
 | 
|  | 756 | +                           @ i2cwaitrdy register map: | 
|  | 757 | +                           @ R9: Set to 0 | 
|  | 758 | +                           @ R10: I2C base address | 
| 737 | 759 | @ R14: Return address | 
| 738 | 760 |  | 
| 739 | 761 | i2cwaitrdy: | 
| — | — | @@ -741,9 +763,9 @@ | 
| 742 | 764 | bne	i2cwaitrdy | 
| 743 | 765 | mov	pc, lr | 
| 744 | 766 |  | 
| 745 |  | -	                   @ i2cwait register map:
 | 
| 746 |  | -	                   @ R3: Set to 0x10
 | 
| 747 |  | -	                   @ R10: I2C base address
 | 
|  | 767 | +                           @ i2cwait register map: | 
|  | 768 | +                           @ R3: Set to 0x10 | 
|  | 769 | +                           @ R10: I2C base address | 
| 748 | 770 | @ R14: Return address | 
| 749 | 771 |  | 
| 750 | 772 | i2cwait: | 
| — | — | @@ -752,13 +774,13 @@ | 
| 753 | 775 | beq	i2cwait | 
| 754 | 776 | mov	pc, lr | 
| 755 | 777 |  | 
| 756 |  | -	                   @ pmuwrite register map:
 | 
| 757 |  | -	                   @ R0: Address
 | 
| 758 |  | -	                   @ R1: Data
 | 
| 759 |  | -			   @ R2: Set to 0xb7
 | 
| 760 |  | -	                   @ R3: Set to 0x10
 | 
| 761 |  | -	                   @ R4: Return address backup
 | 
| 762 |  | -	                   @ R10: I2C base address
 | 
|  | 778 | +                           @ pmuwrite register map: | 
|  | 779 | +                           @ R0: Address | 
|  | 780 | +                           @ R1: Data | 
|  | 781 | +                           @ R2: Set to 0xb7 | 
|  | 782 | +                           @ R3: Set to 0x10 | 
|  | 783 | +                           @ R4: Return address backup | 
|  | 784 | +                           @ R10: I2C base address | 
| 763 | 785 | @ R14: Return address / Scratchpad | 
| 764 | 786 |  | 
| 765 | 787 | pmuwrite: | 
| — | — | @@ -785,13 +807,13 @@ | 
| 786 | 808 | bne	pmuwrite_wait | 
| 787 | 809 | mov	pc, r4 | 
| 788 | 810 |  | 
| 789 |  | -	                   @ pmuread register map:
 | 
| 790 |  | -	                   @ R0: Address
 | 
| 791 |  | -	                   @ R1: Data
 | 
| 792 |  | -			   @ R2: Set to 0xb7
 | 
| 793 |  | -	                   @ R3: Set to 0x10
 | 
| 794 |  | -	                   @ R4: Return address backup
 | 
| 795 |  | -	                   @ R10: I2C base address
 | 
|  | 811 | +                           @ pmuread register map: | 
|  | 812 | +                           @ R0: Address | 
|  | 813 | +                           @ R1: Data | 
|  | 814 | +                           @ R2: Set to 0xb7 | 
|  | 815 | +                           @ R3: Set to 0x10 | 
|  | 816 | +                           @ R4: Return address backup | 
|  | 817 | +                           @ R10: I2C base address | 
| 796 | 818 | @ R14: Return address / Scratchpad | 
| 797 | 819 |  | 
| 798 | 820 | pmuread: | 
| — | — | @@ -820,20 +842,20 @@ | 
| 821 | 843 | str	lr, [r10,#0x04] | 
| 822 | 844 | str	r2, [r10] | 
| 823 | 845 | pmuread_wait: | 
| 824 |  | -	ldr	r1, [r10,#0x04]
 | 
| 825 |  | -	tst	r1, #0x20
 | 
|  | 846 | +	ldr	lr, [r10,#0x04] | 
|  | 847 | +	tst	lr, #0x20 | 
| 826 | 848 | bne	pmuread_wait | 
| 827 | 849 | mov	pc, r4 | 
| 828 | 850 |  | 
| 829 |  | -	                   @ pmubatch register map:
 | 
| 830 |  | -	                   @ R0: Scratchpad
 | 
| 831 |  | -	                   @ R1: Scratchpad
 | 
| 832 |  | -			   @ R2: Set to 0xb7
 | 
| 833 |  | -	                   @ R3: Set to 0x10
 | 
| 834 |  | -	                   @ R4: Inner return address backup
 | 
| 835 |  | -			   @ R7: Outer return address backup
 | 
| 836 |  | -			   @ R9: Number of address-data pairs to be sent (must be >0), will be reset to 0
 | 
| 837 |  | -	                   @ R10: I2C base address
 | 
|  | 851 | +                           @ pmubatch register map: | 
|  | 852 | +                           @ R0: Scratchpad | 
|  | 853 | +                           @ R1: Scratchpad | 
|  | 854 | +                           @ R2: Set to 0xb7 | 
|  | 855 | +                           @ R3: Set to 0x10 | 
|  | 856 | +                           @ R4: Inner return address backup | 
|  | 857 | +                           @ R7: Outer return address backup | 
|  | 858 | +                           @ R9: Number of address-data pairs to be sent (must be >0), will be reset to 0 | 
|  | 859 | +                           @ R10: I2C base address | 
| 838 | 860 | @ R13: Address-data pair list pointer (will be incremented) | 
| 839 | 861 | @ R14: Return address / Scratchpad | 
| 840 | 862 |  | 
| — | — | @@ -847,10 +869,10 @@ | 
| 848 | 870 | bne	pmubatch_loop | 
| 849 | 871 | mov	pc, r7 | 
| 850 | 872 |  | 
| 851 |  | -	                   @ sendlcdc register map:
 | 
| 852 |  | -	                   @ R0: Command to be sent
 | 
| 853 |  | -	                   @ R8: LCD base address
 | 
| 854 |  | -			   @ R9: Will be set to 0
 | 
|  | 873 | +                           @ sendlcdc register map: | 
|  | 874 | +                           @ R0: Command to be sent | 
|  | 875 | +                           @ R8: LCD base address | 
|  | 876 | +                           @ R9: Will be set to 0 | 
| 855 | 877 | @ R14: Return address | 
| 856 | 878 |  | 
| 857 | 879 | sendlcdc: | 
| — | — | @@ -860,10 +882,10 @@ | 
| 861 | 883 | str	r0, [r8,#0x04] | 
| 862 | 884 | mov	pc, lr | 
| 863 | 885 |  | 
| 864 |  | -	                   @ sendlcdd register map:
 | 
| 865 |  | -	                   @ R0: Data to be sent
 | 
| 866 |  | -	                   @ R8: LCD base address
 | 
| 867 |  | -			   @ R9: Will be set to 0
 | 
|  | 886 | +                           @ sendlcdd register map: | 
|  | 887 | +                           @ R0: Data to be sent | 
|  | 888 | +                           @ R8: LCD base address | 
|  | 889 | +                           @ R9: Will be set to 0 | 
| 868 | 890 | @ R14: Return address | 
| 869 | 891 |  | 
| 870 | 892 | sendlcdd: | 
| — | — | @@ -873,9 +895,9 @@ | 
| 874 | 896 | str	r0, [r8,#0x40] | 
| 875 | 897 | mov	pc, lr | 
| 876 | 898 |  | 
| 877 |  | -	                   @ readlcd register map:
 | 
| 878 |  | -	                   @ R0: Result data
 | 
| 879 |  | -	                   @ R8: LCD base address
 | 
|  | 899 | +                           @ readlcd register map: | 
|  | 900 | +                           @ R0: Result data | 
|  | 901 | +                           @ R8: LCD base address | 
| 880 | 902 | @ R14: Return address | 
| 881 | 903 |  | 
| 882 | 904 | readlcd: | 
| — | — | @@ -892,6 +914,9 @@ | 
| 893 | 915 | mov	pc, lr | 
| 894 | 916 |  | 
| 895 | 917 | lcddone: | 
|  | 918 | +	bic	r1, r10, #0x04400000 | 
|  | 919 | +	mov	r0, #1 | 
|  | 920 | +	str	r0, [r1,#0x30] | 
| 896 | 921 | ldr	r0, _stubend | 
| 897 | 922 | adr	r1, _stubend + 4 | 
| 898 | 923 | mov	r2, #0x08000000 | 
| — | — | @@ -901,22 +926,10 @@ | 
| 902 | 927 | ldrhi	r3, [r1], #4 | 
| 903 | 928 | strhi	r3, [r2], #4 | 
| 904 | 929 | bhi	movepayloadloop | 
| 905 |  | -	mcr	p15, 0, r9,c7,c14,0 @ clean & invalidate data cache
 | 
|  | 930 | +	mcr	p15, 0, r9,c7,c14,0 @ clean data cache | 
| 906 | 931 | mcr	p15, 0, r9,c7,c10,4 @ drain write buffer | 
| 907 |  | -	mcr	p15, 0, r9,c7,c5    @ invalidate instruction cache
 | 
|  | 932 | +	mcr	p15, 0, r9,c7,c5,0  @ invalidate instruction cache | 
|  | 933 | +	mcr	p15, 0, r9,c7,c5,4  @ flush prefetch buffer | 
| 908 | 934 | mov	pc, #0x08000000 | 
| 909 | 935 |  | 
| 910 |  | -values1:
 | 
| 911 |  | -	block0_constpool
 | 
| 912 |  | -	block1_constpool
 | 
| 913 |  | -	gpio_initdata
 | 
| 914 |  | -	pmu_batch_1
 | 
| 915 |  | -	pmu_batch_2
 | 
| 916 |  | -	pmu_batch_3
 | 
| 917 |  | -	pmu_batch_4
 | 
| 918 |  | -	pmu_batch_5
 | 
| 919 |  | -	block6_constpool
 | 
| 920 |  | -	lcd_sequences
 | 
| 921 |  | -	.align	2
 | 
| 922 |  | -
 | 
| 923 | 936 | _stubend: |