Software APIs
Typedefs | Enumerations | Functions
dif_gpio.h File Reference

(30d7e787c7)

GPIO Device Interface Functions More...

#include <stddef.h>
#include <stdint.h>
#include "sw/device/lib/base/macros.h"
#include "sw/device/lib/base/mmio.h"
#include "sw/device/lib/dif/dif_base.h"
#include "sw/device/lib/dif/autogen/dif_gpio_autogen.h"

Go to the source code of this file.

Typedefs

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 kDifGpioNumPins - 1.
 
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  { kDifGpioNumPins = 32 }
 
enum  dif_gpio_irq_trigger {
  kDifGpioIrqTriggerEdgeRising ,
  kDifGpioIrqTriggerEdgeFalling ,
  kDifGpioIrqTriggerLevelLow ,
  kDifGpioIrqTriggerLevelHigh ,
  kDifGpioIrqTriggerEdgeRisingFalling ,
  kDifGpioIrqTriggerEdgeRisingLevelLow ,
  kDifGpioIrqTriggerEdgeFallingLevelHigh
}
 A GPIO interrupt request trigger. More...
 

Functions

OT_WARN_UNUSED_RESULT dif_result_t dif_gpio_reset (const dif_gpio_t *gpio)
 Resets a GPIO device. More...
 
OT_WARN_UNUSED_RESULT dif_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. More...
 
OT_WARN_UNUSED_RESULT dif_result_t dif_gpio_read (const dif_gpio_t *gpio, dif_gpio_pin_t pin, bool *state)
 Reads from a pin. More...
 
OT_WARN_UNUSED_RESULT dif_result_t dif_gpio_read_all (const dif_gpio_t *gpio, dif_gpio_state_t *state)
 Reads from all pins. More...
 
OT_WARN_UNUSED_RESULT dif_result_t dif_gpio_write (const dif_gpio_t *gpio, dif_gpio_pin_t pin, bool state)
 Writes to a pin. More...
 
OT_WARN_UNUSED_RESULT dif_result_t dif_gpio_write_all (const dif_gpio_t *gpio, dif_gpio_state_t state)
 Writes to all pins. More...
 
OT_WARN_UNUSED_RESULT dif_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. More...
 
OT_WARN_UNUSED_RESULT dif_result_t dif_gpio_output_set_enabled (const dif_gpio_t *gpio, dif_gpio_pin_t pin, dif_toggle_t state)
 Sets output enable mode of a pin. More...
 
OT_WARN_UNUSED_RESULT dif_result_t dif_gpio_output_set_enabled_all (const dif_gpio_t *gpio, dif_gpio_state_t state)
 Sets output modes of all pins. More...
 
OT_WARN_UNUSED_RESULT dif_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. More...
 
OT_WARN_UNUSED_RESULT dif_result_t dif_gpio_input_noise_filter_set_enabled (const dif_gpio_t *gpio, dif_gpio_mask_t mask, dif_toggle_t state)
 Enable noise filter for GPIO inputs. More...
 

Detailed Description

GPIO Device Interface Functions

Definition in file dif_gpio.h.

Typedef Documentation

◆ 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.

◆ dif_gpio_mask_t

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 95 of file dif_gpio.h.

◆ dif_gpio_state_t

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_toggle_ts, to indicate toggle state across all 32 pins. A set bit corresponds to kDifGpioToggleEnabled.

Definition at line 88 of file dif_gpio.h.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
kDifGpioNumPins 

Number of pins.

This constant is used to check that arguments of type dif_gpio_pin_t are within bounds.

Definition at line 26 of file dif_gpio.h.

◆ 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.

Enumerator
kDifGpioIrqTriggerEdgeRising 

Trigger on rising edge.

kDifGpioIrqTriggerEdgeFalling 

Trigger on falling edge.

kDifGpioIrqTriggerLevelLow 

Trigger when input is low.

kDifGpioIrqTriggerLevelHigh 

Trigger when input is high.

kDifGpioIrqTriggerEdgeRisingFalling 

