blob: a2721f919c8c1769d06c2e1348e6d2a3915c6be4 [file] [view] [edit]
<!--
// LINT.IfChange
-->
# gpioutil
List, read from, write to, and configure GPIOs.
## Usage
```none
gpioutil <command> [<name>] [<value>]
```
## Commands
### list {#list}
```none
gpioutil list
```
List the known GPIOs.
`list` returns values like this:
```none
[gpio-0] GPIO_HW_ID_3
```
The value inside the brackets (`gpio-0`) is a reference to the pin index.
The value after the brackets (`GPIO_HW_ID_3`) is the `<name>` value to
provide to other `gpioutil` commands. See [GPIO names](#names) for more details.
Aliases: `l`
### read
```none
gpioutil read <name>
```
Read the current value of a GPIO that's configured as OUT.
`<name>` should be one of the values returned from [`list`](#list).
Possible return values are `0` (LOW) or `1` (HIGH).
Aliases: `r`
### write
```none
gpioutil write <name> <value>
```
Write a value to a GPIO that's configured as IN.
`<name>` should be one of the values returned from [`list`](#list).
`<value>` should be `0` (LOW) or `1` (HIGH).
This command doesn't return a value.
Aliases: `w`
### in
```none
gpioutil in <name> <value>
```
Configure a GPIO as IN.
`<name>` should be one of the values returned from [`list`](#list).
`<value>` is the resistor pull. Accepted values are `0`
(GPIO\_PULL\_DOWN), `1` (GPIO\_PULL\_UP), or `2` (GPIO\_NO\_PULL).
This command doesn't return a value.
Aliases: `i`
### out
```none
gpioutil out <name> <value>
```
Configure a GPIO as OUT.
`<name>` should be one of the values returned from [`list`](#list).
`<value>` is the initial OUT value. Accepted values are
`0` (LOW) or `1` (HIGH).
This command doesn't return a value.
Aliases: `o`
### drive
```none
gpioutil drive <name> [<value>]
```
Get or set the drive strength of a GPIO in microamps.
`<name>` should be one of the values returned from [`list`](#list).
When `<value>` is omitted, `drive` returns the current drive strength
of the GPIO in microamps.
When `<value>` is provided, `drive` updates the drive strength of the
GPIO. `<value>` should be in microamps.
Aliases: `d`
### help
```none
gpioutil help
```
Print help text.
Aliases: `h`
## Examples
### List all known GPIOs
```none {:.devsite-disable-click-to-copy}
$ gpioutil list
[gpio-0] GPIO_HW_ID_3
[gpio-1] GPIO_SOC_TH_BOOT_MODE_L
...
```
### Read the current value of a GPIO
```none {:.devsite-disable-click-to-copy}
$ gpioutil read GPIO_HW_ID_3
GPIO Value: 1
```
### Write a LOW value to a GPIO
```none {:.devsite-disable-click-to-copy}
$ gpioutil write GPIO_HW_ID_3 0
```
### Configure a GPIO as IN with a pull-down resistor
```none {:.devsite-disable-click-to-copy}
$ gpioutil in GPIO_HW_ID_3 0
```
### Configure a GPIO as OUT with an initial value of HIGH
```none {:.devsite-disable-click-to-copy}
$ gpioutil out GPIO_HW_ID_3 1
```
### Get the current drive strength of a GPIO in microamps
```none {:.devsite-disable-click-to-copy}
$ gpioutil drive GPIO_HW_ID_3
Drive Strength: 500 ua
```
### Set the drive strength of a GPIO to 500 microamps
```none {:.devsite-disable-click-to-copy}
$ gpioutil drive GPIO_HW_ID_3 500
Set drive strength to 500
```
## Notes
<<./_access.md>>
### GPIO names {#names}
GPIO names are defined in the driver source code and usually match the
datasheet's name for the GPIO. See the `DECL_GPIO_PIN` statements in
[`vim3-gpio.cc`] for an example.
[`vim3-gpio.cc`]: https://cs.opensource.google/fuchsia/fuchsia/+/main:src/devices/board/drivers/vim3/vim3-gpio.cc;l=72
### Source code
Source code for `gpioutil`: [`//src/devices/gpio/bin/gpioutil/`][src]
[src]: https://cs.opensource.google/fuchsia/fuchsia/+/main:src/devices/gpio/bin/gpioutil/
<!--
// LINT.ThenChange(//src/devices/gpio/bin/gpioutil/main.cc)
-->