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