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_UART_RXD 0
42
#define CH570_PINCTRL_UART_TXD 3
44
#define CH570_PINCTRL_TMR 6
46
#define CH570_PINCTRL_SPI_CS 8
48
#define CH570_PINCTRL_I2C_PIN 9
50
#define CH570_PINCTRL_SPI_CLK 11
52
#define CH570_PINCTRL_OSC_25M_ENABLE 12
54
#define CH570_PINCTRL_NO_ALTERNATE 16
55
57
#define CH570_PINCTRL_UART_RXD_ALT_WIDTH 3
59
#define CH570_PINCTRL_UART_TXD_ALT_WIDTH 3
61
#define CH570_PINCTRL_TMR_ALT_WIDTH 2
63
#define CH570_PINCTRL_SPI_CS_ALT_WIDTH 1
65
#define CH570_PINCTRL_I2C_PIN_ALT_WIDTH 2
67
#define CH570_PINCTRL_SPI_CLK_ALT_WIDTH 1
69
#define CH570_PINCTRL_OSC_25M_ENABLE_ALT_WIDTH 1
71
#define CH570_PINCTRL_NO_ALTERNATE_ALT_WIDTH 0
72
74
79
81
#define CH570_PINCTRL_PIN_SHIFT 0
83
#define CH570_PINCTRL_PIN_MASK GENMASK(3, 0)
84
86
#define CH570_PINCTRL_ALT_FIELD_OFFSET_SHIFT 4
88
#define CH570_PINCTRL_ALT_FIELD_OFFSET_MASK GENMASK(8, 4)
89
91
#define CH570_PINCTRL_ALT_FIELD_WIDTH_SHIFT 9
93
#define CH570_PINCTRL_ALT_FIELD_WIDTH_MASK GENMASK(10, 9)
94
96
#define CH570_PINCTRL_ALT_FUNC_SHIFT 11
98
#define CH570_PINCTRL_ALT_FUNC_MASK GENMASK(13, 11)
99
101
110
#define CH570_PINMUX_DEFINE(pin, peripheral, remapping) \
111
((pin << CH570_PINCTRL_PIN_SHIFT) | \
112
(CH570_PINCTRL_##peripheral << CH570_PINCTRL_ALT_FIELD_OFFSET_SHIFT) | \
113
(CH570_PINCTRL_##peripheral##_ALT_WIDTH << CH570_PINCTRL_ALT_FIELD_WIDTH_SHIFT) | \
114
(remapping << CH570_PINCTRL_ALT_FUNC_SHIFT))
115
121
#define UART_TXD_PA3_0 CH570_PINMUX_DEFINE(3, UART_TXD, 0)
123
#define UART_TXD_PA2_1 CH570_PINMUX_DEFINE(2, UART_TXD, 1)
125
#define UART_TXD_PA1_2 CH570_PINMUX_DEFINE(1, UART_TXD, 2)
127
#define UART_TXD_PA0_3 CH570_PINMUX_DEFINE(0, UART_TXD, 3)
129
#define UART_TXD_PA7_4 CH570_PINMUX_DEFINE(7, UART_TXD, 4)
131
#define UART_TXD_PA8_5 CH570_PINMUX_DEFINE(8, UART_TXD, 5)
133
#define UART_TXD_PA11_6 CH570_PINMUX_DEFINE(11, UART_TXD, 6)
135
#define UART_TXD_PA10_7 CH570_PINMUX_DEFINE(10, UART_TXD, 7)
136
137
/*
138
* Documentation is inconsistent for UART RXD_4. AF table lists UART RXD on PA4 (config 4),
139
* while the pinout section shows PA6. PA6 is used in practice.
140
*/
142
#define UART_RXD_PA2_0 CH570_PINMUX_DEFINE(2, UART_RXD, 0)
144
#define UART_RXD_PA3_1 CH570_PINMUX_DEFINE(3, UART_RXD, 1)
146
#define UART_RXD_PA0_2 CH570_PINMUX_DEFINE(0, UART_RXD, 2)
148
#define UART_RXD_PA1_3 CH570_PINMUX_DEFINE(1, UART_RXD, 3)
150
#define UART_RXD_PA6_4 CH570_PINMUX_DEFINE(6, UART_RXD, 4)
152
#define UART_RXD_PA9_5 CH570_PINMUX_DEFINE(9, UART_RXD, 5)
154
#define UART_RXD_PA10_6 CH570_PINMUX_DEFINE(10, UART_RXD, 6)
156
#define UART_RXD_PA11_7 CH570_PINMUX_DEFINE(11, UART_RXD, 7)
158
164
#define TMR_PWM0_CAPIN1_PA7_0 CH570_PINMUX_DEFINE(7, TMR, 0)
166
#define TMR_PWM0_CAPIN1_PA2_1 CH570_PINMUX_DEFINE(2, TMR, 1)
168
#define TMR_PWM0_CAPIN1_PA4_2 CH570_PINMUX_DEFINE(4, TMR, 2)
170
#define TMR_PWM0_CAPIN1_PA9_3 CH570_PINMUX_DEFINE(9, TMR, 3)
172
#define TMR_CAPIN2_PA2_0 CH570_PINMUX_DEFINE(2, TMR, 0)
174
#define TMR_CAPIN2_PA7_1 CH570_PINMUX_DEFINE(7, TMR, 1)
176
#define TMR_CAPIN2_PA9_2 CH570_PINMUX_DEFINE(9, TMR, 2)
178
#define TMR_CAPIN2_PA4_3 CH570_PINMUX_DEFINE(4, TMR, 3)
180
186
#define SPI_CS_PA4_0 CH570_PINMUX_DEFINE(4, SPI_CS, 0)
188
#define SPI_CS_PA2_1 CH570_PINMUX_DEFINE(2, SPI_CS, 1)
190
#define SPI_CLK_PA5_0 CH570_PINMUX_DEFINE(5, SPI_CLK, 0)
192
#define SPI_CLK_PA3_1 CH570_PINMUX_DEFINE(3, SPI_CLK, 1)
194
#define SPI_MOSI_PA7_0 CH570_PINMUX_DEFINE(7, NO_ALTERNATE, 0)
196
#define SPI_MISO_PA6_0 CH570_PINMUX_DEFINE(6, NO_ALTERNATE, 0)
198
204
#define I2C_SCL_PA8_0 CH570_PINMUX_DEFINE(8, I2C_PIN, 0)
206
#define I2C_SCL_PA0_1 CH570_PINMUX_DEFINE(0, I2C_PIN, 1)
208
#define I2C_SCL_PA3_2 CH570_PINMUX_DEFINE(3, I2C_PIN, 2)
210
#define I2C_SCL_PA5_3 CH570_PINMUX_DEFINE(5, I2C_PIN, 3)
212
#define I2C_SDA_PA9_0 CH570_PINMUX_DEFINE(9, I2C_PIN, 0)
214
#define I2C_SDA_PA1_1 CH570_PINMUX_DEFINE(1, I2C_PIN, 1)
216
#define I2C_SDA_PA2_2 CH570_PINMUX_DEFINE(2, I2C_PIN, 2)
218
#define I2C_SDA_PA6_3 CH570_PINMUX_DEFINE(6, I2C_PIN, 3)
220
226
#define KEYSCAN_0_PA2_0 CH570_PINMUX_DEFINE(2, NO_ALTERNATE, 0)
228
#define KEYSCAN_1_PA3_0 CH570_PINMUX_DEFINE(3, NO_ALTERNATE, 0)
230
#define KEYSCAN_2_PA8_0 CH570_PINMUX_DEFINE(8, NO_ALTERNATE, 0)
232
#define KEYSCAN_3_PA10_0 CH570_PINMUX_DEFINE(10, NO_ALTERNATE, 0)
234
#define KEYSCAN_4_PA11_0 CH570_PINMUX_DEFINE(11, NO_ALTERNATE, 0)
236
242
#define CMP_P0_PA3_0 CH570_PINMUX_DEFINE(3, NO_ALTERNATE, 0)
244
#define CMP_P1_PA7_0 CH570_PINMUX_DEFINE(7, NO_ALTERNATE, 0)
246
#define CMP_N_PA2_0 CH570_PINMUX_DEFINE(2, NO_ALTERNATE, 0)
248
254
#define PWM1_PA7_0 CH570_PINMUX_DEFINE(7, NO_ALTERNATE, 0)
256
#define PWM2_PA2_0 CH570_PINMUX_DEFINE(2, NO_ALTERNATE, 0)
258
#define PWM3_PA3_0 CH570_PINMUX_DEFINE(3, NO_ALTERNATE, 0)
260
#define PWM4_PA4_0 CH570_PINMUX_DEFINE(4, NO_ALTERNATE, 0)
262
#define PWM5_PA8_0 CH570_PINMUX_DEFINE(8, NO_ALTERNATE, 0)
264
270
#define OSC25M_ENABLE_PA4_0 CH570_PINMUX_DEFINE(4, OSC_25M_ENABLE, 1)
272
273
#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