platform_def.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. /*
  2. * Copyright (c) 2019, 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 <arch.h>
  9. #include <common_def.h>
  10. #include <px30_def.h>
  11. #define DEBUG_XLAT_TABLE 0
  12. /*******************************************************************************
  13. * Platform binary types for linking
  14. ******************************************************************************/
  15. #define PLATFORM_LINKER_FORMAT "elf64-littleaarch64"
  16. #define PLATFORM_LINKER_ARCH aarch64
  17. /*******************************************************************************
  18. * Generic platform constants
  19. ******************************************************************************/
  20. /* Size of cacheable stacks */
  21. #if DEBUG_XLAT_TABLE
  22. #define PLATFORM_STACK_SIZE 0x800
  23. #elif IMAGE_BL1
  24. #define PLATFORM_STACK_SIZE 0x440
  25. #elif IMAGE_BL2
  26. #define PLATFORM_STACK_SIZE 0x400
  27. #elif IMAGE_BL31
  28. #define PLATFORM_STACK_SIZE 0x800
  29. #elif IMAGE_BL32
  30. #define PLATFORM_STACK_SIZE 0x440
  31. #endif
  32. #define FIRMWARE_WELCOME_STR "Booting Trusted Firmware\n"
  33. #define PLATFORM_MAX_AFFLVL MPIDR_AFFLVL2
  34. #define PLATFORM_SYSTEM_COUNT U(1)
  35. #define PLATFORM_CLUSTER_COUNT U(1)
  36. #define PLATFORM_CLUSTER0_CORE_COUNT U(4)
  37. #define PLATFORM_CLUSTER1_CORE_COUNT U(0)
  38. #define PLATFORM_CORE_COUNT (PLATFORM_CLUSTER1_CORE_COUNT + \
  39. PLATFORM_CLUSTER0_CORE_COUNT)
  40. #define PLATFORM_NUM_AFFS (PLATFORM_SYSTEM_COUNT + \
  41. PLATFORM_CLUSTER_COUNT + \
  42. PLATFORM_CORE_COUNT)
  43. #define PLAT_MAX_PWR_LVL MPIDR_AFFLVL2
  44. #define PLAT_RK_CLST_TO_CPUID_SHIFT 8
  45. /*
  46. * This macro defines the deepest retention state possible. A higher state
  47. * id will represent an invalid or a power down state.
  48. */
  49. #define PLAT_MAX_RET_STATE 1
  50. /*
  51. * This macro defines the deepest power down states possible. Any state ID
  52. * higher than this is invalid.
  53. */
  54. #define PLAT_MAX_OFF_STATE 2
  55. /*******************************************************************************
  56. * Platform memory map related constants
  57. ******************************************************************************/
  58. /* TF text, ro, rw, Size: 1MB */
  59. #define TZRAM_BASE (0x0)
  60. #define TZRAM_SIZE (0x100000)
  61. /*******************************************************************************
  62. * BL31 specific defines.
  63. ******************************************************************************/
  64. /*
  65. * Put BL3-1 at the top of the Trusted RAM
  66. */
  67. #define BL31_BASE (TZRAM_BASE + 0x40000)
  68. #define BL31_LIMIT (TZRAM_BASE + TZRAM_SIZE)
  69. /*******************************************************************************
  70. * Platform specific page table and MMU setup constants
  71. ******************************************************************************/
  72. #define PLAT_VIRT_ADDR_SPACE_SIZE (1ull << 32)
  73. #define PLAT_PHY_ADDR_SPACE_SIZE (1ull << 32)
  74. #define ADDR_SPACE_SIZE (1ull << 32)
  75. #define MAX_XLAT_TABLES 8
  76. #define MAX_MMAP_REGIONS 27
  77. /*******************************************************************************
  78. * Declarations and constants to access the mailboxes safely. Each mailbox is
  79. * aligned on the biggest cache line size in the platform. This is known only
  80. * to the platform as it might have a combination of integrated and external
  81. * caches. Such alignment ensures that two maiboxes do not sit on the same cache
  82. * line at any cache level. They could belong to different cpus/clusters &
  83. * get written while being protected by different locks causing corruption of
  84. * a valid mailbox address.
  85. ******************************************************************************/
  86. #define CACHE_WRITEBACK_SHIFT 6
  87. #define CACHE_WRITEBACK_GRANULE (1 << CACHE_WRITEBACK_SHIFT)
  88. /*
  89. * Define GICD and GICC and GICR base
  90. */
  91. #define PLAT_RK_GICD_BASE PX30_GICD_BASE
  92. #define PLAT_RK_GICC_BASE PX30_GICC_BASE
  93. #define PLAT_RK_UART_BASE PX30_UART_BASE
  94. #define PLAT_RK_UART_CLOCK PX30_UART_CLOCK
  95. #define PLAT_RK_UART_BAUDRATE PX30_BAUDRATE
  96. #define PLAT_RK_PRIMARY_CPU 0x0
  97. #endif /* __PLATFORM_DEF_H__ */