head-sharpsl.S 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. /*
  2. * linux/arch/arm/boot/compressed/head-sharpsl.S
  3. *
  4. * Copyright (C) 2004-2005 Richard Purdie <rpurdie@rpsys.net>
  5. *
  6. * Sharp's bootloader doesn't pass any kind of machine ID
  7. * so we have to figure out the machine for ourselves...
  8. *
  9. * Support for Poodle, Corgi (SL-C700), Shepherd (SL-C750)
  10. * and Husky (SL-C760).
  11. *
  12. */
  13. #include <linux/config.h>
  14. #include <linux/linkage.h>
  15. #include <asm/mach-types.h>
  16. #ifndef CONFIG_PXA_SHARPSL
  17. #error What am I doing here...
  18. #endif
  19. .section ".start", "ax"
  20. __SharpSL_start:
  21. ldr r1, .W100ADDR @ Base address of w100 chip + regs offset
  22. mov r6, #0x31 @ Load Magic Init value
  23. str r6, [r1, #0x280] @ to SCRATCH_UMSK
  24. mov r5, #0x3000
  25. .W100LOOP:
  26. subs r5, r5, #1
  27. bne .W100LOOP
  28. mov r6, #0x30 @ Load 2nd Magic Init value
  29. str r6, [r1, #0x280] @ to SCRATCH_UMSK
  30. ldr r6, [r1, #0] @ Load Chip ID
  31. ldr r3, .W100ID
  32. ldr r7, .POODLEID
  33. cmp r6, r3
  34. bne .SHARPEND @ We have no w100 - Poodle
  35. mrc p15, 0, r6, c0, c0 @ Get Processor ID
  36. and r6, r6, #0xffffff00
  37. ldr r7, .CORGIID
  38. ldr r3, .PXA255ID
  39. cmp r6, r3
  40. blo .SHARPEND @ We have a PXA250 - Corgi
  41. mov r1, #0x0c000000 @ Base address of NAND chip
  42. ldrb r3, [r1, #24] @ Load FLASHCTL
  43. bic r3, r3, #0x11 @ SET NCE
  44. orr r3, r3, #0x0a @ SET CLR + FLWP
  45. strb r3, [r1, #24] @ Save to FLASHCTL
  46. mov r2, #0x90 @ Command "readid"
  47. strb r2, [r1, #20] @ Save to FLASHIO
  48. bic r3, r3, #2 @ CLR CLE
  49. orr r3, r3, #4 @ SET ALE
  50. strb r3, [r1, #24] @ Save to FLASHCTL
  51. mov r2, #0 @ Address 0x00
  52. strb r2, [r1, #20] @ Save to FLASHIO
  53. bic r3, r3, #4 @ CLR ALE
  54. strb r3, [r1, #24] @ Save to FLASHCTL
  55. .SHARP1:
  56. ldrb r3, [r1, #24] @ Load FLASHCTL
  57. tst r3, #32 @ Is chip ready?
  58. beq .SHARP1
  59. ldrb r2, [r1, #20] @ NAND Manufacturer ID
  60. ldrb r3, [r1, #20] @ NAND Chip ID
  61. ldr r7, .SHEPHERDID
  62. cmp r3, #0x76 @ 64MiB flash
  63. beq .SHARPEND @ We have Shepherd
  64. ldr r7, .HUSKYID @ Must be Husky
  65. b .SHARPEND
  66. .PXA255ID:
  67. .word 0x69052d00 @ PXA255 Processor ID
  68. .W100ID:
  69. .word 0x57411002 @ w100 Chip ID
  70. .W100ADDR:
  71. .word 0x08010000 @ w100 Chip ID Reg Address
  72. .POODLEID:
  73. .word MACH_TYPE_POODLE
  74. .CORGIID:
  75. .word MACH_TYPE_CORGI
  76. .SHEPHERDID:
  77. .word MACH_TYPE_SHEPHERD
  78. .HUSKYID:
  79. .word MACH_TYPE_HUSKY
  80. .SHARPEND: