• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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