GPIO naming
Contents:
GPIO controllers
The rk3328 cpu has 4 main gpio controllers, each has 32 lanes:
gpio0: lane 0 .. 31
gpio1: lane 31 .. 63
gpio2: lane 64 .. 95
gpio3: lane 96 .. 127
GPIO lanes
The 32 lanes of each controller are named A0
.. D7
:
lane 0 = A0 | lane 8 = B0 | lane 16 = C0 | lane 24 = D0
lane 1 = A1 | lane 9 = B1 | lane 17 = C1 | lane 25 = D1
lane 2 = A2 | lane 10 = B2 | lane 18 = C2 | lane 26 = D2
lane 3 = A3 | lane 11 = B3 | lane 19 = C3 | lane 27 = D3
lane 4 = A4 | lane 12 = B4 | lane 20 = C4 | lane 28 = D4
lane 5 = A5 | lane 13 = B5 | lane 21 = C5 | lane 29 = D5
lane 6 = A6 | lane 14 = B6 | lane 22 = C6 | lane 20 = D6
lane 7 = A7 | lane 15 = B7 | lane 23 = C7 | lane 31 = D7
Relative vs. absolute lane numbers
To calculate the relative lane number, divide the absolute lane number by 32. The remainder is the relative lane number.
gpio0 : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
gpio1 : 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
gpio2 : 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
gpio3 : 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
Relative: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Examples
What is “gpio100”?
- lane 100 (absolute) belongs to gpio3
- the relative lane number is 4
- the symbolic name is “gpio3 A4”
What is “gpio82”?
- lane 82 (absolute) belongs to gpio2
- the relative lane number is 18
- the symbolic name is “gpio2 C2”
Shell naming scheme
The shell uses absolute lane numbers.
- Example:
gpio82
- Example (long):
echo 0 > /sys/class/gpio/gpio82/value
Devicetree naming scheme
Devicetree files use A0 to D7 relative lane names (prepended with “RK_P”)
- Example:
&gpio2 RK_PC2
- Example (long):
gpios = <&gpio2 RK_PC2 GPIO_ACTIVE_HIGH>;
Klipper naming scheme
Klipper uses relative lane numbers. “rpi” refers to the mcu.
- Example:
rpi:gpiochip2/gpio18
- Example (long):
[mcu rpi]
serial: /tmp/klipper_host_mcu
[output_pin beeper_pin]
pin: rpi:gpiochip2/gpio18