drivers: gpio: pca95xx: do not write to output regs if pin is input
Remove unconditional write to PCA95xx output registers in setup_pin_dir, and only write to output registers if selected pin is configured as an output. Fixes #45774 Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
This commit is contained in:
parent
e15523d198
commit
2675fb4ce3
1 changed files with 5 additions and 5 deletions
|
@ -1,6 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2015 Intel Corporation.
|
* Copyright (c) 2015 Intel Corporation.
|
||||||
* Copyright (c) 2020 Norbit ODM AS
|
* Copyright (c) 2020 Norbit ODM AS
|
||||||
|
* Copyright 2022 NXP
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
@ -263,16 +264,15 @@ static int setup_pin_dir(const struct device *dev, uint32_t pin, int flags)
|
||||||
} else if ((flags & GPIO_OUTPUT_INIT_LOW) != 0U) {
|
} else if ((flags & GPIO_OUTPUT_INIT_LOW) != 0U) {
|
||||||
reg_out &= ~BIT(pin);
|
reg_out &= ~BIT(pin);
|
||||||
}
|
}
|
||||||
|
ret = update_output_regs(dev, reg_out);
|
||||||
|
if (ret != 0) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
reg_dir &= ~BIT(pin);
|
reg_dir &= ~BIT(pin);
|
||||||
} else {
|
} else {
|
||||||
reg_dir |= BIT(pin);
|
reg_dir |= BIT(pin);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = update_output_regs(dev, reg_out);
|
|
||||||
if (ret != 0) {
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = update_direction_regs(dev, reg_dir);
|
ret = update_direction_regs(dev, reg_dir);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue