Zephyr API Documentation 4.3.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
bcm2711-pinctrl.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2025 Muhammad Waleed Badar
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_BCM2711_PINCTRL_H_
8#define ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_BCM2711_PINCTRL_H_
9
10/* BCM2711 number of GPIO (GPIOs 0–57) */
11#define BCM2711_NUM_GPIO 58
12
13/* BCM2711 Pin Functions */
14#define BCM2711_FSEL_GPIO_IN 0
15#define BCM2711_FSEL_GPIO_OUT 1
16#define BCM2711_FSEL_ALT0 4
17#define BCM2711_FSEL_ALT1 5
18#define BCM2711_FSEL_ALT2 6
19#define BCM2711_FSEL_ALT3 7
20#define BCM2711_FSEL_ALT4 3
21#define BCM2711_FSEL_ALT5 2
22
23/* BCM2711 Pull Configuration */
24#define BCM2711_PULL_NONE 0
25#define BCM2711_PULL_UP 1
26#define BCM2711_PULL_DOWN 2
27
28/* BCM2711 pinmux configuration macro */
29#define BCM2711_PINMUX(pin, func) \
30 (((pin) & 0xFF) | (((func) & 0x7) << 8))
31
32/* Extract pin number from BCM2711 pinmux value */
33#define BCM2711_GET_PIN(pinmux) \
34 ((pinmux) & 0xFF)
35
36/* Extract function from BCM2711 pinmux value */
37#define BCM2711_GET_FUNC(pinmux) \
38 (((pinmux) >> 8) & 0x7)
39
40/* UART0 pinmux definitions */
41#define UART0_TX_GPIO14 BCM2711_PINMUX(14, BCM2711_FSEL_ALT0)
42#define UART0_RX_GPIO15 BCM2711_PINMUX(15, BCM2711_FSEL_ALT0)
43
44#define UART0_TX_GPIO32 BCM2711_PINMUX(32, BCM2711_FSEL_ALT3)
45#define UART0_RX_GPIO33 BCM2711_PINMUX(33, BCM2711_FSEL_ALT3)
46
47#define UART0_TX_GPIO36 BCM2711_PINMUX(36, BCM2711_FSEL_ALT2)
48#define UART0_RX_GPIO37 BCM2711_PINMUX(37, BCM2711_FSEL_ALT2)
49
50#define UART0_CTS_GPIO16 BCM2711_PINMUX(16, BCM2711_FSEL_ALT3)
51#define UART0_RTS_GPIO17 BCM2711_PINMUX(17, BCM2711_FSEL_ALT3)
52
53#define UART0_CTS_GPIO30 BCM2711_PINMUX(30, BCM2711_FSEL_ALT3)
54#define UART0_RTS_GPIO31 BCM2711_PINMUX(31, BCM2711_FSEL_ALT3)
55
56#define UART0_CTS_GPIO38 BCM2711_PINMUX(38, BCM2711_FSEL_ALT2)
57#define UART0_RTS_GPIO39 BCM2711_PINMUX(39, BCM2711_FSEL_ALT2)
58
59/* UART1 pinmux definitions */
60#define UART1_TX_GPIO14 BCM2711_PINMUX(14, BCM2711_FSEL_ALT5)
61#define UART1_RX_GPIO15 BCM2711_PINMUX(15, BCM2711_FSEL_ALT5)
62
63#define UART1_TX_GPIO32 BCM2711_PINMUX(32, BCM2711_FSEL_ALT5)
64#define UART1_RX_GPIO33 BCM2711_PINMUX(33, BCM2711_FSEL_ALT5)
65
66#define UART1_TX_GPIO40 BCM2711_PINMUX(40, BCM2711_FSEL_ALT5)
67#define UART1_RX_GPIO41 BCM2711_PINMUX(41, BCM2711_FSEL_ALT5)
68
69#define UART1_CTS_GPIO16 BCM2711_PINMUX(16, BCM2711_FSEL_ALT5)
70#define UART1_RTS_GPIO17 BCM2711_PINMUX(17, BCM2711_FSEL_ALT5)
71
72#define UART1_CTS_GPIO30 BCM2711_PINMUX(30, BCM2711_FSEL_ALT5)
73#define UART1_RTS_GPIO31 BCM2711_PINMUX(31, BCM2711_FSEL_ALT5)
74
75#define UART1_CTS_GPIO42 BCM2711_PINMUX(42, BCM2711_FSEL_ALT5)
76#define UART1_RTS_GPIO43 BCM2711_PINMUX(43, BCM2711_FSEL_ALT5)
77
78/* UART2 pinmux definitions */
79#define UART2_TX_GPIO0 BCM2711_PINMUX(0, BCM2711_FSEL_ALT4)
80#define UART2_RX_GPIO1 BCM2711_PINMUX(1, BCM2711_FSEL_ALT4)
81
82#define UART2_CTS_GPIO2 BCM2711_PINMUX(2, BCM2711_FSEL_ALT4)
83#define UART2_RTS_GPIO3 BCM2711_PINMUX(3, BCM2711_FSEL_ALT4)
84
85/* UART3 pinmux definitions */
86#define UART3_TX_GPIO4 BCM2711_PINMUX(4, BCM2711_FSEL_ALT4)
87#define UART3_RX_GPIO5 BCM2711_PINMUX(5, BCM2711_FSEL_ALT4)
88
89#define UART3_CTS_GPIO6 BCM2711_PINMUX(6, BCM2711_FSEL_ALT4)
90#define UART3_RTS_GPIO7 BCM2711_PINMUX(7, BCM2711_FSEL_ALT4)
91
92/* UART4 pinmux definitions */
93#define UART4_TX_GPIO8 BCM2711_PINMUX(8, BCM2711_FSEL_ALT4)
94#define UART4_RX_GPIO9 BCM2711_PINMUX(9, BCM2711_FSEL_ALT4)
95
96#define UART4_CTS_GPIO10 BCM2711_PINMUX(10, BCM2711_FSEL_ALT4)
97#define UART4_RTS_GPIO11 BCM2711_PINMUX(11, BCM2711_FSEL_ALT4)
98
99/* UART5 pinmux definitions */
100#define UART5_TX_GPIO12 BCM2711_PINMUX(12, BCM2711_FSEL_ALT4)
101#define UART5_RX_GPIO13 BCM2711_PINMUX(13, BCM2711_FSEL_ALT4)
102
103#define UART5_CTS_GPIO14 BCM2711_PINMUX(14, BCM2711_FSEL_ALT4)
104#define UART5_RTS_GPIO15 BCM2711_PINMUX(15, BCM2711_FSEL_ALT4)
105
106/* I2C0 pinmux definitions */
107#define I2C0_SDA_GPIO0 BCM2711_PINMUX(0, BCM2711_FSEL_ALT0)
108#define I2C0_SCL_GPIO1 BCM2711_PINMUX(1, BCM2711_FSEL_ALT0)
109
110#define I2C0_SDA_GPIO28 BCM2711_PINMUX(28, BCM2711_FSEL_ALT0)
111#define I2C0_SCL_GPIO29 BCM2711_PINMUX(29, BCM2711_FSEL_ALT0)
112
113#define I2C0_SDA_GPIO44 BCM2711_PINMUX(44, BCM2711_FSEL_ALT1)
114#define I2C0_SCL_GPIO45 BCM2711_PINMUX(45, BCM2711_FSEL_ALT1)
115
116/* I2C1 pinmux definitions */
117#define I2C1_SDA_GPIO2 BCM2711_PINMUX(2, BCM2711_FSEL_ALT0)
118#define I2C1_SCL_GPIO3 BCM2711_PINMUX(3, BCM2711_FSEL_ALT0)
119
120#define I2C1_SDA_GPIO44 BCM2711_PINMUX(44, BCM2711_FSEL_ALT2)
121#define I2C1_SCL_GPIO45 BCM2711_PINMUX(45, BCM2711_FSEL_ALT2)
122
123/* I2C3 pinmux definitions */
124#define I2C3_SDA_GPIO2 BCM2711_PINMUX(2, BCM2711_FSEL_ALT5)
125#define I2C3_SCL_GPIO3 BCM2711_PINMUX(3, BCM2711_FSEL_ALT5)
126
127#define I2C3_SDA_GPIO4 BCM2711_PINMUX(4, BCM2711_FSEL_ALT5)
128#define I2C3_SCL_GPIO5 BCM2711_PINMUX(5, BCM2711_FSEL_ALT5)
129
130/* I2C4 pinmux definitions */
131#define I2C4_SDA_GPIO6 BCM2711_PINMUX(6, BCM2711_FSEL_ALT5)
132#define I2C4_SCL_GPIO7 BCM2711_PINMUX(7, BCM2711_FSEL_ALT5)
133
134#define I2C4_SDA_GPIO8 BCM2711_PINMUX(8, BCM2711_FSEL_ALT5)
135#define I2C4_SCL_GPIO9 BCM2711_PINMUX(9, BCM2711_FSEL_ALT5)
136
137/* I2C5 pinmux definitions */
138#define I2C5_SDA_GPIO10 BCM2711_PINMUX(10, BCM2711_FSEL_ALT5)
139#define I2C5_SCL_GPIO11 BCM2711_PINMUX(11, BCM2711_FSEL_ALT5)
140
141#define I2C5_SDA_GPIO12 BCM2711_PINMUX(12, BCM2711_FSEL_ALT5)
142#define I2C5_SCL_GPIO13 BCM2711_PINMUX(13, BCM2711_FSEL_ALT5)
143
144/* I2C6 pinmux definitions */
145#define I2C6_SDA_GPIO0 BCM2711_PINMUX(0, BCM2711_FSEL_ALT5)
146#define I2C6_SCL_GPIO1 BCM2711_PINMUX(1, BCM2711_FSEL_ALT5)
147
148#define I2C6_SDA_GPIO22 BCM2711_PINMUX(22, BCM2711_FSEL_ALT5)
149#define I2C6_SCL_GPIO23 BCM2711_PINMUX(23, BCM2711_FSEL_ALT5)
150
151#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_BCM2711_PINCTRL_H_ */