Bridle API 4.1.99
A Zephyr based application framework
Loading...
Searching...
No Matches
SIPO/MUX GPIO Controller

Generic latched SIPO/MUX GPIO controller. More...

Data Structures

struct  gpio_sipomux_config
 SIPO/MUX GPIO controller configuration data. More...
 
struct  gpio_sipomux_data
 SIPO/MUX GPIO controller data. More...
 

Macros

#define GPIO_SIPOMUX_DEFINE(n)
 

Typedefs

typedef struct gpio_sipomux_config gpio_sipomux_config_t
 SIPO/MUX GPIO controller configuration data.
 
typedef struct gpio_sipomux_data gpio_sipomux_data_t
 SIPO/MUX GPIO controller data.
 

Functions

static int gpio_sipomux_port_get_raw (const struct device *dev, gpio_port_value_t *value)
 
static int gpio_sipomux_port_set_masked_raw (const struct device *dev, gpio_port_pins_t mask, gpio_port_value_t value)
 
static int gpio_sipomux_port_set_bits_raw (const struct device *dev, gpio_port_pins_t pins)
 
static int gpio_sipomux_port_clear_bits_raw (const struct device *dev, gpio_port_pins_t pins)
 
static int gpio_sipomux_configure (const struct device *dev, gpio_pin_t pin, gpio_flags_t flags)
 
static int gpio_sipomux_port_toggle_bits (const struct device *dev, gpio_port_pins_t pins)
 
static int gpio_sipomux_init (const struct device *dev)
 

Variables

static const struct gpio_driver_api gpio_sipomux_api
 

Detailed Description

Generic latched SIPO/MUX GPIO controller.

Since
3.6
Version
1.0.0

The generic latched SIPO/MUX GPIO controller based on the MFD interface to the generic latched SIPO/MUX General Purpose (GP) matrix controller.

SIPO/MUX:
Serial Input Parallel Output / Multiplexing hardware

Macro Definition Documentation

◆ GPIO_SIPOMUX_DEFINE

#define GPIO_SIPOMUX_DEFINE (   n)

#include <drivers/gpio/gpio_sipomux.c>

Value:
\
static const gpio_sipomux_config_t gpio_sipomux_config_##n = \
{ \
.common = { \
.port_pin_mask = \
GPIO_PORT_PIN_MASK_FROM_DT_INST(n), \
}, \
.num_pins = DT_INST_PROP(n, ngpios), \
.num_offs = DT_INST_PROP(n, offset), \
.mfd = DEVICE_DT_GET(DT_INST_PARENT(n)), \
}; \
BUILD_ASSERT( \
DT_INST_PROP(n, ngpios) <= GPIO_MAX_PINS_PER_PORT, \
"Too many ngpios"); \
\
static gpio_sipomux_data_t gpio_sipomux_data_##n; \
\
PM_DEVICE_DT_INST_DEFINE(n, gpio_sipomux_pm_device_pm_action); \
\
DEVICE_DT_INST_DEFINE(n, gpio_sipomux_init, \
PM_DEVICE_DT_INST_GET(n), \
&gpio_sipomux_data_##n, \
&gpio_sipomux_config_##n, POST_KERNEL, \
CONFIG_GPIO_SIPOMUX_INIT_PRIORITY, \
static int gpio_sipomux_init(const struct device *dev)
Definition gpio_sipomux.c:219
static const struct gpio_driver_api gpio_sipomux_api
Definition gpio_sipomux.c:210
SIPO/MUX GPIO controller configuration data.
Definition gpio_sipomux.c:54
struct gpio_driver_config common
Common gpio_driver_config (needs to be first)
Definition gpio_sipomux.c:56
SIPO/MUX GPIO controller data.
Definition gpio_sipomux.c:74

Typedef Documentation

◆ gpio_sipomux_config_t

#include <drivers/gpio/gpio_sipomux.c>

SIPO/MUX GPIO controller configuration data.

This structure contains all of the state for a given SIPO/MUX GPIO controller as well as all of the pins associated with it.

num_pins must be in the range [1, GPIO_MAX_PINS_PER_PORT].

num_offs must be in the range [1, SIPO/MUX GP maximum minus num_pins].

Pin direction as well as other pin properties are set using specific bits in flags. For more details, see gpio_interface.

◆ gpio_sipomux_data_t

#include <drivers/gpio/gpio_sipomux.c>

SIPO/MUX GPIO controller data.

This structure contains data structures used by a SIPO/MUX GPIO controller.

Changes are to gpio_sipomux_data and gpio_sipomux_config are synchronized using k_sem.

Function Documentation

◆ gpio_sipomux_configure()

static int gpio_sipomux_configure ( const struct device *  dev,
gpio_pin_t  pin,
gpio_flags_t  flags 
)
inlinestatic

◆ gpio_sipomux_init()

static int gpio_sipomux_init ( const struct device *  dev)
static

◆ gpio_sipomux_port_clear_bits_raw()

static int gpio_sipomux_port_clear_bits_raw ( const struct device *  dev,
gpio_port_pins_t  pins 
)
static

◆ gpio_sipomux_port_get_raw()

static int gpio_sipomux_port_get_raw ( const struct device *  dev,
gpio_port_value_t *  value 
)
static

◆ gpio_sipomux_port_set_bits_raw()

static int gpio_sipomux_port_set_bits_raw ( const struct device *  dev,
gpio_port_pins_t  pins 
)
static

◆ gpio_sipomux_port_set_masked_raw()

static int gpio_sipomux_port_set_masked_raw ( const struct device *  dev,
gpio_port_pins_t  mask,
gpio_port_value_t  value 
)
static

◆ gpio_sipomux_port_toggle_bits()

static int gpio_sipomux_port_toggle_bits ( const struct device *  dev,
gpio_port_pins_t  pins 
)
static

Variable Documentation

◆ gpio_sipomux_api

const struct gpio_driver_api gpio_sipomux_api
static

#include <drivers/gpio/gpio_sipomux.c>

Initial value:
= {
.pin_configure = gpio_sipomux_configure,
.port_get_raw = gpio_sipomux_port_get_raw,
.port_set_masked_raw = gpio_sipomux_port_set_masked_raw,
.port_set_bits_raw = gpio_sipomux_port_set_bits_raw,
.port_clear_bits_raw = gpio_sipomux_port_clear_bits_raw,
.port_toggle_bits = gpio_sipomux_port_toggle_bits,
}
static int gpio_sipomux_port_set_masked_raw(const struct device *dev, gpio_port_pins_t mask, gpio_port_value_t value)
Definition gpio_sipomux.c:97
static int gpio_sipomux_port_get_raw(const struct device *dev, gpio_port_value_t *value)
Definition gpio_sipomux.c:89
static int gpio_sipomux_port_toggle_bits(const struct device *dev, gpio_port_pins_t pins)
Definition gpio_sipomux.c:190
static int gpio_sipomux_port_clear_bits_raw(const struct device *dev, gpio_port_pins_t pins)
Definition gpio_sipomux.c:133
static int gpio_sipomux_configure(const struct device *dev, gpio_pin_t pin, gpio_flags_t flags)
Definition gpio_sipomux.c:139
static int gpio_sipomux_port_set_bits_raw(const struct device *dev, gpio_port_pins_t pins)
Definition gpio_sipomux.c:127