drivers: gpio_adp5585: fix non-contiguous pin layout issue
Fixes #90988. The pin gap handling is wrong in the original code. Signed-off-by: Chekhov Ma <chekhov.ma@nxp.com>
This commit is contained in:
parent
a9ed11c3f6
commit
41950cab0f
1 changed files with 7 additions and 4 deletions
|
@ -76,8 +76,7 @@ static int gpio_adp5585_config(const struct device *dev, gpio_pin_t pin, gpio_fl
|
||||||
uint8_t reg_value;
|
uint8_t reg_value;
|
||||||
|
|
||||||
/* ADP5585 has non-contiguous gpio pin layouts, account for this */
|
/* ADP5585 has non-contiguous gpio pin layouts, account for this */
|
||||||
if ((pin & cfg->common.port_pin_mask) == 0) {
|
if ((BIT(pin) & cfg->common.port_pin_mask) == 0) {
|
||||||
LOG_ERR("pin %d is invalid for this device", pin);
|
|
||||||
return -ENOTSUP;
|
return -ENOTSUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -225,6 +224,11 @@ static int gpio_adp5585_port_write(const struct device *dev, gpio_port_pins_t ma
|
||||||
uint8_t reg_value;
|
uint8_t reg_value;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
/* ADP5585 has non-contiguous gpio pin layouts, account for this */
|
||||||
|
if ((mask & cfg->common.port_pin_mask) == 0) {
|
||||||
|
return -ENOTSUP;
|
||||||
|
}
|
||||||
|
|
||||||
/* Can't do I2C bus operations from an ISR */
|
/* Can't do I2C bus operations from an ISR */
|
||||||
if (k_is_in_isr()) {
|
if (k_is_in_isr()) {
|
||||||
return -EWOULDBLOCK;
|
return -EWOULDBLOCK;
|
||||||
|
@ -288,8 +292,7 @@ static int gpio_adp5585_pin_interrupt_configure(const struct device *dev, gpio_p
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ADP5585 has non-contiguous gpio pin layouts, account for this */
|
/* ADP5585 has non-contiguous gpio pin layouts, account for this */
|
||||||
if ((pin & cfg->common.port_pin_mask) == 0) {
|
if ((BIT(pin) & cfg->common.port_pin_mask) == 0) {
|
||||||
LOG_ERR("pin %d is invalid for this device", pin);
|
|
||||||
return -ENOTSUP;
|
return -ENOTSUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue