|
23 | 23 | extern "C" {
|
24 | 24 | #endif
|
25 | 25 |
|
26 |
| -// NOTE: TIMER0_BASE=(APBPERIPH_BASE + 0x10000) |
27 |
| -// TIMER1_BASE=(APBPERIPH_BASE + 0x10020) |
28 |
| -#define NU_MODNAME(MODBASE, SUBINDEX) ((MODBASE) | (SUBINDEX)) |
29 |
| -#define NU_MODBASE(MODNAME) ((MODNAME) & 0xFFFFFFE0) |
30 |
| -#define NU_MODSUBINDEX(MODNAME) ((MODNAME) & 0x0000001F) |
| 26 | +// NOTE: Check all module base addresses (XXX_BASE in BSP) for free bit fields to define module name |
| 27 | +// which encodes module base address and module index/subindex. |
| 28 | +#define NU_MODSUBINDEX_Pos 0 |
| 29 | +#define NU_MODSUBINDEX_Msk (0x1Ful << NU_MODSUBINDEX_Pos) |
| 30 | +#define NU_MODINDEX_Pos 20 |
| 31 | +#define NU_MODINDEX_Msk (0xFul << NU_MODINDEX_Pos) |
| 32 | + |
| 33 | +#define NU_MODNAME(MODBASE, INDEX, SUBINDEX) ((MODBASE) | ((INDEX) << NU_MODINDEX_Pos) | ((SUBINDEX) << NU_MODSUBINDEX_Pos)) |
| 34 | +#define NU_MODBASE(MODNAME) ((MODNAME) & ~(NU_MODINDEX_Msk | NU_MODSUBINDEX_Msk)) |
| 35 | +#define NU_MODINDEX(MODNAME) (((MODNAME) & NU_MODINDEX_Msk) >> NU_MODINDEX_Pos) |
| 36 | +#define NU_MODSUBINDEX(MODNAME) (((MODNAME) & NU_MODSUBINDEX_Msk) >> NU_MODSUBINDEX_Pos) |
31 | 37 |
|
32 | 38 | #if 0
|
33 | 39 | typedef enum {
|
34 |
| - GPIO_A = (int) NU_MODNAME(GPIOA_BASE, 0), |
35 |
| - GPIO_B = (int) NU_MODNAME(GPIOB_BASE, 0), |
36 |
| - GPIO_C = (int) NU_MODNAME(GPIOC_BASE, 0), |
37 |
| - GPIO_D = (int) NU_MODNAME(GPIOD_BASE, 0), |
38 |
| - GPIO_E = (int) NU_MODNAME(GPIOE_BASE, 0), |
39 |
| - GPIO_F = (int) NU_MODNAME(GPIOF_BASE, 0) |
| 40 | + GPIO_A = (int) NU_MODNAME(GPIOA_BASE, 0, 0), |
| 41 | + GPIO_B = (int) NU_MODNAME(GPIOB_BASE, 1, 0), |
| 42 | + GPIO_C = (int) NU_MODNAME(GPIOC_BASE, 2, 0), |
| 43 | + GPIO_D = (int) NU_MODNAME(GPIOD_BASE, 3, 0), |
| 44 | + GPIO_E = (int) NU_MODNAME(GPIOE_BASE, 4, 0), |
| 45 | + GPIO_F = (int) NU_MODNAME(GPIOF_BASE, 5, 0) |
40 | 46 | } GPIOName;
|
41 | 47 | #endif
|
42 | 48 |
|
43 | 49 | typedef enum {
|
44 |
| - ADC_0_0 = (int) NU_MODNAME(EADC0_BASE, 0), |
45 |
| - ADC_0_1 = (int) NU_MODNAME(EADC0_BASE, 1), |
46 |
| - ADC_0_2 = (int) NU_MODNAME(EADC0_BASE, 2), |
47 |
| - ADC_0_3 = (int) NU_MODNAME(EADC0_BASE, 3), |
48 |
| - ADC_0_4 = (int) NU_MODNAME(EADC0_BASE, 4), |
49 |
| - ADC_0_5 = (int) NU_MODNAME(EADC0_BASE, 5), |
50 |
| - ADC_0_6 = (int) NU_MODNAME(EADC0_BASE, 6), |
51 |
| - ADC_0_7 = (int) NU_MODNAME(EADC0_BASE, 7), |
52 |
| - ADC_0_8 = (int) NU_MODNAME(EADC0_BASE, 8), |
53 |
| - ADC_0_9 = (int) NU_MODNAME(EADC0_BASE, 9), |
54 |
| - ADC_0_10 = (int) NU_MODNAME(EADC0_BASE, 10), |
55 |
| - ADC_0_11 = (int) NU_MODNAME(EADC0_BASE, 11), |
56 |
| - ADC_0_12 = (int) NU_MODNAME(EADC0_BASE, 12), |
57 |
| - ADC_0_13 = (int) NU_MODNAME(EADC0_BASE, 13), |
58 |
| - ADC_0_14 = (int) NU_MODNAME(EADC0_BASE, 14), |
59 |
| - ADC_0_15 = (int) NU_MODNAME(EADC0_BASE, 15) |
| 50 | + ADC_0_0 = (int) NU_MODNAME(EADC0_BASE, 0, 0), |
| 51 | + ADC_0_1 = (int) NU_MODNAME(EADC0_BASE, 0, 1), |
| 52 | + ADC_0_2 = (int) NU_MODNAME(EADC0_BASE, 0, 2), |
| 53 | + ADC_0_3 = (int) NU_MODNAME(EADC0_BASE, 0, 3), |
| 54 | + ADC_0_4 = (int) NU_MODNAME(EADC0_BASE, 0, 4), |
| 55 | + ADC_0_5 = (int) NU_MODNAME(EADC0_BASE, 0, 5), |
| 56 | + ADC_0_6 = (int) NU_MODNAME(EADC0_BASE, 0, 6), |
| 57 | + ADC_0_7 = (int) NU_MODNAME(EADC0_BASE, 0, 7), |
| 58 | + ADC_0_8 = (int) NU_MODNAME(EADC0_BASE, 0, 8), |
| 59 | + ADC_0_9 = (int) NU_MODNAME(EADC0_BASE, 0, 9), |
| 60 | + ADC_0_10 = (int) NU_MODNAME(EADC0_BASE, 0, 10), |
| 61 | + ADC_0_11 = (int) NU_MODNAME(EADC0_BASE, 0, 11), |
| 62 | + ADC_0_12 = (int) NU_MODNAME(EADC0_BASE, 0, 12), |
| 63 | + ADC_0_13 = (int) NU_MODNAME(EADC0_BASE, 0, 13), |
| 64 | + ADC_0_14 = (int) NU_MODNAME(EADC0_BASE, 0, 14), |
| 65 | + ADC_0_15 = (int) NU_MODNAME(EADC0_BASE, 0, 15) |
60 | 66 | } ADCName;
|
61 | 67 |
|
62 | 68 | typedef enum {
|
63 |
| - UART_0 = (int) NU_MODNAME(UART0_BASE, 0), |
64 |
| - UART_1 = (int) NU_MODNAME(UART1_BASE, 0), |
65 |
| - UART_2 = (int) NU_MODNAME(UART2_BASE, 0), |
66 |
| - UART_3 = (int) NU_MODNAME(UART3_BASE, 0), |
| 69 | + UART_0 = (int) NU_MODNAME(UART0_BASE, 0, 0), |
| 70 | + UART_1 = (int) NU_MODNAME(UART1_BASE, 1, 0), |
| 71 | + UART_2 = (int) NU_MODNAME(UART2_BASE, 2, 0), |
| 72 | + UART_3 = (int) NU_MODNAME(UART3_BASE, 3, 0), |
67 | 73 | // FIXME: board-specific
|
68 | 74 | STDIO_UART = UART_3
|
69 | 75 | } UARTName;
|
70 | 76 |
|
71 | 77 | typedef enum {
|
72 |
| - SPI_0 = (int) NU_MODNAME(SPI0_BASE, 0), |
73 |
| - SPI_1 = (int) NU_MODNAME(SPI1_BASE, 0), |
74 |
| - SPI_2 = (int) NU_MODNAME(SPI2_BASE, 0) |
| 78 | + SPI_0 = (int) NU_MODNAME(SPI0_BASE, 0, 0), |
| 79 | + SPI_1 = (int) NU_MODNAME(SPI1_BASE, 1, 0), |
| 80 | + SPI_2 = (int) NU_MODNAME(SPI2_BASE, 2, 0) |
75 | 81 | } SPIName;
|
76 | 82 |
|
77 | 83 | typedef enum {
|
78 |
| - I2C_0 = (int) NU_MODNAME(I2C0_BASE, 0), |
79 |
| - I2C_1 = (int) NU_MODNAME(I2C1_BASE, 0) |
| 84 | + I2C_0 = (int) NU_MODNAME(I2C0_BASE, 0, 0), |
| 85 | + I2C_1 = (int) NU_MODNAME(I2C1_BASE, 1, 0) |
80 | 86 | } I2CName;
|
81 | 87 |
|
82 | 88 | typedef enum {
|
83 |
| - PWM_0_0 = (int) NU_MODNAME(PWM0_BASE, 0), |
84 |
| - PWM_0_1 = (int) NU_MODNAME(PWM0_BASE, 1), |
85 |
| - PWM_0_2 = (int) NU_MODNAME(PWM0_BASE, 2), |
86 |
| - PWM_0_3 = (int) NU_MODNAME(PWM0_BASE, 3), |
87 |
| - PWM_0_4 = (int) NU_MODNAME(PWM0_BASE, 4), |
88 |
| - PWM_0_5 = (int) NU_MODNAME(PWM0_BASE, 5), |
| 89 | + PWM_0_0 = (int) NU_MODNAME(PWM0_BASE, 0, 0), |
| 90 | + PWM_0_1 = (int) NU_MODNAME(PWM0_BASE, 0, 1), |
| 91 | + PWM_0_2 = (int) NU_MODNAME(PWM0_BASE, 0, 2), |
| 92 | + PWM_0_3 = (int) NU_MODNAME(PWM0_BASE, 0, 3), |
| 93 | + PWM_0_4 = (int) NU_MODNAME(PWM0_BASE, 0, 4), |
| 94 | + PWM_0_5 = (int) NU_MODNAME(PWM0_BASE, 0, 5), |
89 | 95 |
|
90 |
| - PWM_1_0 = (int) NU_MODNAME(PWM1_BASE, 0), |
91 |
| - PWM_1_1 = (int) NU_MODNAME(PWM1_BASE, 1), |
92 |
| - PWM_1_2 = (int) NU_MODNAME(PWM1_BASE, 2), |
93 |
| - PWM_1_3 = (int) NU_MODNAME(PWM1_BASE, 3), |
94 |
| - PWM_1_4 = (int) NU_MODNAME(PWM1_BASE, 4), |
95 |
| - PWM_1_5 = (int) NU_MODNAME(PWM1_BASE, 5) |
| 96 | + PWM_1_0 = (int) NU_MODNAME(PWM1_BASE, 1, 0), |
| 97 | + PWM_1_1 = (int) NU_MODNAME(PWM1_BASE, 1, 1), |
| 98 | + PWM_1_2 = (int) NU_MODNAME(PWM1_BASE, 1, 2), |
| 99 | + PWM_1_3 = (int) NU_MODNAME(PWM1_BASE, 1, 3), |
| 100 | + PWM_1_4 = (int) NU_MODNAME(PWM1_BASE, 1, 4), |
| 101 | + PWM_1_5 = (int) NU_MODNAME(PWM1_BASE, 1, 5) |
96 | 102 | } PWMName;
|
97 | 103 |
|
98 | 104 | typedef enum {
|
99 |
| - TIMER_0 = (int) NU_MODNAME(TMR01_BASE, 0), |
100 |
| - TIMER_1 = (int) NU_MODNAME(TMR01_BASE + 0x20, 0), |
101 |
| - TIMER_2 = (int) NU_MODNAME(TMR23_BASE, 0), |
102 |
| - TIMER_3 = (int) NU_MODNAME(TMR23_BASE + 0x20, 0), |
| 105 | + TIMER_0 = (int) NU_MODNAME(TMR01_BASE, 0, 0), |
| 106 | + TIMER_1 = (int) NU_MODNAME(TMR01_BASE + 0x20, 1, 0), |
| 107 | + TIMER_2 = (int) NU_MODNAME(TMR23_BASE, 2, 0), |
| 108 | + TIMER_3 = (int) NU_MODNAME(TMR23_BASE + 0x20, 3, 0), |
103 | 109 | } TIMERName;
|
104 | 110 |
|
105 | 111 | typedef enum {
|
106 |
| - RTC_0 = (int) NU_MODNAME(RTC_BASE, 0) |
| 112 | + RTC_0 = (int) NU_MODNAME(RTC_BASE, 0, 0) |
107 | 113 | } RTCName;
|
108 | 114 |
|
109 | 115 | typedef enum {
|
110 |
| - DMA_0 = (int) NU_MODNAME(PDMA_BASE, 0) |
| 116 | + DMA_0 = (int) NU_MODNAME(PDMA_BASE, 0, 0) |
111 | 117 | } DMAName;
|
112 | 118 |
|
113 | 119 | typedef enum {
|
114 |
| - CAN_0 = (int) NU_MODNAME(CAN0_BASE, 0) |
| 120 | + CAN_0 = (int) NU_MODNAME(CAN0_BASE, 0, 0) |
115 | 121 | } CANName;
|
116 | 122 |
|
117 | 123 | #ifdef __cplusplus
|
|
0 commit comments