~aleteoryx/muditaos

ref: c1391090c67428aeaffcef5a7a71a6d2ed69ccc9 muditaos/module-bsp/board/rt1051/common/board.h -rw-r--r-- 16.9 KiB
c1391090 — Mateusz Piesta [BH-1389] Catch2 unit tests optimization 3 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
/*
 * The Clear BSD License
 * Copyright 2017 NXP
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification,
 * are permitted (subject to the limitations in the disclaimer below) provided
 *  that the following conditions are met:
 *
 * o Redistributions of source code must retain the above copyright notice, this list
 *   of conditions and the following disclaimer.
 *
 * o Redistributions in binary form must reproduce the above copyright notice, this
 *   list of conditions and the following disclaimer in the documentation and/or
 *   other materials provided with the distribution.
 *
 * o Neither the name of the copyright holder nor the names of its
 *   contributors may be used to endorse or promote products derived from this
 *   software without specific prior written permission.
 *
 * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE.
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef _BOARD_H_
#define _BOARD_H_

#include "board/clock_config.h"
#include "fsl_clock.h"
#include "fsl_common.h"
#include "fsl_gpio.h"
#include "pin_names.h"

/*******************************************************************************
 * Definitions
 ******************************************************************************/
#define BOARD_SD_POWER_RESET_GPIO     (GPIO1)
#define BOARD_SD_POWER_RESET_GPIO_PIN (5U)

#define BOARD_USDHC_CARD_INSERT_CD_LEVEL (0U)

#define BOARD_USDHC_MMCCARD_POWER_CONTROL(state)

#define BOARD_USDHC_MMCCARD_POWER_CONTROL_INIT()                                                                       \
    {                                                                                                                  \
        gpio_pin_config_t sw_config = {                                                                                \
            kGPIO_DigitalOutput,                                                                                       \
            0,                                                                                                         \
            kGPIO_NoIntmode,                                                                                           \
        };                                                                                                             \
        GPIO_PinInit(BOARD_SD_POWER_RESET_GPIO, BOARD_SD_POWER_RESET_GPIO_PIN, &sw_config);                            \
        GPIO_PinWrite(BOARD_SD_POWER_RESET_GPIO, BOARD_SD_POWER_RESET_GPIO_PIN, true);                                 \
    }

#define BOARD_USDHC_SDCARD_POWER_CONTROL_INIT()                                                                        \
    {                                                                                                                  \
        gpio_pin_config_t sw_config = {                                                                                \
            kGPIO_DigitalOutput,                                                                                       \
            0,                                                                                                         \
            kGPIO_NoIntmode,                                                                                           \
        };                                                                                                             \
        GPIO_PinInit(BOARD_SD_POWER_RESET_GPIO, BOARD_SD_POWER_RESET_GPIO_PIN, &sw_config);                            \
    }

#define BOARD_USDHC_SDCARD_POWER_CONTROL(state)                                                                        \
    (GPIO_PinWrite(BOARD_SD_POWER_RESET_GPIO, BOARD_SD_POWER_RESET_GPIO_PIN, state))

