platform_def.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /*
  2. * Copyright (c) 2014-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 <lib/utils_def.h>
  10. #include <plat/common/common_def.h>
  11. #include <bl32_param.h>
  12. #include <rk3288_def.h>
  13. /*******************************************************************************
  14. * Platform binary types for linking
  15. ******************************************************************************/
  16. #define PLATFORM_LINKER_FORMAT "elf32-littlearm"
  17. #define PLATFORM_LINKER_ARCH arm
  18. /*******************************************************************************
  19. * Generic platform constants
  20. ******************************************************************************/
  21. /* Size of cacheable stacks */
  22. #if defined(IMAGE_BL1)
  23. #define PLATFORM_STACK_SIZE 0x440
  24. #elif defined(IMAGE_BL2)
  25. #define PLATFORM_STACK_SIZE 0x400
  26. #elif defined(IMAGE_BL32)
  27. #define PLATFORM_STACK_SIZE 0x800
  28. #endif
  29. #define FIRMWARE_WELCOME_STR "Booting Trusted Firmware\n"
  30. #define PLATFORM_MAX_AFFLVL MPIDR_AFFLVL2
  31. #define PLATFORM_SYSTEM_COUNT U(1)
  32. #define PLATFORM_CLUSTER_COUNT U(1)
  33. #define PLATFORM_CLUSTER0_CORE_COUNT U(4)
  34. #define PLATFORM_CORE_COUNT (PLATFORM_CLUSTER0_CORE_COUNT)
  35. #define PLATFORM_MAX_CPUS_PER_CLUSTER U(4)
  36. #define PLATFORM_NUM_AFFS (PLATFORM_SYSTEM_COUNT + \
  37. PLATFORM_CLUSTER_COUNT + \
  38. PLATFORM_CORE_COUNT)
  39. #define PLAT_RK_CLST_TO_CPUID_SHIFT 6
  40. #define PLAT_MAX_PWR_LVL MPIDR_AFFLVL2
  41. /*
  42. * This macro defines the deepest retention state possible. A higher state
  43. * id will represent an invalid or a power down state.
  44. */
  45. #define PLAT_MAX_RET_STATE U(1)
  46. /*
  47. * This macro defines the deepest power down states possible. Any state ID
  48. * higher than this is invalid.
  49. */
  50. #define PLAT_MAX_OFF_STATE U(2)
  51. /*******************************************************************************
  52. * Platform specific page table and MMU setup constants
  53. ******************************************************************************/
  54. #define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 32)
  55. #define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 32)
  56. #define MAX_XLAT_TABLES 8
  57. #define MAX_MMAP_REGIONS 18
  58. /*******************************************************************************
  59. * Declarations and constants to access the mailboxes safely. Each mailbox is
  60. * aligned on the biggest cache line size in the platform. This is known only
  61. * to the platform as it might have a combination of integrated and external
  62. * caches. Such alignment ensures that two maiboxes do not sit on the same cache
  63. * line at any cache level. They could belong to different cpus/clusters &
  64. * get written while being protected by different locks causing corruption of
  65. * a valid mailbox address.
  66. ******************************************************************************/
  67. #define CACHE_WRITEBACK_SHIFT 6
  68. #define CACHE_WRITEBACK_GRANULE (1 << CACHE_WRITEBACK_SHIFT)
  69. /*
  70. * Define GICD and GICC and GICR base
  71. */
  72. #define PLAT_RK_GICD_BASE RK3288_GICD_BASE
  73. #define PLAT_RK_GICC_BASE RK3288_GICC_BASE
  74. #define PLAT_RK_UART_BASE UART2_BASE
  75. #define PLAT_RK_UART_CLOCK RK3288_UART_CLOCK
  76. #define PLAT_RK_UART_BAUDRATE RK3288_BAUDRATE
  77. /* ClusterId is always 0x5 on rk3288, filter it */
  78. #define PLAT_RK_MPIDR_CLUSTER_MASK 0
  79. #define PLAT_RK_PRIMARY_CPU 0x0
  80. #define PSRAM_DO_DDR_RESUME 0
  81. #define PSRAM_CHECK_WAKEUP_CPU 0
  82. #endif /* PLATFORM_DEF_H */