bootm-fdt.c 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /*
  2. * Copyright (c) 2013, Google Inc.
  3. *
  4. * Copyright (C) 2011
  5. * Corscience GmbH & Co. KG - Simon Schwarz <schwarz@corscience.de>
  6. * - Added prep subcommand support
  7. * - Reorganized source - modeled after powerpc version
  8. *
  9. * (C) Copyright 2002
  10. * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
  11. * Marius Groeger <mgroeger@sysgo.de>
  12. *
  13. * Copyright (C) 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl)
  14. *
  15. * SPDX-License-Identifier: GPL-2.0+
  16. */
  17. #include <common.h>
  18. #include <fdt_support.h>
  19. #ifdef CONFIG_ARMV7_NONSEC
  20. #include <asm/armv7.h>
  21. #endif
  22. #include <asm/psci.h>
  23. DECLARE_GLOBAL_DATA_PTR;
  24. int arch_fixup_fdt(void *blob)
  25. {
  26. bd_t *bd = gd->bd;
  27. int bank, ret;
  28. u64 start[CONFIG_NR_DRAM_BANKS];
  29. u64 size[CONFIG_NR_DRAM_BANKS];
  30. for (bank = 0; bank < CONFIG_NR_DRAM_BANKS; bank++) {
  31. start[bank] = bd->bi_dram[bank].start;
  32. size[bank] = bd->bi_dram[bank].size;
  33. #ifdef CONFIG_ARMV7_NONSEC
  34. ret = armv7_apply_memory_carveout(&start[bank], &size[bank]);
  35. if (ret)
  36. return ret;
  37. #endif
  38. }
  39. ret = fdt_fixup_memory_banks(blob, start, size, CONFIG_NR_DRAM_BANKS);
  40. #ifdef CONFIG_ARMV7_NONSEC
  41. if (ret)
  42. return ret;
  43. ret = psci_update_dt(blob);
  44. #endif
  45. return ret;
  46. }