Skip to content

Commit

Permalink
drivers/pcf857x: stop (ab)using gpio_t
Browse files Browse the repository at this point in the history
The driver only supports addressing GPIOs by their index, (ab)using
`gpio_t` for that will break on platforms that encode GPIO values
differently.
  • Loading branch information
benpicco committed Feb 27, 2024
1 parent f048714 commit e8a4def
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 25 deletions.
20 changes: 10 additions & 10 deletions drivers/include/pcf857x.h
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@ extern "C"
/** @} */

/** conversion of (port x : pin y) to a pin number */
#define PCF857X_GPIO_PIN(x,y) ((gpio_t)((x << 3) | y))
#define PCF857X_GPIO_PIN(x,y) (y)

/**
* @name Module dependent definitions and declarations
Expand Down Expand Up @@ -484,7 +484,7 @@ int pcf857x_init(pcf857x_t *dev, const pcf857x_params_t *params);
* @retval 0 on success
* @retval <0 a negative errno error code on error
*/
int pcf857x_gpio_init(pcf857x_t *dev, gpio_t pin, gpio_mode_t mode);
int pcf857x_gpio_init(pcf857x_t *dev, uint8_t pin, gpio_mode_t mode);

#if IS_USED(MODULE_PCF857X_IRQ) || DOXYGEN
/**
Expand Down Expand Up @@ -522,7 +522,7 @@ int pcf857x_gpio_init(pcf857x_t *dev, gpio_t pin, gpio_mode_t mode);
* @retval 0 on success
* @retval <0 a negative errno error code on error
*/
int pcf857x_gpio_init_int(pcf857x_t *dev, gpio_t pin,
int pcf857x_gpio_init_int(pcf857x_t *dev, uint8_t pin,
gpio_mode_t mode,
gpio_flank_t flank,
gpio_cb_t isr,
Expand All @@ -538,7 +538,7 @@ int pcf857x_gpio_init_int(pcf857x_t *dev, gpio_t pin,
* @param[in] dev descriptor of PCF857X I/O expander device
* @param[in] pin pin to read, use PCF857X_GPIO_PIN(x,y) to specify
*/
int pcf857x_gpio_read(pcf857x_t *dev, gpio_t pin);
int pcf857x_gpio_read(pcf857x_t *dev, uint8_t pin);

/**
* @brief Write the value to PCF857X input pin
Expand All @@ -547,31 +547,31 @@ int pcf857x_gpio_read(pcf857x_t *dev, gpio_t pin);
* @param[in] pin pin to write, use PCF857X_GPIO_PIN(x,y) to specify
* @param[in] value value to write
*/
void pcf857x_gpio_write(pcf857x_t *dev, gpio_t pin, int value);
void pcf857x_gpio_write(pcf857x_t *dev, uint8_t pin, int value);

/**
* @brief Clear the PCF857X output pin
*
* @param[in] dev descriptor of PCF857X I/O expander device
* @param[in] pin pin to clear, use PCF857X_GPIO_PIN(x,y) to specify
*/
void pcf857x_gpio_clear(pcf857x_t *dev, gpio_t pin);
void pcf857x_gpio_clear(pcf857x_t *dev, uint8_t pin);

/**
* @brief Set the PCF857X output pin
*
* @param[in] dev descriptor of PCF857X I/O expander device
* @param[in] pin pin to set, use PCF857X_GPIO_PIN(x,y) to specify
*/
void pcf857x_gpio_set(pcf857x_t *dev, gpio_t pin);
void pcf857x_gpio_set(pcf857x_t *dev, uint8_t pin);

/**
* @brief Toggle the value of the PCF857X output pin
*
* @param[in] dev descriptor of PCF857X I/O expander device
* @param[in] pin pin to toggle, use PCF857X_GPIO_PIN(x,y) to specify
*/
void pcf857x_gpio_toggle(pcf857x_t *dev, gpio_t pin);
void pcf857x_gpio_toggle(pcf857x_t *dev, uint8_t pin);

#if IS_USED(MODULE_PCF857X_IRQ) || DOXYGEN
/**
Expand All @@ -583,7 +583,7 @@ void pcf857x_gpio_toggle(pcf857x_t *dev, gpio_t pin);
* @param[in] dev descriptor of PCF857X I/O expander device
* @param[in] pin pin to enable the interrupt for
*/
void pcf857x_gpio_irq_enable(pcf857x_t *dev, gpio_t pin);
void pcf857x_gpio_irq_enable(pcf857x_t *dev, uint8_t pin);

/**
* @brief Disable pin interrupt
Expand All @@ -594,7 +594,7 @@ void pcf857x_gpio_irq_enable(pcf857x_t *dev, gpio_t pin);
* @param[in] dev descriptor of PCF857X I/O expander device
* @param[in] pin pin to enable the interrupt for
*/
void pcf857x_gpio_irq_disable(pcf857x_t *dev, gpio_t pin);
void pcf857x_gpio_irq_disable(pcf857x_t *dev, uint8_t pin);
#endif /* MODULE_PCF857X_IRQ || DOXYGEN */

#ifdef __cplusplus
Expand Down
30 changes: 15 additions & 15 deletions drivers/pcf857x/pcf857x.c
Original file line number Diff line number Diff line change
Expand Up @@ -147,13 +147,13 @@ int pcf857x_init(pcf857x_t *dev, const pcf857x_params_t *params)
return res;
}

int pcf857x_gpio_init(pcf857x_t *dev, gpio_t pin, gpio_mode_t mode)
int pcf857x_gpio_init(pcf857x_t *dev, uint8_t pin, gpio_mode_t mode)
{
/* some parameter sanity checks */
assert(dev != NULL);
assert(pin < dev->pin_num);

DEBUG_DEV("pin=%u mode=%u", dev, (unsigned)pin, (unsigned)mode);
DEBUG_DEV("pin=%u mode=%u", dev, pin, (unsigned)mode);

/*
* Since the LOW output is the only actively driven level possible with
Expand Down Expand Up @@ -209,7 +209,7 @@ int pcf857x_gpio_init(pcf857x_t *dev, gpio_t pin, gpio_mode_t mode)
}

#if IS_USED(MODULE_PCF857X_IRQ)
int pcf857x_gpio_init_int(pcf857x_t *dev, gpio_t pin,
int pcf857x_gpio_init_int(pcf857x_t *dev, uint8_t pin,
gpio_mode_t mode,
gpio_flank_t flank,
gpio_cb_t isr,
Expand Down Expand Up @@ -237,7 +237,7 @@ int pcf857x_gpio_init_int(pcf857x_t *dev, gpio_t pin,
return PCF857X_OK;
}

void pcf857x_gpio_irq_enable(pcf857x_t *dev, gpio_t pin)
void pcf857x_gpio_irq_enable(pcf857x_t *dev, uint8_t pin)
{
/* some parameter sanity checks */
assert(dev != NULL);
Expand All @@ -247,7 +247,7 @@ void pcf857x_gpio_irq_enable(pcf857x_t *dev, gpio_t pin)
dev->enabled[pin] = true;
}

void pcf857x_gpio_irq_disable(pcf857x_t *dev, gpio_t pin)
void pcf857x_gpio_irq_disable(pcf857x_t *dev, uint8_t pin)
{
/* some parameter sanity checks */
assert(dev != NULL);
Expand All @@ -258,13 +258,13 @@ void pcf857x_gpio_irq_disable(pcf857x_t *dev, gpio_t pin)
}
#endif

int pcf857x_gpio_read(pcf857x_t *dev, gpio_t pin)
int pcf857x_gpio_read(pcf857x_t *dev, uint8_t pin)
{
/* some parameter sanity checks */
assert(dev != NULL);
assert(pin < dev->pin_num);

DEBUG_DEV("pin=%u", dev, (unsigned)pin);
DEBUG_DEV("pin=%u", dev, pin);

/*
* If we use the interrupt, we always have an up-to-date input snapshot
Expand All @@ -279,13 +279,13 @@ int pcf857x_gpio_read(pcf857x_t *dev, gpio_t pin)
return (dev->in &(1 << pin)) ? 1 : 0;
}

void pcf857x_gpio_write(pcf857x_t *dev, gpio_t pin, int value)
void pcf857x_gpio_write(pcf857x_t *dev, uint8_t pin, int value)
{
/* some parameter sanity checks */
assert(dev != NULL);
assert(pin < dev->pin_num);

DEBUG_DEV("pin=%u value=%d", dev, (unsigned)pin, value);
DEBUG_DEV("pin=%u value=%d", dev, pin, value);

/* set pin bit value */
if (value) {
Expand Down Expand Up @@ -316,21 +316,21 @@ void pcf857x_gpio_write(pcf857x_t *dev, gpio_t pin, int value)
#endif
}

void pcf857x_gpio_clear(pcf857x_t *dev, gpio_t pin)
void pcf857x_gpio_clear(pcf857x_t *dev, uint8_t pin)
{
DEBUG_DEV("pin=%u", dev, (unsigned)pin);
DEBUG_DEV("pin=%u", dev, pin);
return pcf857x_gpio_write(dev, pin, 0);
}

void pcf857x_gpio_set(pcf857x_t *dev, gpio_t pin)
void pcf857x_gpio_set(pcf857x_t *dev, uint8_t pin)
{
DEBUG_DEV("pin=%u", dev, (unsigned)pin);
DEBUG_DEV("pin=%u", dev, pin);
return pcf857x_gpio_write(dev, pin, 1);
}

void pcf857x_gpio_toggle(pcf857x_t *dev, gpio_t pin)
void pcf857x_gpio_toggle(pcf857x_t *dev, uint8_t pin)
{
DEBUG_DEV("pin=%u", dev, (unsigned)pin);
DEBUG_DEV("pin=%u", dev, pin);
return pcf857x_gpio_write(dev, pin, (dev->out & (1 << pin)) ? 0 : 1);
}

Expand Down

0 comments on commit e8a4def

Please sign in to comment.