1 /*
2  * SPDX-FileCopyrightText: 2020-2022 Espressif Systems (Shanghai) CO LTD
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #pragma once
8 
9 #include <stdint.h>
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 #define SUPPORT_BTDM            1
16 #define SUPPORT_BTBB            1
17 #define SUPPORT_WIFI            1
18 #define SUPPORT_USB_DWCOTG      0
19 #define SUPPORT_COEXIST         1
20 #define SUPPORT_MBEDTLS         1
21 
22 /* Structure and functions for returning ROM global layout
23  *
24  * This is for address symbols defined in the linker script, which may change during ECOs.
25  */
26 typedef struct {
27     void *dram0_stack_shared_mem_start;
28     void *dram0_rtos_reserved_start;
29     void *stack_sentry;
30     void *stack;
31     void *stack_sentry_app;
32     void *stack_app;
33 
34     /* BTDM data */
35 #if SUPPORT_BTDM
36     void *data_start_btdm;
37     void *data_end_btdm;
38     void *bss_start_btdm;
39     void *bss_end_btdm;
40     void *data_start_btdm_rom;
41     void *data_end_btdm_rom;
42     void *data_start_interface_btdm;
43     void *data_end_interface_btdm;
44     void *bss_start_interface_btdm;
45     void *bss_end_interface_btdm;
46 #endif
47 
48 #if SUPPORT_BTBB
49     void *dram_start_btbbrom;
50     void *dram_end_btbbrom;
51 #endif
52 
53     /* Other DRAM ranges */
54 #if SUPPORT_BTDM || SUPPORT_WIFI
55     void *dram_start_phyrom;
56     void *dram_end_phyrom;
57 #endif
58 
59 #if SUPPORT_WIFI
60     void *dram_start_coexist;
61     void *dram_end_coexist;
62     void *dram_start_net80211;
63     void *dram_end_net80211;
64     void *dram_start_pp;
65     void *dram_end_pp;
66     void *data_start_interface_coexist;
67     void *data_end_interface_coexist;
68     void *bss_start_interface_coexist;
69     void *bss_end_interface_coexist;
70     void *data_start_interface_net80211;
71     void *data_end_interface_net80211;
72     void *bss_start_interface_net80211;
73     void *bss_end_interface_net80211;
74     void *data_start_interface_pp;
75     void *data_end_interface_pp;
76     void *bss_start_interface_pp;
77     void *bss_end_interface_pp;
78 #endif
79 
80 #if SUPPORT_USB_DWCOTG
81     void *dram_start_usb_dwcotg_rom;
82     void *dram_end_usb_dwcotg_rom;
83 #else
84     //Two reserved members are defined here, so the structure will not be broken,
85     //please keep in mind that there is no memory can be released between
86     //dram_start_usb_reserved_rom ~ dram_end_usb_reserved_rom.
87     void *dram_start_usb_reserved_rom;
88     void *dram_end_usb_reserved_rom;
89 #endif
90 
91     void *dram_start_uart_rom;
92     void *dram_end_uart_rom;
93 
94 #if SUPPORT_MBEDTLS
95     void *dram_start_mbedtls_rom;
96     void *dram_end_mbedtls_rom;
97 #endif
98 } ets_rom_layout_t;
99 
100 extern const ets_rom_layout_t * const ets_rom_layout_p;
101 
102 #ifdef __cplusplus
103 }
104 #endif
105