34#if IS_USED(MODULE_MCP23X17_SPI) || DOXYGEN
36#ifndef MCP23X17_PARAM_SPI_ADDR
42#define MCP23X17_PARAM_SPI_ADDR (0)
45#ifndef MCP23X17_PARAM_SPI_DEV
47#define MCP23X17_PARAM_SPI_DEV (SPI_DEV(0))
50#ifndef MCP23X17_PARAM_SPI_CLK
52#define MCP23X17_PARAM_SPI_CLK (SPI_CLK_10MHZ)
55#ifndef MCP23X17_PARAM_SPI_CS
57#define MCP23X17_PARAM_SPI_CS (GPIO_PIN(0, 0))
60#ifndef MCP23X17_PARAM_SPI_INT
62#define MCP23X17_PARAM_SPI_INT (GPIO_PIN(0, 1))
67#if IS_USED(MODULE_MCP23X17_I2C) || DOXYGEN
69#ifndef MCP23X17_PARAM_I2C_ADDR
71#define MCP23X17_PARAM_I2C_ADDR (0)
74#ifndef MCP23X17_PARAM_I2C_DEV
76#define MCP23X17_PARAM_I2C_DEV (I2C_DEV(0))
79#ifndef MCP23X17_PARAM_I2C_INT
81#define MCP23X17_PARAM_I2C_INT (GPIO_PIN(0, 2))
86#ifndef MCP23X17_PARAM_RESET_PIN
88#define MCP23X17_PARAM_RESET_PIN (GPIO_UNDEF)
91#if IS_USED(MODULE_MCP23X17_SPI) || DOXYGEN
92#ifndef MCP23X17_SPI_PARAMS
94#define MCP23X17_SPI_PARAMS { \
95 .addr = MCP23X17_PARAM_SPI_ADDR, \
96 .int_pin = MCP23X17_PARAM_SPI_INT, \
97 .reset_pin = MCP23X17_PARAM_RESET_PIN, \
98 .if_params.type = MCP23X17_SPI, \
99 .if_params.spi.dev = MCP23X17_PARAM_SPI_DEV, \
100 .if_params.spi.cs = MCP23X17_PARAM_SPI_CS, \
101 .if_params.spi.clk = MCP23X17_PARAM_SPI_CLK, \
106#if IS_USED(MODULE_MCP23X17_I2C) || DOXYGEN
107#ifndef MCP23X17_I2C_PARAMS
109#define MCP23X17_I2C_PARAMS { \
110 .addr = MCP23X17_PARAM_I2C_ADDR, \
111 .int_pin = MCP23X17_PARAM_I2C_INT, \
112 .reset_pin = MCP23X17_PARAM_RESET_PIN, \
113 .if_params.type = MCP23X17_I2C, \
114 .if_params.i2c.dev = MCP23X17_PARAM_I2C_DEV, \
119#if IS_USED(MODULE_SAUL_GPIO) || DOXYGEN
121#ifndef MCP23X17_SAUL_GPIO_PARAMS
123#define MCP23X17_SAUL_GPIO_PARAMS { \
126 .name = "MCP23x17_0 PA0 Input", \
127 .pin = MCP23X17_GPIO_PIN(0, 0), \
135 .name = "MCP23x17_0 PB5 Output", \
136 .pin = MCP23X17_GPIO_PIN(1, 5), \
138 .flags = SAUL_GPIO_INIT_CLEAR, \
150#if IS_USED(MODULE_MCP23X17_SPI) || DOXYGEN
153#if IS_USED(MODULE_MCP23X17_I2C) || DOXYGEN
158#if IS_USED(MODULE_SAUL_GPIO) || DOXYGEN
Device driver interface for Microchip MCP23x17 I/O expanders.
static const mcp23x17_params_t mcp23x17_params[]
Allocation of MCP23x17 configuration.
#define MCP23X17_I2C_PARAMS
Default device parameters, if I2C interface is used.
static const mcp23x17_saul_gpio_params_t mcp23x17_saul_gpio_params[]
Additional meta information to keep in the SAUL registry.
#define MCP23X17_SPI_PARAMS
Default device parameters, if SPI interface is used.
#define MCP23X17_SAUL_GPIO_PARAMS
Example for mapping expander pins to SAUL.
SAUL registry interface definition.
Struct containing the peripheral configuration.
MCP23x17 configuration structure for mapping expander pins to SAUL.