Zephyr Project API
4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
ch570-pinctrl.h
Go to the documentation of this file.
1
/*
2
* SPDX-FileCopyrightText: 2026 SMILE (smile.eu)
3
*
4
* SPDX-License-Identifier: Apache-2.0
5
*
6
* NOTE: This pin controller configuration header supports WCH CH570/CH572 SoCs only.
7
*/
8
30
31
#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_CH570_PINCTRL_H_
32
#define ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_CH570_PINCTRL_H_
33
38
40
#define CH570_PINCTRL_PIN_NOT_DEFINED 0xF
41
43
#define CH570_PINCTRL_UART_RXD 0
45
#define CH570_PINCTRL_UART_TXD 3
47
#define CH570_PINCTRL_TMR 6
49
#define CH570_PINCTRL_SPI_CS 8
51
#define CH570_PINCTRL_I2C_PIN 9
53
#define CH570_PINCTRL_SPI_CLK 11
55
#define CH570_PINCTRL_OSC_25M_ENABLE 12
57
#define CH570_PINCTRL_NO_ALTERNATE 16
58
60
#define CH570_PINCTRL_UART_RXD_ALT_WIDTH 3
62
#define CH570_PINCTRL_UART_TXD_ALT_WIDTH 3
64
#define CH570_PINCTRL_TMR_ALT_WIDTH 2
66
#define CH570_PINCTRL_SPI_CS_ALT_WIDTH 1
68
#define CH570_PINCTRL_I2C_PIN_ALT_WIDTH 2
70
#define CH570_PINCTRL_SPI_CLK_ALT_WIDTH 1
72
#define CH570_PINCTRL_OSC_25M_ENABLE_ALT_WIDTH 1
74
#define CH570_PINCTRL_NO_ALTERNATE_ALT_WIDTH 0
75
77
82
84
#define CH570_PINCTRL_PIN_SHIFT 0
86
#define CH570_PINCTRL_PIN_MASK GENMASK(3, 0)
87
89
#define CH570_PINCTRL_ALT_FIELD_OFFSET_SHIFT 4
91
#define CH570_PINCTRL_ALT_FIELD_OFFSET_MASK GENMASK(8, 4)
92
94
#define CH570_PINCTRL_ALT_FIELD_WIDTH_SHIFT 9
96
#define CH570_PINCTRL_ALT_FIELD_WIDTH_MASK GENMASK(10, 9)
97
99
#define CH570_PINCTRL_ALT_FUNC_SHIFT 11
101
#define CH570_PINCTRL_ALT_FUNC_MASK GENMASK(13, 11)
102
104
113
#define CH570_PINMUX_DEFINE(pin, peripheral, remapping) \
114
((pin << CH570_PINCTRL_PIN_SHIFT) | \
115
(CH570_PINCTRL_##peripheral << CH570_PINCTRL_ALT_FIELD_OFFSET_SHIFT) | \
116
(CH570_PINCTRL_##peripheral##_ALT_WIDTH << CH570_PINCTRL_ALT_FIELD_WIDTH_SHIFT) | \
117
(remapping << CH570_PINCTRL_ALT_FUNC_SHIFT))
118
124
#define UART_TXD_PA3_0 CH570_PINMUX_DEFINE(3, UART_TXD, 0)
126
#define UART_TXD_PA2_1 CH570_PINMUX_DEFINE(2, UART_TXD, 1)
128
#define UART_TXD_PA1_2 CH570_PINMUX_DEFINE(1, UART_TXD, 2)
130
#define UART_TXD_PA0_3 CH570_PINMUX_DEFINE(0, UART_TXD, 3)
132
#define UART_TXD_PA7_4 CH570_PINMUX_DEFINE(7, UART_TXD, 4)
134
#define UART_TXD_PA8_5 CH570_PINMUX_DEFINE(8, UART_TXD, 5)
136
#define UART_TXD_PA11_6 CH570_PINMUX_DEFINE(11, UART_TXD, 6)
138
#define UART_TXD_PA10_7 CH570_PINMUX_DEFINE(10, UART_TXD, 7)
139
140
/*
141
* Documentation is inconsistent for UART RXD_4. AF table lists UART RXD on PA4 (config 4),
142
* while the pinout section shows PA6. PA6 is used in practice.
143
*/
145
#define UART_RXD_PA2_0 CH570_PINMUX_DEFINE(2, UART_RXD, 0)
147
#define UART_RXD_PA3_1 CH570_PINMUX_DEFINE(3, UART_RXD, 1)
149
#define UART_RXD_PA0_2 CH570_PINMUX_DEFINE(0, UART_RXD, 2)
151
#define UART_RXD_PA1_3 CH570_PINMUX_DEFINE(1, UART_RXD, 3)
153
#define UART_RXD_PA6_4 CH570_PINMUX_DEFINE(6, UART_RXD, 4)
155
#define UART_RXD_PA9_5 CH570_PINMUX_DEFINE(9, UART_RXD, 5)
157
#define UART_RXD_PA10_6 CH570_PINMUX_DEFINE(10, UART_RXD, 6)
159
#define UART_RXD_PA11_7 CH570_PINMUX_DEFINE(11, UART_RXD, 7)
161
167
#define TMR_PWM0_CAPIN1_PA7_0 CH570_PINMUX_DEFINE(7, TMR, 0)
169
#define TMR_PWM0_CAPIN1_PA2_1 CH570_PINMUX_DEFINE(2, TMR, 1)
171
#define TMR_PWM0_CAPIN1_PA4_2 CH570_PINMUX_DEFINE(4, TMR, 2)
173
#define TMR_PWM0_CAPIN1_PA9_3 CH570_PINMUX_DEFINE(9, TMR, 3)
175
#define TMR_CAPIN2_PA2_0 CH570_PINMUX_DEFINE(2, TMR, 0)
177
#define TMR_CAPIN2_PA7_1 CH570_PINMUX_DEFINE(7, TMR, 1)
179
#define TMR_CAPIN2_PA9_2 CH570_PINMUX_DEFINE(9, TMR, 2)
181
#define TMR_CAPIN2_PA4_3 CH570_PINMUX_DEFINE(4, TMR, 3)
183
189
#define SPI_CS_PA4_0 CH570_PINMUX_DEFINE(4, SPI_CS, 0)
191
#define SPI_CS_PA2_1 CH570_PINMUX_DEFINE(2, SPI_CS, 1)
193
#define SPI_CLK_PA5_0 CH570_PINMUX_DEFINE(5, SPI_CLK, 0)
195
#define SPI_CLK_PA3_1 CH570_PINMUX_DEFINE(3, SPI_CLK, 1)
197
#define SPI_MOSI_PA7_0 CH570_PINMUX_DEFINE(7, NO_ALTERNATE, 0)
199
#define SPI_MISO_PA6_0 CH570_PINMUX_DEFINE(6, NO_ALTERNATE, 0)
201
207
#define I2C_SCL_PA8_0 CH570_PINMUX_DEFINE(8, I2C_PIN, 0)
209
#define I2C_SCL_PA0_1 CH570_PINMUX_DEFINE(0, I2C_PIN, 1)
211
#define I2C_SCL_PA3_2 CH570_PINMUX_DEFINE(3, I2C_PIN, 2)
213
#define I2C_SCL_PA5_3 CH570_PINMUX_DEFINE(5, I2C_PIN, 3)
215
#define I2C_SDA_PA9_0 CH570_PINMUX_DEFINE(9, I2C_PIN, 0)
217
#define I2C_SDA_PA1_1 CH570_PINMUX_DEFINE(1, I2C_PIN, 1)
219
#define I2C_SDA_PA2_2 CH570_PINMUX_DEFINE(2, I2C_PIN, 2)
221
#define I2C_SDA_PA6_3 CH570_PINMUX_DEFINE(6, I2C_PIN, 3)
223
229
#define KEYSCAN_0_PA2_0 CH570_PINMUX_DEFINE(2, NO_ALTERNATE, 0)
231
#define KEYSCAN_1_PA3_0 CH570_PINMUX_DEFINE(3, NO_ALTERNATE, 0)
233
#define KEYSCAN_2_PA8_0 CH570_PINMUX_DEFINE(8, NO_ALTERNATE, 0)
235
#define KEYSCAN_3_PA10_0 CH570_PINMUX_DEFINE(10, NO_ALTERNATE, 0)
237
#define KEYSCAN_4_PA11_0 CH570_PINMUX_DEFINE(11, NO_ALTERNATE, 0)
239
245
#define CMP_P_PA3_0 CH570_PINMUX_DEFINE(3, NO_ALTERNATE, 0)
247
#define CMP_P_PA7_1 CH570_PINMUX_DEFINE(7, NO_ALTERNATE, 1)
249
#define CMP_N_PA2_0 CH570_PINMUX_DEFINE(2, NO_ALTERNATE, 0)
251
#define CMP_N_CMP_VREF_1 CH570_PINMUX_DEFINE(CH570_PINCTRL_PIN_NOT_DEFINED, NO_ALTERNATE, 1)
253
259
#define PWM1_PA7_0 CH570_PINMUX_DEFINE(7, NO_ALTERNATE, 0)
261
#define PWM2_PA2_0 CH570_PINMUX_DEFINE(2, NO_ALTERNATE, 0)
263
#define PWM3_PA3_0 CH570_PINMUX_DEFINE(3, NO_ALTERNATE, 0)
265
#define PWM4_PA4_0 CH570_PINMUX_DEFINE(4, NO_ALTERNATE, 0)
267
#define PWM5_PA8_0 CH570_PINMUX_DEFINE(8, NO_ALTERNATE, 0)
269
275
#define OSC25M_ENABLE_PA4_0 CH570_PINMUX_DEFINE(4, OSC_25M_ENABLE, 1)
277
278
#endif
/* ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_CH570_PINCTRL_H_ */
include
zephyr
dt-bindings
pinctrl
ch570-pinctrl.h
Generated on
for Zephyr Project API by
1.16.1