Using a GPIO in Linux

Using a GPIO in Linux

Almost all function pins of a SOC are GPIO ( General Purpose Input Output).
They can be configured to serve as a simple input, output or with a special function (i.e. I2C or UART).
Most pins can be configured with additional settings like drive-strength, pull-up or -down, keeper, etc.

Using a GPIO from Command Line

As already mentioned a pin can be configured to serve as GPIO or as a special function.
The following commands only work as expected, when the pin is configured as GPIO!

Path in Sysfs:

/sys/class/gpio

First thing to do, is to export control of a GPIO to userspace by writing its number to 'export':

$ echo 68 > /sys/class/gpio/export

This will create an entry for gpio3.IO[4] = ((bank-1)*32)+pin = ((3-1)*32)+4 = 68 at:

/sys/class/gpio/gpio68

To reverse the effect of exporting GPIO 68 to userspace call:

$ echo 68 > /sys/class/gpio/unexport

Configure GPIO as Input

$ echo in > /sys/class/gpio/gpio68/direction

Read GPIO level

$ cat /sys/class/gpio/gpio68/value

Configure GPIO as Output

$ echo out > /sys/class/gpio/gpio68/direction

Instead of using 'out', you can use 'low' and 'high' to ensure glitch free initialization:

$ echo high > /sys/class/gpio/gpio68/direction
$ echo low > /sys/class/gpio/gpio68/direction

Write GPIO level

Set pin low:

$ echo 0 > /sys/class/gpio/gpio68/value

Set pin high:

$ echo 1 > /sys/class/gpio/gpio68/value

Trizeps VII & Trizeps VIII GPIOs

SODIMM

Name

1

MIC_OUT

 

 

2

AD3

 

 

3

MIC_GND

 

 

4

AD2

 

 

5

LINEIN_L

 

 

6

AD1

 

 

7

LINEIN_R

 

 

8

AD0

 

 

9

AGND

 

 

10

VDDA

 

 

11

AGND

 

 

12

VDDA

 

 

13

HEADPHONE_GND

 

 

14

TSPX

 

 

15

HEADPHONE_L

 

 

16

TSMX

 

 

17

HEADPHONE_R

 

 

18

TSPY

 

 

19

UART3_RXD

gpio4.IO[7]

gpio5.IO[6]

20

TSMY

 

 

21

UART3_TXD

gpio4.IO[6]

gpio5.IO[7]

22

VDD_OTP

 

gpio5.IO[8]

23

UART1_DTR

gpio7.IO[7]

gpio3.IO[19]

24

BATT

 

gpio5.IO[9]

25

UART1_CTS

gpio7.IO[3]

gpio5.IO[27]

26

RESET_IN

gpio2.IO[7]

 

27

UART1_RTS

gpio7.IO[2]

gpio5.IO[26]

28

SPEAKER_P

 

 

29

UART1_DSR

gpio6.IO[14]

gpio3.IO[20]

30

SPEAKER_L

 

 

31

UART1_DCD

gpio6.IO[15]

gpio4.IO[21]

32

UART2_CTS

gpio7.IO[5]

gpio5.IO[29]

33

UART1_RXD

gpio7.IO[1]

gpio5.IO[22]

34

UART2_RTS

gpio7.IO[4]

gpio5.IO[28]

35

UART1_TXD

gpio7.IO[0]

gpio5.IO[23]

36

UART2_RXD

gpio6.IO[18]

gpio5.IO[24]

37

UART1_RI

gpio1.IO[5]

gpio4.IO[22]

38

UART2_TXD

gpio6.IO[17]

gpio5.IO[25]

39

GND

 

 

40

VCC

 

 

41

GND

 

 

42

VCC

 

 

43

IRQ_SP43

gpio2.IO[6]

gpio1.IO[7]

44

LCD_DE

gpio4.IO[17]

 

45

SP45

gpio2.IO[3]

gpio3.IO[4]

46

LCD_D07

gpio4.IO[28]

 

47

SD2_CLK

gpio1.IO[10]

gpio2.IO[13]

48

LCD_D09

gpio4.IO[30]

 

49

CIF_DATA0

gpio5.IO[30]

gpio4.IO[2]

50

LCD_D11

gpio5.IO[5]

 

51

SD2_DATA3

gpio1.IO[12]

gpio2.IO[18]

52

LCD_D12

gpio5.IO[6]

 

53

CIF_DATA1

gpio5.IO[31]

gpio4.IO[3]

54

LCD_D13

gpio5.IO[7]

 

55

SP55

gpio2.IO[5]

gpio3.IO[21]

56

LCD_PCLK

gpio4.IO[16]

 

57

CIF_DATA2

gpio6.IO[0]

gpio4.IO[4]

58

LCD_D03

gpio4.IO[24]

 

59

SD2_CARD_DETECT

gpio1.IO[4]

gpio2.IO[12]

60

LCD_D02

gpio4.IO[23]

 

61

CIF_DATA3

gpio6.IO[1]

gpio4.IO[5]

62

LCD_D08

gpio4.IO[29]

 

63

CIF_DATA4

gpio6.IO[2]

gpio4.IO[6]

64

LCD_D15

gpio5.IO[9]

 

65

CIF_DATA5

gpio6.IO[3]

gpio4.IO[7]

66

LCD_D14

gpio5.IO[8]

 

67

CIF_DATA6

gpio6.IO[4]

gpio4.IO[8]

68

LCD_HSYNC

gpio4.IO[18]

 

69

PWM1

gpio6.IO[9]

gpio5.IO[2]

70

LCD_D01

gpio4.IO[22]

 

71

CIF_DATA7

gpio6.IO[5]

gpio4.IO[9]

72

LCD_D05

gpio4.IO[26]

 

73

CIF_DATA8 / Backlight_Enable

gpio4.IO[20]

gpio3.IO[22]

74

LCD_D10

gpio4.IO[31]

 

75

CIF_DATA9 / SP75

gpio5.IO[28]

gpio3.IO[23]

76

LCD_D00

gpio4.IO[21]

 

77

PWM2