|
64 | 64 | * @param val Clock value (0, 1, ... 7). |
65 | 65 | */ |
66 | 66 |
|
67 | | -#define STM32U5_CLOCK_REG_MASK 0xFFU |
68 | | -#define STM32U5_CLOCK_REG_SHIFT 0U |
69 | | -#define STM32U5_CLOCK_SHIFT_MASK 0x1FU |
70 | | -#define STM32U5_CLOCK_SHIFT_SHIFT 8U |
71 | | -#define STM32U5_CLOCK_MASK_MASK 0x7U |
72 | | -#define STM32U5_CLOCK_MASK_SHIFT 13U |
73 | | -#define STM32U5_CLOCK_VAL_MASK 0x7U |
74 | | -#define STM32U5_CLOCK_VAL_SHIFT 16U |
75 | | - |
76 | | -#define STM32U5_CLOCK(val, mask, shift, reg) \ |
77 | | - ((((reg) & STM32U5_CLOCK_REG_MASK) << STM32U5_CLOCK_REG_SHIFT) | \ |
78 | | - (((shift) & STM32U5_CLOCK_SHIFT_MASK) << STM32U5_CLOCK_SHIFT_SHIFT) | \ |
79 | | - (((mask) & STM32U5_CLOCK_MASK_MASK) << STM32U5_CLOCK_MASK_SHIFT) | \ |
80 | | - (((val) & STM32U5_CLOCK_VAL_MASK) << STM32U5_CLOCK_VAL_SHIFT)) |
81 | | - |
82 | | - |
83 | | -/* Accessors for clock value */ |
84 | | - |
85 | | -/** |
86 | | - * @brief Obtain register field from clock configuration. |
87 | | - * |
88 | | - * @param clock clock bit field value. |
89 | | - */ |
90 | | -#define STM32U5_CLOCK_REG_GET(clock) \ |
91 | | - (((clock) >> STM32U5_CLOCK_REG_SHIFT) & STM32U5_CLOCK_REG_MASK) |
92 | | - |
93 | | -/** |
94 | | - * @brief Obtain position field from clock configuration. |
95 | | - * |
96 | | - * @param clock Clock bit field value. |
97 | | - */ |
98 | | -#define STM32U5_CLOCK_SHIFT_GET(clock) \ |
99 | | - (((clock) >> STM32U5_CLOCK_SHIFT_SHIFT) & STM32U5_CLOCK_SHIFT_MASK) |
100 | | - |
101 | | -/** |
102 | | - * @brief Obtain mask field from clock configuration. |
103 | | - * |
104 | | - * @param clock Clock bit field value. |
105 | | - */ |
106 | | -#define STM32U5_CLOCK_MASK_GET(clock) \ |
107 | | - (((clock) >> STM32U5_CLOCK_MASK_SHIFT) & STM32U5_CLOCK_MASK_MASK) |
108 | | - |
109 | | -/** |
110 | | - * @brief Obtain value field from clock configuration. |
111 | | - * |
112 | | - * @param clock Clock bit field value. |
113 | | - */ |
114 | | -#define STM32U5_CLOCK_VAL_GET(clock) \ |
115 | | - (((clock) >> STM32U5_CLOCK_VAL_SHIFT) & STM32U5_CLOCK_VAL_MASK) |
| 67 | +#define STM32_CLOCK_REG_MASK 0xFFU |
| 68 | +#define STM32_CLOCK_REG_SHIFT 0U |
| 69 | +#define STM32_CLOCK_SHIFT_MASK 0x1FU |
| 70 | +#define STM32_CLOCK_SHIFT_SHIFT 8U |
| 71 | +#define STM32_CLOCK_MASK_MASK 0x7U |
| 72 | +#define STM32_CLOCK_MASK_SHIFT 13U |
| 73 | +#define STM32_CLOCK_VAL_MASK 0x7U |
| 74 | +#define STM32_CLOCK_VAL_SHIFT 16U |
| 75 | + |
| 76 | +#define STM32_CLOCK(val, mask, shift, reg) \ |
| 77 | + ((((reg) & STM32_CLOCK_REG_MASK) << STM32_CLOCK_REG_SHIFT) | \ |
| 78 | + (((shift) & STM32_CLOCK_SHIFT_MASK) << STM32_CLOCK_SHIFT_SHIFT) | \ |
| 79 | + (((mask) & STM32_CLOCK_MASK_MASK) << STM32_CLOCK_MASK_SHIFT) | \ |
| 80 | + (((val) & STM32_CLOCK_VAL_MASK) << STM32_CLOCK_VAL_SHIFT)) |
116 | 81 |
|
117 | 82 | /** @brief RCC_CCIPRx register offset (RM0456.pdf) */ |
118 | 83 | #define CCIPR1_REG 0xE0 |
|
121 | 86 |
|
122 | 87 | /** @brief Device clk sources selection helpers (RM0399.pdf) */ |
123 | 88 | /** CCIPR1 devices */ |
124 | | -#define USART1_SEL(val) STM32U5_CLOCK(val, 3, 0, CCIPR1_REG) |
125 | | -#define USART2_SEL(val) STM32U5_CLOCK(val, 3, 2, CCIPR1_REG) |
126 | | -#define USART3_SEL(val) STM32U5_CLOCK(val, 3, 4, CCIPR1_REG) |
127 | | -#define USART4_SEL(val) STM32U5_CLOCK(val, 3, 6, CCIPR1_REG) |
128 | | -#define USART5_SEL(val) STM32U5_CLOCK(val, 3, 8, CCIPR1_REG) |
129 | | -#define I2C1_SEL(val) STM32U5_CLOCK(val, 3, 10, CCIPR1_REG) |
130 | | -#define I2C2_SEL(val) STM32U5_CLOCK(val, 3, 12, CCIPR1_REG) |
131 | | -#define I2C4_SEL(val) STM32U5_CLOCK(val, 3, 14, CCIPR1_REG) |
132 | | -#define SPI2_SEL(val) STM32U5_CLOCK(val, 3, 16, CCIPR1_REG) |
133 | | -#define LPTIM2_SEL(val) STM32U5_CLOCK(val, 3, 18, CCIPR1_REG) |
134 | | -#define SPI1_SEL(val) STM32U5_CLOCK(val, 3, 20, CCIPR1_REG) |
135 | | -#define SYSTICK_SEL(val) STM32U5_CLOCK(val, 3, 22, CCIPR1_REG) |
136 | | -#define FDCAN1_SEL(val) STM32U5_CLOCK(val, 3, 24, CCIPR1_REG) |
137 | | -#define ICKLK_SEL(val) STM32U5_CLOCK(val, 3, 26, CCIPR1_REG) |
138 | | -#define TIMIC_SEL(val) STM32U5_CLOCK(val, 7, 29, CCIPR1_REG) |
| 89 | +#define USART1_SEL(val) STM32_CLOCK(val, 3, 0, CCIPR1_REG) |
| 90 | +#define USART2_SEL(val) STM32_CLOCK(val, 3, 2, CCIPR1_REG) |
| 91 | +#define USART3_SEL(val) STM32_CLOCK(val, 3, 4, CCIPR1_REG) |
| 92 | +#define USART4_SEL(val) STM32_CLOCK(val, 3, 6, CCIPR1_REG) |
| 93 | +#define USART5_SEL(val) STM32_CLOCK(val, 3, 8, CCIPR1_REG) |
| 94 | +#define I2C1_SEL(val) STM32_CLOCK(val, 3, 10, CCIPR1_REG) |
| 95 | +#define I2C2_SEL(val) STM32_CLOCK(val, 3, 12, CCIPR1_REG) |
| 96 | +#define I2C4_SEL(val) STM32_CLOCK(val, 3, 14, CCIPR1_REG) |
| 97 | +#define SPI2_SEL(val) STM32_CLOCK(val, 3, 16, CCIPR1_REG) |
| 98 | +#define LPTIM2_SEL(val) STM32_CLOCK(val, 3, 18, CCIPR1_REG) |
| 99 | +#define SPI1_SEL(val) STM32_CLOCK(val, 3, 20, CCIPR1_REG) |
| 100 | +#define SYSTICK_SEL(val) STM32_CLOCK(val, 3, 22, CCIPR1_REG) |
| 101 | +#define FDCAN1_SEL(val) STM32_CLOCK(val, 3, 24, CCIPR1_REG) |
| 102 | +#define ICKLK_SEL(val) STM32_CLOCK(val, 3, 26, CCIPR1_REG) |
| 103 | +#define TIMIC_SEL(val) STM32_CLOCK(val, 7, 29, CCIPR1_REG) |
139 | 104 | /** CCIPR2 devices */ |
140 | | -#define MDF1_SEL(val) STM32U5_CLOCK(val, 7, 0, CCIPR2_REG) |
141 | | -#define SAI1_SEL(val) STM32U5_CLOCK(val, 7, 5, CCIPR2_REG) |
142 | | -#define SAI2_SEL(val) STM32U5_CLOCK(val, 7, 8, CCIPR2_REG) |
143 | | -#define SAE_SEL(val) STM32U5_CLOCK(val, 1, 11, CCIPR2_REG) |
144 | | -#define RNG_SEL(val) STM32U5_CLOCK(val, 3, 12, CCIPR2_REG) |
145 | | -#define SDMMC_SEL(val) STM32U5_CLOCK(val, 1, 14, CCIPR2_REG) |
146 | | -#define OCTOSPI_SEL(val) STM32U5_CLOCK(val, 3, 20, CCIPR2_REG) |
| 105 | +#define MDF1_SEL(val) STM32_CLOCK(val, 7, 0, CCIPR2_REG) |
| 106 | +#define SAI1_SEL(val) STM32_CLOCK(val, 7, 5, CCIPR2_REG) |
| 107 | +#define SAI2_SEL(val) STM32_CLOCK(val, 7, 8, CCIPR2_REG) |
| 108 | +#define SAE_SEL(val) STM32_CLOCK(val, 1, 11, CCIPR2_REG) |
| 109 | +#define RNG_SEL(val) STM32_CLOCK(val, 3, 12, CCIPR2_REG) |
| 110 | +#define SDMMC_SEL(val) STM32_CLOCK(val, 1, 14, CCIPR2_REG) |
| 111 | +#define OCTOSPI_SEL(val) STM32_CLOCK(val, 3, 20, CCIPR2_REG) |
147 | 112 | /** CCIPR3 devices */ |
148 | | -#define LPUART1_SEL(val) STM32U5_CLOCK(val, 7, 0, CCIPR3_REG) |
149 | | -#define SPI3_SEL(val) STM32U5_CLOCK(val, 3, 3, CCIPR3_REG) |
150 | | -#define I2C3_SEL(val) STM32U5_CLOCK(val, 3, 6, CCIPR3_REG) |
151 | | -#define LPTIM34_SEL(val) STM32U5_CLOCK(val, 3, 8, CCIPR3_REG) |
152 | | -#define LPTIM1_SEL(val) STM32U5_CLOCK(val, 3, 10, CCIPR3_REG) |
153 | | -#define ADCDAC_SEL(val) STM32U5_CLOCK(val, 7, 12, CCIPR3_REG) |
154 | | -#define DAC1_SEL(val) STM32U5_CLOCK(val, 1, 15, CCIPR3_REG) |
155 | | -#define ADF1_SEL(val) STM32U5_CLOCK(val, 7, 16, CCIPR3_REG) |
156 | 113 |
|
157 | 114 | #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32U5_CLOCK_H_ */ |
| 115 | +#define LPUART1_SEL(val) STM32_CLOCK(val, 7, 0, CCIPR3_REG) |
| 116 | +#define SPI3_SEL(val) STM32_CLOCK(val, 3, 3, CCIPR3_REG) |
| 117 | +#define I2C3_SEL(val) STM32_CLOCK(val, 3, 6, CCIPR3_REG) |
| 118 | +#define LPTIM34_SEL(val) STM32_CLOCK(val, 3, 8, CCIPR3_REG) |
| 119 | +#define LPTIM1_SEL(val) STM32_CLOCK(val, 3, 10, CCIPR3_REG) |
| 120 | +#define ADCDAC_SEL(val) STM32_CLOCK(val, 7, 12, CCIPR3_REG) |
| 121 | +#define DAC1_SEL(val) STM32_CLOCK(val, 1, 15, CCIPR3_REG) |
| 122 | +#define ADF1_SEL(val) STM32_CLOCK(val, 7, 16, CCIPR3_REG) |
0 commit comments