From 2675fb4ce3c7aa3b4d344cf88ef0e474a6817e16 Mon Sep 17 00:00:00 2001 From: Daniel DeGrasse Date: Wed, 25 May 2022 16:11:46 -0500 Subject: [PATCH] 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 --- drivers/gpio/gpio_pca95xx.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/gpio/gpio_pca95xx.c b/drivers/gpio/gpio_pca95xx.c index ad4676e4a89..0aad102fd77 100644 --- a/drivers/gpio/gpio_pca95xx.c +++ b/drivers/gpio/gpio_pca95xx.c @@ -1,6 +1,7 @@ /* * Copyright (c) 2015 Intel Corporation. * Copyright (c) 2020 Norbit ODM AS + * Copyright 2022 NXP * * 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) { reg_out &= ~BIT(pin); } + ret = update_output_regs(dev, reg_out); + if (ret != 0) { + return ret; + } reg_dir &= ~BIT(pin); } else { reg_dir |= BIT(pin); } - ret = update_output_regs(dev, reg_out); - if (ret != 0) { - return ret; - } - ret = update_direction_regs(dev, reg_dir); return ret;