GPIO Device Interface Functions More...
#include <stddef.h>
#include <stdint.h>
#include "sw/device/lib/base/mmio.h"
#include "sw/device/lib/dif/dif_warn_unused_result.h"
Go to the source code of this file.
Data Structures | |
struct | dif_gpio_params |
Hardware instantiation parameters for GPIO. More... | |
struct | dif_gpio |
A handle to GPIO. More... | |
Typedefs | |
typedef enum dif_gpio_toggle | dif_gpio_toggle_t |
A toggle state: enabled, or disabled. More... | |
typedef struct dif_gpio_params | dif_gpio_params_t |
Hardware instantiation parameters for GPIO. More... | |
typedef struct dif_gpio | dif_gpio_t |
A handle to GPIO. More... | |
typedef enum dif_gpio_result | dif_gpio_result_t |
The result of a GPIO operation. | |
typedef enum dif_gpio_irq_trigger | dif_gpio_irq_trigger_t |
A GPIO interrupt request trigger. More... | |
typedef uint32_t | dif_gpio_pin_t |
A GPIO pin index, ranging from 0 to 31. More... | |
typedef uint32_t | dif_gpio_state_t |
State for all 32 GPIO pins, given as bit fields. More... | |
typedef uint32_t | dif_gpio_mask_t |
A mask for selecting GPIO pins. More... | |
Enumerations | |
enum | dif_gpio_toggle { kDifGpioToggleEnabled = true, kDifGpioToggleDisabled = false } |
A toggle state: enabled, or disabled. More... | |
enum | dif_gpio_result { kDifGpioOk = 0, kDifGpioError = 1, kDifGpioBadArg = 2 } |
The result of a GPIO operation. More... | |
enum | dif_gpio_irq_trigger { kDifGpioIrqTriggerEdgeRising, kDifGpioIrqTriggerEdgeFalling, kDifGpioIrqTriggerLevelLow, kDifGpioIrqTriggerLevelHigh, kDifGpioIrqTriggerEdgeRisingFalling, kDifGpioIrqTriggerEdgeRisingLevelLow, kDifGpioIrqTriggerEdgeFallingLevelHigh } |
A GPIO interrupt request trigger. More... | |
GPIO Device Interface Functions
Definition in file dif_gpio.h.
struct dif_gpio_params |
Hardware instantiation parameters for GPIO.
This struct describes information about the underlying hardware that is not determined until the hardware design is used as part of a top-level design.
Definition at line 51 of file dif_gpio.h.
Data Fields | ||
---|---|---|
mmio_region_t | base_addr | The base address for the GPIO hardware registers. |
struct dif_gpio |
A handle to GPIO.
This type should be treated as opaque by users.
Definition at line 63 of file dif_gpio.h.
Data Fields | ||
---|---|---|
dif_gpio_params_t | params |
typedef enum dif_gpio_irq_trigger dif_gpio_irq_trigger_t |
A GPIO interrupt request trigger.
Each GPIO pin has an associated interrupt that can be independently configured to be edge and/or level sensitive. This enum defines supported configurations for these interrupts.
typedef uint32_t dif_gpio_mask_t |
A mask for selecting GPIO pins.
If the Nth bit is enabled, then the Nth pin is selected by the mask.
Definition at line 152 of file dif_gpio.h.
typedef struct dif_gpio_params dif_gpio_params_t |
Hardware instantiation parameters for GPIO.
This struct describes information about the underlying hardware that is not determined until the hardware design is used as part of a top-level design.
typedef uint32_t dif_gpio_pin_t |
A GPIO pin index, ranging from 0 to 31.
This type serves as the GPIO interrupt request type.
Definition at line 131 of file dif_gpio.h.
typedef uint32_t dif_gpio_state_t |
State for all 32 GPIO pins, given as bit fields.
The Nth bit represents the state of the Nth pin.
This type is also used as a vector of dif_gpio_toggle_t
s, to indicate toggle state across all 32 pins. A set bit corresponds to kDifGpioToggleEnabled
.
It is also used with dif_gpio_irq_disable_all()
and dif_gpio_irq_restore_all()
.
Definition at line 145 of file dif_gpio.h.
typedef struct dif_gpio dif_gpio_t |
A handle to GPIO.
This type should be treated as opaque by users.
typedef enum dif_gpio_toggle dif_gpio_toggle_t |
A toggle state: enabled, or disabled.
This enum may be used instead of a bool
when describing an enabled/disabled state.
This enum may be used with dif_gpio_toggle_vec_t
to set individual bits within it; dif_gpio_toggle_t
's variants are guaranteed to be compatible with dif_gpio_toggle_vec_t
.
enum dif_gpio_irq_trigger |
A GPIO interrupt request trigger.
Each GPIO pin has an associated interrupt that can be independently configured to be edge and/or level sensitive. This enum defines supported configurations for these interrupts.
Definition at line 95 of file dif_gpio.h.
enum dif_gpio_result |
The result of a GPIO operation.
Definition at line 68 of file dif_gpio.h.
enum dif_gpio_toggle |
A toggle state: enabled, or disabled.
This enum may be used instead of a bool
when describing an enabled/disabled state.
This enum may be used with dif_gpio_toggle_vec_t
to set individual bits within it; dif_gpio_toggle_t
's variants are guaranteed to be compatible with dif_gpio_toggle_vec_t
.
Enumerator | |
---|---|
kDifGpioToggleDisabled | The "disabled" state. |
Definition at line 33 of file dif_gpio.h.
DIF_WARN_UNUSED_RESULT dif_gpio_result_t dif_gpio_init | ( | dif_gpio_params_t | params, |
dif_gpio_t * | gpio | ||
) |
Creates a new handle for GPIO.
This function does not actuate the hardware.
params | Hardware instantiation parameters. | |
[out] | gpio | Out param for the initialized handle. |
Definition at line 102 of file dif_gpio.c.
DIF_WARN_UNUSED_RESULT dif_gpio_result_t dif_gpio_input_noise_filter_set_enabled | ( | const dif_gpio_t * | gpio, |
dif_gpio_mask_t | mask, | ||
dif_gpio_toggle_t | state | ||
) |
Enable noise filter for GPIO inputs.
When enabled, changes in the pin value will be ignored unless stable for 16 cycles.
gpio | A GPIO handle. |
mask | Mask that identifies pins to set the filter state of. |
state | The new toggle state for the filter. |
Definition at line 418 of file dif_gpio.c.
DIF_WARN_UNUSED_RESULT dif_gpio_result_t dif_gpio_irq_acknowledge | ( | const dif_gpio_t * | gpio, |
dif_gpio_pin_t | pin | ||
) |
Acknowledges a particular pin's interrupt, indicating to the hardware that it has been successfully serviced.
gpio | A GPIO handle. |
pin | A GPIO pin. |
Definition at line 164 of file dif_gpio.c.
DIF_WARN_UNUSED_RESULT dif_gpio_result_t dif_gpio_irq_disable_all | ( | const dif_gpio_t * | gpio, |
dif_gpio_state_t * | snapshot | ||
) |
Disables all interrupts, optionally snapshotting all toggle state for later restoration.
gpio | A GPIO handle. | |
[out] | snapshot | Out-param for the snapshot; may be NULL . |
Definition at line 248 of file dif_gpio.c.
DIF_WARN_UNUSED_RESULT dif_gpio_result_t dif_gpio_irq_force | ( | const dif_gpio_t * | gpio, |
dif_gpio_pin_t | pin | ||
) |
Forces a particular pin's interrupt, causing it to be serviced as if hardware had asserted it.
gpio | A GPIO handle. |
pin | A GPIO pin. |
Definition at line 236 of file dif_gpio.c.
DIF_WARN_UNUSED_RESULT dif_gpio_result_t dif_gpio_irq_get_enabled | ( | const dif_gpio_t * | gpio, |
dif_gpio_pin_t | pin, | ||
dif_gpio_toggle_t * | state | ||
) |
Checks whether a particular pin's interrupt is currently enabled or disabled.
gpio | A GPIO handle. | |
pin | A GPIO pin. | |
[out] | state | Out-param toggle state of the interrupt. |
Definition at line 176 of file dif_gpio.c.
DIF_WARN_UNUSED_RESULT dif_gpio_result_t dif_gpio_irq_is_pending | ( | const dif_gpio_t * | gpio, |
dif_gpio_pin_t | pin, | ||
bool * | is_pending | ||
) |
Returns whether a particular pin's interrupt is currently pending.
gpio | A GPIO handle. | |
pin | A GPIO pin. | |
[out] | is_pending | Out-param for whether the interrupt is pending. |
Definition at line 139 of file dif_gpio.c.
DIF_WARN_UNUSED_RESULT dif_gpio_result_t dif_gpio_irq_is_pending_all | ( | const dif_gpio_t * | gpio, |
dif_gpio_state_t * | is_pending | ||
) |
Returns a GPIO state representing which pins have interrupts enabled.
gpio | A GPIO handle. | |
[out] | is_pending | Out-param for which interrupts are pending. |
Definition at line 152 of file dif_gpio.c.
DIF_WARN_UNUSED_RESULT dif_gpio_result_t dif_gpio_irq_restore_all | ( | const dif_gpio_t * | gpio, |
const dif_gpio_state_t * | snapshot | ||
) |
Restores interrupts from the given snapshot.
This function can be used with dif_gpio_irq_disable_all()
to temporary interrupt save-and-restore.
gpio | A GPIO handle. |
snapshot | A snapshot to restore from. |
Definition at line 263 of file dif_gpio.c.
DIF_WARN_UNUSED_RESULT dif_gpio_result_t dif_gpio_irq_set_enabled | ( | const dif_gpio_t * | gpio, |
dif_gpio_pin_t | pin, | ||
dif_gpio_toggle_t | state | ||
) |
Sets whether a particular pin's interrupt is currently enabled or disabled.
gpio | A GPIO handle. |
pin | A GPIO pin. |
state | The new toggle state for the interrupt. |
Definition at line 190 of file dif_gpio.c.
DIF_WARN_UNUSED_RESULT dif_gpio_result_t dif_gpio_irq_set_enabled_masked | ( | const dif_gpio_t * | gpio, |
dif_gpio_mask_t | mask, | ||
dif_gpio_toggle_t | state | ||
) |
Sets whether a particular pin's interrupt is currently enabled or disabled.
gpio | A GPIO handle. |
mask | Mask that identifies the pins whose interrupt triggers will be configured. |
state | The new toggle state for the interrupt. |
Definition at line 213 of file dif_gpio.c.
DIF_WARN_UNUSED_RESULT dif_gpio_result_t dif_gpio_irq_set_trigger | ( | const dif_gpio_t * | gpio, |
dif_gpio_mask_t | mask, | ||
dif_gpio_irq_trigger_t | trigger | ||
) |
Configures interrupt triggers for a set of pins.
This function configures interrupt triggers, i.e. rising-edge, falling-edge, level-high, and level-low, for the pins given by the mask. Note that interrupt of the pin must also be enabled to generate interrupts.
gpio | A GPIO handle. |
mask | Mask that identifies the pins whose interrupt triggers will be configured. |
trigger | New configuration of interrupt triggers. |
Definition at line 275 of file dif_gpio.c.
DIF_WARN_UNUSED_RESULT dif_gpio_result_t dif_gpio_output_set_enabled | ( | const dif_gpio_t * | gpio, |
dif_gpio_pin_t | pin, | ||
dif_gpio_toggle_t | state | ||
) |
Sets output enable mode of a pin.
gpio | A GPIO handle. |
pin | A GPIO pin. |
state | Output mode of the pin. |
Definition at line 398 of file dif_gpio.c.
DIF_WARN_UNUSED_RESULT dif_gpio_result_t dif_gpio_output_set_enabled_all | ( | const dif_gpio_t * | gpio, |
dif_gpio_state_t | state | ||
) |
Sets output modes of all pins.
gpio | A GPIO handle. |
state | Output modes of the pins. |
Definition at line 387 of file dif_gpio.c.
DIF_WARN_UNUSED_RESULT dif_gpio_result_t dif_gpio_output_set_enabled_masked | ( | const dif_gpio_t * | gpio, |
dif_gpio_mask_t | mask, | ||
dif_gpio_state_t | state | ||
) |
Sets the output modes of the pins identified by a mask.
gpio | A GPIO handle. |
mask | Mask that identifies the pins whose output modes will be set. |
state | Output modes of the pins. |
Definition at line 411 of file dif_gpio.c.
DIF_WARN_UNUSED_RESULT dif_gpio_result_t dif_gpio_read | ( | const dif_gpio_t * | gpio, |
dif_gpio_pin_t | pin, | ||
bool * | state | ||
) |
Reads from a pin.
The value returned by this function is independent of the output enable setting and includes the effects of the input noise filter and the load on the pin.
gpio | A GPIO handle. | |
pin | A GPIO pin. | |
[out] | state | Pin value. |
Definition at line 350 of file dif_gpio.c.
DIF_WARN_UNUSED_RESULT dif_gpio_result_t dif_gpio_read_all | ( | const dif_gpio_t * | gpio, |
dif_gpio_state_t * | state | ||
) |
Reads from all pins.
The value returned by this function is independent of the output enable setting and includes the effects of the input noise filter and the load on the pins.
gpio | A GPIO handle. | |
[out] | state | Pin values. |
Definition at line 339 of file dif_gpio.c.
DIF_WARN_UNUSED_RESULT dif_gpio_result_t dif_gpio_reset | ( | const dif_gpio_t * | gpio | ) |
Resets a GPIO device.
Resets the given GPIO device by setting its configuration registers to reset values. Disables interrupts, output, and input filter.
gpio | A GPIO handle. |
Definition at line 112 of file dif_gpio.c.
DIF_WARN_UNUSED_RESULT dif_gpio_result_t dif_gpio_write | ( | const dif_gpio_t * | gpio, |
dif_gpio_pin_t | pin, | ||
bool | state | ||
) |
Writes to a pin.
The actual value on the pin depends on the output enable setting.
gpio | A GPIO handle. |
pin | A GPIO pin. |
state | Value to write. |
Definition at line 374 of file dif_gpio.c.
DIF_WARN_UNUSED_RESULT dif_gpio_result_t dif_gpio_write_all | ( | const dif_gpio_t * | gpio, |
dif_gpio_state_t | state | ||
) |
Writes to all pins.
The actual values on the pins depend on the output enable setting.
gpio | A GPIO handle. |
state | Value to write. |
Definition at line 362 of file dif_gpio.c.
DIF_WARN_UNUSED_RESULT dif_gpio_result_t dif_gpio_write_masked | ( | const dif_gpio_t * | gpio, |
dif_gpio_mask_t | mask, | ||
dif_gpio_state_t | state | ||
) |
Writes to the pins identified by a mask.
The actual values on the pins depend on the output enable setting.
gpio | A GPIO handle. |
mask | Mask that identifies the pins to write to. |
state | Value to write. |
Definition at line 380 of file dif_gpio.c.