dram.c 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. * Copyright (C) 2010 Albert ARIBAUD <albert.u.boot@aribaud.net>
  3. *
  4. * Based on original Kirkwood support which is
  5. * (C) Copyright 2009
  6. * Marvell Semiconductor <www.marvell.com>
  7. * Written-by: Prafulla Wadaskar <prafulla@marvell.com>
  8. *
  9. * SPDX-License-Identifier: GPL-2.0+
  10. */
  11. #include <common.h>
  12. #include <config.h>
  13. #include <asm/arch/cpu.h>
  14. DECLARE_GLOBAL_DATA_PTR;
  15. /*
  16. * orion5x_sdram_bar - reads SDRAM Base Address Register
  17. */
  18. u32 orion5x_sdram_bar(enum memory_bank bank)
  19. {
  20. struct orion5x_ddr_addr_decode_registers *winregs =
  21. (struct orion5x_ddr_addr_decode_registers *)
  22. ORION5X_DRAM_BASE;
  23. u32 result = 0;
  24. u32 enable = 0x01 & winregs[bank].size;
  25. if ((!enable) || (bank > BANK3))
  26. return 0;
  27. result = winregs[bank].base;
  28. return result;
  29. }
  30. int dram_init (void)
  31. {
  32. /* dram_init must store complete ramsize in gd->ram_size */
  33. gd->ram_size = get_ram_size(
  34. (long *) orion5x_sdram_bar(0),
  35. CONFIG_MAX_RAM_BANK_SIZE);
  36. return 0;
  37. }
  38. void dram_init_banksize (void)
  39. {
  40. int i;
  41. for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
  42. gd->bd->bi_dram[i].start = orion5x_sdram_bar(i);
  43. gd->bd->bi_dram[i].size = get_ram_size(
  44. (long *) (gd->bd->bi_dram[i].start),
  45. CONFIG_MAX_RAM_BANK_SIZE);
  46. }
  47. }