1 /******************************************************************************\r
2 * Copyright (c) 2020 Texas Instruments Incorporated - http://www.ti.com\r
3 *\r
4 * Redistribution and use in source and binary forms, with or without\r
5 * modification, are permitted provided that the following conditions\r
6 * are met:\r
7 *\r
8 * Redistributions of source code must retain the above copyright\r
9 * notice, this list of conditions and the following disclaimer.\r
10 *\r
11 * Redistributions in binary form must reproduce the above copyright\r
12 * notice, this list of conditions and the following disclaimer in the\r
13 * documentation and/or other materials provided with the\r
14 * distribution.\r
15 *\r
16 * Neither the name of Texas Instruments Incorporated nor the names of\r
17 * its contributors may be used to endorse or promote products derived\r
18 * from this software without specific prior written permission.\r
19 *\r
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
23 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\r
24 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
25 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
26 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
31 *\r
32 *****************************************************************************/\r
33 \r
34 /**\r
35 * \brief Board library configurations\r
36 *\r
37 * This file configures the instance numbers, address and gpio reset\r
38 * details of different interfaces of the board.\r
39 *\r
40 */\r
41 #ifndef BOARD_CFG_H_\r
42 #define BOARD_CFG_H_\r
43 \r
44 #ifdef __cplusplus\r
45 extern "C" {\r
46 #endif\r
47 \r
48 /* Board ID information */\r
49 #define BOARD_INFO_CPU_NAME "am64x"\r
50 #define BOARD_INFO_BOARD_NAME "am64x_evm"\r
51 \r
52 #define BOARD_SOC_DDR_START_ADDR (0x80000000U)\r
53 \r
54 /* Memory sections */\r
55 #define BOARD_DDR_START_ADDR (0x80000000U)\r
56 #define BOARD_DDR_SIZE (2048 * 1024 * 1024UL)\r
57 #define BOARD_DDR_END_ADDR (0xFFFFFFFFU)\r
58 \r
59 /* Note with ECC enabled, all memory is not usable: 1/8 memory used for inline ECC */\r
60 #define BOARD_DDR_ECC_END_ADDR (0xF1FFFFFFU)\r
61 \r
62 /* UART LLD instance number for MAIN UART0 port */\r
63 #define BOARD_UART0_INSTANCE (0U)\r
64 /* UART LLD instance number for MAIN UART1 port */\r
65 #define BOARD_UART1_INSTANCE (1U)\r
66 /* UART LLD instance number for MAIN UART2 port */\r
67 #define BOARD_UART2_INSTANCE (2U)\r
68 /* UART LLD instance number for MAIN UART3 port */\r
69 #define BOARD_UART3_INSTANCE (3U)\r
70 /* UART LLD instance number for MCU UART0 port */\r
71 #define BOARD_MCU_UART0_INSTANCE (7U)\r
72 /* MCU UART LLD instance number 1 */\r
73 #define BOARD_MCU_UART1_INSTANCE (8U)\r
74 \r
75 /* UART LLD instance number for primary UART port */\r
76 #if defined (BUILD_MCU)\r
77 #define BOARD_UART_INSTANCE (BOARD_UART0_INSTANCE)\r
78 #elif defined (BUILD_MPU)\r
79 #define BOARD_UART_INSTANCE (BOARD_UART1_INSTANCE)\r
80 #elif defined (BUILD_M4F)\r
81 #define BOARD_UART_INSTANCE (BOARD_MCU_UART0_INSTANCE)\r
82 #else\r
83 #define BOARD_UART_INSTANCE (BOARD_UART0_INSTANCE) /* Use MAIN UART0 by default */\r
84 #endif\r
85 \r
86 /* Clock frequency for UART module */\r
87 #define BOARD_UART_CLK_MAIN (48000000U)\r
88 \r
89 /** @brief Number of UART instances */\r
90 #define BOARD_UART_PER_CNT (6U)\r
91 \r
92 /* ICSSG UART instance number */\r
93 #define BOARD_ICSSG_UART_INSTANCE (4U)\r
94 \r
95 /* I2C instance connected to EEPROM - WKUP I2C0 */\r
96 #define BOARD_I2C_EEPROM_INSTANCE (0U)\r
97 \r
98 /* I2C instance for BOOT EEPROM */\r
99 #define BOARD_I2C_BOOT_EEPROM_INSTANCE (0U)\r
100 \r
101 /* I2C address for Boot EEPROM */\r
102 #define BOARD_I2C_BOOT_EEPROM_ADDR (0x50U)\r
103 #define BOARD_I2C_BOOT_EEPROM_ADDR2 (0x51U)\r
104 \r
105 /* I2C address for Board Id EEPROM */\r
106 #define BOARD_I2C_EEPROM_ADDR (0x50U)\r
107 \r
108 /* QSPI instance number */\r
109 #define BOARD_SPI_NOR_INSTANCE (0U)\r
110 \r
111 /* OSPI instance connected to OSPI NOR flash */\r
112 #define BOARD_OSPI_NOR_INSTANCE (0U)\r
113 \r
114 /* I2C instance connected to IO Expander */\r
115 #define BOARD_I2C_IOEXP_DEVICE1_INSTANCE (1U)\r
116 #define BOARD_I2C_IOEXP_DEVICE2_INSTANCE (0U)\r
117 #define BOARD_I2C_LED_INSTANCE (1U)\r
118 \r
119 /* I2C IO Expander Slave devices */\r
120 #define BOARD_I2C_IOEXP_DEVICE1_ADDR (0x22U)\r
121 /* Used to configure Ethernet PHY LED's */\r
122 #define BOARD_I2C_IOEXP_DEVICE2_ADDR (0x60U)\r
123 #define BOARD_I2C_LED_ADDR (0x60U)\r
124 \r
125 /* OSPI instance number */\r
126 #define BOARD_OSPI_INSTANCE (0)\r
127 \r
128 /* GPIO port & pin numbers for MMC reset */\r
129 #define GPIO_MMC_SDCD_PORT_NUM (0)\r
130 #define GPIO_MMC_SDCD_PIN_NUM (0)\r
131 \r
132 #define BOARD_GPIO_IOEXP_EMMC_RST_PORT_NUM (0x0)\r
133 #define BOARD_GPIO_IOEXP_EMMC_RST_PIN_NUM (0x0)\r
134 \r
135 /* I2C instance Board Presence Circuit */\r
136 #define BOARD_PRES_I2C_INSTANCE (0U)\r
137 /* I2C address Board Presence Circuit */\r
138 #define BOARD_PRES_DETECT_SLAVE_ADDR (0x38U)\r
139 \r
140 /* Pin and port numbers for TEST_LED1 on CP board */\r
141 #define BOARD_GPIO_TEST_LED1_PORT_NUM (0) /* Port 0 */\r
142 #define BOARD_GPIO_TEST_LED1_PIN_NUM (0x01) /* Pin 1 */\r
143 /* Pin and port numbers for TEST_LED2 on CP board */\r
144 #define BOARD_MCU_GPIO_TEST_LED2_PORT_NUM (2) /* Port 2 */\r
145 #define BOARD_MCU_GPIO_TEST_LED2_PIN_NUM (0x05) /* Pin 5 */\r
146 \r
147 /* User LED Pin Details */\r
148 #define BOARD_I2C_USER_LED_INSTANCE (0U)\r
149 \r
150 #define BOARD_ICSS_EMAC_PORT_START (0x0U)\r
151 #define BOARD_ICSS_EMAC_PORT_END (0x1U)\r
152 #define BOARD_ICSS_EMAC_PORT_MAX (0x2U)\r
153 #define BOARD_MCU_EMAC_PORT_MAX (0x1U)\r
154 #define BOARD_MCU_ETH_PORT (0x1U) //AM64x_TODO: need to update\r
155 \r
156 \r
157 /* ICSS2 EMAC PHY register address */\r
158 #define BOARD_ICSS_EMAC_PHY0_ADDR (0x3)\r
159 #define BOARD_ICSS_EMAC_PHY1_ADDR (0xFu)\r
160 #define BOARD_CPSW_EMAC_PHY0_ADDR (0x0)\r
161 #define BOARD_CPSW_EMAC_PHY1_ADDR (0x3u)\r
162 \r
163 /* MCU EMAC PHY MDIO address */\r
164 #define BOARD_MCU_EMAC_PHY_ADDR (0U)\r
165 \r
166 /* MCU EMAC MAX REG DUMP */\r
167 #define BOARD_MCU_EMAC_REG_DUMP_MAX (16)\r
168 \r
169 /* MCU EMAC PHY register address definitions for reading strap values */\r
170 #define BOARD_MCU_EMAC_STRAP_STS1_ADDR (0x6EU)\r
171 #define BOARD_MCU_EMAC_STRAP_STS2_ADDR (0x6FU)\r
172 \r
173 /* MCU EMAC PHY register address definitions for reading strap values */\r
174 #define BOARD_ICSS_EMAC_STRAP_STS1_ADDR (0x6EU)\r
175 #define BOARD_ICSS_EMAC_STRAP_STS2_ADDR (0x6FU)\r
176 \r
177 /* MCU_ETH1_RESETn --> GPIO_CPSW1_RST */\r
178 #define BOARD_GPIO_IOEXP_MCU_EMAC_RST_PORT_NUM (0)\r
179 #define BOARD_GPIO_IOEXP_MCU_EMAC_RST_PIN_NUM (2)\r
180 \r
181 /* MCU_ETH1_INTn -> CPSW_RGMII_INTn */\r
182 #define BOARD_GPIO_MCU_EMAC_INT_PORT_NUM (1) /* EXTINTn - GPIO1_70 */\r
183 #define BOARD_GPIO_MCU_EMAC_INT_PIN_NUM (46)\r
184 \r
185 /* AUTOMATION HEADER */\r
186 #define BOARD_TEST_HEADER_I2C_INSTANCE (1U)\r
187 #define BOARD_I2C_BOOT_MODE_SW_ADDR (0x22U)\r
188 \r
189 /* TEST_GPIO2 */\r
190 #define BOARD_GPIO_IOEXP_TEST_PORT_NUM (1)\r
191 #define BOARD_GPIO_IOEXP_TEST_PIN_NUM (5)\r
192 \r
193 /* Temperature sensor i2c instance */\r
194 #define BOARD_TEMP_SENSOR_I2C_INSTANCE (1U)\r
195 \r
196 /* Temperature sensor slave device addresses */\r
197 #define BOARD_TEMP_SENSOR_I2C_SLAVE_DEVICE1_ADDR (0x48U)\r
198 #define BOARD_TEMP_SENSOR_I2C_SLAVE_DEVICE2_ADDR (0x49U)\r
199 \r
200 #define BOARD_I2C_CURRENT_MONITOR_INSTANCE (1U)\r
201 \r
202 /* I2C instance connected to OLED DISPLAY */\r
203 #define BOARD_OLED_DISPLAY_INSTANCE (1)\r
204 \r
205 /* Instance for interfaces connected to MMCSD */\r
206 #define BOARD_MMCSD_SD_INSTANCE (1U)\r
207 #define BOARD_MMCSD_EMMC_INSTANCE (0)\r
208 \r
209 /* GPMC instance connected to the flash */\r
210 #define BOARD_GPMC_INSTANCE (0U)\r
211 \r
212 /* Number of LEDS connected to GPIO */\r
213 #define BOARD_GPIO_LED_NUM (2U)\r
214 \r
215 /* SPI instance connected to EEPROM */\r
216 #define BOARD_EEPROM_SPI0_PORT (0U)\r
217 \r
218 /* Enable NOR flash driver */\r
219 #define BOARD_NOR_FLASH_IN\r
220 \r
221 /* McSPI instance for master and slave test */\r
222 #define BOARD_MCSPI_MASTER_INSTANCE (1)\r
223 #define BOARD_MCSPI_SLAVE_INSTANCE (1)\r
224 \r
225 /* Maximum possible buffer length */\r
226 #define BOARD_EEPROM_MAX_BUFF_LENGTH (197U)\r
227 \r
228 /* Maximum number of SoC domains */\r
229 #define BOARD_SOC_DOMAIN_MAX (2U)\r
230 /* Value for indicating SoC main domain */\r
231 #define BOARD_SOC_DOMAIN_MAIN (0)\r
232 /* Value for indicating SoC MCU domain */\r
233 #define BOARD_SOC_DOMAIN_MCU (1U)\r
234 /* Maximum I2C instance number common across the domain */\r
235 #define BOARD_I2C_DOMAIN_INSTANCE_MAX (2U)\r
236 \r
237 /* SoC domain used by UART module */\r
238 #if defined (BUILD_M4F)\r
239 #define BOARD_UART_SOC_DOMAIN (BOARD_SOC_DOMAIN_MCU)\r
240 #else\r
241 #define BOARD_UART_SOC_DOMAIN (BOARD_SOC_DOMAIN_MAIN)\r
242 #endif\r
243 \r
244 \r
245 /* EEPROM board ID information */\r
246 /* EEPROM board ID information */\r
247 #define BOARD_EEPROM_HEADER_FIELD_SIZE (7U)\r
248 #define BOARD_EEPROM_TYPE_SIZE (1U)\r
249 #define BOARD_EEPROM_STRUCT_LENGTH_SIZE (2U)\r
250 #define BOARD_EEPROM_MAGIC_NUMBER (0xEE3355AA)\r
251 \r
252 #define BOARD_BOARD_FIELD_TYPE (0x10)\r
253 #define BOARD_DDR_FIELD_TYPE (0x11)\r
254 #define BOARD_MACINFO_FIELD_TYPE (0x13)\r
255 #define BOARD_ENDLIST (0xFE)\r
256 \r
257 #define BOARD_EEPROM_HEADER_ADDR (0U)\r
258 \r
259 /* I2C instance connected to OLED DISPLAY */\r
260 #define BOARD_OLED_DISPLAY_INSTANCE (1)\r
261 \r
262 /* PinMux data to be programmed to configure a pin to be a GPIO */\r
263 #define PINMUX_GPIO_CFG (0x00050007U)\r
264 \r
265 /* Clock frequency for UART module */\r
266 #define BOARD_UART_CLK_MAIN (48000000U)\r
267 \r
268 /** @brief Number of UART instances */\r
269 #define BOARD_UART_PER_CNT (6U)\r
270 \r
271 /* SPI instance connected to LED Driver */\r
272 #define BOARD_SPI1_INSTANCE (1U)\r
273 \r
274 /* PinMux data to be programmed to configure a pin to be a GPIO */\r
275 #define PINMUX_GPIO_CFG (0x00050007U)\r
276 \r
277 #define BOARD_EEPROM_HEADER_LENGTH (4U)\r
278 #define BOARD_EEPROM_BOARD_NAME_LENGTH (8U)\r
279 #define BOARD_EEPROM_VERSION_LENGTH (4U)\r
280 #define BOARD_EEPROM_SERIAL_NO_LENGTH (12U)\r
281 #define BOARD_EEPROM_CONFIG_LENGTH (32U)\r
282 \r
283 #define BOARD_EEPROM_BOARD_NAME_ADDR (BOARD_EEPROM_HEADER_ADDR + BOARD_EEPROM_HEADER_LENGTH)\r
284 #define BOARD_EEPROM_VERSION_ADDR (BOARD_EEPROM_BOARD_NAME_ADDR + BOARD_EEPROM_BOARD_NAME_LENGTH)\r
285 #define BOARD_EEPROM_SERIAL_NO_ADDR (BOARD_EEPROM_VERSION_ADDR + BOARD_EEPROM_VERSION_LENGTH)\r
286 #define BOARD_EEPROM_CONFIG_ADDR (BOARD_EEPROM_SERIAL_NO_ADDR + BOARD_EEPROM_SERIAL_NO_LENGTH)\r
287 \r
288 #ifdef __cplusplus\r
289 }\r
290 #endif /* __cplusplus */\r
291 \r
292 #endif /* BOARD_CFG_H_ */\r
293 \r