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.