lowlevel_init.S 822 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /*
  2. * Copyright (C) 2016 Imagination Technologies
  3. *
  4. * SPDX-License-Identifier: GPL-2.0
  5. */
  6. #include <config.h>
  7. #include <asm/addrspace.h>
  8. #include <asm/asm.h>
  9. #include <asm/mipsregs.h>
  10. #include <asm/regdef.h>
  11. #include "boston-regs.h"
  12. .data
  13. msg_ddr_cal: .ascii "DDR Cal "
  14. msg_ddr_ok: .ascii "DDR OK "
  15. .text
  16. LEAF(lowlevel_init)
  17. move s0, ra
  18. PTR_LA a0, msg_ddr_cal
  19. bal lowlevel_display
  20. PTR_LI t0, BOSTON_PLAT_DDR3STAT
  21. 1: lw t1, 0(t0)
  22. andi t1, t1, BOSTON_PLAT_DDR3STAT_CALIB
  23. beqz t1, 1b
  24. PTR_LA a0, msg_ddr_ok
  25. bal lowlevel_display
  26. move v0, zero
  27. jr s0
  28. END(lowlevel_init)
  29. LEAF(lowlevel_display)
  30. .set push
  31. .set noat
  32. PTR_LI AT, BOSTON_LCD_BASE
  33. #ifdef CONFIG_64BIT
  34. ld k1, 0(a0)
  35. sd k1, 0(AT)
  36. #else
  37. lw k1, 0(a0)
  38. sw k1, 0(AT)
  39. lw k1, 4(a0)
  40. sw k1, 4(AT)
  41. #endif
  42. .set pop
  43. 1: jr ra
  44. END(lowlevel_display)