sdram.S 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /* SPDX-License-Identifier: GPL-2.0
  2. *
  3. * Migo-R sdram self/auto-refresh setup code
  4. *
  5. * Copyright (C) 2009 Magnus Damm
  6. */
  7. #include <linux/sys.h>
  8. #include <linux/errno.h>
  9. #include <linux/linkage.h>
  10. #include <asm/asm-offsets.h>
  11. #include <asm/suspend.h>
  12. #include <asm/romimage-macros.h>
  13. /* code to enter and leave self-refresh. must be self-contained.
  14. * this code will be copied to on-chip memory and executed from there.
  15. */
  16. .balign 4
  17. ENTRY(migor_sdram_enter_start)
  18. /* SBSC: disable power down and put in self-refresh mode */
  19. mov.l 1f, r4
  20. mov.l 2f, r1
  21. mov.l @r4, r2
  22. or r1, r2
  23. mov.l 3f, r3
  24. and r3, r2
  25. mov.l r2, @r4
  26. rts
  27. nop
  28. .balign 4
  29. 1: .long 0xfe400008 /* SDCR0 */
  30. 2: .long 0x00000400
  31. 3: .long 0xffff7fff
  32. ENTRY(migor_sdram_enter_end)
  33. .balign 4
  34. ENTRY(migor_sdram_leave_start)
  35. /* SBSC: set auto-refresh mode */
  36. mov.l 1f, r4
  37. mov.l @r4, r0
  38. mov.l 4f, r1
  39. and r1, r0
  40. mov.l r0, @r4
  41. mov.l 6f, r4
  42. mov.l 8f, r0
  43. mov.l @r4, r1
  44. mov #-1, r4
  45. add r4, r1
  46. or r1, r0
  47. mov.l 7f, r1
  48. mov.l r0, @r1
  49. rts
  50. nop
  51. .balign 4
  52. 1: .long 0xfe400008 /* SDCR0 */
  53. 4: .long 0xfffffbff
  54. 6: .long 0xfe40001c /* RTCOR */
  55. 7: .long 0xfe400018 /* RTCNT */
  56. 8: .long 0xa55a0000
  57. ENTRY(migor_sdram_leave_end)