Changeset 3419
- Timestamp:
- Nov 8, 2012 8:42:50 AM (7 months ago)
- File:
-
- 1 edited
-
dev/olpc/spiflash/spiflash.fth (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
dev/olpc/spiflash/spiflash.fth
r3417 r3419 304 304 0 value jedec-id# 305 305 0 0 2value spi-id$ 306 307 : (.spi-id) ( -- ) 308 push-hex 309 spi-id# 2 .r [char] . emit jedec-id# 6 .r 310 pop-base 311 ; 312 313 create jedec-spi-table 314 \ JEDEC-ID /flash Name 315 316 \ XO-4 317 h# 1540c8 , h# 20.0000 , ," GD25Q16B" \ GigaDevice 3V3 318 h# 1560c8 , h# 20.0000 , ," GD25LQ16" \ GigaDevice 1V8 319 h# 1540ef , h# 20.0000 , ," W25Q16" \ Winbond 3V3 320 h# 1520c2 , h# 20.0000 , ," MX25L1606E" \ Macronix 3V3 also MX25L1605D which is EOL (CS# rise time problem) 321 h# 1524c2 , h# 20.0000 , ," MX25L1633E" \ Macronix 3V3 (this is the preferred Macronyx part) 322 h# 1525c2 , h# 20.0000 , ," MX25L1635E" \ Macronix 1V8 (CS# rise time problem) 323 h# 3525c2 , h# 20.0000 , ," MX25U1635E" \ Macronix 1V8 324 325 \ XO-1.75 and XO-3 and XO-4 A2 326 h# 3425c2 , h# 10.0000 , ," MX25U8035" \ Macronix 3V3 327 328 \ XO-1 and XO-1.5 329 h# 1430ef , h# 10.0000 , ," WX25X80" \ Winbond (AB-ID is 13) 330 h# 130201 , h# 10.0000 , ," S25FL008A" \ Spansion (AB-ID is 13) 331 h# 8e25bf , h# 10.0000 , ," SST25VF080B" \ SST (AB-ID is bf) 332 \ ST M25P80 does not support the JEDEC ID command (AB-ID is 13) 333 334 0 , \ End of list 335 336 \ I don't think this table will ever be used, because the only part 337 \ that was actually shipped on XO-1 and XO-1.5 was Winbond WX25X80 338 create ab-spi-table 339 \ AB-ID /flash Name 340 h# 13 , h# 10.0000 , ," Spansion, Winbond, or ST" 341 h# bf , h# 10.0000 , ," SST" 342 343 \ An infrequent HW error on XO-1 B1 used to falsely report 14 instead of 13 344 \ h# 14 , h# 10.0000 , ," Unknown" 345 346 0 , \ End of list 347 348 create unknown-spi-flash 349 \ /flash Name 350 10.0000 , ," Unknown" 351 352 : search-spi-table ( value table-adr -- true | entry-adr false ) 353 begin dup @ while ( value adr ) 354 2dup @ = if ( value adr ) 355 nip na1+ ( entry-adr ) 356 false exit ( entry-adr false ) 357 then ( value adr ) 358 2 na+ +str ( value adr' ) 359 repeat ( value adr ) 360 2drop true ( true ) 361 ; 362 306 363 : spi-identify ( -- ) 307 364 ab-id to spi-id# 308 365 jedec-id to jedec-id# 309 " Unknown" to spi-id$ 310 spi-id# case 311 h# 13 of 312 ['] common-write 1mb-flash 313 " Spansion, Winbond, or ST" to spi-id$ 314 endof 315 h# 14 of 316 ['] common-write 1mb-flash 317 jedec-id# h# 1520c2 = if 2mb-flash " MX25L1605D" to spi-id$ then 318 jedec-id# h# 1540c8 = if 2mb-flash " GD25Q16B" to spi-id$ then 319 jedec-id# h# 1540ef = if 2mb-flash " W25Q16" to spi-id$ then 320 endof 321 h# 24 of 322 ['] common-write 2mb-flash 323 jedec-id# h# 1524c2 = if 2mb-flash " MX25L1633E" to spi-id$ then 324 endof 325 h# 25 of 326 ['] common-write 1mb-flash 327 jedec-id# h# 1525c2 = if 2mb-flash " MX25L1635E" to spi-id$ then 328 endof 329 h# 34 of 330 ['] common-write 1mb-flash 331 " Macronyx" to spi-id$ 332 jedec-id# h# 3425c2 = if 1mb-flash " MX25E8035" to spi-id$ then 333 endof 334 h# 35 of 335 ['] common-write 2mb-flash 336 jedec-id# h# 3525c2 = if 2mb-flash " MX25U1635E" to spi-id$ then 337 endof 338 \ the SST part with its unique auto-increment address writing scheme 339 h# bf of 340 ['] sst-write 1mb-flash 341 " SST" to spi-id$ 342 endof 343 ( default ) ." Bad SPI FLASH ID " dup . cr ['] null-write swap 344 endcase ( writer ) 345 to write-spi-flash 366 367 ['] common-write to write-spi-flash \ The usual case 368 369 \ Special case for an uncommon part 370 spi-id# h# bf = if ['] sst-write to write-spi-flash then 371 372 jedec-id# jedec-spi-table search-spi-table if ( ) 373 \ If we don't find it in the JEDEC ID table, fall back to the AB ID table 374 375 ab-id ab-spi-table search-spi-table if ( ) 376 \ If we still don't find it, complain and disable writes 377 378 ." Unsupported SPI FLASH ID " (.spi-id) cr 379 ['] null-write to write-spi-flash 380 381 unknown-spi-flash ( entry-adr ) 382 then ( entry-adr ) 383 then ( entry-adr ) 384 dup @ to /flash ( entry-adr' ) 385 na1+ count to spi-id$ ( ) 386 346 387 spi-unprotect 347 388 ; … … 351 392 : .spi-id ( -- ) 352 393 ." SPI FLASH is type " 353 spi-id# 2 .r [char] . emit jedec-id# 6 .r394 (.spi-id) 354 395 ." , " spi-id$ type 355 396 ." , " /flash h# 100000 / .d ." MB."
Note: See TracChangeset
for help on using the changeset viewer.