#define BOARD_MMC_PIN_CONFIG(speed, strength)                                                                          \
    {                                                                                                                  \
        IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B1_05_USDHC2_CMD,                                                           \
                            IOMUXC_SW_PAD_CTL_PAD_SPEED(speed) | IOMUXC_SW_PAD_CTL_PAD_SRE_MASK |                      \
                                IOMUXC_SW_PAD_CTL_PAD_PKE_MASK | IOMUXC_SW_PAD_CTL_PAD_PUE_MASK |                      \
                                IOMUXC_SW_PAD_CTL_PAD_HYS_MASK | IOMUXC_SW_PAD_CTL_PAD_PUS(1) |                        \
                                IOMUXC_SW_PAD_CTL_PAD_DSE(strength));                                                  \
        IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B1_04_USDHC2_CLK,                                                           \
                            IOMUXC_SW_PAD_CTL_PAD_SPEED(speed) | IOMUXC_SW_PAD_CTL_PAD_SRE_MASK |                      \
                                IOMUXC_SW_PAD_CTL_PAD_HYS_MASK | IOMUXC_SW_PAD_CTL_PAD_PUS(0) |                        \
                                IOMUXC_SW_PAD_CTL_PAD_DSE(strength));                                                  \
        IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B1_03_USDHC2_DATA0,                                                         \
                            IOMUXC_SW_PAD_CTL_PAD_SPEED(speed) | IOMUXC_SW_PAD_CTL_PAD_SRE_MASK |                      \
                                IOMUXC_SW_PAD_CTL_PAD_PKE_MASK | IOMUXC_SW_PAD_CTL_PAD_PUE_MASK |                      \
                                IOMUXC_SW_PAD_CTL_PAD_HYS_MASK | IOMUXC_SW_PAD_CTL_PAD_PUS(1) |                        \
                                IOMUXC_SW_PAD_CTL_PAD_DSE(strength));                                                  \
        IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B1_02_USDHC2_DATA1,                                                         \
                            IOMUXC_SW_PAD_CTL_PAD_SPEED(speed) | IOMUXC_SW_PAD_CTL_PAD_SRE_MASK |                      \
                                IOMUXC_SW_PAD_CTL_PAD_PKE_MASK | IOMUXC_SW_PAD_CTL_PAD_PUE_MASK |                      \
                                IOMUXC_SW_PAD_CTL_PAD_HYS_MASK | IOMUXC_SW_PAD_CTL_PAD_PUS(1) |                        \
                                IOMUXC_SW_PAD_CTL_PAD_DSE(strength));                                                  \
        IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B1_01_USDHC2_DATA2,                                                         \
                            IOMUXC_SW_PAD_CTL_PAD_SPEED(speed) | IOMUXC_SW_PAD_CTL_PAD_SRE_MASK |                      \
                                IOMUXC_SW_PAD_CTL_PAD_PKE_MASK | IOMUXC_SW_PAD_CTL_PAD_PUE_MASK |                      \
                                IOMUXC_SW_PAD_CTL_PAD_HYS_MASK | IOMUXC_SW_PAD_CTL_PAD_PUS(1) |                        \
                                IOMUXC_SW_PAD_CTL_PAD_DSE(strength));                                                  \
        IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B1_00_USDHC2_DATA3,                                                         \
                            IOMUXC_SW_PAD_CTL_PAD_SPEED(speed) | IOMUXC_SW_PAD_CTL_PAD_SRE_MASK |                      \
                                IOMUXC_SW_PAD_CTL_PAD_PKE_MASK | IOMUXC_SW_PAD_CTL_PAD_PUE_MASK |                      \
                                IOMUXC_SW_PAD_CTL_PAD_HYS_MASK | IOMUXC_SW_PAD_CTL_PAD_PUS(1) |                        \
                                IOMUXC_SW_PAD_CTL_PAD_DSE(strength));                                                  \
        IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B1_08_USDHC2_DATA4,                                                         \
                            IOMUXC_SW_PAD_CTL_PAD_SPEED(speed) | IOMUXC_SW_PAD_CTL_PAD_SRE_MASK |                      \
                                IOMUXC_SW_PAD_CTL_PAD_PKE_MASK | IOMUXC_SW_PAD_CTL_PAD_PUE_MASK |                      \
                                IOMUXC_SW_PAD_CTL_PAD_HYS_MASK | IOMUXC_SW_PAD_CTL_PAD_PUS(1) |                        \
                                IOMUXC_SW_PAD_CTL_PAD_DSE(strength));                                                  \
        IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B1_09_USDHC2_DATA5,                                                         \
                            IOMUXC_SW_PAD_CTL_PAD_SPEED(speed) | IOMUXC_SW_PAD_CTL_PAD_SRE_MASK |                      \
                                IOMUXC_SW_PAD_CTL_PAD_PKE_MASK | IOMUXC_SW_PAD_CTL_PAD_PUE_MASK |                      \
                                IOMUXC_SW_PAD_CTL_PAD_HYS_MASK | IOMUXC_SW_PAD_CTL_PAD_PUS(1) |                        \
                                IOMUXC_SW_PAD_CTL_PAD_DSE(strength));                                                  \
        IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B1_10_USDHC2_DATA6,                                                         \
                            IOMUXC_SW_PAD_CTL_PAD_SPEED(speed) | IOMUXC_SW_PAD_CTL_PAD_SRE_MASK |                      \
                                IOMUXC_SW_PAD_CTL_PAD_PKE_MASK | IOMUXC_SW_PAD_CTL_PAD_PUE_MASK |                      \
                                IOMUXC_SW_PAD_CTL_PAD_HYS_MASK | IOMUXC_SW_PAD_CTL_PAD_PUS(1) |                        \
                                IOMUXC_SW_PAD_CTL_PAD_DSE(strength));                                                  \
        IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B1_11_USDHC2_DATA7,                                                         \
                            IOMUXC_SW_PAD_CTL_PAD_SPEED(speed) | IOMUXC_SW_PAD_CTL_PAD_SRE_MASK |                      \
                                IOMUXC_SW_PAD_CTL_PAD_PKE_MASK | IOMUXC_SW_PAD_CTL_PAD_PUE_MASK |                      \
                                IOMUXC_SW_PAD_CTL_PAD_HYS_MASK | IOMUXC_SW_PAD_CTL_PAD_PUS(1) |                        \
                                IOMUXC_SW_PAD_CTL_PAD_DSE(strength));                                                  \
    }