Trigger on rising and falling edges.

kDifGpioIrqTriggerEdgeRisingLevelLow 

Trigger on rising edge or when the input is low.

kDifGpioIrqTriggerEdgeFallingLevelHigh 

Trigger on falling edge or when the input is high.

Definition at line 43 of file dif_gpio.h.

Function Documentation

◆ dif_gpio_input_noise_filter_set_enabled()

OT_WARN_UNUSED_RESULT dif_result_t dif_gpio_input_noise_filter_set_enabled ( const dif_gpio_t gpio,
dif_gpio_mask_t  mask,
dif_toggle_t  state 
)

Enable noise filter for GPIO inputs.

When enabled, changes in the pin value will be ignored unless stable for 16 cycles.

Parameters
gpioA GPIO handle.
maskMask that identifies pins to set the filter state of.
stateThe new toggle state for the filter.
Returns
The result of the operation.

Definition at line 256 of file dif_gpio.c.

◆ dif_gpio_irq_set_trigger()

OT_WARN_UNUSED_RESULT dif_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.

Parameters
gpioA GPIO handle.
maskMask that identifies the pins whose interrupt triggers will be configured.
triggerNew configuration of interrupt triggers.
Returns
The result of the operation.

Definition at line 127 of file dif_gpio.c.

◆ dif_gpio_output_set_enabled()

OT_WARN_UNUSED_RESULT dif_result_t dif_gpio_output_set_enabled ( const dif_gpio_t gpio,
dif_gpio_pin_t  pin,
dif_toggle_t  state 
)

Sets output enable mode of a pin.

Parameters
gpioA GPIO handle.
pinA GPIO pin.
stateOutput mode of the pin.
Returns
The result of the operation.

Definition at line 242 of file dif_gpio.c.

◆ dif_gpio_output_set_enabled_all()

OT_WARN_UNUSED_RESULT dif_result_t dif_gpio_output_set_enabled_all ( const dif_gpio_t gpio,
dif_gpio_state_t  state 
)

Sets output modes of all pins.

Parameters
gpioA GPIO handle.
stateOutput modes of the pins.
Returns
The result of the operation.

Definition at line 231 of file dif_gpio.c.

◆ dif_gpio_output_set_enabled_masked()

OT_WARN_UNUSED_RESULT dif_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.

Parameters
gpioA GPIO handle.
maskMask that identifies the pins whose output modes will be set.
stateOutput modes of the pins.
Returns
The result of the operation.

Definition at line 249 of file dif_gpio.c.

◆ dif_gpio_read()

OT_WARN_UNUSED_RESULT dif_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.

Parameters
gpioA GPIO handle.
pinA GPIO pin.
[out]statePin value.
Returns
The result of the operation.

Definition at line 197 of file dif_gpio.c.

◆ dif_gpio_read_all()

OT_WARN_UNUSED_RESULT dif_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.

Parameters
gpioA GPIO handle.
[out]statePin values.
Returns
The result of the operation.

Definition at line 186 of file dif_gpio.c.

◆ dif_gpio_reset()

OT_WARN_UNUSED_RESULT dif_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.

Parameters
gpioA GPIO handle.
Returns
The result of the operation.

Definition at line 106 of file dif_gpio.c.

◆ dif_gpio_write()

OT_WARN_UNUSED_RESULT dif_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.

Parameters
gpioA GPIO handle.
pinA GPIO pin.
stateValue to write.
Returns
The result of the operation.

Definition at line 219 of file dif_gpio.c.

◆ dif_gpio_write_all()

OT_WARN_UNUSED_RESULT dif_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.

Parameters
gpioA GPIO handle.
stateValue to write.
Returns
The result of the operation.

Definition at line 208 of file dif_gpio.c.

◆ dif_gpio_write_masked()

OT_WARN_UNUSED_RESULT dif_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.

Parameters
gpioA GPIO handle.
maskMask that identifies the pins to write to.
stateValue to write.
Returns
The result of the operation.

Definition at line 225 of file dif_gpio.c.