~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/arm/boot/compressed/head-sharpsl.S

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 */
  2 /*
  3  * linux/arch/arm/boot/compressed/head-sharpsl.S
  4  *
  5  * Copyright (C) 2004-2005 Richard Purdie <rpurdie@rpsys.net>
  6  *
  7  * Sharp's bootloader doesn't pass any kind of machine ID
  8  * so we have to figure out the machine for ourselves...
  9  *
 10  * Support for Poodle, Corgi (SL-C700), Shepherd (SL-C750)
 11  * Husky (SL-C760), Tosa (SL-C6000), Spitz (SL-C3000),
 12  * Akita (SL-C1000) and Borzoi (SL-C3100).
 13  *
 14  */
 15 
 16 #include <linux/linkage.h>
 17 #include <asm/mach-types.h>
 18 
 19 #ifndef CONFIG_PXA_SHARPSL
 20 #error What am I doing here...
 21 #endif
 22 
 23                 .section        ".start", "ax"
 24 
 25 __SharpSL_start:
 26 
 27 /* Check for TC6393 - if found we have a Tosa */
 28         ldr     r7, .TOSAID
 29         mov     r1, #0x10000000         @ Base address of TC6393 chip
 30         mov     r6, #0x03
 31         ldrh    r3, [r1, #8]            @ Load TC6393XB Revison: This is 0x0003
 32         cmp     r6, r3
 33         beq     .SHARPEND               @ Success -> tosa
 34 
 35 /* Check for pxa270 - if found, branch */
 36         mrc p15, 0, r4, c0, c0          @ Get Processor ID
 37         and     r4, r4, #0xffffff00
 38         ldr     r3, .PXA270ID
 39         cmp     r4, r3
 40         beq     .PXA270
 41 
 42 /* Check for w100 - if not found we have a Poodle */
 43         ldr     r1, .W100ADDR           @ Base address of w100 chip + regs offset
 44 
 45         mov r6, #0x31                   @ Load Magic Init value
 46         str     r6, [r1, #0x280]        @ to SCRATCH_UMSK
 47         mov r5, #0x3000
 48 .W100LOOP:
 49         subs r5, r5, #1
 50         bne .W100LOOP
 51         mov r6, #0x30                   @ Load 2nd Magic Init value
 52         str     r6, [r1, #0x280]        @ to SCRATCH_UMSK
 53 
 54         ldr     r6, [r1, #0]            @ Load Chip ID
 55         ldr     r3, .W100ID
 56         ldr     r7, .POODLEID
 57         cmp     r6, r3
 58         bne     .SHARPEND                       @ We have no w100 - Poodle
 59 
 60 /* Check for pxa250 - if found we have a Corgi */
 61         ldr     r7, .CORGIID
 62         ldr     r3, .PXA255ID
 63         cmp     r4, r3
 64         blo     .SHARPEND                       @ We have a PXA250 - Corgi
 65 
 66 /* Check for 64MiB flash - if found we have a Shepherd */
 67         bl      get_flash_ids
 68         ldr     r7, .SHEPHERDID
 69         cmp     r3, #0x76                       @ 64MiB flash
 70         beq     .SHARPEND                       @ We have Shepherd
 71 
 72 /* Must be a Husky */
 73         ldr     r7, .HUSKYID            @ Must be Husky
 74         b .SHARPEND
 75 
 76 .PXA270:
 77 /* Check for 16MiB flash - if found we have Spitz */
 78         bl      get_flash_ids
 79         ldr     r7, .SPITZID
 80         cmp     r3, #0x73                       @ 16MiB flash
 81         beq     .SHARPEND                       @ We have Spitz
 82 
 83 /* Check for a second SCOOP chip - if found we have Borzoi */
 84         ldr     r1, .SCOOP2ADDR
 85         ldr     r7, .BORZOIID
 86         mov     r6, #0x0140
 87         strh    r6, [r1]
 88         ldrh    r6, [r1]
 89         cmp     r6, #0x0140
 90         beq     .SHARPEND                       @ We have Borzoi
 91 
 92 /* Must be Akita */
 93         ldr     r7, .AKITAID
 94         b       .SHARPEND                       @ We have Borzoi
 95 
 96 .PXA255ID:
 97         .word   0x69052d00              @ PXA255 Processor ID
 98 .PXA270ID:
 99         .word   0x69054100              @ PXA270 Processor ID
100 .W100ID:
101         .word   0x57411002              @ w100 Chip ID
102 .W100ADDR:
103         .word   0x08010000              @ w100 Chip ID Reg Address
104 .SCOOP2ADDR:
105         .word   0x08800040
106 .POODLEID:
107         .word   MACH_TYPE_POODLE
108 .CORGIID:
109         .word   MACH_TYPE_CORGI
110 .SHEPHERDID:
111         .word   MACH_TYPE_SHEPHERD
112 .HUSKYID:
113         .word   MACH_TYPE_HUSKY
114 .TOSAID:
115         .word   MACH_TYPE_TOSA
116 .SPITZID:
117         .word   MACH_TYPE_SPITZ
118 .AKITAID:
119         .word   MACH_TYPE_AKITA
120 .BORZOIID:
121         .word   MACH_TYPE_BORZOI
122 
123 /*
124  * Return: r2 - NAND Manufacturer ID
125  *         r3 - NAND Chip ID
126  * Corrupts: r1
127  */
128 get_flash_ids:
129         mov     r1, #0x0c000000         @ Base address of NAND chip
130         ldrb    r3, [r1, #24]           @ Load FLASHCTL
131         bic     r3, r3, #0x11           @ SET NCE
132         orr     r3, r3, #0x0a           @ SET CLR + FLWP
133         strb    r3, [r1, #24]           @ Save to FLASHCTL
134         mov     r2, #0x90               @ Command "readid"
135         strb    r2, [r1, #20]           @ Save to FLASHIO
136         bic     r3, r3, #2              @ CLR CLE
137         orr     r3, r3, #4              @ SET ALE
138         strb    r3, [r1, #24]           @ Save to FLASHCTL
139         mov     r2, #0                  @ Address 0x00
140         strb    r2, [r1, #20]           @ Save to FLASHIO
141         bic     r3, r3, #4              @ CLR ALE
142         strb    r3, [r1, #24]           @ Save to FLASHCTL
143 .fids1:
144         ldrb    r3, [r1, #24]           @ Load FLASHCTL
145         tst     r3, #32                 @ Is chip ready?
146         beq     .fids1
147         ldrb    r2, [r1, #20]           @ NAND Manufacturer ID
148         ldrb    r3, [r1, #20]           @ NAND Chip ID
149         mov     pc, lr
150 
151 .SHARPEND:

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php