How to use GPIO for RK3399 RSB4710

From ESS-WIKI
Jump to: navigation, search

Configuration

The RK3399 bank/bit notation for GPIOs must be formed as "GPIO<GPIO_bank>_<gpio_bit>" 

The numeric value of GPIO is calculated as follows:

32 x (gpio_bank) + gpio_bit

gpio_bit : A0~A7 0-7 B0~B7 8-15 C0~C7 16-23 D0~D7 24-31

E.g. GPIO2_B0 becomes 72

RSB-4710

GPIO Number GPIO formed Numeric Representation
GPIO1
GPIO2_B0
72
GPIO2
GPIO1_C1
50
GPIO3
GPIO4_A3
131
GPIO4
GPIO3_D4
124
GPIO5
GPIO4_A4
132
GPIO6
GPIO0_B0
8

Note:

GPIO3 is used to mute speak in later version.

ROM-5780

GPIO Number
GPIO formed
Numeric Representation
GPIO0
GPIO1_A2
34
GPIO1
GPIO1_A3
35
GPIO2
GPIO1_B1
41
GPIO3
GPIO1_B2
42
GPIO4
GPIO1_B5
45
GPIO5
GPIO1_C2
50
GPIO6
GPIO1_C4
52
GPIO7
GPIO1_C6
54
GPIO8
GPIO1_C7
55
GPIO9
GPIO2_A2
66
GPIO10
GPIO2_A3
67
GPIO11
GPIO4_C5
149

Test

Here we take GPIO1 of 4710 as an example.5780 is similar set up.

Export GPIO then you can use control GPIO from userr space through sysfs

Export GPIO1

# echo 72 > /sys/class/gpio/export

Set GPIO direction to in/out

# echo "out" > /sys/class/gpio/gpio72/direction

Set GPIO value 0/1 if GPIO pin define is output

#  echo 1 > /sys/class/gpio/gpio72/value

Used as IRQ signal

Note:You have to configure GPIO to input

#  echo "rising" > /sys/class/gpio/gpio72/edge
  • rising: Trigger on rising edge
  • falling: Trigger on falling edge
  • both: Trigger on both edges
  • none: Disable interrupt on both edges

Unexport GPIO1

# echo 72 > /sys/class/gpio/unexport

Test

GPIO1 and GPIO2 are taken as an example:

  • Connect GPIO1 and GPIO2
  • Export GPIO1 and GPIO2
# echo 72 > /sys/class/gpio/export
# echo 50 > /sys/class/gpio/export
  • Set GPIO 1 to output
# echo "out" > /sys/class/gpio/gpio72/direction
  • Set GPIO 2 to input
# echo "in" > /sys/class/gpio/gpio50/direction
  • Change GPIO1 to 1 and read GPIO2value
# echo 1 > /sys/class/gpio/gpio72/value
# cat /sys/class/gpio/gpio50/value 
1
  • Change GPIO1 to 0 and read GPIO2 value
# echo 0 > /sys/class/gpio/gpio72/value
# cat /sys/class/gpio/gpio50/value 
0