1 /* 2 * Copyright (C) 2022 Huawei Technologies Co., Ltd. 3 * Licensed under the Mulan PSL v2. 4 * You can use this software according to the terms and conditions of the Mulan PSL v2. 5 * You may obtain a copy of Mulan PSL v2 at: 6 * http://license.coscl.org.cn/MulanPSL2 7 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR 8 * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR 9 * PURPOSE. 10 * See the Mulan PSL v2 for more details. 11 */ 12 #ifndef DRIVERS_BOOT_SHAREDMEM_H 13 #define DRIVERS_BOOT_SHAREDMEM_H 14 15 #define TEEOS_SHAREDMEM_MODULE_SIZE_256 256 16 #define TEEOS_SHAREDMEM_MODULE_SIZE_512 512 17 #define TEEOS_SHAREDMEM_MODULE_SIZE_4K 0x1000 18 #define TEEOS_SHAREDMEM_MODULE_SIZE_128K 0x20000 19 20 #define TEEOS_SHAREDMEM_OFFSET_MODEM 0x0F00 21 #define TEEOS_SHAREDMEM_OFFSET_FINGERPRINT 0x0E00 22 #define TEEOS_SHAREDMEM_OFFSET_ROOTSTATUS 0x0D00 23 #define TEEOS_SHAREDMEM_OFFSET_ESE 0x0C00 24 #define TEEOS_SHAREDMEM_OFFSET_COLORLOCK 0x0A00 25 #define TEEOS_SHAREDMEM_OFFSET_DSS 0x0900 26 #define TEEOS_SHAREDMEM_OFFSET_MAILBOX 0x0800 27 #define TEEOS_SHAREDMEM_OFFSET_SKYTONE 0x0700 28 #define TEEOS_SHAREDMEM_OFFSET_NOMAP 0x0600 29 #define TEEOS_SHAREDMEM_OFFSET_TBIMGINFO 0x0400 30 #define TEEOS_SHAREDMEM_OFFSET_ES_CS 0x0300 31 #define TEEOS_SHAREDMEM_OFFSET_SECFLASH 0x0200 32 #define TEEOS_SHAREDMEM_OFFSET_SPI_DMA_BUF 0x0100 33 #define TEEOS_SHAREDMEM_OFFSET_CERTKEY 0x1000 34 #define TEEOS_SHAREDMEM_OFFSET_MEMORY_SGLIST 0x21000 35 enum sharedmem_types { 36 TEEOS_SHARED_MEM_SECBOOT = 0, 37 TEEOS_SHARED_MEM_FINGERPRINT = 1, 38 TEEOS_SHARED_MEM_ROOT_STATUS = 2, 39 TEEOS_SHARED_MEM_ESE = 3, 40 TEEOS_SHARED_MEM_COLORLOCK = 4, 41 TEEOS_SHARED_MEM_DSS = 5, 42 TEEOS_SHARED_MEM_MAILBOX = 6, 43 TEEOS_SHARED_MEM_SKYTONE = 7, 44 TEEOS_SHARED_MEM_NOMAP = 8, 45 TEEOS_SHARED_MEM_TBIMGINFO = 9, 46 TEEOS_SHARED_MEM_ES_CS = 10, 47 TEEOS_SHARED_MEM_SECFLASH = 11, 48 TEEOS_SHARED_MEM_SPI_DMA_BUF = 12, 49 TEEOS_SHARED_MEM_CERTKEY = 13, 50 TEEOS_SHARED_MEM_MEMORY_SGLIST = 14, 51 TEEOS_SHARED_MEM_MAX, 52 }; 53 54 struct shared_buffer_args { 55 uint64_t type_buffer; 56 uint32_t type_size; 57 uint64_t buffer; 58 uint32_t buffer_size; 59 bool clear_flag; 60 }; 61 62 struct oemkey_buffer_args { 63 uint64_t oemkey_buffer; 64 uint32_t key_size; 65 }; 66 #define IOCTRL_GET_OEM_KEY 0x11 67 #define IOCTRL_GET_TLV_SHARED_MEM 0x10 68 69 #define GET_SHAREDMEM_TYPE_STATIC 0u 70 #define GET_SHAREDMEM_TYPE_DYNAMIC 1u 71 72 int32_t get_sharedmem_addr(uintptr_t *sharedmem_vaddr, bool *sharedmem_flag, uint32_t *sharedmem_size); 73 /* get sharedmem from platdrv */ 74 int32_t get_shared_mem_info(enum sharedmem_types type, unsigned int *buffer, uint32_t size); 75 76 int32_t get_tlv_shared_mem(const char *type, uint32_t type_size, void *buffer, uint32_t *size, bool clear_flag); 77 78 int32_t get_tlv_shared_mem_drv(const char *type, uint32_t type_size, void *buffer, uint32_t *size, bool clear_flag); 79 80 /* get sharedmem outside of platdrv */ 81 int32_t sre_get_shared_mem_info(enum sharedmem_types type, uint32_t *buffer, uint32_t size); 82 83 #endif 84