/* USB PHY condfiguration */
#define BOARD_USB_PHY_D_CAL     (0x0CU)
#define BOARD_USB_PHY_TXCAL45DP (0x06U)
#define BOARD_USB_PHY_TXCAL45DM (0x06U)

/**
 * BOARD EINK DEFINITIONS
 */

#define BOARD_EINK_LPSPI_BASE       LPSPI1
#define BOARD_EINK_CS_GPIO_PIN      (13U)
#define BOARD_EINK_CS_GPIO          GPIO3
#define BOARD_EINK_BUSY_GPIO_PIN    (17U)
#define BOARD_EINK_BUSY_GPIO        GPIO3
#define BOARD_EINK_RESET_GPIO_PIN   (16U)
#define BOARD_EINK_RESET_GPIO       GPIO3
#define BOARD_EINK_BUSY_IRQ         GPIO3_Combined_16_31_IRQn
#define BOARD_EINK_BUSY_IRQ_HANDLER GPIO3_Combined_16_31_IRQHandler

#include <eink-config.h>

#define CELLULAR_UART_BASE   LPUART1        ///< This macro indicate port to which GSM module is connected
#define CELLULAR_UART_CLKSRC kCLOCK_PllUsb1 ///< This macro indicate LPUART clock source

#define BSP_CELLULAR_UART_TX_PORT GPIO1
#define BSP_CELLULAR_UART_TX_PIN  12
#define BSP_CELLULAR_UART_TX_PAD  GPIO_AD_B0_12

#define BSP_CELLULAR_UART_RX_PORT GPIO1
#define BSP_CELLULAR_UART_RX_PIN  13
#define BSP_CELLULAR_UART_RX_PAD  GPIO_AD_B0_13

#define BSP_CELLULAR_UART_CTS_PORT GPIO1
#define BSP_CELLULAR_UART_CTS_PIN  14
#define BSP_CELLULAR_UART_CTS_PAD  GPIO_AD_B0_14

#define BSP_CELLULAR_UART_RTS_PORT GPIO1
#define BSP_CELLULAR_UART_RTS_PIN  15
#define BSP_CELLULAR_UART_RTS_PAD  GPIO_AD_B0_15

#define BSP_CELLULAR_UART_DTR_PORT GPIO3
#define BSP_CELLULAR_UART_DTR_PIN  27
#define BSP_CELLULAR_UART_DTR_PAD  GPIO_EMC_41

#define BSP_CELLULAR_POWER_PORT GPIO2
#define BSP_CELLULAR_POWER_PIN  18
#define BSP_CELLULAR_POWER_PAD  GPIO_B1_02

#define BSP_CELLULAR_RESET_PORT GPIO2
#define BSP_CELLULAR_RESET_PIN  17
#define BSP_CELLULAR_RESET_PAD  GPIO_B1_01

#define BSP_CELLULAR_RI_PORT GPIO2
#define BSP_CELLULAR_RI_PIN  21
#define BSP_CELLULAR_RI_PAD  GPIO_B1_05

