gz_init.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. /* Copyright Statement:
  2. *
  3. * This software/firmware and related documentation ("MediaTek Software") are
  4. * protected under relevant copyright laws. The information contained herein is
  5. * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
  6. * the prior written permission of MediaTek inc. and/or its licensors, any
  7. * reproduction, modification, use or disclosure of MediaTek Software, and
  8. * information contained herein, in whole or in part, shall be strictly
  9. * prohibited.
  10. *
  11. * MediaTek Inc. (C) 2016. All rights reserved.
  12. *
  13. * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  14. * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  15. * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
  16. * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL
  17. * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
  18. * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
  19. * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH
  20. * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY,
  21. * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES
  22. * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
  23. * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
  24. * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK
  25. * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE
  26. * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
  27. * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S
  28. * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE
  29. * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE
  30. * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE
  31. * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
  32. *
  33. * The following software/firmware and/or related documentation ("MediaTek
  34. * Software") have been modified by MediaTek Inc. All revisions are subject to
  35. * any receiver's applicable license agreements with MediaTek Inc.
  36. */
  37. #ifndef GZ_INIT_H
  38. #define GZ_INIT_H
  39. #include "typedefs.h"
  40. #include "blkdev.h"
  41. #define GZ_KERNEL_LOAD_OFFSET (0X38000000) /* GZ Code Start */
  42. #if CFG_NEBULA_VM_SUPPORT
  43. #define EL2_DRAM_SIZE (0xC00000) /* 12MB */
  44. #define VM_DRAM_SIZE (0x8000000) /* 128MB */
  45. #else
  46. #define EL2_DRAM_SIZE (0xC00000) /* 12MB */
  47. #define VM_DRAM_SIZE (0x0) /* 0MB */
  48. #endif
  49. #define GZ_DRAM_SIZE (EL2_DRAM_SIZE + VM_DRAM_SIZE)
  50. #define GZ_ALIGNMENT (0x200000) /* 2MB alignment */
  51. #if CFG_MICROTRUST_TEE_SUPPORT
  52. #define GZ_ADDR_MAX (0xA0000000) /* Upper limit */
  53. #else
  54. #define GZ_ADDR_MAX (0x80000000) /* Upper limit */
  55. #endif
  56. #define GZ_MD_SHM_SIZE (0x10000) /* 64KB */
  57. #define GZ_MD_SHM_ALIGNMENT (0x2000000) /* 64MB alignment */
  58. #define GZ_MD_SHM_ADDR_MAX (0x80000000) /* Upper limit */
  59. #define GZ_SDSP_FW_SIZE (0x200000) /* 2MB */
  60. #define GZ_SDSP_FW_ALIGNMENT (0x200000) /* 2MB alignment */
  61. #define GZ_SDSP_FW_ADDR_MAX (GZ_ADDR_MAX) /* Upper limit */
  62. #define SAPU_MTEE_SHM_SIZE (0x400000) /* 4MB alignment */
  63. #define SAPU_MTEE_SHM_ALIGNMENT (0x200000) /* 2MB alignment */
  64. #define SAPU_MTEE_SHM_ADDR_MAX (GZ_ADDR_MAX) /* Upper limit */
  65. #define GZ_TEE_STATIC_SHM_SIZE (0x200000) /* 2MB */
  66. #define GZ_TEE_STATIC_SHM_ALIGNMENT (0x200000) /* 2MB alignment */
  67. #define GZ_TEE_STATIC_SHM_ADDR_MAX (GZ_ADDR_MAX) /* Upper limit */
  68. /* 64 + 1 PAGES */
  69. #define GZ_LOG_BUFFER_SIZE (65 * 4096)
  70. #define GZ_PAGE_SIZE (4096)
  71. #define GZ_TEE_STATIC_SHM_HEADER_SIZE 4096
  72. #define MAX_GZ_TEE_STATIC_SHM_ENTRY GZ_TEE_STATIC_SHM_HEADER_SIZE/sizeof(gz_tee_static_shm_t)
  73. #define MAGIC_NUMBER 0x76616C64
  74. #define MAX_GZ_TEE_STATIC_SHM_NAME 16
  75. typedef struct {
  76. u32 magic;
  77. u32 sz;
  78. u64 pa;
  79. char name[MAX_GZ_TEE_STATIC_SHM_NAME];
  80. u8 reserve[32];
  81. } gz_tee_static_shm_t;
  82. #define GZ_RPMB_SIZE (0x20000) /* 128KB*/
  83. #define EL2_BOOTING_DISABLED (0x4e6f475a) /* ascii nogz */
  84. /* extern variables */
  85. extern u32 gz_md_shm_addr;
  86. extern u32 gz_md_shm_size;
  87. extern u32 build_variant;
  88. /* extern APIs */
  89. unsigned int is_booting_el2(void);
  90. int bldr_load_gz_part(blkdev_t *bdev, const char *part_name);
  91. u32 gz_config_info_atag(boot_tag *tags);
  92. u32 gz_config_boot_atag(boot_tag *tags);
  93. u32 gz_config_platform_atag(boot_tag *tags);
  94. #if CFG_GZ_PWRAP_ENABLE
  95. u32 gz_config_pwrap_atag(boot_tag *tags);
  96. #endif
  97. void gz_pre_init(void);
  98. void gz_post_init(void);
  99. u64 gz_get_jump_addr(void);
  100. int gz_de_init(void);
  101. u32 gz_get_load_addr(u32 maddr);
  102. u32 gz_get_sdsp_mem_info(u32 *pa, u32 *size);
  103. u32 gz_get_sapu_shm_info(u32 *pa, u32 *size);
  104. u32 get_gz_tee_static_shm_info(u32 *pa, u32 *size);
  105. struct gz_mblock_info {
  106. u64 addr;
  107. u64 size;
  108. u64 align;
  109. u64 limit;
  110. void (*post_process)(u64 reserved_addr, u64 reserved_size);
  111. char *name;
  112. };
  113. #endif /* end of GZ_INIT_H */