Skip to content

Commit e8a4def

Browse files
committed
drivers/pcf857x: stop (ab)using gpio_t
The driver only supports addressing GPIOs by their index, (ab)using `gpio_t` for that will break on platforms that encode GPIO values differently.
1 parent f048714 commit e8a4def

File tree

2 files changed

+25
-25
lines changed

2 files changed

+25
-25
lines changed

drivers/include/pcf857x.h

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ extern "C"
297297
/** @} */
298298

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

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

489489
#if IS_USED(MODULE_PCF857X_IRQ) || DOXYGEN
490490
/**
@@ -522,7 +522,7 @@ int pcf857x_gpio_init(pcf857x_t *dev, gpio_t pin, gpio_mode_t mode);
522522
* @retval 0 on success
523523
* @retval <0 a negative errno error code on error
524524
*/
525-
int pcf857x_gpio_init_int(pcf857x_t *dev, gpio_t pin,
525+
int pcf857x_gpio_init_int(pcf857x_t *dev, uint8_t pin,
526526
gpio_mode_t mode,
527527
gpio_flank_t flank,
528528
gpio_cb_t isr,
@@ -538,7 +538,7 @@ int pcf857x_gpio_init_int(pcf857x_t *dev, gpio_t pin,
538538
* @param[in] dev descriptor of PCF857X I/O expander device
539539
* @param[in] pin pin to read, use PCF857X_GPIO_PIN(x,y) to specify
540540
*/
541-
int pcf857x_gpio_read(pcf857x_t *dev, gpio_t pin);
541+
int pcf857x_gpio_read(pcf857x_t *dev, uint8_t pin);
542542

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

552552
/**
553553
* @brief Clear the PCF857X output pin
554554
*
555555
* @param[in] dev descriptor of PCF857X I/O expander device
556556
* @param[in] pin pin to clear, use PCF857X_GPIO_PIN(x,y) to specify
557557
*/
558-
void pcf857x_gpio_clear(pcf857x_t *dev, gpio_t pin);
558+
void pcf857x_gpio_clear(pcf857x_t *dev, uint8_t pin);
559559

560560
/**
561561
* @brief Set the PCF857X output pin
562562
*
563563
* @param[in] dev descriptor of PCF857X I/O expander device
564564
* @param[in] pin pin to set, use PCF857X_GPIO_PIN(x,y) to specify
565565
*/
566-
void pcf857x_gpio_set(pcf857x_t *dev, gpio_t pin);
566+
void pcf857x_gpio_set(pcf857x_t *dev, uint8_t pin);
567567

568568
/**
569569
* @brief Toggle the value of the PCF857X output pin
570570
*
571571
* @param[in] dev descriptor of PCF857X I/O expander device
572572
* @param[in] pin pin to toggle, use PCF857X_GPIO_PIN(x,y) to specify
573573
*/
574-
void pcf857x_gpio_toggle(pcf857x_t *dev, gpio_t pin);
574+
void pcf857x_gpio_toggle(pcf857x_t *dev, uint8_t pin);
575575

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

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

600600
#ifdef __cplusplus

drivers/pcf857x/pcf857x.c

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -147,13 +147,13 @@ int pcf857x_init(pcf857x_t *dev, const pcf857x_params_t *params)
147147
return res;
148148
}
149149

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

156-
DEBUG_DEV("pin=%u mode=%u", dev, (unsigned)pin, (unsigned)mode);
156+
DEBUG_DEV("pin=%u mode=%u", dev, pin, (unsigned)mode);
157157

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

211211
#if IS_USED(MODULE_PCF857X_IRQ)
212-
int pcf857x_gpio_init_int(pcf857x_t *dev, gpio_t pin,
212+
int pcf857x_gpio_init_int(pcf857x_t *dev, uint8_t pin,
213213
gpio_mode_t mode,
214214
gpio_flank_t flank,
215215
gpio_cb_t isr,
@@ -237,7 +237,7 @@ int pcf857x_gpio_init_int(pcf857x_t *dev, gpio_t pin,
237237
return PCF857X_OK;
238238
}
239239

240-
void pcf857x_gpio_irq_enable(pcf857x_t *dev, gpio_t pin)
240+
void pcf857x_gpio_irq_enable(pcf857x_t *dev, uint8_t pin)
241241
{
242242
/* some parameter sanity checks */
243243
assert(dev != NULL);
@@ -247,7 +247,7 @@ void pcf857x_gpio_irq_enable(pcf857x_t *dev, gpio_t pin)
247247
dev->enabled[pin] = true;
248248
}
249249

250-
void pcf857x_gpio_irq_disable(pcf857x_t *dev, gpio_t pin)
250+
void pcf857x_gpio_irq_disable(pcf857x_t *dev, uint8_t pin)
251251
{
252252
/* some parameter sanity checks */
253253
assert(dev != NULL);
@@ -258,13 +258,13 @@ void pcf857x_gpio_irq_disable(pcf857x_t *dev, gpio_t pin)
258258
}
259259
#endif
260260

261-
int pcf857x_gpio_read(pcf857x_t *dev, gpio_t pin)
261+
int pcf857x_gpio_read(pcf857x_t *dev, uint8_t pin)
262262
{
263263
/* some parameter sanity checks */
264264
assert(dev != NULL);
265265
assert(pin < dev->pin_num);
266266

267-
DEBUG_DEV("pin=%u", dev, (unsigned)pin);
267+
DEBUG_DEV("pin=%u", dev, pin);
268268

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

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

288-
DEBUG_DEV("pin=%u value=%d", dev, (unsigned)pin, value);
288+
DEBUG_DEV("pin=%u value=%d", dev, pin, value);
289289

290290
/* set pin bit value */
291291
if (value) {
@@ -316,21 +316,21 @@ void pcf857x_gpio_write(pcf857x_t *dev, gpio_t pin, int value)
316316
#endif
317317
}
318318

319-
void pcf857x_gpio_clear(pcf857x_t *dev, gpio_t pin)
319+
void pcf857x_gpio_clear(pcf857x_t *dev, uint8_t pin)
320320
{
321-
DEBUG_DEV("pin=%u", dev, (unsigned)pin);
321+
DEBUG_DEV("pin=%u", dev, pin);
322322
return pcf857x_gpio_write(dev, pin, 0);
323323
}
324324

325-
void pcf857x_gpio_set(pcf857x_t *dev, gpio_t pin)
325+
void pcf857x_gpio_set(pcf857x_t *dev, uint8_t pin)
326326
{
327-
DEBUG_DEV("pin=%u", dev, (unsigned)pin);
327+
DEBUG_DEV("pin=%u", dev, pin);
328328
return pcf857x_gpio_write(dev, pin, 1);
329329
}
330330

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

0 commit comments

Comments
 (0)