1ba69d9a5d0de6019ea11fb6c6b7cd7667042074
[platform/kernel/u-boot.git] / include / configs / iot_devkit.h
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * Copyright (C) 2018 Synopsys, Inc. All rights reserved.
4  */
5
6 #ifndef _CONFIG_IOT_DEVKIT_H_
7 #define _CONFIG_IOT_DEVKIT_H_
8
9 #include <linux/sizes.h>
10
11 /*
12  *                         MEMORY MAP
13  *
14  * eFlash: 0x0000_0000 - 0x0008_0000 (512K)
15  *   ICCM: 0x2000_0000 - 0x2004_0000 (256K)
16  *   SRAM: 0x3000_0000 - 0x3002_0000 (128K)
17  *   DCCM: 0x8000_0000 - 0x8002_0000 (128K)
18  *     Note: only data goes here, as IFQ cannot fetch instructions from DCCM
19  *
20  *
21  *                         RAM PARTITIONING
22  *
23  *   +-----------+----------+---------------------+-------------+
24  *   | <-- Stack |  .data   | Malloc              | Environment |
25  *   +-----------+----------+---------------------+-------------+
26  *   :           :          :                     :\___________/
27  *   :           :          :                     :      |
28  *   :           :          :                     :     CONFIG_ENV_SIZE
29  *   :           :           \____________________/
30  *   :           :                     |
31  *   :           :                    CONFIG_SYS_MALLOC_LEN
32  *   :           :
33  *   :          Specified explicitly by CONFIG_SYS_INIT_SP_ADDR
34  *   :
35  *  Specified explicitly by CONFIG_SYS_SDRAM_BASE
36  *
37  *  NOTES:
38  *    - Stack starts from CONFIG_SYS_INIT_SP_ADDR and grows down,
39  *      i.e. towards CONFIG_SYS_SDRAM_BASE but nothing stops it from crossing
40  *      that CONFIG_SYS_SDRAM_BASE in which case data won't be really saved on
41  *      stack any longer and values popped from stack will contain garbage
42  *      leading to unexpected behavior, typically but not limited to:
43  *        - "Returning" back to bogus caller function
44  *        - Reading data from weird addresses
45  */
46
47 #define CONFIG_SYS_MONITOR_BASE         CONFIG_SYS_TEXT_BASE
48
49 #define SRAM_BASE                       0x30000000
50 #define SRAM_SIZE                       SZ_128K
51
52 #define DCCM_BASE                       0x80000000
53 #define DCCM_SIZE                       SZ_128K
54
55 #define CONFIG_SYS_SDRAM_BASE           DCCM_BASE
56 #define CONFIG_SYS_SDRAM_SIZE           DCCM_SIZE
57
58 #define CONFIG_SYS_INIT_SP_ADDR         (CONFIG_SYS_SDRAM_BASE + SZ_32K)
59
60 #define CONFIG_SYS_MALLOC_LEN           SZ_64K
61 #define CONFIG_SYS_BOOTM_LEN            SZ_128K
62 #define CONFIG_SYS_LOAD_ADDR            SRAM_BASE
63
64 #define ROM_BASE                        CONFIG_SYS_MONITOR_BASE
65 #define ROM_SIZE                        SZ_256K
66
67 #define RAM_DATA_BASE                   CONFIG_SYS_INIT_SP_ADDR
68 #define RAM_DATA_SIZE                   CONFIG_SYS_SDRAM_SIZE - \
69                                         (CONFIG_SYS_INIT_SP_ADDR - \
70                                         CONFIG_SYS_SDRAM_BASE) - \
71                                         CONFIG_SYS_MALLOC_LEN - \
72                                         CONFIG_ENV_SIZE
73
74 /*
75  * Environment
76  */
77 #define CONFIG_BOOTFILE                 "app.bin"
78 #define CONFIG_LOADADDR                 CONFIG_SYS_LOAD_ADDR
79
80 #endif /* _CONFIG_IOT_DEVKIT_H_ */