add zero and berry

This commit is contained in:
Qubot 2023-11-29 17:19:41 +08:00
parent 0700508922
commit 017c9a43c2
7 changed files with 400 additions and 6230 deletions

402
README.md
View File

@ -1,15 +1,15 @@
## How to download wiringOP
## How to download wiringPi
```
# apt-get update
# apt-get install -y git
# git clone https://github.com/orangepi-xunlong/wiringOP.git
# git clone https://github.com/BigQubot/wiringPi.git
```
## How to build wiringOP
## How to build wiringPi
```
# cd wiringOP
# cd wiringPi
# ./build clean
# ./build
```
@ -17,374 +17,36 @@
---
## The output of the gpio readall command
## Allwinner H2+
## Allwinner H618
### Orange Pi Zero/R1
### Banana Pi M4Berry / M4Zero
```
+------+-----+----------+------+---+ OPi H2 +---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| | | 3.3V | | | 1 || 2 | | | 5V | | |
| 12 | 0 | SDA.0 | ALT2 | 0 | 3 || 4 | | | 5V | | |
| 11 | 1 | SCL.0 | ALT2 | 0 | 5 || 6 | | | GND | | |
| 6 | 2 | PWM.1 | OFF | 0 | 7 || 8 | 0 | ALT2 | TXD.1 | 3 | 198 |
| | | GND | | | 9 || 10 | 0 | ALT2 | RXD.1 | 4 | 199 |
| 1 | 5 | RXD.2 | ALT2 | 0 | 11 || 12 | 0 | OFF | PA07 | 6 | 7 |
| 0 | 7 | TXD.2 | ALT2 | 0 | 13 || 14 | | | GND | | |
| 3 | 8 | CTS.2 | OFF | 0 | 15 || 16 | 0 | ALT3 | SDA.1 | 9 | 19 |
| | | 3.3V | | | 17 || 18 | 0 | ALT3 | SCK.1 | 10 | 18 |
| 15 | 11 | MOSI.1 | ALT2 | 1 | 19 || 20 | | | GND | | |
| 16 | 12 | MISO.1 | ALT2 | 0 | 21 || 22 | 0 | OFF | RTS.2 | 13 | 2 |
| 14 | 14 | SCLK.1 | ALT2 | 0 | 23 || 24 | 0 | ALT2 | CE.1 | 15 | 13 |
| | | GND | | | 25 || 26 | 0 | OFF | PA10 | 16 | 10 |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+ OPi H2 +---+------+----------+-----+------+
+------+-----+----------+--------+---+BPI-M4B/Z +---+--------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+--------+---+----++----+---+--------+----------+-----+------+
| | | 3.3V | | | 1 || 2 | | | 5V | | |
| 208 | 0 | SDA.4 | OFF | 0 | 3 || 4 | | | 5V | | |
| 207 | 1 | SCL.4 | OFF | 0 | 5 || 6 | | | GND | | |
| 211 | 2 | PWM.1 | OFF | 0 | 7 || 8 | 0 | ALT2 | TXD.1 | 3 | 198 |
| | | GND | | | 9 || 10 | 0 | ALT2 | RXD.1 | 4 | 199 |
| 226 | 5 | TXD.5 | ALT2 | 0 | 11 || 12 | 0 | OFF | PCM_BCLK | 6 | 203 |
| 227 | 7 | RXD.5 | ALT2 | 0 | 13 || 14 | | | GND | | |
| 194 | 8 | PG02 | OFF | 0 | 15 || 16 | 0 | OFF | RTS.1 | 9 | 200 |
| | | 3.3V | | | 17 || 18 | 0 | OFF | CTS.1 | 10 | 201 |
| 231 | 11 | MOSI.1 | ALT4 | 0 | 19 || 20 | | | GND | | |
| 232 | 12 | MISO.1 | ALT4 | 0 | 21 || 22 | 0 | OFF | PG01 | 13 | 193 |
| 230 | 14 | SCLK.1 | ALT4 | 0 | 23 || 24 | 0 | OFF | CS0.1 | 15 | 229 |
| | | GND | | | 25 || 26 | 0 | ALT4 | CS1.1 | 16 | 233 |
| 210 | 17 | SDA.3 | OFF | 0 | 27 || 28 | 0 | OFF | SCL.3 | 18 | 209 |
| 195 | 19 | PG03 | OFF | 0 | 29 || 30 | | | GND | | |
| 196 | 20 | PG04 | OFF | 0 | 31 || 32 | 0 | OFF | PG00 | 21 | 192 |
| 197 | 22 | PG05 | OFF | 0 | 33 || 34 | | | GND | | |
| 204 | 23 | PCM_LRCK | OFF | 0 | 35 || 36 | 0 | OFF | SPDIF | 24 | 228 |
| 202 | 25 | PCM_MCLK | OFF | 0 | 37 || 38 | 0 | OFF | PCM_IN | 26 | 206 |
| | | GND | | | 39 || 40 | 0 | OFF | PCM_OUT | 27 | 205 |
+------+-----+----------+--------+---+----++----+---+--------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+--------+---+BPI-M4B/Z +---+--------+----------+-----+------+
```
## Allwinner H3
### Orange Pi Zero Plus 2
```
+------+-----+----------+------+---+ZEROPLUS 2+---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| | | 3.3V | | | 1 || 2 | | | 5V | | |
| 12 | 0 | SDA.0 | ALT2 | 0 | 3 || 4 | | | 5V | | |
| 11 | 1 | SCL.0 | ALT2 | 0 | 5 || 6 | | | GND | | |
| 6 | 2 | PA6 | OFF | 0 | 7 || 8 | 0 | ALT2 | TXD.2 | 3 | 0 |
| | | GND | | | 9 || 10 | 0 | ALT2 | RXD.2 | 4 | 1 |
| 352 | 5 | S-SCL | ALT2 | 0 | 11 || 12 | 0 | OFF | PD11 | 6 | 107 |
| 353 | 7 | S-SDA | ALT2 | 0 | 13 || 14 | | | GND | | |
| 3 | 8 | CTS.2 | OFF | 0 | 15 || 16 | 0 | ALT3 | SDA.1 | 9 | 19 |
| | | 3.3V | | | 17 || 18 | 0 | ALT3 | SCL.1 | 10 | 18 |
| 15 | 11 | MOSI.1 | ALT2 | 0 | 19 || 20 | | | GND | | |
| 16 | 12 | MISO.1 | ALT2 | 0 | 21 || 22 | 0 | OFF | RTS.2 | 13 | 2 |
| 14 | 14 | SCLK.1 | ALT2 | 0 | 23 || 24 | 0 | ALT2 | CE.1 | 15 | 13 |
| | | GND | | | 25 || 26 | 0 | OFF | PD14 | 16 | 110 |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+ZEROPLUS 2+---+------+----------+-----+------+
```
### OrangePi One/Lite/Pc/Plus/PcPlus/Plus2e
```
+------+-----+----------+------+---+OrangePiH3+---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| | | 3.3V | | | 1 || 2 | | | 5V | | |
| 12 | 0 | SDA.0 | OUT | 0 | 3 || 4 | | | 5V | | |
| 11 | 1 | SCL.0 | OUT | 0 | 5 || 6 | | | GND | | |
| 6 | 2 | PA6 | OUT | 0 | 7 || 8 | 0 | OUT | TXD.3 | 3 | 13 |
| | | GND | | | 9 || 10 | 0 | OUT | RXD.3 | 4 | 14 |
| 1 | 5 | RXD.2 | OUT | 0 | 11 || 12 | 0 | OUT | PD14 | 6 | 110 |
| 0 | 7 | TXD.2 | OUT | 0 | 13 || 14 | | | GND | | |
| 3 | 8 | CTS.2 | OUT | 0 | 15 || 16 | 0 | OUT | PC04 | 9 | 68 |
| | | 3.3V | | | 17 || 18 | 0 | OUT | PC07 | 10 | 71 |
| 64 | 11 | MOSI.0 | OUT | 0 | 19 || 20 | | | GND | | |
| 65 | 12 | MISO.0 | OUT | 0 | 21 || 22 | 0 | OUT | RTS.2 | 13 | 2 |
| 66 | 14 | SCLK.0 | OUT | 0 | 23 || 24 | 0 | OUT | CE.0 | 15 | 67 |
| | | GND | | | 25 || 26 | 0 | OUT | PA21 | 16 | 21 |
| 19 | 17 | SDA.1 | OUT | 0 | 27 || 28 | 0 | OUT | SCL.1 | 18 | 18 |
| 7 | 19 | PA07 | OUT | 0 | 29 || 30 | | | GND | | |
| 8 | 20 | PA08 | OUT | 0 | 31 || 32 | 0 | OUT | RTS.1 | 21 | 200 |
| 9 | 22 | PA09 | OUT | 0 | 33 || 34 | | | GND | | |
| 10 | 23 | PA10 | OUT | 0 | 35 || 36 | 0 | OUT | CTS.1 | 24 | 201 |
| 20 | 25 | PA20 | OUT | 0 | 37 || 38 | 0 | OUT | TXD.1 | 26 | 198 |
| | | GND | | | 39 || 40 | 0 | OUT | RXD.1 | 27 | 199 |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+OrangePiH3+---+------+----------+-----+------+
```
## Allwinner H5
### Orange Pi Zero Plus
```
+------+-----+----------+------+---+ ZEROPLUS +---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| | | 3.3V | | | 1 || 2 | | | 5V | | |
| 12 | 0 | SDA.0 | ALT2 | 0 | 3 || 4 | | | 5V | | |
| 11 | 1 | SCL.0 | ALT2 | 0 | 5 || 6 | | | GND | | |
| 6 | 2 | PA6 | OFF | 0 | 7 || 8 | 0 | ALT2 | TXD.1 | 3 | 198 |
| | | GND | | | 9 || 10 | 0 | ALT2 | RXD.1 | 4 | 199 |
| 1 | 5 | RXD.2 | ALT2 | 0 | 11 || 12 | 0 | OFF | PA07 | 6 | 7 |
| 0 | 7 | TXD.2 | ALT2 | 0 | 13 || 14 | | | GND | | |
| 3 | 8 | CTS.2 | OFF | 0 | 15 || 16 | 0 | ALT3 | SDA.1 | 9 | 19 |
| | | 3.3V | | | 17 || 18 | 0 | ALT3 | SCL.1 | 10 | 18 |
| 15 | 11 | MOSI.1 | ALT2 | 0 | 19 || 20 | | | GND | | |
| 16 | 12 | MISO.1 | ALT2 | 0 | 21 || 22 | 0 | OFF | RTS.2 | 13 | 2 |
| 14 | 14 | SCLK.1 | ALT2 | 0 | 23 || 24 | 0 | ALT2 | CE.1 | 15 | 13 |
| | | GND | | | 25 || 26 | 0 | OFF | PA10 | 16 | 10 |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+ ZEROPLUS +---+------+----------+-----+------+
```
### Orange Pi Zero Plus 2
```
+------+-----+----------+------+---+ZEROPLUS 2+---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| | | 3.3V | | | 1 || 2 | | | 5V | | |
| 12 | 0 | SDA.0 | ALT2 | 0 | 3 || 4 | | | 5V | | |
| 11 | 1 | SCL.0 | ALT2 | 0 | 5 || 6 | | | GND | | |
| 6 | 2 | PA6 | OFF | 0 | 7 || 8 | 0 | ALT2 | TXD.2 | 3 | 0 |
| | | GND | | | 9 || 10 | 0 | ALT2 | RXD.2 | 4 | 1 |
| 352 | 5 | S-SCL | ALT2 | 0 | 11 || 12 | 0 | OFF | PD11 | 6 | 107 |
| 353 | 7 | S-SDA | ALT2 | 0 | 13 || 14 | | | GND | | |
| 3 | 8 | CTS.2 | OFF | 0 | 15 || 16 | 0 | ALT3 | SDA.1 | 9 | 19 |
| | | 3.3V | | | 17 || 18 | 0 | ALT3 | SCL.1 | 10 | 18 |
| 15 | 11 | MOSI.1 | ALT2 | 0 | 19 || 20 | | | GND | | |
| 16 | 12 | MISO.1 | ALT2 | 0 | 21 || 22 | 0 | OFF | RTS.2 | 13 | 2 |
| 14 | 14 | SCLK.1 | ALT2 | 0 | 23 || 24 | 0 | ALT2 | CE.1 | 15 | 13 |
| | | GND | | | 25 || 26 | 0 | OFF | PD14 | 16 | 110 |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+ZEROPLUS 2+---+------+----------+-----+------+
```
### Orange Pi Pc 2
```
+------+-----+----------+------+---+ OPi PC2 +---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| | | 3.3V | | | 1 || 2 | | | 5V | | |
| 12 | 0 | SDA.0 | ALT2 | 0 | 3 || 4 | | | 5V | | |
| 11 | 1 | SCL.0 | ALT2 | 0 | 5 || 6 | | | GND | | |
| 6 | 2 | PWM.1 | OFF | 0 | 7 || 8 | 0 | OFF | PC05 | 3 | 69 |
| | | GND | | | 9 || 10 | 0 | OFF | PC06 | 4 | 70 |
| 1 | 5 | RXD.2 | ALT2 | 0 | 11 || 12 | 0 | OFF | PD14 | 6 | 110 |
| 0 | 7 | TXD.2 | ALT2 | 0 | 13 || 14 | | | GND | | |
| 3 | 8 | CTS.2 | ALT2 | 0 | 15 || 16 | 0 | OFF | PC04 | 9 | 68 |
| | | 3.3V | | | 17 || 18 | 0 | OFF | PC07 | 10 | 71 |
| 15 | 11 | MOSI.1 | ALT2 | 0 | 19 || 20 | | | GND | | |
| 16 | 12 | MISO.1 | ALT2 | 0 | 21 || 22 | 0 | ALT2 | RTS.2 | 13 | 2 |
| 14 | 14 | SCLK.1 | ALT2 | 0 | 23 || 24 | 0 | ALT2 | CE.1 | 15 | 13 |
| | | GND | | | 25 || 26 | 0 | OFF | PA21 | 16 | 21 |
| 19 | 17 | SDA.1 | ALT3 | 0 | 27 || 28 | 0 | ALT3 | SCL.1 | 18 | 18 |
| 7 | 19 | PA07 | OFF | 0 | 29 || 30 | | | GND | | |
| 8 | 20 | PA08 | OFF | 0 | 31 || 32 | 0 | ALT2 | RTS.1 | 21 | 200 |
| 9 | 22 | PA09 | OFF | 0 | 33 || 34 | | | GND | | |
| 10 | 23 | PA10 | OFF | 0 | 35 || 36 | 0 | ALT2 | CTS.1 | 24 | 201 |
| 107 | 25 | PD11 | OFF | 0 | 37 || 38 | 0 | ALT2 | TXD.1 | 26 | 198 |
| | | GND | | | 39 || 40 | 0 | ALT2 | RXD.1 | 27 | 199 |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+ OPi PC2 +---+------+----------+-----+------+
```
### Orange Pi Prime
```
+------+-----+----------+------+---+ PRIME +---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| | | 3.3V | | | 1 || 2 | | | 5V | | |
| 12 | 0 | SDA.0 | ALT2 | 0 | 3 || 4 | | | 5V | | |
| 11 | 1 | SCL.0 | ALT2 | 0 | 5 || 6 | | | GND | | |
| 6 | 2 | PWM.1 | OFF | 0 | 7 || 8 | 0 | OFF | PC05 | 3 | 69 |
| | | GND | | | 9 || 10 | 0 | OFF | PC06 | 4 | 70 |
| 1 | 5 | RXD.2 | ALT2 | 0 | 11 || 12 | 0 | OFF | PD14 | 6 | 110 |
| 0 | 7 | TXD.2 | ALT2 | 0 | 13 || 14 | | | GND | | |
| 3 | 8 | CTS.2 | ALT2 | 0 | 15 || 16 | 0 | OFF | PC04 | 9 | 68 |
| | | 3.3V | | | 17 || 18 | 0 | OFF | PC07 | 10 | 71 |
| 15 | 11 | MOSI.1 | ALT2 | 0 | 19 || 20 | | | GND | | |
| 16 | 12 | MISO.1 | ALT2 | 0 | 21 || 22 | 0 | ALT2 | RTS.2 | 13 | 2 |
| 14 | 14 | SCLK.1 | ALT2 | 0 | 23 || 24 | 0 | ALT2 | CE.1 | 15 | 13 |
| | | GND | | | 25 || 26 | 0 | OFF | PC08 | 16 | 72 |
| 19 | 17 | SDA.1 | ALT3 | 0 | 27 || 28 | 0 | ALT3 | SCL.1 | 18 | 18 |
| 7 | 19 | PA07 | OFF | 0 | 29 || 30 | | | GND | | |
| 8 | 20 | PA08 | OFF | 0 | 31 || 32 | 0 | OFF | PC09 | 21 | 73 |
| 9 | 22 | PA09 | OFF | 0 | 33 || 34 | | | GND | | |
| 10 | 23 | PA10 | OFF | 0 | 35 || 36 | 0 | OFF | PC10 | 24 | 74 |
| 107 | 25 | PD11 | OFF | 0 | 37 || 38 | 0 | OFF | PC11 | 26 | 75 |
| | | GND | | | 39 || 40 | 0 | OFF | PC12 | 27 | 76 |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+ PRIME +---+------+----------+-----+------+
```
## Allwinner A64
### Orange Pi Win/Winplus
```
+------+-----+----------+------+---+ OPi Win +---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| | | 3.3V | | | 1 || 2 | | | 5V | | |
| 227 | 0 | SDA.1 | ALT2 | 0 | 3 || 4 | | | 5V | | |
| 226 | 1 | SCL.1 | ALT2 | 0 | 5 || 6 | | | GND | | |
| 362 | 2 | PL10 | OFF | 0 | 7 || 8 | 0 | ALT2 | PL02 | 3 | 354 |
| | | GND | | | 9 || 10 | 0 | ALT2 | PL03 | 4 | 355 |
| 229 | 5 | RXD.3 | ALT2 | 0 | 11 || 12 | 0 | OFF | PD04 | 6 | 100 |
| 228 | 7 | TXD.3 | ALT2 | 0 | 13 || 14 | | | GND | | |
| 231 | 8 | CTS.3 | OUT | 0 | 15 || 16 | 0 | OFF | PL09 | 9 | 361 |
| | | 3.3V | | | 17 || 18 | 0 | OFF | PC04 | 10 | 68 |
| 98 | 11 | MOSI.1 | ALT4 | 0 | 19 || 20 | | | GND | | |
| 99 | 12 | MISO.1 | ALT4 | 0 | 21 || 22 | 0 | OFF | RTS.3 | 13 | 230 |
| 97 | 14 | SCLK.1 | ALT4 | 0 | 23 || 24 | 0 | ALT4 | CE.1 | 15 | 96 |
| | | GND | | | 25 || 26 | 0 | OFF | PD06 | 16 | 102 |
| 143 | 17 | SDA.2 | ALT3 | 0 | 27 || 28 | 0 | ALT3 | SCL.2 | 18 | 142 |
| 36 | 19 | PB04 | OFF | 0 | 29 || 30 | | | GND | | |
| 37 | 20 | PB05 | OFF | 0 | 31 || 32 | 0 | ALT2 | RTS.2 | 21 | 34 |
| 38 | 22 | PB06 | OFF | 0 | 33 || 34 | | | GND | | |
| 39 | 23 | PB07 | OFF | 0 | 35 || 36 | 0 | ALT2 | CTS.2 | 24 | 35 |
| 101 | 25 | PD05 | OFF | 0 | 37 || 38 | 0 | ALT2 | TXD.2 | 26 | 32 |
| | | GND | | | 39 || 40 | 0 | ALT2 | RXD.2 | 27 | 33 |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+ OPi Win +---+------+----------+-----+------+
```
## Allwinner H6
### Orange Pi 3/3 LTS
```
+------+-----+----------+------+---+ OPi 3 +---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| | | 3.3V | | | 1 || 2 | | | 5V | | |
| 122 | 0 | SDA.0 | OFF | 0 | 3 || 4 | | | 5V | | |
| 121 | 1 | SCL.0 | OFF | 0 | 5 || 6 | | | GND | | |
| 118 | 2 | PWM.0 | OFF | 0 | 7 || 8 | 0 | OFF | PL02 | 3 | 354 |
| | | GND | | | 9 || 10 | 0 | OFF | PL03 | 4 | 355 |
| 120 | 5 | RXD.3 | ALT4 | 0 | 11 || 12 | 0 | OFF | PD18 | 6 | 114 |
| 119 | 7 | TXD.3 | ALT4 | 0 | 13 || 14 | | | GND | | |
| 362 | 8 | PL10 | OFF | 0 | 15 || 16 | 0 | OFF | PD15 | 9 | 111 |
| | | 3.3V | | | 17 || 18 | 0 | OFF | PD16 | 10 | 112 |
| 229 | 11 | MOSI.1 | ALT2 | 0 | 19 || 20 | | | GND | | |
| 230 | 12 | MISO.1 | ALT2 | 0 | 21 || 22 | 0 | OFF | PD21 | 13 | 117 |
| 228 | 14 | SCLK.1 | ALT2 | 0 | 23 || 24 | 0 | ALT2 | CE.1 | 15 | 227 |
| | | GND | | | 25 || 26 | 0 | OFF | PL08 | 16 | 360 |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+ OPi 3 +---+------+----------+-----+------+
```
### Orange Pi Lite2/OnePlus
```
+------+-----+----------+------+---+ OPi H6 +---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| | | 3.3V | | | 1 || 2 | | | 5V | | |
| 230 | 0 | SDA.1 | OFF | 0 | 3 || 4 | | | 5V | | |
| 229 | 1 | SCL.1 | OFF | 0 | 5 || 6 | | | GND | | |
| 228 | 2 | PWM1 | OFF | 0 | 7 || 8 | 0 | OFF | PD21 | 3 | 117 |
| | | GND | | | 9 || 10 | 0 | OFF | PD22 | 4 | 118 |
| 120 | 5 | RXD.3 | ALT4 | 0 | 11 || 12 | 0 | OFF | PC09 | 6 | 73 |
| 119 | 7 | TXD.3 | ALT4 | 0 | 13 || 14 | | | GND | | |
| 122 | 8 | CTS.3 | OFF | 0 | 15 || 16 | 0 | OFF | PC08 | 9 | 72 |
| | | 3.3V | | | 17 || 18 | 0 | OFF | PC07 | 10 | 71 |
| 66 | 11 | MOSI.0 | ALT4 | 0 | 19 || 20 | | | GND | | |
| 67 | 12 | MISO.0 | ALT4 | 0 | 21 || 22 | 0 | OFF | RTS.3 | 13 | 121 |
| 64 | 14 | SCLK.0 | ALT4 | 0 | 23 || 24 | 0 | ALT4 | CE.0 | 15 | 69 |
| | | GND | | | 25 || 26 | 0 | OFF | PH03 | 16 | 227 |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+ OPi H6 +---+------+----------+-----+------+
```
## Allwinner H616
### Orange Pi Zero2/Zero2 LTS/Zero2 B
```
+------+-----+----------+------+---+ Zero 2 +---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| | | 3.3V | | | 1 || 2 | | | 5V | | |
| 229 | 0 | SDA.3 | OFF | 0 | 3 || 4 | | | 5V | | |
| 228 | 1 | SCL.3 | OFF | 0 | 5 || 6 | | | GND | | |
| 73 | 2 | PC9 | OFF | 0 | 7 || 8 | 0 | ALT2 | TXD.5 | 3 | 226 |
| | | GND | | | 9 || 10 | 0 | ALT2 | RXD.5 | 4 | 227 |
| 70 | 5 | PC6 | ALT5 | 0 | 11 || 12 | 0 | OFF | PC11 | 6 | 75 |
| 69 | 7 | PC5 | ALT5 | 0 | 13 || 14 | | | GND | | |
| 72 | 8 | PC8 | OFF | 0 | 15 || 16 | 0 | OFF | PC15 | 9 | 79 |
| | | 3.3V | | | 17 || 18 | 0 | OFF | PC14 | 10 | 78 |
| 231 | 11 | MOSI.1 | ALT4 | 0 | 19 || 20 | | | GND | | |
| 232 | 12 | MISO.1 | ALT4 | 0 | 21 || 22 | 0 | OFF | PC7 | 13 | 71 |
| 230 | 14 | SCLK.1 | ALT4 | 0 | 23 || 24 | 0 | ALT4 | CE.1 | 15 | 233 |
| | | GND | | | 25 || 26 | 0 | OFF | PC10 | 16 | 74 |
| 65 | 17 | PC1 | OFF | 0 | 27 || 28 | | | | | |
| 272 | 18 | PI16 | OFF | 0 | 29 || 30 | | | | | |
| 262 | 19 | PI6 | OFF | 0 | 31 || 32 | | | | | |
| 234 | 20 | PH10 | ALT3 | 0 | 33 || 34 | | | | | |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+ Zero 2 +---+------+----------+-----+------+
```
## RockChip RK3399
### Orange Pi RK3399
```
+------+-----+----------+------+---+OPi RK3399+---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| | | 3.3V | | | 1 || 2 | | | 5V | | |
| 43 | 0 | SDA.0 | ALT2 | 1 | 3 || 4 | | | 5V | | |
| 44 | 1 | SCL.0 | ALT2 | 1 | 5 || 6 | | | GND | | |
| 64 | 2 | GPIO4 | ALT3 | 0 | 7 || 8 | 0 | ALT2 | Tx | 3 | 148 |
| | | GND | | | 9 || 10 | 1 | ALT2 | Rx | 4 | 147 |
| 80 | 5 | GPIO17 | ALT2 | 0 | 11 || 12 | 0 | ALT3 | GPIO18 | 6 | 65 |
| 81 | 7 | GPIO27 | ALT2 | 0 | 13 || 14 | | | GND | | |
| 82 | 8 | GPIO22 | ALT2 | 0 | 15 || 16 | 0 | IN | GPIO23 | 9 | 66 |
| | | 3.3V | | | 17 || 18 | 0 | IN | GPIO24 | 10 | 67 |
| 39 | 11 | MOSI | ALT2 | 1 | 19 || 20 | | | GND | | |
| 40 | 12 | MISO | ALT2 | 1 | 21 || 22 | 0 | ALT2 | GPIO25 | 13 | 83 |
| 41 | 14 | SCLK | ALT3 | 1 | 23 || 24 | 1 | ALT3 | CS0 | 15 | 42 |
| | | GND | | | 25 || 26 | 0 | ALT2 | CS1 | 16 | 133 |
| 154 | 17 | DNP1 | IN | 0 | 27 || 28 | 1 | IN | DNP2 | 18 | 50 |
| 68 | 19 | GPIO5 | OUT | 1 | 29 || 30 | | | GND | | |
| 69 | 20 | GPIO6 | OUT | 1 | 31 || 32 | 1 | OUT | GPIO12 | 21 | 76 |
| 70 | 22 | GPIO13 | OUT | 1 | 33 || 34 | | | GND | | |
| 71 | 23 | GPIO19 | OUT | 1 | 35 || 36 | 1 | OUT | GPIO16 | 24 | 73 |
| 72 | 25 | GPIO26 | OUT | 1 | 37 || 38 | 0 | IN | GPIO20 | 26 | 74 |
| | | GND | | | 39 || 40 | 0 | ALT4 | GPIO21 | 27 | 75 |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+OPi RK3399+---+------+----------+-----+------+
```
### Orange Pi 4/4B/4 LTS
```
+------+-----+----------+------+---+OrangePi 4+---+---+--+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| | | 3.3V | | | 1 || 2 | | | 5V | | |
| 64 | 0 | I2C2_SDA | ALT3 | 0 | 3 || 4 | | | 5V | | |
| 65 | 1 | I2C2_SCL | ALT3 | 0 | 5 || 6 | | | GND | | |
| 150 | 2 | PWM1 | IN | 0 | 7 || 8 | 1 | ALT2 | I2C3_SCL | 3 | 145 |
| | | GND | | | 9 || 10 | 1 | ALT2 | I2C3_SDA | 4 | 144 |
| 33 | 5 | GPIO1_A1 | IN | 0 | 11 || 12 | 1 | IN | GPIO1_C2 | 6 | 50 |
| 35 | 7 | GPIO1_A3 | OUT | 0 | 13 || 14 | | | GND | | |
| 92 | 8 | GPIO2_D4 | OUT | 1 | 15 || 16 | 0 | IN | GPIO1_C6 | 9 | 54 |
| | | 3.3V | | | 17 || 18 | 0 | IN | GPIO1_C7 | 10 | 55 |
| 40 | 11 | SPI1_TXD | ALT2 | 1 | 19 || 20 | | | GND | | |
| 39 | 12 | SPI1_RXD | ALT2 | 1 | 21 || 22 | 0 | IN | GPIO1_D0 | 13 | 56 |
| 41 | 14 | SPI1_CLK | ALT3 | 1 | 23 || 24 | 1 | ALT3 | SPI1_CS | 15 | 42 |
| | | GND | | | 25 || 26 | 0 | IN | GPIO4_C5 | 16 | 149 |
| 64 | 17 | I2C2_SDA | ALT3 | 0 | 27 || 28 | 0 | ALT3 | I2C2_SCL | 18 | 65 |
| | | I2S0_RX | | | 29 || 30 | | | GND | | |
| | | I2S0_TX | | | 31 || 32 | | | I2S_CLK | | |
| | | I2S0_SCK | | | 33 || 34 | | | GND | | |
| | | I2S0_SI0 | | | 35 || 36 | | | I2S0_SO0 | | |
| | | I2S0_SI1 | | | 37 || 38 | | | I2S0_SI2 | | |
| | | GND | | | 39 || 40 | | | I2S0_SI3 | | |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+OrangePi 4+---+---+--+----------+-----+------+
```