#define BSP_CELLULAR_AP_RDY_PORT GPIO2
#define BSP_CELLULAR_AP_RDY_PIN  16
#define BSP_CELLULAR_AP_RDY_PAD  GPIO_B1_00

#define BSP_CELLULAR_WAKEUP_PORT GPIO2
#define BSP_CELLULAR_WAKEUP_PIN  22
#define BSP_CELLULAR_WAKEUP_PAD  GPIO_B1_06

#define BSP_CELLULAR_SIM_TRAY_INSERTED_PORT  GPIO2
#define BSP_CELLULAR_SIM_TRAY_INSERTED_PIN   11
#define BSP_CELLULAR_SIM_CARD_1_INSERTED_PAD GPIO_B0_11

#define BSP_CELLULAR_SIM_CARD_PRESENCE_PORT GPIO2
#define BSP_CELLULAR_SIM_CARD_PRESENCE_PIN  9
#define BSP_CELLULAR_SIM_CARD_PRESENCE_PAD  GPIO_B0_09

#define BSP_CELLULAR_SIM_CARD_SELECTION_PORT GPIO2
#define BSP_CELLULAR_SIM_CARD_SELECTION_PIN  20
#define BSP_CELLULAR_SIM_CARD_SELECTION_PAD  GPIO_B1_04

#define BSP_CELLULAR_STATUS_PORT GPIO1
#define BSP_CELLULAR_STATUS_PIN  2
#define BSP_CELLULAR_STATUS_PAD  GPIO_AD_B0_02

/* SAI */
#define BOARD_CELLULAR_AUDIO_SAIx           SAI1
#define BOARD_CELLULAR_AUDIO_SAIx_MUX       kCLOCK_Sai1Mux
#define BOARD_CELLULAR_AUDIO_SAIx_PREDIV    kCLOCK_Sai1PreDiv
#define BOARD_CELLULAR_AUDIO_SAIx_DIV       kCLOCK_Sai1Div
#define BOARD_CELLULAR_AUDIO_SAIx_MCLK_MASK IOMUXC_GPR_GPR1_SAI1_MCLK_DIR_MASK

/* IRQ */
#define BOARD_CELLULAR_AUDIO_SAIx_TX_IRQ SAI1_IRQn
#define BOARD_CELLULAR_AUDIO_SAIx_RX_IRQ SAI1_IRQn

#define BSP_CELLULAR_SIMSEL_PORT GPIO2
#define BSP_CELLULAR_SIMSEL_PIN  20 // GSM_SIM_SEL
#define BSP_CELLULAR_SIMSEL_PAD  GPIO_B1_04

/**
 * Definitions for BSP_BLUETOOTH pins configuration
 */

#define BSP_BLUETOOTH_UART_BASE   LPUART2        ///< This macro indicate port to which BT module is connected
#define BSP_BLUETOOTH_UART_CLKSRC kCLOCK_PllUsb1 ///< This macro indicate LPUART clock source

#define BSP_BLUETOOTH_UART_RTS_PORT GPIO1
#define BSP_BLUETOOTH_UART_RTS_PIN  17
#define BSP_BLUETOOTH_UART_RTS_PAD  GPIO_AD_B1_01

#define BSP_BLUETOOTH_UART_CTS_PORT GPIO1
#define BSP_BLUETOOTH_UART_CTS_PIN  16
#define BSP_BLUETOOTH_UART_CTS_PAD  GPIO_AD_B1_00

#define BSP_BLUETOOTH_SHUTDOWN_PORT GPIO2
#define BSP_BLUETOOTH_SHUTDOWN_PIN  1
#define BSP_BLUETOOTH_SHUTDOWN_PAD  GPIO_B0_01 // active low

/**
 * BOARD KEYBOARD DEFINITIONS
 */

#define BOARD_KEYBOARD_RESET_GPIO_PIN (29U)
#define BOARD_KEYBOARD_RESET_GPIO     GPIO2
#define BOARD_KEYBOARD_IRQ_GPIO_PIN   (28U)
#define BOARD_KEYBOARD_IRQ_GPIO       GPIO2

