====== VIM3/3L GPIO mainline Linux ======
WIP: collect information
We can control any GPIO from this table by **NUM** via /sys/class/gpio/gpio**NUM**
===== Header PinOut =====
^ GPIO num ^ Name ^ Pin ^ Pin ^ Name ^ GPIO num ^
| | 5V | 1 | 21 | **GND** | |
| | 5V | 2 | 22 | A_15 | 491 |
| | USB_DM | 3 | 23 | A_14 | 490 |
| | USB_DP | 4 | 24 | **GND** | |
| | **GND** | 5 | 25 | AO_2 | 414 |
| | MCU3V3 | 6 | 26 | AO_3 | 415 |
| | MCUNRST | 7 | 27 | 3v3 | |
| | MCUSWIM | 8 | 28 | **GND** | |
| | **GND** | 9 | 29 | A_1 | 477 |
| | ADC0 | 10 | 30 | A_0 | 476 |
| | 1v8 | 11 | 31 | A_3 | 479 |
| | ADC1 | 12 | 32 | A_2 | 478 |
| 422 | AO_10 | 13 | 33 | A_4 | 480 |
| | **GND** | 14 | 34 | **GND** | |
| 449 | H_6 | 15 | 35 | PWM-F | 448 |
| 450 | H_7 | 16 | 36 | RTC | |
| | **GND** | 17 | 37 | H_4 | 447 |
| 413 | UART AO_1 | 18 | 38 | MCU-FA1 | |
| 412 | UART AO_0 | 19 | 39 | Z_15 | XXX |
| | 3v3 | 20 | 40 | **GND** | |
```shell gpio-banks
~# grep "" /sys/class/gpio/gpiochip*/*
/sys/class/gpio/gpiochip404/base:404
/sys/class/gpio/gpiochip404/label:0-0020
/sys/class/gpio/gpiochip404/ngpio:8
/sys/class/gpio/gpiochip412/base:412
/sys/class/gpio/gpiochip412/label:aobus-banks
/sys/class/gpio/gpiochip412/ngpio:15
/sys/class/gpio/gpiochip427/base:427
/sys/class/gpio/gpiochip427/label:periphs-banks
/sys/class/gpio/gpiochip427/ngpio:85
```
```c meson-g12a-gpio.h
/* First GPIO chip */
#define GPIOAO_0 0
#define GPIOAO_1 1
#define GPIOAO_2 2
#define GPIOAO_3 3
#define GPIOAO_4 4
#define GPIOAO_5 5
#define GPIOAO_6 6
#define GPIOAO_7 7
#define GPIOAO_8 8
#define GPIOAO_9 9
#define GPIOAO_10 10
#define GPIOAO_11 11
#define GPIOE_0 12
#define GPIOE_1 13
#define GPIOE_2 14
/* Second GPIO chip */
#define GPIOZ_0 0
#define GPIOZ_1 1
#define GPIOZ_2 2
#define GPIOZ_3 3
#define GPIOZ_4 4
#define GPIOZ_5 5
#define GPIOZ_6 6
#define GPIOZ_7 7
#define GPIOZ_8 8
#define GPIOZ_9 9
#define GPIOZ_10 10
#define GPIOZ_11 11
#define GPIOZ_12 12
#define GPIOZ_13 13
#define GPIOZ_14 14
#define GPIOZ_15 15
#define GPIOH_0 16
#define GPIOH_1 17
#define GPIOH_2 18
#define GPIOH_3 19
#define GPIOH_4 20
#define GPIOH_5 21
#define GPIOH_6 22
#define GPIOH_7 23
#define GPIOH_8 24
#define BOOT_0 25
#define BOOT_1 26
#define BOOT_2 27
#define BOOT_3 28
#define BOOT_4 29
#define BOOT_5 30
#define BOOT_6 31
#define BOOT_7 32
#define BOOT_8 33
#define BOOT_9 34
#define BOOT_10 35
#define BOOT_11 36
#define BOOT_12 37
#define BOOT_13 38
#define BOOT_14 39
#define BOOT_15 40
#define GPIOC_0 41
#define GPIOC_1 42
#define GPIOC_2 43
#define GPIOC_3 44
#define GPIOC_4 45
#define GPIOC_5 46
#define GPIOC_6 47
#define GPIOC_7 48
#define GPIOA_0 49
#define GPIOA_1 50
#define GPIOA_2 51
#define GPIOA_3 52
#define GPIOA_4 53
#define GPIOA_5 54
#define GPIOA_6 55
#define GPIOA_7 56
#define GPIOA_8 57
#define GPIOA_9 58
#define GPIOA_10 59
#define GPIOA_11 60
#define GPIOA_12 61
#define GPIOA_13 62
#define GPIOA_14 63
#define GPIOA_15 64
#define GPIOX_0 65
#define GPIOX_1 66
#define GPIOX_2 67
#define GPIOX_3 68
#define GPIOX_4 69
#define GPIOX_5 70
#define GPIOX_6 71
#define GPIOX_7 72
#define GPIOX_8 73
#define GPIOX_9 74
#define GPIOX_10 75
#define GPIOX_11 76
#define GPIOX_12 77
#define GPIOX_13 78
#define GPIOX_14 79
#define GPIOX_15 80
#define GPIOX_16 81
#define GPIOX_17 82
#define GPIOX_18 83
#define GPIOX_19 84
```