GPIO API¶
4G LTE Module GPIO Mapping¶
GPIO Name |
EC600U |
EC200U |
N58 |
N716 |
L610 |
EG915U |
|---|---|---|---|---|---|---|
GPIO_0 |
Pin 61 |
Pin 27 |
Pin 50 |
Pin 99 |
Pin 27 |
Pin 4 |
GPIO_1 |
Pin 58 |
Pin 26 |
Pin 90 |
Pin 100 |
Pin 26 |
Pin 5 |
GPIO_2 |
Pin 59 |
Pin 24 |
Pin 80 |
Pin 101 |
Pin 24 |
Pin 6 |
GPIO_3 |
Pin 60 |
Pin 25 |
Pin 78 |
Pin 102 |
Pin 25 |
Pin 7 |
GPIO_4 |
Pin 69 |
Pin 13 |
Pin 96 |
Pin 54 |
Pin 13 |
Pin 1 |
GPIO_5 |
Pin 70 |
Pin 135 |
Pin 39 |
Pin 38 |
Pin 135 |
Pin 20 |
GPIO_6 |
– |
– |
– |
– |
– |
– |
GPIO_7 |
Pin 118 |
Pin 133 |
Pin 25 |
Pin 89 |
Pin 133 |
Pin 65 |
GPIO_8 |
Pin 99 |
Pin 134 |
– |
– |
Pin 134 |
Pin 104 |
GPIO_9 |
Pin 98 |
Pin 132 |
Pin 2 |
Pin 45 |
Pin 132 |
Pin 11 |
GPIO_10 |
Pin 95 |
Pin 131 |
Pin 79 |
Pin 32 |
Pin 131 |
Pin 12 |
GPIO_11 |
Pin 119 |
Pin 130 |
Pin 83 |
Pin 21 |
Pin 130 |
Pin 13 |
GPIO_12 |
Pin 100 |
Pin 129 |
Pin 13 |
Pin 22 |
Pin 129 |
Pin 14 |
GPIO_13 |
Pin 54 |
Pin 5 |
– |
Pin 67 |
Pin 5 |
Pin 21 |
GPIO_14 |
Pin 57 |
Pin 141 |
Pin 82 |
Pin 71 |
Pin 141 |
Pin 40 |
GPIO_15 |
Pin 56 |
Pin 142 |
Pin 81 |
Pin 70 |
Pin 142 |
Pin 41 |
GPIO_16 |
Pin 11 |
Pin 41 |
Pin 59 |
Pin 122 |
Pin 41 |
Pin 103 |
GPIO_17 |
Pin 12 |
Pin 42 |
Pin 58 |
Pin 121 |
Pin 42 |
Pin 114 |
GPIO_18 |
Pin 120 |
Pin 61 |
Pin 54 |
Pin 115 |
Pin 61 |
Pin 111 |
GPIO_19 |
Pin 16 |
Pin 62 |
Pin 60 |
Pin 65 |
Pin 62 |
Pin 115 |
GPIO_20 |
Pin 10 |
Pin 63 |
Pin 61 |
Pin 106 |
Pin 63 |
Pin 95 |
GPIO_21 |
Pin 14 |
Pin 66 |
Pin 55 |
Pin 116 |
Pin 66 |
Pin 97 |
GPIO_22 |
Pin 15 |
Pin 6 |
Pin 56 |
Pin 114 |
Pin 6 |
Pin 98 |
GPIO_23 |
Pin 13 |
Pin 23 |
Pin 57 |
Pin 117 |
Pin 23 |
Pin 78 |
GPIO_24 |
Pin 48 |
Pin 33 |
Pin 5 |
Pin 52 |
Pin 33 |
Pin 38 |
GPIO_25 |
Pin 39 |
Pin 31 |
Pin 7 |
Pin 47 |
Pin 31 |
Pin 30 |
GPIO_26 |
Pin 40 |
Pin 30 |
Pin 8 |
Pin 48 |
Pin 30 |
Pin 39 |
GPIO_27 |
Pin 49 |
Pin 29 |
Pin 3 |
Pin 50 |
Pin 29 |
Pin 18 |
GPIO_28 |
Pin 50 |
Pin 28 |
Pin 4 |
Pin 51 |
Pin 28 |
Pin 19 |
GPIO_29 |
Pin 53 |
Pin 1 |
Pin 23 |
Pin 87 |
Pin 1 |
Pin 84 |
GPIO_30 |
Pin 52 |
Pin 2 |
Pin 22 |
Pin 86 |
Pin 2 |
Pin 86 |
GPIO_31 |
Pin 51 |
Pin 4 |
Pin 24 |
Pin 88 |
Pin 4 |
Pin 85 |
GPIO_0_ALT |
Pin 66 |
Pin 125 |
Pin 68 |
Pin 92 |
Pin 125 |
Pin 116 |
GPIO_1_ALT |
Pin 63 |
Pin 124 |
Pin 67 |
Pin 90 |
Pin 124 |
Pin 106 |
GPIO_2_ALT |
Pin 67 |
Pin 123 |
Pin 66 |
Pin 93 |
Pin 123 |
Pin 105 |
GPIO_3_ALT |
Pin 65 |
Pin 122 |
Pin 65 |
Pin 91 |
Pin 122 |
Pin 16 |
GPIO_4_ALT |
Pin 137 |
Pin 121 |
Pin 73 |
Pin 94 |
Pin 121 |
Pin 108 |
GPIO_5_ALT |
Pin 62 |
Pin 119 |
Pin 64 |
Pin 96 |
Pin 119 |
Pin 92 |
GPIO_9_ALT |
Pin 1 |
Pin 40 |
Pin 84 |
Pin 6 |
Pin 40 |
Pin 26 |
GPIO_10_ALT |
Pin 4 |
Pin 37 |
Pin 87 |
Pin 7 |
Pin 37 |
Pin 25 |
GPIO_11_ALT |
Pin 3 |
Pin 38 |
Pin 86 |
Pin 5 |
Pin 38 |
Pin 64 |
GPIO_12_ALT |
Pin 2 |
Pin 39 |
Pin 85 |
Pin 4 |
Pin 39 |
Pin 88 |
GPIO_18_ALT |
Pin 34 |
Pin 65 |
Pin 51 |
Pin 56 |
Pin 65 |
Pin 37 |
GPIO_19_ALT |
Pin 33 |
Pin 64 |
Pin 52 |
Pin 57 |
Pin 64 |
Pin 36 |
GPIO_20_ALT |
Pin 123 |
Pin 136 |
Pin 70 |
Pin 12 |
Pin 136 |
Pin 28 |
GPIO_21_ALT |
Pin 124 |
Pin 139 |
Pin 69 |
Pin 11 |
Pin 139 |
Pin 27 |
GPIO_22_ALT |
Pin 122 |
Pin 126 |
Pin 71 |
Pin 13 |
Pin 126 |
Pin 83 |
GPIO_23_ALT |
Pin 121 |
Pin 127 |
Pin 72 |
Pin 14 |
Pin 127 |
Pin 42 |
Note
Only one pin can be configured at a time for GPIO function between GPIO_x and GPIO_x_ALT
GSM/NB-IoT Module GPIO Mapping¶
GPIO Name |
MC20U Pin
|
M56 Pin |
MC60 Pin
|
M66 Pin |
BC20 Pin |
SIM868 Pin |
|---|---|---|---|---|---|---|
GPIO_0 |
Pin 47 |
Pin 12 |
Pin 47 |
Pin 16 |
Pin 2 |
Pin 1 |
GPIO_1 |
Pin 37 |
Pin 17 |
Pin 37 |
Pin 19 |
Pin 3 |
Pin 2 |
GPIO_2 |
Pin 35 |
Pin 24 |
Pin 35 |
Pin 20 |
Pin 4 |
Pin 3 |
GPIO_3 |
Pin 36 |
Pin 23 |
Pin 36 |
Pin 21 |
Pin 6 |
Pin 4 |
GPIO_4 |
Pin 38 |
Pin 26 |
Pin 38 |
Pin 22 |
Pin 7 |
Pin 5 |
GPIO_5 |
Pin 39 |
Pin 59 |
Pin 39 |
Pin 23 |
Pin 8 |
Pin 6 |
GPIO_6 |
Pin 59 |
Pin 4 |
Pin 59 |
Pin 28 |
Pin 9 |
Pin 7 |
GPIO_7 |
Pin 61 |
Pin 15 |
Pin 61 |
Pin 29 |
Pin 10 |
Pin 14 |
GPIO_8 |
Pin 62 |
Pin 27 |
Pin 62 |
Pin 30 |
Pin 24 |
Pin 15 |
GPIO_9 |
Pin 60 |
Pin 16 |
Pin 60 |
Pin 31 |
Pin 25 |
Pin 16 |
GPIO_10 |
Pin 3 |
Pin 78 |
Pin 7 |
Pin 32 |
Pin 28 |
Pin 17 |
GPIO_11 |
Pin 4 |
Pin 86 |
Pin 8 |
Pin 33 |
Pin 29 |
Pin 22 |
GPIO_12 |
Pin 7 |
Pin 87 |
Pin 9 |
Pin 15 |
Pin 30 |
Pin 23 |
GPIO_13 |
Pin 8 |
Pin 76 |
Pin 11 |
Pin 17 |
Pin 33 |
Pin 29 |
GPIO_14 |
Pin 9 |
Pin 77 |
Pin 12 |
Pin 18 |
Pin 34 |
Pin 41 |
GPIO_15 |
Pin 10 |
Pin 75 |
Pin 10 |
Pin 25 |
Pin 35 |
Pin 42 |
GPIO_16 |
Pin 13 |
Pin 44 |
Pin 57 |
Pin 38 |
Pin 36 |
Pin 46 |
GPIO_17 |
Pin 46 |
Pin 49 |
Pin 58 |
Pin 39 |
Pin 38 |
Pin 47 |
GPIO_18 |
Pin 55 |
Pin 88 |
Pin 63 |
– |
Pin 39 |
Pin 48 |
GPIO_19 |
Pin 63 |
Pin 45 |
Pin 64 |
– |
Pin 47 |
Pin 49 |
GPIO_20 |
Pin 66 |
Pin 3 |
Pin 65 |
– |
Pin 54 |
Pin 50 |
GPIO_21 |
Pin 56 |
Pin 1 |
Pin 46 |
– |
Pin 57 |
Pin 51 |
GPIO_22 |
Pin 57 |
Pin 53 |
Pin 34* |
– |
Pin 58 |
Pin 52 |
GPIO_23 |
Pin 58 |
Pin 48 |
Pin 33* |
– |
Pin 59 |
Pin 53 |
GPIO_24 |
Pin 64 |
Pin 28 |
Pin 24 |
– |
Pin 60 |
Pin 54 |
GPIO_25 |
Pin 65 |
Pin 89 |
Pin 25 |
– |
Pin 61 |
Pin 55 |
GPIO_26 |
Pin 33 |
Pin 36 |
Pin 30 |
– |
Pin 62 |
Pin 57 |
GPIO_27 |
Pin 34 |
Pin 25 |
Pin 29 |
– |
Pin 63 |
Pin 58 |
GPIO_28 |
Pin 24 |
Pin 40 |
Pin 19 |
– |
Pin 67 |
Pin 64 |
GPIO_29 |
Pin 25 |
Pin 41 |
Pin 21 |
– |
Pin 68 |
Pin 65 |
GPIO_30 |
Pin 30 |
Pin 2 |
Pin 20 |
– |
– |
– |
GPIO_31 |
Pin 29 |
Pin 13 |
Pin 28 |
– |
– |
– |
GPIO_32 |
Pin 19 |
Pin 62 |
– |
– |
– |
– |
GPIO_33 |
Pin 21 |
Pin 65 |
– |
– |
– |
– |
GPIO_34 |
Pin 20 |
Pin 64 |
– |
– |
– |
– |
GPIO_35 |
Pin 28 |
Pin 27 |
– |
– |
– |
– |
GPIO_36 |
Pin 67# |
Pin 66# |
– |
– |
– |
– |
GPIO_37 |
– |
Pin 60# |
– |
– |
– |
– |
GPIO_38 |
– |
Pin 19 |
– |
– |
– |
– |
GPIO_39 |
– |
Pin 29 |
– |
– |
– |
– |
GPIO_40 |
– |
Pin 30 |
– |
– |
– |
– |
GPIO_41 |
– |
Pin 34 |
– |
– |
– |
– |
GPIO_42 |
– |
Pin 35 |
– |
– |
– |
– |
GPIO_43 |
– |
Pin 52 |
– |
– |
– |
– |
GPIO_44 |
– |
Pin 58 |
– |
– |
– |
– |
GPIO_45 |
– |
Pin 69 |
– |
– |
– |
– |
GPIO_46 |
– |
Pin 70 |
– |
– |
– |
– |
GPIO_47 |
– |
Pin 71 |
– |
– |
– |
– |
GPIO_48 |
– |
Pin 80 |
– |
– |
– |
– |
GPIO_49 |
– |
Pin 81 |
– |
– |
– |
– |
GPIO_50 |
– |
Pin 82 |
– |
– |
– |
– |
GPIO_51 |
– |
Pin 31 |
– |
– |
– |
– |
API Reference¶
Header File¶
Source: include/hw/gpio.h
#include <hw/gpio.h>
Functions¶
-
int gpio_request(unsigned int ioname, int flags)¶
Request a GPIO
- Parameters
ioname – name of GPIO from gpioname_e
flags – ORed list of gpio initialization flags gpio_conf_e
- Returns
On success returns handle which can be used with other gpio APIs on failure negative error code is returned
-
int gpio_free(int handle)¶
Free a previously requested gpio
- Parameters
handle – Handle to gpio object returned by gpio_request
- Returns
0 on success, negative error code on failure
-
int gpio_read(int handle)¶
Read input GPIO value
- Parameters
handle – Handle to gpio object returned by gpio_request
- Returns
input gpio level gpio_level_e
-
int gpio_write(int handle, int value)¶
Write output GPIO pin
- Parameters
handle – Handle to gpio object returned by gpio_request
value – gpio level to set gpio_level_e
- Returns
0 on success, negative value on failure
-
int gpio_setdir(int handle, int dir)¶
Set or change gpio direction
- Parameters
handle – Handle to gpio object returned by gpio_request
dir – New gpio configuration, ORed list of GPIO flags gpio_conf_e
- Returns
0 on success, negative value on failure
-
int gpio_trigger_enable(int handle, gpio_callback_f fn, int trigger_time, int flags)¶
Enable GPIO trigger
GPIO driver provide slow trigger option without debounce support to check and confirm active trigger. On active trigger, callback function is called with state of gpio. Triggers are only possible on gpio configured as inputs.
If input level changes after first transition is detected and debounce time, internal debounce timer is reset for resampling of IO state.
- Parameters
handle – Handle to gpio object returned by gpio_request
fn – Callback function of type gpio_callback_f
trigger_time – Debounce time or trigger delay
flags – Type of trigger requested gpio_trigger_e
- Returns
0 on success, negative error code on failure
-
int gpio_trigger_disable(int handle)¶
Disable GPIO trigger
- Parameters
handle – Handle to gpio object returned by gpio_request
- Returns
0 on success, negative error code on failure
-
int gpio_setuserdata(int handle, void *arg)¶
Assign user specific data or application context to GPIO object
- Parameters
handle – Handle to gpio object returned by gpio_request
arg – pointer to user data
- Returns
0 on success, negative value on failure
-
void *gpio_getuserdata(int handle)¶
Get user specific data or application context assigned to gpio object by gpio_setuserdata function
- Parameters
handle – Handle to gpio object returned by gpio_request
- Returns
pointer to user data if data is assigned, NULL otherwise
-
int gpio_readfast(int handle)¶
GPIO Fast read Use with valid IO handle only
- Parameters
handle – Handle to gpio object returned by gpio_request
- Returns
input gpio level gpio_level_e
-
int gpio_writefast(int handle, int value)¶
GPIO Fast write Use with valid IO handle only
- Parameters
handle – Handle to gpio object returned by gpio_request
value – gpio level to set gpio_level_e
- Returns
0 on success, negative value on failure
Type Definitions¶
-
typedef void (*gpio_callback_f)(int handle, int pin, int level)¶
GPIO Callback function prototype
- Param handle
- Param pin
- Param level
Enumerations¶
-
enum gpio_level_e¶
GPIO Level
Values:
-
enumerator GPIO_LEVEL_LOW¶
GPIO Low level
-
enumerator GPIO_LEVEL_HIGH¶
GPIO High level
-
enumerator GPIO_LEVEL_LOW¶
-
enum gpio_conf_e¶
GPIO Configuration Flags
Flags can be ORed together to configure a GPIO.
Values:
-
enumerator GPIO_FLAG_INPUT¶
Configure gpio as input
-
enumerator GPIO_FLAG_OUTPUT¶
Configure gpio as Output
-
enumerator GPIO_FLAG_DEFHIGH¶
Set default state to high during gpio_request
-
enumerator GPIO_FLAG_DEFLOW¶
Set default state to low during gpio_request
-
enumerator GPIO_FLAG_PULLUP¶
Enable weak pullup
-
enumerator GPIO_FLAG_PULLDOWN¶
Enable weak pulldown
-
enumerator GPIO_FLAG_PULLSTRG¶
This flag when combined with GPIO_FLAG_PULLUP or GPIO_FLAG_PULLDOWN enables strong pull-up/pull-down respectively.
-
enumerator GPIO_FLAG_INPUT¶
-
enum gpio_trigger_e¶
GPIO Trigger Levels
Values:
-
enumerator GPIO_TRIG_LOW¶
Trigger High -> Low level transition
-
enumerator GPIO_TRIG_HIGH¶
Trigger Low -> High level transition
-
enumerator GPIO_TRIG_BOTH¶
Trigger on change of either level
-
enumerator GPIO_TRIG_LOW¶
Note
Please refer header file for actual number of GPIOs available for respective board.
Header File¶
Source: include/plat/def_gpio.h
#include <plat/def_gpio.h>
Enumerations¶
-
enum gpioname_e¶
GPIO List Each GPIO can be configured for alternate function via Pinmux APIs, Check “See Also” section for more information
Values:
-
enumerator GPIO_0¶
Pin 12
-
enumerator GPIO_1¶
Pin 17
-
enumerator GPIO_2¶
Pin 24
-
enumerator GPIO_3¶
Pin 23
-
enumerator GPIO_4¶
Pin 26
-
enumerator GPIO_5¶
Pin 59
-
enumerator GPIO_6¶
Pin 4
-
enumerator GPIO_7¶
Pin 15
-
enumerator GPIO_8¶
Pin 27
-
enumerator GPIO_9¶
Pin 16
-
enumerator GPIO_10¶
Pin 78
-
enumerator GPIO_11¶
Pin 86
-
enumerator GPIO_12¶
Pin 87
-
enumerator GPIO_13¶
Pin 76
-
enumerator GPIO_14¶
Pin 77
-
enumerator GPIO_15¶
Pin 75
-
enumerator GPIO_16¶
Pin 44
-
enumerator GPIO_17¶
Pin 49
-
enumerator GPIO_18¶
Pin 88
-
enumerator GPIO_19¶
Pin 45
-
enumerator GPIO_20¶
Pin 3
-
enumerator GPIO_21¶
Pin 1
-
enumerator GPIO_22¶
Pin 53
-
enumerator GPIO_23¶
Pin 48
-
enumerator GPIO_24¶
Pin 28
-
enumerator GPIO_25¶
Pin 89
-
enumerator GPIO_26¶
Pin 36
-
enumerator GPIO_27¶
Pin 25
-
enumerator GPIO_28¶
Pin 40
-
enumerator GPIO_29¶
Pin 41
-
enumerator GPIO_30¶
Pin 2
-
enumerator GPIO_31¶
Pin 13
-
enumerator GPIO_32¶
Pin 62
-
enumerator GPIO_33¶
Pin 65
-
enumerator GPIO_34¶
Pin 64
-
enumerator GPIO_35¶
Pin 27
-
enumerator GPIO_36¶
Pin 66 - Input Only
-
enumerator GPIO_37¶
Pin 60 - Input Only
-
enumerator GPIO_38¶
Pin 19
-
enumerator GPIO_39¶
Pin 29
-
enumerator GPIO_40¶
Pin 30
-
enumerator GPIO_41¶
Pin 34
-
enumerator GPIO_42¶
Pin 35
-
enumerator GPIO_43¶
Pin 52
-
enumerator GPIO_44¶
Pin 58
-
enumerator GPIO_45¶
Pin 69
-
enumerator GPIO_46¶
Pin 70
-
enumerator GPIO_47¶
Pin 71
-
enumerator GPIO_48¶
Pin 80
-
enumerator GPIO_49¶
Pin 81
-
enumerator GPIO_50¶
Pin 82
-
enumerator GPIO_51¶
Pin 31
-
enumerator GPIO_PIN_MAX¶
-
enumerator GPIO_0¶
