platform_def.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /*
  2. * Copyright (c) 2017-2020, ARM Limited and Contributors. All rights reserved.
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. */
  6. #ifndef PLATFORM_DEF_H
  7. #define PLATFORM_DEF_H
  8. #include <common/tbbr/tbbr_img_def.h>
  9. #include <lib/utils_def.h>
  10. #include <plat/common/common_def.h>
  11. #include <sunxi_mmap.h>
  12. #ifdef SUNXI_BL31_IN_DRAM
  13. #define BL31_BASE SUNXI_DRAM_BASE
  14. #define BL31_LIMIT (SUNXI_DRAM_BASE + 0x40000)
  15. #define MAX_XLAT_TABLES 4
  16. #define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 32)
  17. #define SUNXI_BL33_VIRT_BASE PRELOADED_BL33_BASE
  18. #else /* !SUNXI_BL31_IN_DRAM */
  19. #define BL31_BASE (SUNXI_SRAM_A2_BASE + \
  20. SUNXI_SRAM_A2_BL31_OFFSET)
  21. #define BL31_LIMIT (SUNXI_SRAM_A2_BASE + \
  22. SUNXI_SRAM_A2_SIZE - SUNXI_SCP_SIZE)
  23. /* Overwrite U-Boot SPL, but reserve the first page for the SPL header. */
  24. #define BL31_NOBITS_BASE (SUNXI_SRAM_A1_BASE + 0x1000)
  25. #define BL31_NOBITS_LIMIT (SUNXI_SRAM_A1_BASE + SUNXI_SRAM_A1_SIZE)
  26. #define MAX_XLAT_TABLES 1
  27. #define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 28)
  28. #define SUNXI_BL33_VIRT_BASE SUNXI_DRAM_VIRT_BASE
  29. /* The SCP firmware is allocated the last 16KiB of SRAM A2. */
  30. #define SUNXI_SCP_BASE BL31_LIMIT
  31. #define SUNXI_SCP_SIZE 0x4000
  32. #endif /* SUNXI_BL31_IN_DRAM */
  33. /* How much DRAM to map (to map BL33, for fetching the DTB from U-Boot) */
  34. #define SUNXI_DRAM_MAP_SIZE (64U << 20)
  35. #define CACHE_WRITEBACK_SHIFT 6
  36. #define CACHE_WRITEBACK_GRANULE (1 << CACHE_WRITEBACK_SHIFT)
  37. #define MAX_STATIC_MMAP_REGIONS 3
  38. #define MAX_MMAP_REGIONS (5 + MAX_STATIC_MMAP_REGIONS)
  39. #define PLAT_CSS_SCP_COM_SHARED_MEM_BASE \
  40. (SUNXI_SRAM_A2_BASE + SUNXI_SRAM_A2_SIZE - 0x200)
  41. /* These states are used directly for SCPI communication. */
  42. #define PLAT_MAX_PWR_LVL_STATES U(3)
  43. #define PLAT_MAX_RET_STATE U(1)
  44. #define PLAT_MAX_OFF_STATE U(3)
  45. #define PLAT_MAX_PWR_LVL U(2)
  46. #define PLAT_NUM_PWR_DOMAINS (U(1) + \
  47. PLATFORM_CLUSTER_COUNT + \
  48. PLATFORM_CORE_COUNT)
  49. #define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 32)
  50. #define PLATFORM_CLUSTER_COUNT U(1)
  51. #define PLATFORM_CORE_COUNT (PLATFORM_CLUSTER_COUNT * \
  52. PLATFORM_MAX_CPUS_PER_CLUSTER)
  53. #define PLATFORM_MAX_CPUS_PER_CLUSTER U(4)
  54. #define PLATFORM_STACK_SIZE (0x1000 / PLATFORM_CORE_COUNT)
  55. #ifndef SPD_none
  56. #ifndef BL32_BASE
  57. #define BL32_BASE SUNXI_DRAM_BASE
  58. #endif
  59. #endif
  60. #endif /* PLATFORM_DEF_H */