View File

@ -5,9 +5,6 @@
* SSD1306 demo of block and font drawing.
*/
//
// fixed for OrangePiZero by HypHop
//
#include <errno.h>
#include <string.h>
@ -28,7 +25,7 @@ int oled_demo(struct display_info *disp) {
oled_putstrto(disp, 0, 9+1, "Welcome to");
disp->font = font1;
// oled_putstrto(disp, 0, 18+2, "Spnd tmp 53 C");
oled_putstrto(disp, 0, 18+2, "----OrangePi----");
oled_putstrto(disp, 0, 18+2, "----BananaPi----");
disp->font = font2;
// oled_putstrto(disp, 0, 27+3, "DrvX tmp 64 C");
oled_putstrto(disp, 0, 27+3, "This is 0.96OLED");

View File

@ -60,7 +60,7 @@ void speedTest (int pin, int maxCount)
int main (void)
{
printf ("OrangePi Pi wiringPi GPIO speed test program\n") ;
printf ("Banana Pi wiringPi GPIO speed test program\n") ;
printf ("=============================================\n") ;
// Start the standard way

View File

@ -63,7 +63,7 @@ extern void doQmode (int argc, char *argv []) ;
int wpMode ;
#ifdef CONFIG_ORANGEPI
#ifdef CONFIG_BANANAPI
const char *piModelNames[6] =
{
"Unknown",
@ -71,16 +71,10 @@ const char *piModelNames[6] =
"Model B",
"Model B+",
"Compute Module",
#ifdef CONFIG_ORANGEPI_2G_IOT
"OrangePi 2G-IOT",
#elif CONFIG_ORANGEPI_PC2 || CONFIG_ORANGEPI_ZEROPLUS2_H5 || CONFIG_ORANGEPI_ZEROPLUS || CONFIG_ORANGEPI_PRIME
"OrangePi PC2",
#elif CONFIG_ORANGEPI_A64
"OrangePi Win/Winplus",
#elif CONFIG_ORANGEPI_H3 || CONFIG_ORANGEPI_ZEROPLUS2_H3
"OrangePi H3 family",
#elif CONFIG_ORANGEPI_ZERO
"OrangePi Zero",
#ifdef CONFIG_BANANAPI_M4_BERRY
"BananaPi M4 Berry",
#elif CONFIG_BANANAPI_M4_ZERO
"BananaPi M4 Zero",
#endif
};
#endif
@ -402,7 +396,7 @@ static void doI2Cdetect (UNU int argc, char *argv [])
return ;
}
#ifndef CONFIG_ORANGEPI
#ifndef CONFIG_BANANAPI
if (!moduleLoaded ("i2c_dev"))
{
fprintf (stderr, "%s: The I2C kernel module(s) are not loaded.\n", argv [0]) ;
@ -486,7 +480,7 @@ static void doExports (UNU int argc, UNU char *argv [])
char fName [128] ;
char buf [16] ;
#ifdef CONFIG_ORANGEPI
#ifdef CONFIG_BANANAPI
for (first = 0, j = 0 ; j < 64 ; ++j) // Crude, but effective
#else
for (first = 0, i = 0 ; i < 64 ; ++i) // Crude, but effective
@ -494,11 +488,8 @@ static void doExports (UNU int argc, UNU char *argv [])
{
// Try to read the direction
#ifdef CONFIG_ORANGEPI
i = pinToGpioOrangePi[j];
#ifdef CONFIG_ORANGEPI_RK3399
i += 1000;
#endif
#ifdef CONFIG_BANANAPI
i = pinToGpioBananaPi[j];
#endif
@ -587,11 +578,8 @@ void doExport (int argc, char *argv [])
}
pin = atoi (argv [2]) ;
#ifdef CONFIG_ORANGEPI
pin = pinToGpioOrangePi[pin];
#ifdef CONFIG_ORANGEPI_RK3399
pin += 1000;
#endif
#ifdef CONFIG_BANANAPI
pin = pinToGpioBananaePi[pin];
#endif
@ -708,11 +696,8 @@ void doEdge (int argc, char *argv [])
}
pin = atoi (argv [2]) ;
#ifdef CONFIG_ORANGEPI
pin = pinToGpioOrangePi[pin];
#ifdef CONFIG_ORANGEPI_RK3399
pin += 1000;
#endif
#ifdef CONFIG_BANANAPI
pin = pinToGpioBananaPi[pin];
#endif
mode = argv [3] ;
@ -786,11 +771,8 @@ void doUnexport (int argc, char *argv [])
}
pin = atoi (argv [2]) ;
#ifdef CONFIG_ORANGEPI
pin = pinToGpioOrangePi[pin];
#ifdef CONFIG_ORANGEPI_RK3399
pin += 1000;
#endif
#ifdef CONFIG_BANANAPI
pin = pinToGpioBananaPi[pin];
#endif
@ -821,11 +803,8 @@ void doUnexportall (char *progName)
for (pin = 0 ; pin < 63 ; ++pin)
{
#ifdef CONFIG_ORANGEPI
i = pinToGpioOrangePi[pin];
#ifdef CONFIG_ORANGEPI_RK3399
i += 1000;
#endif
#ifdef CONFIG_BANANAPI
i = pinToGpioBananaPi[pin];
#endif
if ((fd = fopen ("/sys/class/gpio/unexport", "w")) == NULL)
@ -1444,7 +1423,7 @@ int main (int argc, char *argv [])
if ((strcmp (argv [1], "-R") == 0) || (strcmp (argv [1], "-V") == 0))
{
printf ("wiringPi for Orange Pi\n") ;
printf ("wiringPi for Banana Pi\n") ;
exit (EXIT_SUCCESS) ;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -93,7 +93,7 @@ typedef struct {
#define GPIO_PWM GPIO_PWM_OP
//sunxi_pwm
#ifdef OPI
#ifdef BPI
#define SUNXI_PWM_BASE (0x01c21400)
#define SUNXI_PWM_CTRL_REG (SUNXI_PWM_BASE)
#define SUNXI_PWM_CH0_PERIOD (SUNXI_PWM_BASE + 0x4)
@ -182,409 +182,6 @@ typedef struct {
#define SUNXI_PUD_DOWN 2
/*********** Rockchip RK3588 *************/
//gpio0~gpio4 register base addr
#define RK3588_GPIO0_BASE 0xfd8a0000U
#define RK3588_GPIO1_BASE 0xfec20000U
#define RK3588_GPIO2_BASE 0xfec30000U
#define RK3588_GPIO3_BASE 0xfec40000U
#define RK3588_GPIO4_BASE 0xfec50000U
//gpio offset
#define RK3588_GPIO_SWPORT_DR_L_OFFSET 0x00U
#define RK3588_GPIO_SWPORT_DR_H_OFFSET 0x04U
#define RK3588_GPIO_SWPORT_DDR_L_OFFSET 0x08U
#define RK3588_GPIO_SWPORT_DDR_H_OFFSET 0x0cU
#define RK3588_GPIO_EXT_PORT_OFFSET 0x70U
//CRU clock-controller base addr
#define RK3588_CRU_BASE 0xfd7c0000U
#define RK3588_CRU_GATE_CON16_OFFSET 0x0840U //for gpio1 bit 14 15 30 31
#define RK3588_CRU_GATE_CON17_OFFSET 0x0844U //for gpio2/3/4 - bit 0 1 2 3 4 5 16 17 18 19 20 21
#define RK3588_PMU1CRU_BASE 0xfd7f0000U
#define RK3588_PMU1CRU_GATE_CON5_OFFSET 0x0814U //for gpio0 - bit 5 6 21 22
#define RK3588_GPIO_NUM (0x40)
#define RK3588_GPIO_BIT(x) (1UL << (x))
//gpio iomux
#define RK3588_PMU1_IOC_BASE 0xfd5f0000U
#define RK3588_PMU1_IOC_GPIO0A_IOMUX_SEL_L 0x00U //gpio0a0~gpio0b3
#define RK3588_PMU1_IOC_GPIO0A_IOMUX_SEL_H 0x04U //gpio0a4~gpio0b7
#define RK3588_PMU1_IOC_GPIO0B_IOMUX_SEL_L 0x08U //gpio0b0~gpio0b3
#define RK3588_PMU2_IOC_BASE 0xfd5f4000U
#define RK3588_PMU2_IOC_GPIO0B_IOMUX_SEL_H 0x00U //gpio0a5~gpio0b7
#define RK3588_PMU2_IOC_GPIO0C_IOMUX_SEL_L 0x04U //gpio0a0~gpio0b3
#define RK3588_PMU2_IOC_GPIO0C_IOMUX_SEL_H 0x08U //gpio0a4~gpio0b7
#define RK3588_PMU2_IOC_GPIO0D_IOMUX_SEL_L 0x0cU //gpio0a0~gpio0b3
#define RK3588_PMU2_IOC_GPIO0D_IOMUX_SEL_H 0x10U //gpio0a4~gpio0b6
#define RK3588_BUS_IOC_BASE 0xfd5f8000U
//gpio pull up/down
#define RK3588_VCCIO1_4_IOC_BASE 0xfd5f9000U
#define RK3588_VCCIO3_5_IOC_BASE 0xfd5fa000U
#define RK3588_VCCIO6_IOC_BASE 0xfd5fc000U
#define RK3588_PMU1_IOC_GPIO0A_P 0x0020U
#define RK3588_PMU1_IOC_GPIO0B_P 0x0024U
#define RK3588_PMU2_IOC_GPIO0B_P 0x0028U
#define RK3588_PMU2_IOC_GPIO0C_P 0x002cU
#define RK3588_PMU2_IOC_GPIO0D_P 0x0030U
#define RK3588_VCCIO1_4_IOC_GPIO1A_P 0x0110U
#define RK3588_VCCIO3_5_IOC_GPIO2A_P 0x0120U
#define RK3588_VCCIO6_IOC_GPIO4A_P 0x0140U
//pwm register base addr
//#define RK3588_CRU_BASE 0xfd7c0000U
//#define RK3588_PMU1CRU_BASE 0xfd7f0000U
#define RK3588_PWM0_BASE 0xfd8b0000U
#define RK3588_PWM1_BASE 0xfe8d0000U
#define RK3588_PWM2_BASE 0xfebe0000U
#define RK3588_PWM3_BASE 0xfebf0000U
//cru
#define RK3588_CRU_GATE_CON19 (RK3588_CRU_BASE + 0x084CU) //for busioc_clk_en
#define RK3588_CRU_GATE_CON15 (RK3588_CRU_BASE + 0x083CU) //for pwm123_clk_en
#define RK3588_PMU1CRU_GATE_CON1 (RK3588_PMU1CRU_BASE +0x0804U) //for pmu1pwm_clk_en
//CH0
#define RK3588_CH0_PERIOD_HPR (RK3588_PWM_BASE + 0x04)
#define RK3588_CH0_DUTY_LPR (RK3588_PWM_BASE + 0x08)
#define RK3588_CH0_CTRL (RK3588_PWM_BASE + 0x0C)
//CH1
#define RK3588_CH1_PERIOD_HPR (RK3588_PWM_BASE + 0x14)
#define RK3588_CH1_DUTY_LPR (RK3588_PWM_BASE + 0x18)
#define RK3588_CH1_CTRL (RK3588_PWM_BASE + 0x1C)
//CH2
#define RK3588_CH2_PERIOD_HPR (RK3588_PWM_BASE + 0x24)
#define RK3588_CH2_DUTY_LPR (RK3588_PWM_BASE + 0x28)
#define RK3588_CH2_CTRL (RK3588_PWM_BASE + 0x2C)
//CH3
#define RK3588_CH3_PERIOD_HPR (RK3588_PWM_BASE + 0x34)
#define RK3588_CH3_DUTY_LPR (RK3588_PWM_BASE + 0x38)
#define RK3588_CH3_CTRL (RK3588_PWM_BASE + 0x3C)
//for short——pwm
#define RK3588_PWM_BASE (rk3588_soc_info_t.pwm_base)
#define RK3588_PWM_MUX (rk3588_soc_info_t.pwm_mux)
#define RK3588_PWM_MUX_VAL (rk3588_soc_info_t.pwm_mux_val)
#define RK3588_PWM_MUX_OFFSET (rk3588_soc_info_t.pwm_mux_offset)
#define RK3588_CH_PERIOD_HPR (rk3588_soc_info_t.ch_period_hpr)
#define RK3588_CH_DUTY_LPR (rk3588_soc_info_t.ch_duty_lpr)
#define RK3588_CH_CTRL (rk3588_soc_info_t.ch_crtl)
//pwm_ctrl_offset
#define RK3588_RPT (24) // 24 ~ 31
#define RK3588_SCALE (16) // 16 ~ 23
#define RK3588_PRESCALE (12) // 12 ~ 14
#define RK3588_CLK_SRC_SEL (10)
#define RK3588_CLK_SEL (9)
#define RK3588_FORCE_CLK_EN (8)
#define RK3588_CH_CNT_EN (7)
#define RK3588_CONLOCK (6)
#define RK3588_OUTPUT_MODE (5)
#define RK3588_INACTIVE_POL (4)
#define RK3588_DUTY_POL (3)
#define RK3588_PWM_MODE (1) // 1 ~ 2
#define RK3588_PWM_EN (0)
typedef struct {
unsigned int * gpio0_base;
unsigned int * gpio1_base;
unsigned int * gpio2_base;
unsigned int * gpio3_base;
unsigned int * gpio4_base;
unsigned int * pmu1_ioc_base;
unsigned int * pmu2_ioc_base;
unsigned int * bus_ioc_base;
unsigned int * cur_base;
unsigned int * pmu1cur_base;
unsigned int * vccio1_4_ioc_base;
unsigned int * vccio3_5_ioc_base;
unsigned int * vccio6_ioc_base;
unsigned int * pwm0_base;
unsigned int * pwm1_base;
unsigned int * pwm2_base;
unsigned int * pwm3_base;
unsigned int pwm_base;
unsigned int pwm_mux;
unsigned int pwm_mux_val;
unsigned int pwm_mux_offset;
unsigned int ch_period_hpr;
unsigned int ch_duty_lpr;
unsigned int ch_crtl;
} rk3588_soc_info;
/*********** Rockchip RK3588 *************/
/*********** Rockchip RK3566 *************/
//gpio0~gpio4 register base addr
#define RK3566_GPIO0_BASE 0xfdd60000U
#define RK3566_GPIO1_BASE 0xfe740000U
#define RK3566_GPIO2_BASE 0xfe750000U
#define RK3566_GPIO3_BASE 0xfe760000U
#define RK3566_GPIO4_BASE 0xfe770000U
//gpio offset
#define RK3566_GPIO_SWPORT_DR_L_OFFSET 0x00U
#define RK3566_GPIO_SWPORT_DR_H_OFFSET 0x04U
#define RK3566_GPIO_SWPORT_DDR_L_OFFSET 0x08U
#define RK3566_GPIO_SWPORT_DDR_H_OFFSET 0x0cU
#define RK3566_GPIO_EXT_PORT_OFFSET 0x70U
#define RK3566_PMU_GRF_BASE 0xfdc20000U
#define RK3566_SYS_GRF_BASE 0xfdc60000U
#define RK3566_PMU_CRU_BASE 0xfdd00000U
#define RK3566_CRU_BASE 0xFdd20000U
//clock
#define RK3566_CRU_GATE_CON31_OFFSET 0x37CU
#define RK3566_CRU_GATE_CON31 (RK3566_CRU_BASE + 0x37CU)
#define RK3566_CRU_GATE_CON32_OFFSET 0x380U
#define RK3566_CRU_GATE_CON32 (RK3566_CRU_BASE + 0x380U)
#define RK3566_PMUCRU_PMUGATE_CON01_OFFSET 0x184U //bit 9 bit10 0 enable
//iomux + pull up/down
#define RK3566_GRF_GPIO1A_IOMUX_L_OFFSET 0x00U
#define RK3566_GRF_GPIO1A_P_OFFSET 0x80U
#define RK3566_PMU_GRF_GPIO0A_IOMUX_L_OFFSET 0x00U
#define RK3566_PMU_GRF_GPIO0A_P_OFFSET 0x20U
//pwm mux register
#define RK3566_PWM_MUX_REG (RK3566_SYS_GRF_BASE + 0x70)
//pwm register base addr
#define RK3566_PWM2_BASE 0xfe6f0000U
#define RK3566_PWM3_BASE 0xfe700000U
//CH3
#define RK3566_CH3_PERIOD_HPR (RK3566_PWM_BASE + 0x34)
#define RK3566_CH3_DUTY_LPR (RK3566_PWM_BASE + 0x38)
#define RK3566_CH3_CTRL (RK3566_PWM_BASE + 0x3C)
//for short——pwm
#define RK3566_CRU_GATE_CON (rk3566_soc_info_t.cru_gate_con)
#define RK3566_CRU_GATE_CON_OFFSET (rk3566_soc_info_t.cru_gate_con_offset)
#define RK3566_PWM_BASE (rk3566_soc_info_t.pwm_base)
#define RK3566_PWM_MUX (rk3566_soc_info_t.pwm_mux)
#define RK3566_PWM_MUX_VAL (rk3566_soc_info_t.pwm_mux_val)
#define RK3566_PWM_MUX_OFFSET (rk3566_soc_info_t.pwm_mux_offset)
#define RK3566_CH_PERIOD_HPR (rk3566_soc_info_t.ch_period_hpr)
#define RK3566_CH_DUTY_LPR (rk3566_soc_info_t.ch_duty_lpr)
#define RK3566_CH_CTRL (rk3566_soc_info_t.ch_crtl)
//pwm_ctrl_offset
#define RK3566_RPT (24) // 24 ~ 31
#define RK3566_SCALE (16) // 16 ~ 23
#define RK3566_PRESCALE (12) // 12 ~ 14
#define RK3566_CLK_SRC_SEL (10)
#define RK3566_CLK_SEL (9)
#define RK3566_FORCE_CLK_EN (8)
#define RK3566_CH_CNT_EN (7)
#define RK3566_CONLOCK (6)
#define RK3566_OUTPUT_MODE (5)
#define RK3566_INACTIVE_POL (4)
#define RK3566_DUTY_POL (3)
#define RK3566_PWM_MODE (1) // 1 ~ 2
#define RK3566_PWM_EN (0)
typedef struct {
unsigned int * gpio0_base;
unsigned int * gpio1_base;
unsigned int * gpio2_base;
unsigned int * gpio3_base;
unsigned int * gpio4_base;
unsigned int * pmu_grf_base;
unsigned int * sys_grf_base;
unsigned int * cru_base;
unsigned int * pmu_cru_base;
unsigned int * pwm2_base;
unsigned int * pwm3_base;
unsigned int cru_gate_con;
unsigned int cru_gate_con_offset;
unsigned int pwm_base;
unsigned int pwm_mux;
unsigned int pwm_mux_val;
unsigned int pwm_mux_offset;
unsigned int ch_period_hpr;
unsigned int ch_duty_lpr;
unsigned int ch_crtl;
} rk3566_soc_info;
/*********** Rockchip RK3566 *************/
/*********** Rockchip RK3399 *************/
#define RK3399_GPIO1_BASE 0xff730000U
#define RK3399_GPIO2_BASE 0xff780000U
#define RK3399_GPIO4_BASE 0xff790000U
#define RK3399_GPIO_NUM (0x40)
#define RK3399_GPIO_BIT(x) (1UL << (x))
#define RK3399_GPIO_SWPORTA_DR_OFFSET 0x00U
#define RK3399_GPIO_SWPORTA_DDR_OFFSET 0x04U
#define RK3399_GPIO_EXT_PORTA_OFFSET 0x50U
#define RK3399_GRF_GPIO2_3_4_P_OFFSET 0x00040U
#define RK3399_PMUGRF_GPIO0_1_P_OFFSET 0x00040U
#define RK3399_PMUGRF_BASE 0xff320000U
#define RK3399_GRF_BASE 0xff77e000U
#define RK3399_CRU_BASE 0xff760000U
#define RK3399_PMUCRU_BASE 0xff750000U
#define RK3399_CRU_CLKGATE_CON31_OFFSET 0x037cU //bit 3 4 5
#define RK3399_PMUCRU_CLKGATE_CON1_OFFSET 0x0104U
typedef struct {
unsigned int * gpio2_base;
unsigned int * grf_base;
unsigned int * cru_base;
unsigned int * pmucru_base;
unsigned int * pmugrf_base;
unsigned int * gpio1_base;
unsigned int * gpio4_base;
} rk3399_soc_info;
/*********** Rockchip RK3399 *************/
/*********** Rockchip RK3328 *************/
#define RK3328_GPIO2_BASE 0xff230000
#define RK3328_GPIO3_BASE 0xff240000
#define RK3328_GPIO_NUM (0x40)
#define RK3328_GPIO_SWPORTA_DR_OFFSET 0x00
#define RK3328_GPIO_SWPORTA_DDR_OFFSET 0x04
#define RK3328_GPIO_EXT_PORTA_OFFSET 0x50
#define RK3328_GRF_BASE 0xff100000
#define RK3328_CRU_BASE 0xff440000
#define RK3328_CRU_CLKGATE_CON16_OFFSET 0x0240 //bit 7 8 9 10 9877
typedef struct {
unsigned int * gpio2_base;
unsigned int * gpio3_base;
unsigned int * cru_base;
unsigned int * grf_base;
} rk3328_soc_info;
/*********** Rockchip RK3328 *************/
/*************** S905D3 ******************/
#define S905D3_GPIO_BASE 0xFF634000
#define S905D3_GPIO_AO_BASE 0xFF800000
#define S905D3_GPIO_PWM_BASE 0xFFD19000
#define S905D3_GPIO_PWM_AO_BASE 0xFF802000
//GPIOA
#define S905D3_GPIOA_OUT_EN_REG (S905D3_GPIO_BASE + 0x120)
#define S905D3_GPIOA_OUT_REG (S905D3_GPIO_BASE + 0x121)
#define S905D3_GPIOA_IN_REG (S905D3_GPIO_BASE + 0x122)
#define S905D3_GPIOA_PUPD_REG (S905D3_GPIO_BASE + 0x13F)
#define S905D3_GPIOA_PUEN_REG (S905D3_GPIO_BASE + 0x14D)
#define S905D3_GPIOA_MUX_REG1 (S905D3_GPIO_BASE + 0x1BD)
#define S905D3_GPIOA_MUX_REG2 (S905D3_GPIO_BASE + 0x1BE)
//GPIOC
#define S905D3_GPIOC_OUT_EN_REG (S905D3_GPIO_BASE + 0x113)
#define S905D3_GPIOC_OUT_REG (S905D3_GPIO_BASE + 0x114)
#define S905D3_GPIOC_IN_REG (S905D3_GPIO_BASE + 0x115)
#define S905D3_GPIOC_PUPD_REG (S905D3_GPIO_BASE + 0x13B)
#define S905D3_GPIOC_PUEN_REG (S905D3_GPIO_BASE + 0x149)
#define S905D3_GPIOC_MUX_REG (S905D3_GPIO_BASE + 0x1B9)
//GPIOH
#define S905D3_GPIOH_OUT_EN_REG (S905D3_GPIO_BASE + 0x119)
#define S905D3_GPIOH_OUT_REG (S905D3_GPIO_BASE + 0x11A)
#define S905D3_GPIOH_IN_REG (S905D3_GPIO_BASE + 0x11B)
#define S905D3_GPIOH_PUPD_REG (S905D3_GPIO_BASE + 0x13D)
#define S905D3_GPIOH_PUEN_REG (S905D3_GPIO_BASE + 0x14B)
#define S905D3_GPIOH_MUX_REG1 (S905D3_GPIO_BASE + 0x1BB)
#define S905D3_GPIOH_MUX_REG2 (S905D3_GPIO_BASE + 0x1BC)
//GPIOAO
#define S905D3_GPIOAO_OUT_EN_REG (S905D3_GPIO_AO_BASE + 0x109)
#define S905D3_GPIOAO_OUT_REG (S905D3_GPIO_AO_BASE + 0x10D)
#define S905D3_GPIOAO_IN_REG (S905D3_GPIO_AO_BASE + 0x10A)
#define S905D3_GPIOAO_PUPD_REG (S905D3_GPIO_AO_BASE + 0x10B)
#define S905D3_GPIOAO_PUEN_REG (S905D3_GPIO_AO_BASE + 0x10C)
#define S905D3_GPIOAO_MUX_REG1 (S905D3_GPIO_AO_BASE + 0x105)
#define S905D3_GPIOAO_MUX_REG2 (S905D3_GPIO_AO_BASE + 0x106)
//for short——gpio
#define S905D3_GPIO_OUT_EN (s905d3_gpio_info_t.gpio_out_en)
#define S905D3_GPIO_OUT (s905d3_gpio_info_t.gpio_out)
#define S905D3_GPIO_IN (s905d3_gpio_info_t.gpio_in)
#define S905D3_GPIO_PUPD (s905d3_gpio_info_t.gpio_pupd)
#define S905D3_GPIO_PUEN (s905d3_gpio_info_t.gpio_puen)
#define S905D3_GPIO_MUX (s905d3_gpio_info_t.gpio_mux)
#define S905D3_GPIO_OUT_EN_OFFSET (s905d3_gpio_info_t.gpio_out_en_offset)
#define S905D3_GPIO_OUT_OFFSET (s905d3_gpio_info_t.gpio_out_offset)
#define S905D3_GPIO_IN_OFFSET (s905d3_gpio_info_t.gpio_in_offset)
#define S905D3_GPIO_PUPD_OFFSET (s905d3_gpio_info_t.gpio_pupd_offset)
#define S905D3_GPIO_PUEN_OFFSET (s905d3_gpio_info_t.gpio_puen_offset)
#define S905D3_GPIO_MUX_OFFSET (s905d3_gpio_info_t.gpio_mux_offset)
//PWM
#define S905D3_PWM_DUTY_CYCLE_F_REG (S905D3_GPIO_PWM_BASE + 0x01)
#define S905D3_PWM_MISC_EF_REG (S905D3_GPIO_PWM_BASE + 0x02)
#define S905D3_PWM_DUTY_CYCLE_AO_C_REG (S905D3_GPIO_PWM_AO_BASE)
#define S905D3_PWM_MISC_AO_CD_REG (S905D3_GPIO_PWM_AO_BASE + 0x02)
//for short——pwm
#define S905D3_PWM_DUTY_CYCLE (s905d3_gpio_info_t.pwm_duty_cycle)
#define S905D3_PWM_MISC (s905d3_gpio_info_t.pwm_misc)
//PWM_MISC_OFFSET
#define S905D3_PWM_CLK_EN_1 (23)
#define S905D3_PWM_CLK_DIV_1 (16) // 22 ~ 16
#define S905D3_PWM_CLK_EN_0 (15)
#define S905D3_PWM_CLK_DIV_0 (8) // 8 ~ 14
#define S905D3_PWM_CLK_SEL_1 (6) // 7 ~ 6
#define S905D3_PWM_CLK_SEL_0 (4) // 5 ~ 4
#define S905D3_PWM_EN_1 (1)
#define S905D3_PWM_EN_0 (0)
typedef struct {
unsigned int * gpio_base;
unsigned int * gpio_ao_base;
unsigned int * gpio_pwm_base;
unsigned int * gpio_pwm_ao_base;
unsigned int gpio_out_en;
unsigned int gpio_out;
unsigned int gpio_in;
unsigned int gpio_pupd;
unsigned int gpio_puen;
unsigned int gpio_mux;
unsigned int gpio_out_en_offset;
unsigned int gpio_out_offset;
unsigned int gpio_in_offset;
unsigned int gpio_pupd_offset;
unsigned int gpio_puen_offset;
unsigned int gpio_mux_offset;
unsigned int pwm_duty_cycle;
unsigned int pwm_misc;
} s905d3_gpio_info;
/*************** S905D3 ******************/
// Mask for the bottom 64 pins which belong to the Raspberry Pi
// The others are available for the other devices
@ -639,51 +236,10 @@ extern int wiringPiDebug;
// Pi model types and version numbers
// Intended for the GPIO program Use at your own risk.
/* Allwinner H6 */
#define PI_MODEL_3 0
#define PI_MODEL_LTIE_2 1
/* Allwinner H618 */
#define PI_MODEL_ZERO 0
#define PI_MODEL_BERRY 1
/* Allwinner H2+ */
#define PI_MODEL_ZERO 2
/* Allwinner H3 */
#define PI_MODEL_H3 3
#define PI_MODEL_ZERO_PLUS_2 4
/* Allwinner A64 */
#define PI_MODEL_WIN 5
/* Allwinner H5 */
#define PI_MODEL_PRIME 6
#define PI_MODEL_PC_2 7
#define PI_MODEL_ZERO_PLUS 8
/* Allwinner H616 */
#define PI_MODEL_ZERO_2 9
#define PI_MODEL_ZERO_2_W 10
/* Rockchip RK3399 */
#define PI_MODEL_800 15
#define PI_MODEL_4 16
#define PI_MODEL_4_LTS 17
#define PI_MODEL_RK3399 18
/* Rockchip RK3328 */
#define PI_MODEL_R1_PLUS 22
/* Rockchip RK3588(s) */
#define PI_MODEL_900 23
#define PI_MODEL_5 24
#define PI_MODEL_5B 25
#define PI_MODEL_5_PLUS 26
/* Rockchip RK3566 */
#define PI_MODEL_CM4 27
#define PI_MODEL_3B 28
/* S905D3 */
#define PI_MODEL_3_PLUS 29
extern const char *piModelNames [16] ;
@ -760,7 +316,7 @@ extern "C" {
// Internal
#ifdef CONFIG_ORANGEPI
#ifdef CONFIG_BANANAPI
extern void piGpioLayoutOops (const char *why);
#endif
@ -802,9 +358,6 @@ extern int physPinToGpio(int physPin) ;
extern void setPadDrive(int group, int value) ;
extern int getAlt(int pin) ;
extern void H618_set_pwm_reg(int pin,sunxi_gpio_info *sunxi_gpio_info_ptr) ;
extern void s905d3_set_gpio_reg(int pin,s905d3_gpio_info *s905d3_gpio_info_ptr) ;
extern void rk3588_set_pwm_reg(int pin,rk3588_soc_info *rk3588_soc_info_ptr) ;
extern void rk3566_set_pwm_reg(int pin,rk3566_soc_info *rk3566_soc_info_ptr) ;
extern void sunxi_pwm_set_enable(int en) ;
extern void pwmToneWrite(int pin, int freq) ;
extern void pwmSetMode(int pin,int mode) ;
@ -841,12 +394,12 @@ extern unsigned int micros (void) ;
extern unsigned int readR(unsigned int addr);
extern void writeR(unsigned int val, unsigned int addr);
extern int OrangePi_get_gpio_mode(int pin);
extern int OrangePi_set_gpio_mode(int pin, int mode);
extern int OrangePi_digitalRead(int pin);
extern int OrangePi_digitalWrite(int pin, int value);
extern int OrangePi_set_gpio_alt(int pin, int mode);
extern void OrangePi_set_gpio_pullUpDnControl (int pin, int pud);
extern int BananaPi_get_gpio_mode(int pin);
extern int BananaPi_set_gpio_mode(int pin, int mode);
extern int BananaPi_digitalRead(int pin);
extern int BananaPi_digitalWrite(int pin, int value);
extern int BananaPi_set_gpio_alt(int pin, int mode);
extern void BananaPi_set_gpio_pullUpDnControl (int pin, int pud);
extern void sunxi_pwm_set_act(int pin,int act_cys);
extern void sunxi_pwm_set_period(int pin,unsigned int period_cys);
extern void sunxi_pwm_set_clk(int pin,int clk);