#define BOARD_KEYBOARD_RF_BUTTON_PORT GPIO2
#define BOARD_KEYBOARD_RF_BUTTON_PIN  6
#define BOARD_KEYBOARD_RF_BUTTON_PAD  GPIO_B0_06
/**
 * BOARD AUDIOCODEC DEFINITIONS
 */

/* SAI */
#define BOARD_AUDIOCODEC_SAIx           SAI2
#define BOARD_AUDIOCODEC_SAIx_MUX       kCLOCK_Sai2Mux
#define BOARD_AUDIOCODEC_SAIx_PREDIV    kCLOCK_Sai2PreDiv
#define BOARD_AUDIOCODEC_SAIx_DIV       kCLOCK_Sai2Div
#define BOARD_AUDIOCODEC_SAIx_MCLK_MASK IOMUXC_GPR_GPR1_SAI2_MCLK_DIR_MASK

/* IRQ */
#define BOARD_AUDIOCODEC_SAIx_TX_IRQ SAI2_IRQn
#define BOARD_AUDIOCODEC_SAIx_RX_IRQ SAI2_IRQn

/**
 * BOARD USB TYPE-C CONTROLLER DEFINITIONS
 */
#define BOARD_USBC_GPIO     GPIO2
#define BOARD_USBC_NEN_PIN  (22U)
#define BOARD_USBC_NINT_PIN (25U) // GPIO_B1_09, GPIO2.IO[25]
#define BOARD_USBC_ID_PIN   (26U)
#define BOARD_USBC_PORT_PIN (23U)

/**
 * BOARD LED DRIVER DEFINITIONS
 */
#define BOARD_LEDDRIVER_GPIO     GPIO1
#define BOARD_LEDDRIVER_NRST_PIN (3U)

/**
 * BOARD JACK DETECTION DEFINITIONS
 */
#define BOARD_JACKDET_IRQ_GPIO     GPIO2
#define BOARD_JACKDET_IRQ_GPIO_PIN (30U)

/**
 * MICROPHONE BIAS DEFINITIONS
 */
#define BOARD_MIC_LDO_EN_GPIO GPIO2
#define BOARD_MIC_LDO_EN_PIN  19

#define DMA_MAX_SINGLE_TRANSACTION_PAYLOAD 32767

/**
 * BOARD BATTERY CHARGER, FUEL GAUGE DEFINITIONS
 * @note VALID ONLY FOR T1
 */
#define BOARD_BATTERY_CHARGER_INOKB_GPIO GPIO2
#define BOARD_BATTERY_CHARGER_INOKB_PIN  12
#define BOARD_BATTERY_CHARGER_INOKB_PAD  GPIO_B0_12

#define BOARD_BATTERY_CHARGER_WCINOKB_GPIO GPIO2
#define BOARD_BATTERY_CHARGER_WCINOKB_PIN  13
#define BOARD_BATTERY_CHARGER_WCINOKB_PAD  GPIO_B0_13

#define BOARD_BATTERY_CHARGER_INTB_GPIO GPIO2
#define BOARD_BATTERY_CHARGER_INTB_PIN  14
#define BOARD_BATTERY_CHARGER_INTB_PAD  GPIO_B0_14

/**
 * BOARD AMBIENT LIGHT SENSOR
 */
#define BOARD_ALS_ADC_BASE          ADC1 // gpio_ad_b1_08 - gpio1.24 - alt5
#define BOARD_ALS_ADC_USER_CHANNEL  13U  // ADC_IN13
#define BOARD_ALS_ADC_CHANNEL_GROUP 0U
#define BOARD_ALS_GB1_GPIO          GPIO1
#define BOARD_ALS_GB1_PIN           26
#define BOARD_ALS_GB1_PAD           GPIO_AD_B1_10
#define BOARD_ALS_GB2_GPIO          GPIO1
#define BOARD_ALS_GB2_PIN           27
#define BOARD_ALS_GB2_PAD           GPIO_AD_B1_11

/**
 * BOARD VIBRATOR MOTOR DEFINITIONS
 */

#define BOARD_VIBRATOR_EN_PORT GPIO1
#define BOARD_VIBRATOR_EN_PIN  0U

#if defined(__cplusplus)
extern "C"
{
#endif /* __cplusplus */

#if defined(__cplusplus)
}
#endif /* __cplusplus */

#endif /* _BOARD_H_ */