From nobody Thu Dec 18 10:24:19 2025 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 73C3D1FCD1B for ; Tue, 11 Feb 2025 12:10:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275807; cv=none; b=QBmkZSkXeOC6CWRzi3hOMmbtqbZDVb135KDH/lQVBoT6xMJSSHMR4ylY4T4e41KwP1mr5sHcDjtlDBNTEql4k2NIIzVr4yQ6lNoqpS9NgOZBCm2SqJFZgp6eaSemEV1rv47mhVLS+/mXplAJtYzBSIavt6x6MqYg0XeeWViXlzU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275807; c=relaxed/simple; bh=MMkb4dRX5zMhwJcQDReE7WPl/llXU9kqfg5byg6F6mQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tJCJaNDhcbpJl421NuslatcSC1NRLBm4jbu1lHfj1JtjNZNg1LHzu39/lD9pAt5wL2tfrQVFfMSZR4v8WEVmctXP+1kFcQ6VOBNh40IPzdQ68IbsyJGM7Dzqy1m9pkg4Escnt0ciJ1mXbE5PDN9E/N9110b3ddj8oYXBuD4Etfw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl; spf=none smtp.mailfrom=bgdev.pl; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b=cEfiGe2o; arc=none smtp.client-ip=209.85.221.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="cEfiGe2o" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-38dc5b8ed86so2354424f8f.1 for ; Tue, 11 Feb 2025 04:10:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1739275803; x=1739880603; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=aEDRUvF1p1hAfOhpGhc4T564238TZHGEZmhtJoahJg0=; b=cEfiGe2ormQCqinwRfQmpo6Vpuli+KpXWhnIt7K8LZR2omtXWt99iCNDgNLDMLNNU9 Vnizla0xFZ4bJk/7LvhJ1gEviO+blHCdTVKW8NcZEmMReR6hZI4LKl6c5+Tzhim/MZgu o3nEKJ1Q6/wWqksK5wShJmPlAqjvZwG7IPbBPIxRBpjJoDqtjl2Gi9kYq0n2glP1jeKx 1DuKxw6KPyA8esW6cjI5XDKzv44xumJ1ZC0n65E2d+jmPbQQXlp7/bg5G6p/U1OaUVSX 8Blcz4Ki8OVWaonKco7zYA5J5ckO/fAYmej7bDtSbPB1Xn+LJB2A9F7IGKqv/I0gwrBf 1LNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739275803; x=1739880603; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=aEDRUvF1p1hAfOhpGhc4T564238TZHGEZmhtJoahJg0=; b=Cm/M9Lc+Lw7HiUatDQrW60z0ZGjjC4DkfgVc5FWLIUVfEVcMOyTwWc9QvGW8b9oJ2c TFuBQAFCJFY6ocqqAzGPRPs40y1o/s4NfV/j09ZiWLIhza98WSwT1g4sqQPENVyoyUcQ g4jwJx2+RbKQyE6EkYvX4AGCl8cziCPCpspcDvmDXpJiSf61THXz7FBi/i4ssxKs1giR LcBT0SWiVLueyuLTKiyizwGFDe75MQ0MRa+C0GOhtHbCX9XRuRfH2I4rxrahDmkM+iO3 OXgGAMPjLawzQPM+tNEJn9wRsNFgegrdbT+IiInHuoVCkRn6sJAzcauuUnV2OOajSFN/ L6PQ== X-Forwarded-Encrypted: i=1; AJvYcCXyZK3iHqU5bB+pV4Stx0i7Vt+nr/z8txkhKIJHs9zMSOTaSW1ZnAjB9/bSDWlJ9i0z354am5jX+OzxevA=@vger.kernel.org X-Gm-Message-State: AOJu0YxdwbBsH5nCy0M5MRqIIWPl3aJi02/ZjZ1jpSYvKs3teAjfAAa3 VetWgFJUZTUxHEQvNQQQ5Lrre04CIc2jF9E35lzf2SJuXCHy90Bv8A/FO3x1U08= X-Gm-Gg: ASbGnctlmjc3o8326Ji1/hQu7JqMxQ84XHI7t39oGp2RRxGEuBKoompr9WXBn4VwJdf TWfNfUCiUhHTlM7VSCmOPfsldK0++nEDnep4hk222tu1BAVzpzZ2yZDw9kCSM3FGIqxEDiuaaFj 1hn1vjXsCJWaXgV1fstYPMfE4q2aqg5lxhh9HKx/5/HeaZ0nJA43DnQYdq2uvJ/Pilk7hq5N4hh H9ULqOn3/1y2F7Ekj/ov2rWF9BHjDTYB7Y/wKCJI722axpgiS6x7GZFZbRX3cIFTVthRvWucxVr iX8mfwA= X-Google-Smtp-Source: AGHT+IGbXPVGWi7Igz/keya3LWr0E2YRzBTraUZk7q4L4t7TU0QIroRHD06D1dZYCV3EZu+jd8mtYg== X-Received: by 2002:a05:6000:2a6:b0:38d:badf:9dec with SMTP id ffacd0b85a97d-38de41be928mr3219861f8f.38.1739275802566; Tue, 11 Feb 2025 04:10:02 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:561:8978:1d41:636a]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38dd4342502sm9152327f8f.26.2025.02.11.04.10.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 04:10:02 -0800 (PST) From: Bartosz Golaszewski Date: Tue, 11 Feb 2025 13:09:35 +0100 Subject: [PATCH 01/14] gpiolib: make value setters have return values Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250211-gpio-set-retval-v1-1-52d3d613d7d3@linaro.org> References: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> In-Reply-To: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Michael Walle , Bamvor Jian Zhang , Geert Uytterhoeven , Keerthy , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=11577; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=QVcgCfBIvLr0n9gb/kFfsTwOztz1FuXZwUfXaqOWYsY=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBnqz4VW82RuRMVMesp/5yKWucPbtOOpyBV1YpnL Nkdr1ZmaCCJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ6s+FQAKCRARpy6gFHHX cuEsD/9fM2MIJuFPOrpuztTyDrN6tM+lV8fL+205K8GrWizVU0xenBmWDMULVLH/zH9tJXV4H97 9P0FNayLCrkGyP/Z9N5QBPskF+FyiY9dJzs2L+92eeT1m0SZ8fJLNN08Y1A9dLui9wOuME4VHYa LutSNpMxDKfGE9RwUIkIFTwq/Hhb0Ia99ozZ7z4fT53VkzR2Z4amk7bzGv/DEeTg3o8d0ZCGx9z YAu7kUV6nZOyU/Omd9wKbjb+DuD/ewlA1bCWqCgkeszJScEjvyzltwkgiE0t7UvlmiyFm4CBWYi oN/1F3CgAtLBclcPdq59SC3PrRudMB2pvVMsN0g2VYf1QCWH1z9RLPy/6CT3Bq+I+WZ9GpITBAJ h9qgLGMQXJR7eBoc+zDzuEYoGwjrv1xxy6i4QwKgtpYuAgemw7iCaDc0i8sxFNwimCsod4FtlKQ pwWQYIENBKEr8Dmz4KSULSBBdHvJ/auWGmioysSHdXiPg9zHCL46JjFI5pWSnQGGTDvBaQPZJ1u PmMjeFVuL1flL5h/2D3rpEI8wVdso6mw9mcQ/nuMrAo1XceKex92JZmc0bbk9VmQHHo1KIo/Tb9 mUi8B2E9PxjsFmQvNzf9TwAdzfwwlXBJ/mJrhIqstieY9ARZYdy1N2SKQMjajAlcdFo0Y3ZoihL OYsLf8lDXdd+ZzA== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Change the in-kernel consumer interface for GPIOs: make all variants of value setters that don't have a return value, return a signed integer instead. That will allow these routines to indicate failures to callers. This doesn't change the implementation just yet, we'll do it in subsequent commits. We need to update the gpio-latch module as it passes the address of value setters as a function pointer argument and thus cares about its type. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpio-latch.c | 2 +- drivers/gpio/gpiolib.c | 53 ++++++++++++++++++++++++---------------= ---- include/linux/gpio.h | 4 ++-- include/linux/gpio/consumer.h | 22 ++++++++++-------- 4 files changed, 46 insertions(+), 35 deletions(-) diff --git a/drivers/gpio/gpio-latch.c b/drivers/gpio/gpio-latch.c index d7c3b20c8482..e935b3b34117 100644 --- a/drivers/gpio/gpio-latch.c +++ b/drivers/gpio/gpio-latch.c @@ -72,7 +72,7 @@ static int gpio_latch_get_direction(struct gpio_chip *gc,= unsigned int offset) } =20 static void gpio_latch_set_unlocked(struct gpio_latch_priv *priv, - void (*set)(struct gpio_desc *desc, int value), + int (*set)(struct gpio_desc *desc, int value), unsigned int offset, bool val) { int latch =3D offset / priv->n_latched_gpios; diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index be3351583508..f31c1ed905c0 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -3383,13 +3383,13 @@ EXPORT_SYMBOL_GPL(gpiod_get_array_value); * @desc: gpio descriptor whose state need to be set. * @value: Non-zero for setting it HIGH otherwise it will set to LOW. */ -static void gpio_set_open_drain_value_commit(struct gpio_desc *desc, bool = value) +static int gpio_set_open_drain_value_commit(struct gpio_desc *desc, bool v= alue) { int ret =3D 0, offset =3D gpio_chip_hwgpio(desc); =20 CLASS(gpio_chip_guard, guard)(desc); if (!guard.gc) - return; + return -ENODEV; =20 if (value) { ret =3D guard.gc->direction_input(guard.gc, offset); @@ -3403,6 +3403,8 @@ static void gpio_set_open_drain_value_commit(struct g= pio_desc *desc, bool value) gpiod_err(desc, "%s: Error in set_value for open drain err %d\n", __func__, ret); + + return ret; } =20 /* @@ -3410,13 +3412,13 @@ static void gpio_set_open_drain_value_commit(struct= gpio_desc *desc, bool value) * @desc: gpio descriptor whose state need to be set. * @value: Non-zero for setting it HIGH otherwise it will set to LOW. */ -static void gpio_set_open_source_value_commit(struct gpio_desc *desc, bool= value) +static int gpio_set_open_source_value_commit(struct gpio_desc *desc, bool = value) { int ret =3D 0, offset =3D gpio_chip_hwgpio(desc); =20 CLASS(gpio_chip_guard, guard)(desc); if (!guard.gc) - return; + return -ENODEV; =20 if (value) { ret =3D guard.gc->direction_output(guard.gc, offset, 1); @@ -3430,16 +3432,20 @@ static void gpio_set_open_source_value_commit(struc= t gpio_desc *desc, bool value gpiod_err(desc, "%s: Error in set_value for open source err %d\n", __func__, ret); + + return ret; } =20 -static void gpiod_set_raw_value_commit(struct gpio_desc *desc, bool value) +static int gpiod_set_raw_value_commit(struct gpio_desc *desc, bool value) { CLASS(gpio_chip_guard, guard)(desc); if (!guard.gc) - return; + return -ENODEV; =20 trace_gpio_value(desc_to_gpio(desc), 0, value); guard.gc->set(guard.gc, gpio_chip_hwgpio(desc), value); + + return 0; } =20 /* @@ -3589,12 +3595,12 @@ int gpiod_set_array_value_complex(bool raw, bool ca= n_sleep, * This function can be called from contexts where we cannot sleep, and wi= ll * complain if the GPIO chip functions potentially sleep. */ -void gpiod_set_raw_value(struct gpio_desc *desc, int value) +int gpiod_set_raw_value(struct gpio_desc *desc, int value) { - VALIDATE_DESC_VOID(desc); + VALIDATE_DESC(desc); /* Should be using gpiod_set_raw_value_cansleep() */ WARN_ON(desc->gdev->can_sleep); - gpiod_set_raw_value_commit(desc, value); + return gpiod_set_raw_value_commit(desc, value); } EXPORT_SYMBOL_GPL(gpiod_set_raw_value); =20 @@ -3607,16 +3613,17 @@ EXPORT_SYMBOL_GPL(gpiod_set_raw_value); * different semantic quirks like active low and open drain/source * handling. */ -static void gpiod_set_value_nocheck(struct gpio_desc *desc, int value) +static int gpiod_set_value_nocheck(struct gpio_desc *desc, int value) { if (test_bit(FLAG_ACTIVE_LOW, &desc->flags)) value =3D !value; + if (test_bit(FLAG_OPEN_DRAIN, &desc->flags)) - gpio_set_open_drain_value_commit(desc, value); + return gpio_set_open_drain_value_commit(desc, value); else if (test_bit(FLAG_OPEN_SOURCE, &desc->flags)) - gpio_set_open_source_value_commit(desc, value); - else - gpiod_set_raw_value_commit(desc, value); + return gpio_set_open_source_value_commit(desc, value); + + return gpiod_set_raw_value_commit(desc, value); } =20 /** @@ -3630,12 +3637,12 @@ static void gpiod_set_value_nocheck(struct gpio_des= c *desc, int value) * This function can be called from contexts where we cannot sleep, and wi= ll * complain if the GPIO chip functions potentially sleep. */ -void gpiod_set_value(struct gpio_desc *desc, int value) +int gpiod_set_value(struct gpio_desc *desc, int value) { - VALIDATE_DESC_VOID(desc); + VALIDATE_DESC(desc); /* Should be using gpiod_set_value_cansleep() */ WARN_ON(desc->gdev->can_sleep); - gpiod_set_value_nocheck(desc, value); + return gpiod_set_value_nocheck(desc, value); } EXPORT_SYMBOL_GPL(gpiod_set_value); =20 @@ -4054,11 +4061,11 @@ EXPORT_SYMBOL_GPL(gpiod_get_array_value_cansleep); * * This function is to be called from contexts that can sleep. */ -void gpiod_set_raw_value_cansleep(struct gpio_desc *desc, int value) +int gpiod_set_raw_value_cansleep(struct gpio_desc *desc, int value) { might_sleep(); - VALIDATE_DESC_VOID(desc); - gpiod_set_raw_value_commit(desc, value); + VALIDATE_DESC(desc); + return gpiod_set_raw_value_commit(desc, value); } EXPORT_SYMBOL_GPL(gpiod_set_raw_value_cansleep); =20 @@ -4072,11 +4079,11 @@ EXPORT_SYMBOL_GPL(gpiod_set_raw_value_cansleep); * * This function is to be called from contexts that can sleep. */ -void gpiod_set_value_cansleep(struct gpio_desc *desc, int value) +int gpiod_set_value_cansleep(struct gpio_desc *desc, int value) { might_sleep(); - VALIDATE_DESC_VOID(desc); - gpiod_set_value_nocheck(desc, value); + VALIDATE_DESC(desc); + return gpiod_set_value_nocheck(desc, value); } EXPORT_SYMBOL_GPL(gpiod_set_value_cansleep); =20 diff --git a/include/linux/gpio.h b/include/linux/gpio.h index 6270150f4e29..c1ec62c11ed3 100644 --- a/include/linux/gpio.h +++ b/include/linux/gpio.h @@ -91,7 +91,7 @@ static inline int gpio_get_value_cansleep(unsigned gpio) } static inline void gpio_set_value_cansleep(unsigned gpio, int value) { - return gpiod_set_raw_value_cansleep(gpio_to_desc(gpio), value); + gpiod_set_raw_value_cansleep(gpio_to_desc(gpio), value); } =20 static inline int gpio_get_value(unsigned gpio) @@ -100,7 +100,7 @@ static inline int gpio_get_value(unsigned gpio) } static inline void gpio_set_value(unsigned gpio, int value) { - return gpiod_set_raw_value(gpio_to_desc(gpio), value); + gpiod_set_raw_value(gpio_to_desc(gpio), value); } =20 static inline int gpio_to_irq(unsigned gpio) diff --git a/include/linux/gpio/consumer.h b/include/linux/gpio/consumer.h index db2dfbae8edb..4a87c24686e3 100644 --- a/include/linux/gpio/consumer.h +++ b/include/linux/gpio/consumer.h @@ -119,7 +119,7 @@ int gpiod_get_array_value(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap); -void gpiod_set_value(struct gpio_desc *desc, int value); +int gpiod_set_value(struct gpio_desc *desc, int value); int gpiod_set_array_value(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, @@ -129,7 +129,7 @@ int gpiod_get_raw_array_value(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap); -void gpiod_set_raw_value(struct gpio_desc *desc, int value); +int gpiod_set_raw_value(struct gpio_desc *desc, int value); int gpiod_set_raw_array_value(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, @@ -141,7 +141,7 @@ int gpiod_get_array_value_cansleep(unsigned int array_s= ize, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap); -void gpiod_set_value_cansleep(struct gpio_desc *desc, int value); +int gpiod_set_value_cansleep(struct gpio_desc *desc, int value); int gpiod_set_array_value_cansleep(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, @@ -151,7 +151,7 @@ int gpiod_get_raw_array_value_cansleep(unsigned int arr= ay_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap); -void gpiod_set_raw_value_cansleep(struct gpio_desc *desc, int value); +int gpiod_set_raw_value_cansleep(struct gpio_desc *desc, int value); int gpiod_set_raw_array_value_cansleep(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, @@ -375,10 +375,11 @@ static inline int gpiod_get_array_value(unsigned int = array_size, WARN_ON(desc_array); return 0; } -static inline void gpiod_set_value(struct gpio_desc *desc, int value) +static inline int gpiod_set_value(struct gpio_desc *desc, int value) { /* GPIO can never have been requested */ WARN_ON(desc); + return 0; } static inline int gpiod_set_array_value(unsigned int array_size, struct gpio_desc **desc_array, @@ -404,10 +405,11 @@ static inline int gpiod_get_raw_array_value(unsigned = int array_size, WARN_ON(desc_array); return 0; } -static inline void gpiod_set_raw_value(struct gpio_desc *desc, int value) +static inline int gpiod_set_raw_value(struct gpio_desc *desc, int value) { /* GPIO can never have been requested */ WARN_ON(desc); + return 0; } static inline int gpiod_set_raw_array_value(unsigned int array_size, struct gpio_desc **desc_array, @@ -434,10 +436,11 @@ static inline int gpiod_get_array_value_cansleep(unsi= gned int array_size, WARN_ON(desc_array); return 0; } -static inline void gpiod_set_value_cansleep(struct gpio_desc *desc, int va= lue) +static inline int gpiod_set_value_cansleep(struct gpio_desc *desc, int val= ue) { /* GPIO can never have been requested */ WARN_ON(desc); + return 0; } static inline int gpiod_set_array_value_cansleep(unsigned int array_size, struct gpio_desc **desc_array, @@ -463,11 +466,12 @@ static inline int gpiod_get_raw_array_value_cansleep(= unsigned int array_size, WARN_ON(desc_array); return 0; } -static inline void gpiod_set_raw_value_cansleep(struct gpio_desc *desc, - int value) +static inline int gpiod_set_raw_value_cansleep(struct gpio_desc *desc, + int value) { /* GPIO can never have been requested */ WARN_ON(desc); + return 0; } static inline int gpiod_set_raw_array_value_cansleep(unsigned int array_si= ze, struct gpio_desc **desc_array, --=20 2.45.2 From nobody Thu Dec 18 10:24:19 2025 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7F9CF1FCFE3 for ; Tue, 11 Feb 2025 12:10:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275807; cv=none; b=i2z7gxd4FbWn7uT3/M2kV4a84lH1i3uFU7UIQRqCM5+8lZChlpB5rJ+TJVXrfCGUjxYLleE4jotmRw2nAcXvK+qgGjGf166Yzi6ZXgyJ1FQV+zFOgagK5YKx2vbznIevyTHPQAXFt6uBm2nntEZ9EG4VyOXSTOTxyaKbUI5ilNQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275807; c=relaxed/simple; bh=B8vjA07aGlepGS0i+Pd6WcAWx2f5Mn3tNczFpPj4Lw4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eeZmyfqbAKBu3pWm6b29fjJiRE2qsNT2c0VQNVcgA1vtZR+NnOogd9tMPsRks+lRzD03JTnJj4GEn0Q+QNVz2RXQ/vOyLEdXN4+hfojStZTxOFaf7A+6SIJGAIFuFi/CSOIScDaJD9/fZy3Jgx2bwaMXzFr2XN+S+ksh/4kIMD8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl; spf=none smtp.mailfrom=bgdev.pl; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b=Rkr0OOAl; arc=none smtp.client-ip=209.85.128.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="Rkr0OOAl" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-4394820123dso11587305e9.2 for ; Tue, 11 Feb 2025 04:10:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1739275804; x=1739880604; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=d+BbFMd7n+K+mqNfr4cyQYVRFXSPQTKkfNEUIIhkMJo=; b=Rkr0OOAlrX//Ewa3iGjLIrG0U+ckTg3SHYJhYv9l16dKIO0E2UoIRoFBBSQjPMiVJ5 esWGLEhowL4igZr9n0UgxwLvfJ9G11iQHDuyQbzN3KAsc6+KTkIthRG0lc+nH8sI3YB1 oC0gbqspQLn6ncCvMSj4jBybrwd8Lah3Mb4NQVglOq8nj7TqwIl7cbLs9E9h7cYiOEaE 7XvS3+z5exDjsFX3HctwaymjB5WdmcraJ5DHE0CjmArTzs60y4+zqh9kNiBrfeGOdaHF MwBa/iHedpfCuHVXza+NdlV5wOK1wmtBK4K/DfXt+pzp4CQvyLKogOl2UvWHH2lSUvjW prNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739275804; x=1739880604; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=d+BbFMd7n+K+mqNfr4cyQYVRFXSPQTKkfNEUIIhkMJo=; b=IXjJ9J7ckR6IfaMrB1YYlOvFGu5wgpkzyc8/HXwVdklJWnh4ZmE1v5MQ8SQMnG1mTn XHnHQska9/4YvecM2Cgf1Jt/KZMR0Uutzpcn7FEMFeRZLCK5N8xkxEB96dcrDKnHgWx/ nkRXDLaLfx0FCCVrAvgQJOdLoYYHZeIbZ2m2rdWfTp3zC7sU7BExLufxG/aMkpkeTnzW bWg9rl2GulWimtVxT75yVBN9rv8sq5tEpP99uFno7TKVrYfXKl5UFFedJC535VcV0evn T+LKFZxMRNsBy4gsFtq0RDEXaexZUxq3w86oIWnOOJYpvsVN+NoR1/jO3do5eDnqggMI +63w== X-Forwarded-Encrypted: i=1; AJvYcCWxx3rVo7OgcYpgwpAnOpTr1I6hg5ttyqHOfM+VTeYeZQDiCcxUoNlkUZbwtDF/5CrSD9PLvH+lILT/jR8=@vger.kernel.org X-Gm-Message-State: AOJu0Yy44H4loXhBjCj0E1HIl7VMJchX1Vj8IrbJ23jwZ2HFn18z/OMT QVqbRbDP6h3YPZppoFqWOrpMfVB6iuIuMHISKQ07aS59NCeWuha3uC7oDHf6PiY= X-Gm-Gg: ASbGncv3yX4/Cub+vyApZa3OSbqHpGHA76bcPjVVjJR3qNgcTB+4vdUcK6Leb8Z1x36 HQkGYepyQB44/BwdFoxgJcAvZtZcpi1DZC/z7DvdkP6u2S+xczfuGxXTVhQxYF4FLzoHwDo68I6 bzAswnOxhVAdDxGPNsF4SyvKTP0GAZTO7luIF1Un0cEbAVXcyeBZ6Dr0sfOboSuzC822qTBby7C 06ZGYSOqXb/aRW4d03WH+dxTg3ub69FTlFg9+ojAX3oDVAr91St3DmLicmJWzzqzipVcZTtQtoC 4kulpi0= X-Google-Smtp-Source: AGHT+IEMOSwVAR4KDth9NgRCckPxsc14pAzy1Ly+pQWy5/SYHWyjS0Tny1smiur+oksg1bAgl4QksA== X-Received: by 2002:a05:600c:4754:b0:434:9e46:5bc with SMTP id 5b1f17b1804b1-4392498ac55mr159173485e9.10.1739275803591; Tue, 11 Feb 2025 04:10:03 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:561:8978:1d41:636a]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38dd4342502sm9152327f8f.26.2025.02.11.04.10.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 04:10:03 -0800 (PST) From: Bartosz Golaszewski Date: Tue, 11 Feb 2025 13:09:36 +0100 Subject: [PATCH 02/14] gpiolib: wrap gpio_chip::set() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250211-gpio-set-retval-v1-2-52d3d613d7d3@linaro.org> References: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> In-Reply-To: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Michael Walle , Bamvor Jian Zhang , Geert Uytterhoeven , Keerthy , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2093; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=mUYillua396qTpKVAHzLY6KYpt0/yytGd3oRzjdo/zU=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBnqz4VVFl+RrrC3Le01DvDprJsAWF06daXfViIm 8D6OIwU+HmJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ6s+FQAKCRARpy6gFHHX co2lD/9YmNWa2vCgSb+a5q1W7hneYy5sCN/lxxqxi9h6PHVGFNkgM+O01EX0x5ugFpujDda8g5B 1MHXxUYpOlOxh/Fecy9M1audvEcJrtoJJJvzKngGAPV4abSAt7wTiExk73+bhFfFiwrE2tNZNsE FXI38XZU/VGuQqO/xWVmkPeO9LuUrgsil/Lt3HhpsYFsw56JeZfzzpm/OOvzBhzmP2SQihaoTvm bCRG5ObmxcLS1us6hmr2LDvwTciWp87gKfRT0MOmtSwn2purP54d/rghqEkTcaeu1QaOdAu89bP AL/FfbXZgdE5bEZdbL4JFSuD5NJcb14qBq2SJ/y004ZE01lP4tZ+yyQydkgYl2iuegCGGBQwqOw vrXlPqrHEoBWLFQOq6sNvHl464BcxGM+kRufiIfuzAB5niHC04Lk9kvzyltpl9G+GNh7zO6E2CX PFVbfoFPHfRPDXrdmwLjNly/7wdS6yLa2X41DLbdSExxPXWF//+TDOzqwaC2Fe3SwAWJdalo/fv dIZdw84jaweMHTbCqqgCHL6VfeYnQANCDgvzi3m7tpaySMgt/2BVZIw/YqbSADEkxa/vuWL8Os8 EgkztChReNSK9YZ1co43MzazR22QSa5dlX5g2hwJ+YCbzUiXrbJ0GIyHhsC66Lw5F1WKwWh7Ez2 tAu296INMZ+5VuA== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski We have three places where we dereference the gpio_chip::set() callback. In order to make it easier to incorporate the upcoming new variant of this callback (one returning an integer value), wrap it in a helper so that the dereferencing only happens once. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpiolib.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index f31c1ed905c0..7826bfb72104 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -2747,6 +2747,17 @@ int gpiod_direction_input_nonotify(struct gpio_desc = *desc) return ret; } =20 +static int gpiochip_set(struct gpio_chip *gc, unsigned int offset, int val= ue) +{ + lockdep_assert_held(&gc->gpiodev->srcu); + + if (WARN_ON(unlikely(!gc->set))) + return -EOPNOTSUPP; + + gc->set(gc, offset, value); + return 0; +} + static int gpiod_direction_output_raw_commit(struct gpio_desc *desc, int v= alue) { int val =3D !!value, ret =3D 0; @@ -2783,7 +2794,9 @@ static int gpiod_direction_output_raw_commit(struct g= pio_desc *desc, int value) * If we can't actively set the direction, we are some * output-only chip, so just drive the output as desired. */ - guard.gc->set(guard.gc, gpio_chip_hwgpio(desc), val); + ret =3D gpiochip_set(guard.gc, gpio_chip_hwgpio(desc), val); + if (ret) + return ret; } =20 if (!ret) @@ -3443,9 +3456,7 @@ static int gpiod_set_raw_value_commit(struct gpio_des= c *desc, bool value) return -ENODEV; =20 trace_gpio_value(desc_to_gpio(desc), 0, value); - guard.gc->set(guard.gc, gpio_chip_hwgpio(desc), value); - - return 0; + return gpiochip_set(guard.gc, gpio_chip_hwgpio(desc), value); } =20 /* @@ -3468,7 +3479,7 @@ static void gpio_chip_set_multiple(struct gpio_chip *= gc, =20 /* set outputs if the corresponding mask bit is set */ for_each_set_bit(i, mask, gc->ngpio) - gc->set(gc, i, test_bit(i, bits)); + gpiochip_set(gc, i, test_bit(i, bits)); } } =20 --=20 2.45.2 From nobody Thu Dec 18 10:24:19 2025 Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 56F211FCFFE for ; Tue, 11 Feb 2025 12:10:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275808; cv=none; b=UVigYXLdAJqrJ7jdz5RMkX7xFiet2Er4+W+3Q7ROuzGK2eoPBblOxdAEP6KH8/IEHpuvG1xWdoGII8T8mjpn8C4dUhkOcKpxACbWxr6tZYudsix8//1jq3e0O8JA23p/MadnCFIwXSucXSRaoQ0XET9RU0DRiAQ+AAbfjF8E1m0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275808; c=relaxed/simple; bh=wXwa0E1M0BKOGtuEr1FqMmPc8bR9UmruxdeB5zto9+4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fnSP/+BiGMRS9nalSLcy33taXS/jn2IRR9H88cQNYO0q4eKzINaEGL1coPUx4rcxqld14PNaJHAYNpxa0uJqB/ngki615dO8DFptCyCoLn9ajnJrgbqvSMQXEjoBfCRcXDgl2IonLacHSx7dp90InsmYiXHxCcdNsXnH8kzFckc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl; spf=none smtp.mailfrom=bgdev.pl; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b=MKO8qZe1; arc=none smtp.client-ip=209.85.221.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="MKO8qZe1" Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-38ddc36b81dso1548290f8f.1 for ; Tue, 11 Feb 2025 04:10:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1739275804; x=1739880604; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=r482wJny7pIn2us9/LYT8FUnmdRdfE6AyUJxQwiteLw=; b=MKO8qZe1Py3yorCBWx/vvw69kTfL+tdrKfOqNNF/VnXczf2NNEud9HtGYlhLk8vzDL ByuHxmv9pFRH9ef5pCY2N4Rq7EDzShCo+02nGaREYMQ62bLvxtBF59wxOL3beDzCDdEO mk5r/Yw+EDygA/ZmyR2cD1Ed6gaosACkKHLNzuNEmOKHGebvZkayfHoULyUNbuWi1r1G CjsMd7WnvmHRcajEveQy7bIe4KcLKEgEIybTf9bopqyZRwHfr57CEl5Pccu4bKvMEkrA epHlEDx6Lq1Uecr8Bi6hlj0Uh0y+AcT08ofKet1LrkQeKBKTJYavscDlV4HQakADGIeu 5aaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739275804; x=1739880604; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=r482wJny7pIn2us9/LYT8FUnmdRdfE6AyUJxQwiteLw=; b=OoayJeR1fhFfdlT8XGitLVkltUVNAWxTsfPh2mkM3QjPh4iLirB3Fxq+pM56GrywHJ +aP/4IkWMuJwmMe3ZVMh7VNi+U12ocggk2RSWaPjo/Z8pUVNTkXG/eoJepE1o7JU8O3Q 4AAXVZzAZ5TVk+pTWkbuDHEZUwVNs8EtD85384onBNunOUG9qA5uVFvAo6rJ92AmNz32 2o7qNUyGA3NDT7M3aFBf9eGPwFOI6zt7fmsO3xRHnxeneP8Khm0IsLldVsWg/iczNIGx gV9aCON3f+9X8Ra0wncMFiRVGg+keUpyWLwf//HZdA8jCY4K/juHkC0jaCLMYrebCfXR +9bg== X-Forwarded-Encrypted: i=1; AJvYcCVUNMMC3Ker0VsxbcYkZLIbzrLtzG2THOmdIC+hg/B89Z5kVrNHcz+44RvbfbZk7H+UPgOSRg7y25Cq4/0=@vger.kernel.org X-Gm-Message-State: AOJu0YzjQ+iREWL3WMWXMkompE8XnP0GyAF+/XyXQeYqLaWMvay3ok1H iOBAEanpsHvwUp+2bof47Oa1LP3+FwrtMlGVaRVyn2dsU6bEf3KXEYC3RCpPzV0= X-Gm-Gg: ASbGncv+FNHGPpltLGb5Cbd0jj2QDbPWd1GdpjrIt9mMxDiGibtOhbemwIGON9JFDM2 Pwa+UsEcC7bJ/wpGHDZPBRaIcjQej0gADURNOK++Lt3eSSJ95tPyibsmA0oErnrd43wXbRdISba Jq7L4ca8f7oY3JZYhZyiXoN7KovYxJ5jk4igIBP38j2pcg1OSnXDXbEvuHuh3Gsc7Y4YiJvmQtR J/JtCUzyEYOHThzNCO8ezbIuR3XVBvY8yLny0jVn5gkJ804p0XP52KmfCYKhSP9jCv6YCHneMKi 0ba8vvw= X-Google-Smtp-Source: AGHT+IGm1WkQZSm2qsw7HP5G90EX3T9fCEEa3NdUWmfxnPUwB/BOLSiGfP2dRRFgiiDIkTs1z6MEFQ== X-Received: by 2002:a05:6000:1fa8:b0:38d:d59c:c9d6 with SMTP id ffacd0b85a97d-38de43c6f60mr2704980f8f.21.1739275804641; Tue, 11 Feb 2025 04:10:04 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:561:8978:1d41:636a]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38dd4342502sm9152327f8f.26.2025.02.11.04.10.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 04:10:04 -0800 (PST) From: Bartosz Golaszewski Date: Tue, 11 Feb 2025 13:09:37 +0100 Subject: [PATCH 03/14] gpiolib: rework the wrapper around gpio_chip::set_multiple() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250211-gpio-set-retval-v1-3-52d3d613d7d3@linaro.org> References: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> In-Reply-To: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Michael Walle , Bamvor Jian Zhang , Geert Uytterhoeven , Keerthy , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=3178; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=7EHwjLmMOp5i1lwV4E9OqV8YPFD4rMKN4X3bOQqQoMs=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBnqz4WlB6wl7VuviO9RVP4ZQ6IKfVuQCqI4ys9F FlywPa/RK+JAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ6s+FgAKCRARpy6gFHHX cuW8D/sEVQ1GIHY94+MF7SYD7ldcMrKEKxbzIl/A8HiMMe1jD4KIkkZbC7w/0v0KkPXbyFGm6Ka ielhuHHRavv4ZDgXysHqoKqa73JgWrXT61tx7z03DSQOHYUnB3AcvReHdj3XR9ETlrNcMMs/MbS Uewo20cZnAozyHwSHfeBNoZKl8UGkDhuTc4lZywz7swislpBXTRq8prFT0zxVJFQh6TzaFyB0RG ValuOi/AfTVzTSfjDh0b9I14y7gORbTEgb3sJwMXlP5gP5J7nzG9xyagLaXzeATeV1Oyu4bciOY RAp94HfhlAd1MsBGTFU7ZWUoNyk9d6t7uL2WpkCl4LAyLArEM3jLb/zElsmGSj5W1DBJosGLlyO dztgOpEIneqO9f2i4Q4+9wcuiCYSxzvSgefxz95yJMaunV92k7eyVFOg9yv1FQiqiAMJovyaude abM9xPj9M4tlDF2vsKMtEz/n6mrGeHDee3gvvwWLIa3fpUrFlW8ozGcJJFqBQAo5EPd8EYvm9D/ z/p3eohmgMQ/SlUY/tjiNFwJxZ6MMt56YANTxzZFGkEZCmnBosc5AoFnYdgOB07CLLhDz+R03xj yftVC8stTz6IOa4bU2wsk/6UOM2Ct8Kato4d6PjJLSPHiXgwyhTuaHTn9SpdPBOUPShof4GIcAX 5exXsv+hV0xnqsw== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Make the existing wrapper around gpio_chip::set_multiple() consistent with the one for gpio_chip::set(): make it return int, add a lockdep assertion, warn on missing set callback and move the code a bit for better readability. Add return value checks in all call places. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpiolib.c | 45 ++++++++++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 7826bfb72104..1f078a20ce3d 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -3468,19 +3468,32 @@ static int gpiod_set_raw_value_commit(struct gpio_d= esc *desc, bool value) * defines which outputs are to be changed * @bits: bit value array; one bit per output; BITS_PER_LONG bits per word * defines the values the outputs specified by mask are to be set to + * + * Returns: 0 on success, negative error number on failure. */ -static void gpio_chip_set_multiple(struct gpio_chip *gc, - unsigned long *mask, unsigned long *bits) +static int gpiochip_set_multiple(struct gpio_chip *gc, + unsigned long *mask, unsigned long *bits) { + unsigned int i; + + lockdep_assert_held(&gc->gpiodev->srcu); + + if (WARN_ON(unlikely(!gc->set_multiple && !gc->set))) + return -EOPNOTSUPP; + if (gc->set_multiple) { gc->set_multiple(gc, mask, bits); - } else { - unsigned int i; - - /* set outputs if the corresponding mask bit is set */ - for_each_set_bit(i, mask, gc->ngpio) - gpiochip_set(gc, i, test_bit(i, bits)); + return 0; } + + /* set outputs if the corresponding mask bit is set */ + for_each_set_bit(i, mask, gc->ngpio) { + ret =3D gpiochip_set(gc, i, test_bit(i, bits)); + if (ret) + break; + } + + return ret; } =20 int gpiod_set_array_value_complex(bool raw, bool can_sleep, @@ -3489,7 +3502,7 @@ int gpiod_set_array_value_complex(bool raw, bool can_= sleep, struct gpio_array *array_info, unsigned long *value_bitmap) { - int i =3D 0; + int i =3D 0, ret; =20 /* * Validate array_info against desc_array and its size. @@ -3506,8 +3519,11 @@ int gpiod_set_array_value_complex(bool raw, bool can= _sleep, bitmap_xor(value_bitmap, value_bitmap, array_info->invert_mask, array_size); =20 - gpio_chip_set_multiple(array_info->chip, array_info->set_mask, - value_bitmap); + ret =3D gpiochip_set_multiple(array_info->chip, + array_info->set_mask, + value_bitmap); + if (ret) + return ret; =20 i =3D find_first_zero_bit(array_info->set_mask, array_size); if (i =3D=3D array_size) @@ -3584,8 +3600,11 @@ int gpiod_set_array_value_complex(bool raw, bool can= _sleep, } while ((i < array_size) && gpio_device_chip_cmp(desc_array[i]->gdev, guard.gc)); /* push collected bits to outputs */ - if (count !=3D 0) - gpio_chip_set_multiple(guard.gc, mask, bits); + if (count !=3D 0) { + ret =3D gpiochip_set_multiple(guard.gc, mask, bits); + if (ret) + return ret; + } =20 if (mask !=3D fastpath_mask) bitmap_free(mask); --=20 2.45.2 From nobody Thu Dec 18 10:24:19 2025 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 556771FBEAB for ; Tue, 11 Feb 2025 12:10:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275809; cv=none; b=QANJPtFWpFnLcaffvlmtZiyKSkF8Ej0F8bC8Mu3jW+v/qOwHK+WvLoRaz1cKS6PulAL/YFch6aFt0uIUmqi/uTffwnwGNXKOJw80TinvfcOWkYgwqrOz5YZlDQhlLSq5/g/FdUnhYpnqiNdIiei/fMAD9dnlqVWVlJL4QpY5AT4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275809; c=relaxed/simple; bh=caKhfxtRFMp/EYZR8ylZh3Qlurb7Wy9UqMcdz0OG2as=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lzeZQGJPv2vvalQ3imMmGWx2dCiCQTPbNCofQvckIAP20wnXY0gcQmCr7JoTZiBnKokepAn/qMRcu9c3eUYeJyIY4VcfhiAmWqQbCrT1KO1T/icrpFw4QUOjKTUp4csFKsOaCy7pIoQMmpMfWHP4/OX6LYZZF0HWIOXxapgb8z8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl; spf=none smtp.mailfrom=bgdev.pl; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b=09VUB9Gq; arc=none smtp.client-ip=209.85.221.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="09VUB9Gq" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-38dd91c313bso1438122f8f.3 for ; Tue, 11 Feb 2025 04:10:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1739275805; x=1739880605; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=YB5pK+oicJDwPB8Q0nFLhIRVf54jMTA5bcMsE6iZ+04=; b=09VUB9GqdzNkKIr2xORY+cZ+vFaigKWdkg2V+alYu0mFG0rViMoheV6DX7TE/0UxCR hLyPoaAp5gO8Yi3PwjRMBW+5OuvI6ujfNGx0yyaYxYGRaamIdZbRHYNiUE0ybE1Tm8+Y l/ngD6YHIGa6ciMSA73voMmRK0AOL9XOEBc9Jj2i3lnODlhUin7NtyOtvr3I8jz1gxzU 3k6w5114GB021WP5qziSgf+N1iGjMW2AOl5KPj2O+sJjNhIDPwSeCR3qBv4sc+mLXVCV M6a+vwaFOCbV87KehRyFTUkGeKaQ3QiRdVpEFIFHIIn+xy5DYJGdjHU4qVgPf8qYW9sg YGiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739275805; x=1739880605; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YB5pK+oicJDwPB8Q0nFLhIRVf54jMTA5bcMsE6iZ+04=; b=jge1yzJFJIP7UpT2dYH6K2adaQxh303IPWJZfWuchatJbIaySpWpNWQcrCODTOXo17 Gh2E1mvPQXEy+wOGYiycS+nHPZ6UmNbZk7Cwz3h45m/omF8iClyipZPz6f4HVeQWQstd 9xlJFAdUzxLuVQPsf+n5s5QPs4hTijbKzmOod5hUVpUYYcCbfCmX6RBup4VcHOYEZQQ2 NVIi+sgT4bZvzwBq+PbD1EtKbtWQVnpYlPKYolqSLFctuHtLRxBD7DDG7sNd7/4DF8GD h1LIOYMmNRTw+xGPbzHAjKzSfKUd62l+PvrfTBjUo6GC18fIHQwr4kFuFV0gHg//1D4S GCEg== X-Forwarded-Encrypted: i=1; AJvYcCUNCB6zXimfsqRIRKNAottuX7Le8arObRL94WUT0+l0yphfv/dqN38kHblV8m63gs6d4OfULhcGYFHrhdE=@vger.kernel.org X-Gm-Message-State: AOJu0YymFVMZaJHa4l261Pllfu2zhHHVk2g2dBDemvubbXeaCF2YbmyY fdKl1y2x0PDPNng6s+mPxF+EB6/00mgwa5rc/qE3b7O06ynSbJN26pnOCH/Fo8I= X-Gm-Gg: ASbGncuFQtqfDRQBcLd7mzKzFdpHejA/5zWs5/FE1ET6bKFrxDzn/riu8+snPFO7ns/ wlplY7Z0BnRJW6MEWCVYB4osmHouqwTQ+gljRhON1Ewj2aRfQxz6iBy4RyJ3cJ/BRZP9/2JSzeG D68KPJutR5ISVJa45EytKGVX3aGzya925Fx++m/NoVVMscic4pS/cpA0Eyt5Ykevz1hQ9w6ZDkh ihwRI/LXiqLGF5ZkXeoiN1RLq1raLhwaFg7B1h2VAT35jBojnYJsGPq+7nWhe4NZjkvtZzyaA/Z 1OGd7pA= X-Google-Smtp-Source: AGHT+IHYHO39FYN9fqzxuulSr07JHo1uzefPIt87F1jvA2dDEDL04bAJrSOp1VwnvFvuELyXPcAF8g== X-Received: by 2002:a5d:5887:0:b0:385:e429:e59e with SMTP id ffacd0b85a97d-38de41c608bmr2481781f8f.52.1739275805525; Tue, 11 Feb 2025 04:10:05 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:561:8978:1d41:636a]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38dd4342502sm9152327f8f.26.2025.02.11.04.10.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 04:10:05 -0800 (PST) From: Bartosz Golaszewski Date: Tue, 11 Feb 2025 13:09:38 +0100 Subject: [PATCH 04/14] gpiolib: introduce gpio_chip setters that return values Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250211-gpio-set-retval-v1-4-52d3d613d7d3@linaro.org> References: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> In-Reply-To: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Michael Walle , Bamvor Jian Zhang , Geert Uytterhoeven , Keerthy , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=3651; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=PqwP4DdGtYYvgPMEjhHMWkD10+jKqk8KGLWSnN3SmPc=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBnqz4W3+44nQ16vPqyxAePOsKaJyxohjnqd0KpT NuNoYQsnFOJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ6s+FgAKCRARpy6gFHHX chgfEACzRCcnf+4m5DpSw182YLXuZErPrxL0A62O8H7l8svfDNzjQJiWI995glAAgJDKRyX9YFZ wC67eV1f25gGJbelW8EsQDfnTRQ9xF+MeQ9KuwyiTzFKynPPG+0ADusMK99YZgX3LiWZptryiNY J4qmtw4Yw2Q7EGIJoDxW1RvyO0QsV2YU/+YeUuTwfMA0ax/rl/7skgYhnatYv1oUFjmhMFTMDaY ohiUWQHczNS6Di8c7JdxqiZpE1FjgKGXgLNYLw1aSuAEQzEn4tErp8+snpfQ4IflYHkjF3PcDa0 43IzeuTvqAW16p/TV41sMQMLK9EJCdlUYRMIcDWVBD5SYHenZkgQNguX/h+XewNbClO/15nqZgR v+JyOxCaXi44Vzpx3g9jU27XtaVNtF/RJG6UC9LM3YsYA9QJiChYhTZ2a93xmLWIg4fN/b8kqaP TAKroL0sQgaD7OCISNstYXxUL9OFZtwJ5I7z3lHFNT28Lxyd3iP1+4kXgTYb1dIjlKJPn3S/p7n UrDNEsm2Svti0jVMoX/sGpX7n97oFT1Sp2U83iN2MHHRFWisttHXm9n7ow4I9OEWXQZjVw9DPdf LXEoQ7ULJtSZS4+2aci/n4zgVqfNLF7E003IooHaW/yZSrReVTfz5Q4++15HttkhesFpI2HofOQ Li1fGOyaUEQBWYw== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Add new variants of the set() and set_multiple() callbacks that have integer return values allowing to indicate failures to users of the GPIO consumer API. Until we convert all GPIO providers treewide to using them, they will live in parallel to the existing ones. Make sure that providers cannot define both. Prefer the new ones and only use the old ones as fallback. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpiolib.c | 28 ++++++++++++++++++++++++++-- include/linux/gpio/driver.h | 10 ++++++++++ 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 1f078a20ce3d..5f3a8f1b7757 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -926,6 +926,11 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, v= oid *data, int base =3D 0; int ret =3D 0; =20 + /* Only allow one set() and one set_multiple(). */ + if ((gc->set && gc->set_rv) || + (gc->set_multiple && gc->set_multiple_rv)) + return -EINVAL; + /* * First: allocate and populate the internal stat container, and * set up the struct device. @@ -2749,11 +2754,21 @@ int gpiod_direction_input_nonotify(struct gpio_desc= *desc) =20 static int gpiochip_set(struct gpio_chip *gc, unsigned int offset, int val= ue) { + int ret; + lockdep_assert_held(&gc->gpiodev->srcu); =20 - if (WARN_ON(unlikely(!gc->set))) + if (WARN_ON(unlikely(!gc->set && !gc->set_rv))) return -EOPNOTSUPP; =20 + if (gc->set_rv) { + ret =3D gc->set_rv(gc, offset, value); + if (ret > 0) + ret =3D -EBADE; + + return ret; + } + gc->set(gc, offset, value); return 0; } @@ -3475,12 +3490,21 @@ static int gpiochip_set_multiple(struct gpio_chip *= gc, unsigned long *mask, unsigned long *bits) { unsigned int i; + int ret; =20 lockdep_assert_held(&gc->gpiodev->srcu); =20 - if (WARN_ON(unlikely(!gc->set_multiple && !gc->set))) + if (WARN_ON(unlikely(!gc->set_multiple && !gc->set_multiple_rv))) return -EOPNOTSUPP; =20 + if (gc->set_multiple_rv) { + ret =3D gc->set_multiple_rv(gc, mask, bits); + if (ret > 0) + ret =3D -EBADE; + + return ret; + } + if (gc->set_multiple) { gc->set_multiple(gc, mask, bits); return 0; diff --git a/include/linux/gpio/driver.h b/include/linux/gpio/driver.h index 2dd7cb9cc270..ac42f0164d5f 100644 --- a/include/linux/gpio/driver.h +++ b/include/linux/gpio/driver.h @@ -346,6 +346,10 @@ struct gpio_irq_chip { * stores them in "bits", returns 0 on success or negative error * @set: assigns output value for signal "offset" * @set_multiple: assigns output values for multiple signals defined by "m= ask" + * @set_rv: assigns output value for signal "offset", returns 0 on success= or + * negative error value + * @set_multiple_rv: assigns output values for multiple signals defined by + * "mask", returns 0 on success or negative error value * @set_config: optional hook for all kinds of settings. Uses the same * packed config format as generic pinconf. * @to_irq: optional hook supporting non-static gpiod_to_irq() mappings; @@ -441,6 +445,12 @@ struct gpio_chip { void (*set_multiple)(struct gpio_chip *gc, unsigned long *mask, unsigned long *bits); + int (*set_rv)(struct gpio_chip *gc, + unsigned int offset, + int value); + int (*set_multiple_rv)(struct gpio_chip *gc, + unsigned long *mask, + unsigned long *bits); int (*set_config)(struct gpio_chip *gc, unsigned int offset, unsigned long config); --=20 2.45.2 From nobody Thu Dec 18 10:24:19 2025 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5BE302066D7 for ; Tue, 11 Feb 2025 12:10:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275811; cv=none; b=EDocXKRHg8q4wQchwy5gYAcYzAllwEfsC61p/u7NeBuOxWmV+PhCT8qLm/zvQ5FB5XBPTMtC6aobFRp9vhQHWVOCnaN3x9r0nxpRfmAboI4bTVzNLUpmiIb8WgKKqNO2EWX7AM+zENHOqe95U6mSax9+v2gl51kpDN0EfS9vC6k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275811; c=relaxed/simple; bh=zsSWhWJja5bjynEs4UeWrPkKMTggjfp9Yk48/oxvSbE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hdWODS7bYGahFJZtKqsKCnDWWAiXjpefTSECkFLzhtMDTJmK8O/maMJW5pVEEzDdj2Kd6ScLUyVcIIc1bnR82bKxjEyGCqYVv69aSm+54Z85LyIBhkTjNHRc9XTLR6WEcfoXdMUt0ITqi31AiV+rUlgcJumMQzncsnylJd5UgxM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl; spf=none smtp.mailfrom=bgdev.pl; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b=lEoUAoGy; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="lEoUAoGy" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-439473da55aso12431585e9.2 for ; Tue, 11 Feb 2025 04:10:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1739275806; x=1739880606; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=flGMeg5VushkPeMvEbQ8kx2w4d/f13NaDyOkOchHg9U=; b=lEoUAoGyb48BIo27r8qgfQKsPF48/7OYnHiIp5q941FoQRIpAplVsm67wGtgOJ1HDo dDUJyBKzKwBrZhEkFcrPH4w+WL/mzy9XBwgIbsQgGxSRf7SUEl+7Pq7k84PPZ0b+H6nK jJ/sHJRA+74FYoOBmVAu8/bo6NTP8NkzvSzlN4Ufkr/syZJ67f8kag7DYChrZ1kT//Ln DDO9Nff+w/o8oY+ngl7uLzUoF5kcSe3fndC191TGV3RVPkK56VLVaI3PPOXLQaoqOEh6 OvtsSv8ndlnsNwMPf9KZppOcwA5/Cw8Yjfid2GGHq7QiKzK6778VwHxhh8niydlOetds ABJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739275806; x=1739880606; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=flGMeg5VushkPeMvEbQ8kx2w4d/f13NaDyOkOchHg9U=; b=YiwB8OiNepWSEd4z9XqblcYeH3qUYJvrPPyvBYRuY8tdw1qTaEn/TiDj4ksQJqygCN AMHf4R/IKPLNFJbTyNxg7lon3EZuuuO02mNJMekEx0p8qkpAUVVkCIvp3TLZSwHHXmdD +k3w7SgdKfrjBap5unZFsmimM8z31qbJUBcfSrvn/0nIvDm7tzsMm7ixvaRoXHV3MKxr IRUYGkZOcBEZzzPiWvRTchU3bM5j4qMQu5Uc5QyncNe2mQ648WdUXJm6hA5zLtEi2Goc ZkeAasiCgR+/inmr3ocH/nLlnHEpobAmuBJ/GFO6CWOfECAJBx1dR3Pv7G4sONpkv8OI OhoQ== X-Forwarded-Encrypted: i=1; AJvYcCUH6AwodmYW/fTrS+zs+Ruzfu7EBAVyD6c59/774use/EmuL/hd26R2AobqKkZpds9cltjLzpcRTpA0sMA=@vger.kernel.org X-Gm-Message-State: AOJu0YxIacJXj38WrshDAuTWBKRETgGNZyTTKKhquSyE9ROirm7MG1fR qS3Qo43q0eBl3FqB1T7XNUPaXwiIQTYoMQ0UWXCwzHXvi/KFCzYNJewVMWbCcbI= X-Gm-Gg: ASbGncuOq466mZ6BrOucgppMOuLqQuxSYAhjyJRUYm3QQRHWODB8mSJOIRFb8lOyUGT u0vZjuL8h8euWIxzfhM4eZM7cQokKpOidNurkcNWseaSiO0eG79NxEg4s9Xvs3SWQaaN/XXbcGw 5HBZhIchsTt7c1k+ZRq7jSNl4m4HrRD0fVNIlHgcp6us9m6i6trw4xHyutGXqt2VdpIIoEgRlq5 kaWKRbHrDQ8f0xF6GNrJJm7qzBVg737sn0G6hZmWfdEKi8gCEjVc5D6mcRPP6NoCp0Qu+cVb04R 54fjnW4= X-Google-Smtp-Source: AGHT+IHTtUOjwp2MTisEoq2qXc8kpIkQePo/nqKya2pkK2EtTcQmJ7kE6tNedkI1/cyWmwMVryFVRQ== X-Received: by 2002:a5d:64af:0:b0:38d:d0ca:fbd5 with SMTP id ffacd0b85a97d-38dd0cb6a75mr12035035f8f.22.1739275806467; Tue, 11 Feb 2025 04:10:06 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:561:8978:1d41:636a]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38dd4342502sm9152327f8f.26.2025.02.11.04.10.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 04:10:06 -0800 (PST) From: Bartosz Golaszewski Date: Tue, 11 Feb 2025 13:09:39 +0100 Subject: [PATCH 05/14] gpio: sim: use value returning setters Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250211-gpio-set-retval-v1-5-52d3d613d7d3@linaro.org> References: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> In-Reply-To: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Michael Walle , Bamvor Jian Zhang , Geert Uytterhoeven , Keerthy , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2166; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=qgip9bWI/vEDIjIxM48q+Vgy3ZpuucV2NIkQXo3Sfzw=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBnqz4WLpbRPKvx2jxe9bpfi1dULTAbOwUCmEDdB m+aroirElqJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ6s+FgAKCRARpy6gFHHX ctTsD/9hMGs8OBSM9c9QKMIU2N3W76nYowAseouI1RyUA+FmKsmnaU3/CjwEsNWSIRf2x2yciiz Vm97XxNXAsA1okzFjOPiKohXvzs5Ky0icjQZ0YNa62rWPGkDoHxukLyBpo6wJB/zZ0y2yiEML9z QRSZqM2RSVlJTnMLkF4anwAzg1M6fxekE/7LCvRLVcLOEEdDJvqZxT2YJcnsTWROiLDitisSejF zzVo+ez96hnJ5EKZitr8wZtpdiOMDDbwxQ0H6uiIKxaFspsTKqhDym2FhIhuOs43+MjgDT4iGeD rLpGRBi6feGA6xeG21X7XDzt3KtTGTWn3q5cpFwesaQ1cnYU64wMNlMZnu5NHPA56S4HAyUeisN b3w3ghuwseF1cPCygDHekCzQ5aSP8tfwaMou8mxUTJEL1CMfnqyoHzoxr5b8k3CPhAsgFhaiHSW dc5kQvu1a38iNssF11z24EqtRaw21yUZiMS2s3M5spL5RVJPtui4eqFX3+HK3IGIbKApgZU6sNP OHGZ/+mnO1nPcum/PvH+a2YjJlZiQwThnPXvMh3fWadt9K2RaUcG0BZfd5dWuPg9weH8wQXLK7N E5U0pdUYhRA2/nLG1s4Tsr93VxyxYXC1gw2lXCIoej+/rAj8INQgbfTNDFoZbXRlCGHLRZVT/yL dMcI6BRNXB752mg== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski struct gpio_chip now has additional variants of the set(_multiple) driver callbacks that return an integer to indicate success or failure. Convert the driver to using them. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpio-sim.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/gpio/gpio-sim.c b/drivers/gpio/gpio-sim.c index b6c230fab840..b3baa7e872bd 100644 --- a/drivers/gpio/gpio-sim.c +++ b/drivers/gpio/gpio-sim.c @@ -119,12 +119,14 @@ static int gpio_sim_get(struct gpio_chip *gc, unsigne= d int offset) return !!test_bit(offset, chip->value_map); } =20 -static void gpio_sim_set(struct gpio_chip *gc, unsigned int offset, int va= lue) +static int gpio_sim_set(struct gpio_chip *gc, unsigned int offset, int val= ue) { struct gpio_sim_chip *chip =3D gpiochip_get_data(gc); =20 scoped_guard(mutex, &chip->lock) __assign_bit(offset, chip->value_map, value); + + return 0; } =20 static int gpio_sim_get_multiple(struct gpio_chip *gc, @@ -138,14 +140,16 @@ static int gpio_sim_get_multiple(struct gpio_chip *gc, return 0; } =20 -static void gpio_sim_set_multiple(struct gpio_chip *gc, - unsigned long *mask, unsigned long *bits) +static int gpio_sim_set_multiple(struct gpio_chip *gc, + unsigned long *mask, unsigned long *bits) { struct gpio_sim_chip *chip =3D gpiochip_get_data(gc); =20 scoped_guard(mutex, &chip->lock) bitmap_replace(chip->value_map, chip->value_map, bits, mask, gc->ngpio); + + return 0; } =20 static int gpio_sim_direction_output(struct gpio_chip *gc, @@ -481,9 +485,9 @@ static int gpio_sim_add_bank(struct fwnode_handle *swno= de, struct device *dev) gc->parent =3D dev; gc->fwnode =3D swnode; gc->get =3D gpio_sim_get; - gc->set =3D gpio_sim_set; + gc->set_rv =3D gpio_sim_set; gc->get_multiple =3D gpio_sim_get_multiple; - gc->set_multiple =3D gpio_sim_set_multiple; + gc->set_multiple_rv =3D gpio_sim_set_multiple; gc->direction_output =3D gpio_sim_direction_output; gc->direction_input =3D gpio_sim_direction_input; gc->get_direction =3D gpio_sim_get_direction; --=20 2.45.2 From nobody Thu Dec 18 10:24:19 2025 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 21C2821128F for ; Tue, 11 Feb 2025 12:10:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275811; cv=none; b=DQt8HZUVsJauC4nHOaLQ6yY4C+ibOyrn8KvE38ZWF71JRtNCVeOCN6zYYwHE8PQR0UR9wMH6NRoPxfSVR9m3vqgV9zfcdHtwmBUjIDLKdjik1c4EbIAuXJqQeVOCyODkKUa4RPs0V5qgqBJvVw7fNNpxpAHm4H4uMzGyc1orne0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275811; c=relaxed/simple; bh=rcQ3T4zyuVTiLHp6WubPsE1Ox/Kf0sce+luCScWqL2c=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hNIb6j51gVeyhG4lmzLLXFV+zNNEjmp7iD2zxkPSQEZOg364rRC+V5CMKMI+w7FWhoB1m6trCx2umaGqYvxkmiWGlcPiVcKIuaQX964f/eJE6OGLEjttwdX09XSzjDG0Pj6h3V8B0YTsJUqHX8ygbRt8kHp6N7gsVXO/M0WG3Fg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl; spf=none smtp.mailfrom=bgdev.pl; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b=io664Vv/; arc=none smtp.client-ip=209.85.221.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="io664Vv/" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-38dc0cd94a6so2580501f8f.0 for ; Tue, 11 Feb 2025 04:10:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1739275807; x=1739880607; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=qv4UcbRwOmRlH2+uAuWjapg2vatXtKfR9XWqAYZihX0=; b=io664Vv/LA3m1D+HqphHb7+XixEoKf6cudiFt8mvGfbEfyfrw3jYeAWVTXbuC7Bvyo IvFn5o7u81GCqYy/lBEz/cbuAt59JrrdkZBqJvOEqsvTFUqvWTBsrvnUxyYxVivxc2Dn h5fQaZ/3fSogacZqGWeOte2jJ4nSmUYgNK8UPOaqjV1gLD1klzEjQ2IKCc3i+74lJ1TP NQrYwqa3vpuhWW+uGb5ICo1cwRGQL5D0dzsrFnzCfhQN0GGlz/G/9nr4uzSqfTJQ+OrL hiyOodOSJqJShb4ezX958C1039W9ogS+UVFExz02CNVpZw7gAzYFgKH+/JUfas0QJl1w rCyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739275807; x=1739880607; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qv4UcbRwOmRlH2+uAuWjapg2vatXtKfR9XWqAYZihX0=; b=PgmMZ2JdN/zmVEmCviQlwzx6KxapMLD+SrO1qLacIfD2F2rUhKMHdz4JW+D2My0O4C APVwLms8ZPWzIUQDdW1K4fmA3eoxdkt/1n5YWMy1dn5vJclopeHUO+aM2PbsDA7RKHZ5 IfRFkOabk1U2RUYKrTKSyXWSrlEvRjdzG8MNfczW1EefAwM+8zTvdV9XBSwJGU+bImWB 2aHBFxVqDZzd/Sok2dE/O5HZnRxa8nSCcNexih/3myhQMbqIfX0KU7zIzJb8hnC0xbOw /yFPJVJoZ46eQfaecII+cOQeZJK+jpWuXyuGiguhMglQubkswX/NSM9vv3Z/nVyLuG+a pOSw== X-Forwarded-Encrypted: i=1; AJvYcCXyuESr/eFOuWwUEplwnJ9HxVAkoroMEKl4V9cen1OiIoOa/LiqdCNHq2NOB6q3E6INunHZMRF7v88nAOA=@vger.kernel.org X-Gm-Message-State: AOJu0YwELGGHNNu+z5w3LPnwTQa8pWOiLi4ykg5Q6Elsc3d3PGQO5okt ABG7BdIQ05hrMtlmGI0hUZi6uu5GvwmIUxfcjL1kQ3CO4DKopwN0gk9JVcyYPEA= X-Gm-Gg: ASbGnctGeWKs8EvlfQ7YWbFvJHLSRkk/R3Bz6AJy3YvwFNHhtwPpvu4BFKU1+ffwjvf 8WwNrsFeTdfDZvxdvdlagvZXMwF8JcyVJEtGLrhYCsyKC2mSU+deSBjOKxmDc3S77MS/xRP6/9h cXUWApGF9VZsrqW2UfnceVvdBfl4khgL/VC+386vAYyylXKBwhbBQDJ43jzJIp/3Bpx/qomSztN t7feFG+Gm0e7FpNzz4sj33r1kbYvt2M0Ul+sW6oVUUTckpbyJotlV/M+KS4KpMA1hBS7FRgo9ky XhhLqv4= X-Google-Smtp-Source: AGHT+IHkVqDLdYwsVh8ly6zb88ftBd8nzBW0TKTiQWoX9p36nv3SkqvCkBYK4KMPQa6FfU7orjX5mg== X-Received: by 2002:adf:e902:0:b0:38d:a90c:d489 with SMTP id ffacd0b85a97d-38dc949183emr10597002f8f.45.1739275807409; Tue, 11 Feb 2025 04:10:07 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:561:8978:1d41:636a]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38dd4342502sm9152327f8f.26.2025.02.11.04.10.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 04:10:07 -0800 (PST) From: Bartosz Golaszewski Date: Tue, 11 Feb 2025 13:09:40 +0100 Subject: [PATCH 06/14] gpio: regmap: use value returning setters Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250211-gpio-set-retval-v1-6-52d3d613d7d3@linaro.org> References: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> In-Reply-To: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Michael Walle , Bamvor Jian Zhang , Geert Uytterhoeven , Keerthy , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2544; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=eWOghmch4gRKbyww4eGVXx2g3hb1VNBqan3sQradlTc=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBnqz4W+FiAtGlk/jzwkziUhGzXfeS7YMWImGMLo ugBDszcM8aJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ6s+FgAKCRARpy6gFHHX cvuVEADUXBlmSbVqQSk4NioNfFKInxWpOcufjfsxrszO9Ck8OJobklQH9VjOqCVLcLSuN6cjU+v r5XEifDQ2zV/Ni7oLbexCpuaoykv+k/sZDa83/U4+4FmO7tpzoGZyT8/l7nAR/A8U3OQNzcvFae 5m+W6ZW9xlKkwShus8lBKm2L4H4pxHJvgVYPall8/hjMf7uIl5mbbi6NQNnbol84ccRpm20YUJN lIfsoJruOAu3zjXuOZL5O19BRseTj/YmaAEAzwPVK95WKf27jK74pCFsTiTYUGQCTiWAePioTs6 jsrklOfEV/aHmjyfIHuCRpMjIqnErvESL8h2yQJEm70lTUkJLCxB42cUSUU227Xsjh4Q5cfQJYD vz4Yua4ybr8XSUmH5wT8sK474crHEVFkT4YzHyX8ziXVnBDi2JOhPpxYLUEF6zr1g9gklW0OVW7 exfqPu8KdmX6LvvhbdpNsUQtdYOObJ6BPTe/hTAODR9cs1XN+nuye0gpDmUwjoFuFKPLIgMlY9x Sr8i+nPlJehjUeDDS7q50FxoRtpabE7Kr2p4QAQvED5qMtUKFEdwQ61kLOzEG3UebSVBLi0BK8O IMUIj3vHNKEFmYqN1zToGGeqrzf1HW82+rkwGIOF0gQNEK1N+lVH/xzmlyiUlN3bb2wSvBU8Ao+ rwA2IqRWwaS0xIw== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski struct gpio_chip now has additional variants of the set(_multiple) driver callbacks that return an integer to indicate success or failure. Convert the driver to using them. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpio-regmap.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/drivers/gpio/gpio-regmap.c b/drivers/gpio/gpio-regmap.c index 05f8781b5204..e3b4e392549b 100644 --- a/drivers/gpio/gpio-regmap.c +++ b/drivers/gpio/gpio-regmap.c @@ -81,22 +81,25 @@ static int gpio_regmap_get(struct gpio_chip *chip, unsi= gned int offset) return !!(val & mask); } =20 -static void gpio_regmap_set(struct gpio_chip *chip, unsigned int offset, - int val) +static int gpio_regmap_set(struct gpio_chip *chip, unsigned int offset, + int val) { struct gpio_regmap *gpio =3D gpiochip_get_data(chip); unsigned int base =3D gpio_regmap_addr(gpio->reg_set_base); unsigned int reg, mask; + int ret; =20 gpio->reg_mask_xlate(gpio, base, offset, ®, &mask); if (val) - regmap_update_bits(gpio->regmap, reg, mask, mask); + ret =3D regmap_update_bits(gpio->regmap, reg, mask, mask); else - regmap_update_bits(gpio->regmap, reg, mask, 0); + ret =3D regmap_update_bits(gpio->regmap, reg, mask, 0); + + return ret; } =20 -static void gpio_regmap_set_with_clear(struct gpio_chip *chip, - unsigned int offset, int val) +static int gpio_regmap_set_with_clear(struct gpio_chip *chip, + unsigned int offset, int val) { struct gpio_regmap *gpio =3D gpiochip_get_data(chip); unsigned int base, reg, mask; @@ -107,7 +110,7 @@ static void gpio_regmap_set_with_clear(struct gpio_chip= *chip, base =3D gpio_regmap_addr(gpio->reg_clr_base); =20 gpio->reg_mask_xlate(gpio, base, offset, ®, &mask); - regmap_write(gpio->regmap, reg, mask); + return regmap_write(gpio->regmap, reg, mask); } =20 static int gpio_regmap_get_direction(struct gpio_chip *chip, @@ -266,9 +269,9 @@ struct gpio_regmap *gpio_regmap_register(const struct g= pio_regmap_config *config chip->free =3D gpiochip_generic_free; chip->get =3D gpio_regmap_get; if (gpio->reg_set_base && gpio->reg_clr_base) - chip->set =3D gpio_regmap_set_with_clear; + chip->set_rv =3D gpio_regmap_set_with_clear; else if (gpio->reg_set_base) - chip->set =3D gpio_regmap_set; + chip->set_rv =3D gpio_regmap_set; =20 chip->get_direction =3D gpio_regmap_get_direction; if (gpio->reg_dir_in_base || gpio->reg_dir_out_base) { --=20 2.45.2 From nobody Thu Dec 18 10:24:19 2025 Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 03BE41FE46F for ; Tue, 11 Feb 2025 12:10:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275812; cv=none; b=FebXzwhzOwjqdpkdTzU/d5fB9wTKhSEEGCWv8zTgll8ISzKzwxZScCA4TRrkC5kvYpi9FvvgIA6rUSTDVj2xiYhLhCnkNS9j9+o07kqLbSgh0H4XC5BXHQbcJrFd4/TJRwHb5CcmpmlgezCuGQdAfR/64crVjdbtcvY8xLGOGDk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275812; c=relaxed/simple; bh=n7e1bRvIwDbJsC3TZV7mm+jegTR9TSB109s8PxAei5Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZX2+biKBVJoCjLRkuAomvFVT8mSRX1f7Y3/ZYHYt9nezNk+5iujNnFPrWkZRgP+Rhzo6p7b9Qj+tI7XgQZmLFIO6gK2o39szPDqDV+5V6RRyWP2aAsK7VMeuGACiW7kR5n6PcBuABPPY9735bLegZd5rZqsLb0gDV68GVADEhBs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl; spf=none smtp.mailfrom=bgdev.pl; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b=VcCQe2g5; arc=none smtp.client-ip=209.85.221.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="VcCQe2g5" Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-38dcf8009f0so1967393f8f.2 for ; Tue, 11 Feb 2025 04:10:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1739275808; x=1739880608; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=quvfEdCC90sqn/TMYew/ubIOyPOJqPZJFKX/f1unqbw=; b=VcCQe2g5SVdGNzdqTRKQOsl+igwW0brDA8OGOwsapOnJwGP0CPmtnwT8Jk+GXoQYsT PmmrykH5gRph4PmIJ4go87EUwAQ/tQlQeHANoHo3lBIM60m2GstDGawfYbeRmr3ZB06S D4faRMv2SbHexs4Xrkk6Yru67886Q5XRZLRyEDSFZeQQWd+oEmOzwca1KjIGZ6sds5uh j7QVWiuMYWZDwNpGTbK4hzqvD1kIyS1djBM4SM6VSNSjy5qBF2dssbOtHPoL6k2l40x1 ML+YBK+Q24LEPIlhB9xpR2ZUsouJZYLyprgt+sKuToR4KOlcHlZc72kG1zdwwiw55ORA k99Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739275808; x=1739880608; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=quvfEdCC90sqn/TMYew/ubIOyPOJqPZJFKX/f1unqbw=; b=A1Xl0bQy8KhbJOv3/oRs998GlFEFiCdW6SWjKHVn+O0YaEh0d8RC8ijocql7AFVjkT HtZLESY/mQ53OD8eMulEPDtTfU4apUATSkd00HdTYO5KSoXGmIz7MuHqmFsp71SHDpNb g5UT3IRXvHYdUt13/9+JxIqD8LHDQKhIRDvWudPYfw8jggz8l9zxkOqEPZXpDOa5FGil JUMmkmit85LIwG4F9mhj0FtafxSw8rHD2JzeuT1DnyAB5SlYaIWjq1KZfDwoT/i3ZdZP VPoGNb9Gkb0GfDu5S95SNLcBZMq+bvuLkZmFtZZnUYWLdGo908ILpn5MzoQtyt+Z4AkV vudA== X-Forwarded-Encrypted: i=1; AJvYcCUw3VOySQl7Xku75EWuzs8JhbTVaM0Z5cHFXNNNXP1lQ3E7E7nXsu293i6oliuaswZdWqRj4j8DZ2yKhEI=@vger.kernel.org X-Gm-Message-State: AOJu0Yzx1/RpmEhSpFkBFJZMRCpa/rmFvEs1SaBxyrDufWsVAHPQROt6 u85D/SXXkBPfXEreeEGkhJKpirHaIML/4kpHK99WrQe/DQPSGnLyPv+9nD5Ievk= X-Gm-Gg: ASbGnctS+QHghOPXGREF1S4t53NAv6Scm/Djpypf7Y+WnrZijBuTOFs5ldn6e2GGP4N Dx9gYeTqZy7SJWqaGbn24W3o6F5z30LQvgNKz00GBKORUVEFrpDmxFApHKEQ8lM+ox8zx2duVVu KKiWbnZhayxfaSrZ5htjG/Fkt40cNs48yPpZCKR1E0VCtzXACaWiQHijzRtGQK00LCaGPauWID/ vSrrLkFsZ2ZjWZcPiaXnaGadcGNA0h2QcUsJbJz8Bg+vkp04LzEdIALhzofFFH6UYeK5dOOSdNY vJHWpW0= X-Google-Smtp-Source: AGHT+IFFWsBDXUIhUnTK0Jc/gjJWtKAcXr7csTld6YJ7dLpzJy6WB9rdlWOzy1pJ6THp3Tu8nQYncA== X-Received: by 2002:a5d:64ef:0:b0:38d:e6f4:5a88 with SMTP id ffacd0b85a97d-38de6f45ebemr1250827f8f.12.1739275808376; Tue, 11 Feb 2025 04:10:08 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:561:8978:1d41:636a]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38dd4342502sm9152327f8f.26.2025.02.11.04.10.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 04:10:07 -0800 (PST) From: Bartosz Golaszewski Date: Tue, 11 Feb 2025 13:09:41 +0100 Subject: [PATCH 07/14] gpio: pca953x: use value returning setters Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250211-gpio-set-retval-v1-7-52d3d613d7d3@linaro.org> References: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> In-Reply-To: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Michael Walle , Bamvor Jian Zhang , Geert Uytterhoeven , Keerthy , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2813; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=yTjxL9oj03YB8rj+0Yr3COMJxOa60Pm0eOul5x0rP3Y=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBnqz4Xxed/JiS9ru6Dza4dboG846bTEV9IzRV6m Ln9O4uXOsyJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ6s+FwAKCRARpy6gFHHX cszcD/9SlHyaBySPFpZFfk8U4HfZDjFSzdzmXpCWmAL6IePTYbDVbk1ESrU1nA5ENit5yAgv833 63xBCYyULqlZzBtIxvbJiLO7pG6K7peyNg50Sh2XAPF0AwcreWx6yI5/8UDqqfM7PUupNizmoEM 5fmvwHa3gVyos+YbzWaK9/eGh+k4ksY3LtvRupDyzN3h9uMZOpmviTMWeuW2H3TcLC7c/jSrMhn keMARfcvphGdpYcd+UOQD5G1DeaJZXKOpXLFTqQp/CyPOLChQLv8wrGwEkBYP5sNyPbdmmYlHIt SzhHuOBQP+xE+Oay7m04VvQBPSevtOgsp4RAIfmrNah5enDFpwM/kZWmCK45fbVJVYSfhxJ9wyQ bHB0HmOGacYFgaxfaoZUYqwxqA53DW8VlLDMKU5tQx8s0AsLEBkctsIJkj66rqH4P2PdnRE0tU8 7JHN1YNKfn9vrY2e1hrcMzD/b5ILCVWHk4O5XnllR0VAKNyDc5mD4ap992y9cLpCSm01pauVWfd H5S3f0R6OMPLU3+jL6Gb7wXIPMdpaQg4nmfWGaO1v1/hX6CoLbGawDcrZ14wn9jGEvMYfYTFrlR TwyOkcAzr1ue88ESJHyArhWgHDEn3e9Xw1+qwcraFIcz9XXK1VT27Y37Cr1/wHcYC4oMooOBJEp xdmwocXr8J58Qqw== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski struct gpio_chip now has additional variants of the set(_multiple) driver callbacks that return an integer to indicate success or failure. Convert the driver to using them. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpio-pca953x.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/drivers/gpio/gpio-pca953x.c b/drivers/gpio/gpio-pca953x.c index d63c1030e6ac..442435ded020 100644 --- a/drivers/gpio/gpio-pca953x.c +++ b/drivers/gpio/gpio-pca953x.c @@ -570,7 +570,8 @@ static int pca953x_gpio_get_value(struct gpio_chip *gc,= unsigned off) return !!(reg_val & bit); } =20 -static void pca953x_gpio_set_value(struct gpio_chip *gc, unsigned off, int= val) +static int pca953x_gpio_set_value(struct gpio_chip *gc, unsigned int off, + int val) { struct pca953x_chip *chip =3D gpiochip_get_data(gc); u8 outreg =3D chip->recalc_addr(chip, chip->regs->output, off); @@ -578,7 +579,7 @@ static void pca953x_gpio_set_value(struct gpio_chip *gc= , unsigned off, int val) =20 guard(mutex)(&chip->i2c_lock); =20 - regmap_write_bits(chip->regmap, outreg, bit, val ? bit : 0); + return regmap_write_bits(chip->regmap, outreg, bit, val ? bit : 0); } =20 static int pca953x_gpio_get_direction(struct gpio_chip *gc, unsigned off) @@ -616,8 +617,8 @@ static int pca953x_gpio_get_multiple(struct gpio_chip *= gc, return 0; } =20 -static void pca953x_gpio_set_multiple(struct gpio_chip *gc, - unsigned long *mask, unsigned long *bits) +static int pca953x_gpio_set_multiple(struct gpio_chip *gc, + unsigned long *mask, unsigned long *bits) { struct pca953x_chip *chip =3D gpiochip_get_data(gc); DECLARE_BITMAP(reg_val, MAX_LINE); @@ -627,11 +628,11 @@ static void pca953x_gpio_set_multiple(struct gpio_chi= p *gc, =20 ret =3D pca953x_read_regs(chip, chip->regs->output, reg_val); if (ret) - return; + return ret; =20 bitmap_replace(reg_val, reg_val, bits, mask, gc->ngpio); =20 - pca953x_write_regs(chip, chip->regs->output, reg_val); + return pca953x_write_regs(chip, chip->regs->output, reg_val); } =20 static int pca953x_gpio_set_pull_up_down(struct pca953x_chip *chip, @@ -693,10 +694,10 @@ static void pca953x_setup_gpio(struct pca953x_chip *c= hip, int gpios) gc->direction_input =3D pca953x_gpio_direction_input; gc->direction_output =3D pca953x_gpio_direction_output; gc->get =3D pca953x_gpio_get_value; - gc->set =3D pca953x_gpio_set_value; + gc->set_rv =3D pca953x_gpio_set_value; gc->get_direction =3D pca953x_gpio_get_direction; gc->get_multiple =3D pca953x_gpio_get_multiple; - gc->set_multiple =3D pca953x_gpio_set_multiple; + gc->set_multiple_rv =3D pca953x_gpio_set_multiple; gc->set_config =3D pca953x_gpio_set_config; gc->can_sleep =3D true; =20 --=20 2.45.2 From nobody Thu Dec 18 10:24:19 2025 Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 111831FCFE5 for ; Tue, 11 Feb 2025 12:10:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275813; cv=none; b=Y8Uwmolt+QgAGoPH0y0yom74fG0nttyGzT/rOmvby8cT0BR9C1bhRDWQE08pBbJk7Uo/lMB3DHfafdPqp6NMf594R8VnSgDAox5ztp9eikyEeht4FjxmnKlXKTmOB5d2CNsP+WD4WeEBKcP17GQ8lsALbOJB4bppifvUCBKrXhI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275813; c=relaxed/simple; bh=W0ekafsbrVCouZpHE4eG0kXHeAxOvTBzf5r2BK5vEgI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ElkZKBwUw/kqwiygIHPc7BLkTaBOEXkv2gMchcj9CPMhO2uGzHfpLVUTNA/MgUGzp1Xq5b7GWw5/33vEhwDNbGa0EPlHFXSyHRxjvukEyCcb+nzc9JbeDUN/aVE1yYzUcRZjHjNxJf5Cfll7Uk8QVDwDsbtKb2tnnvQQb6t3zaQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl; spf=none smtp.mailfrom=bgdev.pl; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b=LQ1N6gAF; arc=none smtp.client-ip=209.85.221.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="LQ1N6gAF" Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-38dc962f1b9so2434544f8f.3 for ; Tue, 11 Feb 2025 04:10:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1739275809; x=1739880609; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=XtZyccNtwz7GO7SMXFqCDx0hPJnftyCPvzbSn44YoNE=; b=LQ1N6gAF44G3i0RoMT2LSXypHBoyDWDAQSr5AbUGO2h0l+T1kFnpQKouEdFNKTznjl zVhOi/9/cSkRmcJKx7IBZU3Cg2SeCEPNjt1K4l2ThRhh1Sz7db2OFOfIaBgXlIihlZ8m DRFgwRXlRSfFd4QbDIEaj6qARbpxNk7ctPGIkknz8LakRMVtgXR+kExSop75zy2xdeFu MSYtDVO3UmelVfJPLk9BolpB6XF+G4BA9TdEN3LTFAgF8g/JyCqFXzu3luIaDOWEjhVY nbs2RDKw4S5niTvfpZNDSx3Ll4LlJPflTO0qHT9dql9tGgAt0sSG1G67CKE/gl3TNvbF ZRYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739275809; x=1739880609; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XtZyccNtwz7GO7SMXFqCDx0hPJnftyCPvzbSn44YoNE=; b=QM2fmdW3ciXgylzCbAjNvTFZQhPY3+Sxfi4diN6UdN+YBO3+qbkq0biEvCJOexv/I3 QQLchAY1C/LYEyIkSa5n6DM07mjITzybs80k+IAZGtNnc7cz7IRok8wNJvNDIcfBlhef JtYUUnyagF1jo+JBK7PJqwni8RlbFZBsszV0WzaiYFWPDmmdvEA1QuPNsaQuBB2A0XaC KCXKzwKZlLvC0nGGaxILqQVDyv6duxa9MdMoUu5xhFccKvIKgKbZDzpHC9Xze45zsHru sU6p9VltLOv64qW+Kl0VoT56rXWqpEZPG9mulk0jJ8pRNpc6K814x1TnVDP7DHZj5X94 pR3A== X-Forwarded-Encrypted: i=1; AJvYcCVT6NgxTqLjMFgY7dB4LjWM/SJtPU5TvYrEqkA+yOExXLAhbxhHNMGkfRM0Ct9JS2X8k3pjnSkdPYNl1OU=@vger.kernel.org X-Gm-Message-State: AOJu0YxLTQ44rlcFLmClvyBfAQdX/Mi2cUXD5OXRwHb6VGmU/z0Q/LLh n7T6sojsBrp3F+R32rXu1l1AJU4Tg6Wol2qsVxu2DvZ4xL0vma8Utf/WUxjAb3k= X-Gm-Gg: ASbGncuoBSHB7TnrXqTAOs0aNDy/YvEO2uM6UXVR8c5VZ8zNy4AEIpxC/S5LL5wTPJ/ hVP1kHYSPWZYXve+VPzpifDZWGALVi0PJUFODHZZ2yQT7W5GHrma90ew3ac/YcSqQUpKnu2AHN8 UZt0HeSZEERrSY8eegyKWmclI8uoejgCBWhDTU/I4bLHhWVX6wBCS+5U1n4lKbqxI4Q150w3IGB D6qpJJ3CsKx+rBPixfRbEpPSjL3SRUl/Ga/T0QkfaY2a3o69ZWGCftBa4Bn9IpwYTL1OG4G9xtL o9gfNRQ= X-Google-Smtp-Source: AGHT+IEnMvyoo/QZ56r8MZxIXYEgI1p/EiVTUGp+SJgZOcRGb6rK51NPgCINgZNfS+tUEAg8bAFofQ== X-Received: by 2002:a5d:6151:0:b0:388:da10:ff13 with SMTP id ffacd0b85a97d-38dc8dcbedamr12335513f8f.21.1739275809307; Tue, 11 Feb 2025 04:10:09 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:561:8978:1d41:636a]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38dd4342502sm9152327f8f.26.2025.02.11.04.10.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 04:10:08 -0800 (PST) From: Bartosz Golaszewski Date: Tue, 11 Feb 2025 13:09:42 +0100 Subject: [PATCH 08/14] gpio: mockup: use value returning setters Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250211-gpio-set-retval-v1-8-52d3d613d7d3@linaro.org> References: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> In-Reply-To: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Michael Walle , Bamvor Jian Zhang , Geert Uytterhoeven , Keerthy , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2141; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=ZKO1P8iGSR8T/mvTR/tsiumsFS1ImUO8BGNiB+Z+36c=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBnqz4Xx8lzJ1ICR2vtBS4GXgsgBRjKJMCyceywC 7CgiRlNo46JAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ6s+FwAKCRARpy6gFHHX cp1oEACzhDjjFDZacvqn5bV9RGmwJ9uZnfrey2XQS3uKQSrgo058tYNz+DeubiHU6KjXVtjzujb wOv5jfsozxQ44d/DdDyKsRfUo5Ya6a4iTpO/6jqs81QXhMzUxwu6Xjk9HoVe04CYx2cJrBQmBWs fTsbBYosqQQM58XIPEnfJpUiDDB8UNtdPdsuzhsc4vxST12HSsMQkUdKGGwW+8N0FU1utfBNFgr SUZlJO51yem9WmIpMbCrWvMi1DfJ+2H0nMxrSgjWHUaUPAG8pYxndyR1B85/xd/Htdpz/kf7a/6 7IoctrQA6CETrtiKJ3y9YJTIoqzwwLm0j+ItcP9OSW90f+QBnk30JJmZ0/vfA48uUTDYQo1nmim PuxV4RmnmtPjm5lACx5TPSKJ4V6xhBDK7Jn7SXo0zXylkwDEqGGO7PKvTwpKHqOyv+/h5Q1liza yctgepn3XoT2ZIgQrnz6lus+p26+ar5/Occm58lizltZHsYkVnatwISuNPzaOCDaNLoCIbcMU+5 IJfSwM4ZTK9r9NIpx86h5gJvWnAeTM3WimaIspzhNU0zkvg+4U07DD/2tHgpdMCCufllr4HbpsU Hxa/xECE+TXScoqq7UVOv++YwHX77gpiBYzpqAf4gwLfhfK3PflSSSpFGn1EvKaSY+9YdYgeqJQ uBqgEKb+uXW7YqQ== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski struct gpio_chip now has additional variants of the set(_multiple) driver callbacks that return an integer to indicate success or failure. Convert the driver to using them. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpio-mockup.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/gpio/gpio-mockup.c b/drivers/gpio/gpio-mockup.c index d39c6618bade..266c0953d914 100644 --- a/drivers/gpio/gpio-mockup.c +++ b/drivers/gpio/gpio-mockup.c @@ -122,7 +122,7 @@ static void __gpio_mockup_set(struct gpio_mockup_chip *= chip, chip->lines[offset].value =3D !!value; } =20 -static void gpio_mockup_set(struct gpio_chip *gc, +static int gpio_mockup_set(struct gpio_chip *gc, unsigned int offset, int value) { struct gpio_mockup_chip *chip =3D gpiochip_get_data(gc); @@ -130,10 +130,12 @@ static void gpio_mockup_set(struct gpio_chip *gc, guard(mutex)(&chip->lock); =20 __gpio_mockup_set(chip, offset, value); + + return 0; } =20 -static void gpio_mockup_set_multiple(struct gpio_chip *gc, - unsigned long *mask, unsigned long *bits) +static int gpio_mockup_set_multiple(struct gpio_chip *gc, + unsigned long *mask, unsigned long *bits) { struct gpio_mockup_chip *chip =3D gpiochip_get_data(gc); unsigned int bit; @@ -142,6 +144,8 @@ static void gpio_mockup_set_multiple(struct gpio_chip *= gc, =20 for_each_set_bit(bit, mask, gc->ngpio) __gpio_mockup_set(chip, bit, test_bit(bit, bits)); + + return 0; } =20 static int gpio_mockup_apply_pull(struct gpio_mockup_chip *chip, @@ -445,9 +449,9 @@ static int gpio_mockup_probe(struct platform_device *pd= ev) gc->owner =3D THIS_MODULE; gc->parent =3D dev; gc->get =3D gpio_mockup_get; - gc->set =3D gpio_mockup_set; + gc->set_rv =3D gpio_mockup_set; gc->get_multiple =3D gpio_mockup_get_multiple; - gc->set_multiple =3D gpio_mockup_set_multiple; + gc->set_multiple_rv =3D gpio_mockup_set_multiple; gc->direction_output =3D gpio_mockup_dirout; gc->direction_input =3D gpio_mockup_dirin; gc->get_direction =3D gpio_mockup_get_direction; --=20 2.45.2 From nobody Thu Dec 18 10:24:19 2025 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2BCE921E0A6 for ; Tue, 11 Feb 2025 12:10:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275814; cv=none; b=rkOwNgwjLxQcoKzayVAHWivE/MCewqu48YhF0ndBvDahKDGbcu2+myetLTA+iwzlzRKRwksChcrZztvTSmJLsnp7abIYvA3TOoNNFA7vEBB13us17ZH/k05eU4tzMw+RMKWJ4cYA8hb7fZdBPQp2NKJy9zUs/VPXfCRdj10Wqho= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275814; c=relaxed/simple; bh=/VBhiRwoQ267W/j7YB1GP/Wml1ttqJQc2PSxQAtybVk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PHXp401ylQSrclWEh+X8rVi9q9pB9xlJjCKh9/WN0JgE99SdPHqKj4CaXyhjwdy54JWldXLz8vV/+b3tT1ssMG3fcEFm/c5HVbP68xN+daWg9GL6MqmcUluUUTyWNQurt57HmQydubSDG37Uz2nuMzPSJm7H9BlF5mWN5Pwkjwo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl; spf=none smtp.mailfrom=bgdev.pl; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b=1//6zzPb; arc=none smtp.client-ip=209.85.221.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="1//6zzPb" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-38dcf8009f0so1967422f8f.2 for ; Tue, 11 Feb 2025 04:10:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1739275810; x=1739880610; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=/soJKMgO95fYhALZzWlo+U5ebpod9YKpGe1zG5XUO78=; b=1//6zzPb4AscLxakfR/3RdNuLdIm0u83QTjBM21AljKVkcRSRzLRi99lTgIpvjTAvJ tbdIzJg/Cjmww5WE4oHNHW6lFCAuf01cu47PKkNhyUyLzjfE2cIUdZmoltaLsVjy6jAl xrnw2ujZkLjH2it8h7PRGkLWJ7aDKfZX9Hv5jWsK41ZEdgiNuAIWhNM4fVyPPmbPAONe m1w20LF/Qer7pykkoiWQJGso/YMxkUk+eo/mQ2GyU58wmaC6n0SpKzpuPsd0qF9VukZs OFpLAI0QxChJiF21D0sJ4+a7QT60He04NFOsv+JQDXUu1jZfKhsQxWmmMwQEJ45aiLsT Zy0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739275810; x=1739880610; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/soJKMgO95fYhALZzWlo+U5ebpod9YKpGe1zG5XUO78=; b=Az3iRZ7Abd/JrfZbkIObundig0RR+ufUMqeTE3yurtvliPDsi17efxzl8m22J7tBe/ s++Sq6KeVS4wRtHUPUDxkuiBdYfXzr+j1XsxV81m5FHxTs99M4d5IdcQtpFp2lzoSaWH KKO9JMGq3SzVkL+nImUPWqGXUPSJsGUOCfdYxn5IiBh5pOudraBLuBsM7oOer0WgTa0m 9vibdUpG1RTz7NDfWhet98XzM8XgopSJrWmlv8x5ckP29+SQwi4X5/ado8Ouh9blEVn/ YtE0B2b52rcnMSVCPh3Vwhqr0FrVa7ljNGSPtpeYTbzRW/h784vZFey+54OsDcOGzGkq ohgg== X-Forwarded-Encrypted: i=1; AJvYcCV/TFsdkFviiL+TypA6B9vJDEQvuegk0dQZamGN4NxIbJmo/cfJTbeVsyeNJXZW5JgLix/2zoyG30WP/sA=@vger.kernel.org X-Gm-Message-State: AOJu0YxqUFAp1hPO/4ShhczQkHVb1MiWTDejoCkm7oMcsAOvJ/+iz86n wH/LhD6XsblJDzUduyNN9tmgs6R5K8zVk5vONc9/T7d+ifXFnU+ZNl4K8/ecRro= X-Gm-Gg: ASbGncvAxxiRgWRR1+Onvx7Ed4DnOtlGZ4ldulobQ+q8BWqX2LmtBSaN+d/zuLPgN8W gC7qRWlQmzhpxP+XsqaMHRQEhpuHNBYvm391gO9ztC+UBPK8m4VN6WsDp3hVuE7w3/xPrVzo+Tm EJD3eYh/5AK7H8NdujGXW85YvTnl1lmV2YdSB3/XaC72pO54wMMQJdx1hLKmd8xXiNA+bjRBSrY 1JVmdaU/GwJ1m9XJkJQhisgBrr5PLlCZdMV0bpEK9rql3Egvc6cCpkyy5mj8dScc+LfF6goRw7K Dl0/bTE= X-Google-Smtp-Source: AGHT+IFNsSm9YLBYurhiZJ3r0wLuiNdbSfXzE/fPunZETourbnKpAwAXP227RFCPz3tZT6gTfsHrNw== X-Received: by 2002:a05:6000:1789:b0:38d:df83:7142 with SMTP id ffacd0b85a97d-38ddf8372d1mr6616269f8f.22.1739275810313; Tue, 11 Feb 2025 04:10:10 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:561:8978:1d41:636a]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38dd4342502sm9152327f8f.26.2025.02.11.04.10.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 04:10:09 -0800 (PST) From: Bartosz Golaszewski Date: Tue, 11 Feb 2025 13:09:43 +0100 Subject: [PATCH 09/14] gpio: aggregator: use value returning setters Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250211-gpio-set-retval-v1-9-52d3d613d7d3@linaro.org> References: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> In-Reply-To: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Michael Walle , Bamvor Jian Zhang , Geert Uytterhoeven , Keerthy , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=3524; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=PJ3ATY3KxGGrfdXGr1+oD3P0hee0kL1IuXdUmcak4rU=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBnqz4XlB8wKC7uaLgAa/RWRm6wTXgc+2I1DL4zD EsN/vIAR1yJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ6s+FwAKCRARpy6gFHHX cicwD/9y9J1vb2Nw9ftM8P+jwCiPBjUpJw6NCtM4wbyvaVkIDh/nrjADO7bsrHXTetMswPxt8IR GdufqPE5hvj+pFhXOLdUyN/r2lFrHOUmxLmWtnuzhiCVzi2Cs/Km9zrVOih3/Nq6qizuy1olK6r vnczqHACtUv50puQ928byt5Tieb6WrT9lmInioYkk2Z16Bgy1m67HsOXn0aC3Z5Q+si2e6WtvJo cdH/qFKovfD2Dj/AN/sM9m8wxlRbAc87cerm6CXGXYlUA5716IK4AMahblbeFsYx4OdqU2K6+4A m1oYKS+OUMWEfOivjwRw6QUTx+HG81IrmnSJC5VirmIjjxvUzP/8xJadZFs08o/h7Y5HqJs7+uW TUk7ix3Tq0tiarQxy0gMrDzQu/4yzaDh/1kQ6gNh6shDIV8R4N3cMAtwF/eydmNn6Wn7BNPsorq FCutWQlx5oh7FIpM43YgAv3kIsebEsMkKk2zc34/rcbG+zvKea4++b+OHtIjO0v+A7hp68SbCKh 3zhBdeUOyQkq5X3s5x0dPp/v1txS+5qLJfGEiJKx/AuvlxEyb+FkYd+ekilCeEfKLNzf34ANinF 1bAMwgkdS5s3fGZDVSyAHFVZ0WU5VoF4Ypg8hQklfD+VBsshJ7OlCgNgxeIb94PqmfABtWpImYC cTv5GnDNi+bzsQQ== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski struct gpio_chip now has additional variants of the set(_multiple) driver callbacks that return an integer to indicate success or failure. Convert the driver to using them. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpio-aggregator.c | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/drivers/gpio/gpio-aggregator.c b/drivers/gpio/gpio-aggregator.c index 65f41cc3eafc..e799599a06a1 100644 --- a/drivers/gpio/gpio-aggregator.c +++ b/drivers/gpio/gpio-aggregator.c @@ -358,25 +358,30 @@ static void gpio_fwd_delay(struct gpio_chip *chip, un= signed int offset, int valu udelay(delay_us); } =20 -static void gpio_fwd_set(struct gpio_chip *chip, unsigned int offset, int = value) +static int gpio_fwd_set(struct gpio_chip *chip, unsigned int offset, int v= alue) { struct gpiochip_fwd *fwd =3D gpiochip_get_data(chip); + int ret; =20 if (chip->can_sleep) - gpiod_set_value_cansleep(fwd->descs[offset], value); + ret =3D gpiod_set_value_cansleep(fwd->descs[offset], value); else - gpiod_set_value(fwd->descs[offset], value); + ret =3D gpiod_set_value(fwd->descs[offset], value); + if (ret) + return ret; =20 if (fwd->delay_timings) gpio_fwd_delay(chip, offset, value); + + return ret; } =20 -static void gpio_fwd_set_multiple(struct gpiochip_fwd *fwd, unsigned long = *mask, - unsigned long *bits) +static int gpio_fwd_set_multiple(struct gpiochip_fwd *fwd, unsigned long *= mask, + unsigned long *bits) { struct gpio_desc **descs =3D fwd_tmp_descs(fwd); unsigned long *values =3D fwd_tmp_values(fwd); - unsigned int i, j =3D 0; + unsigned int i, j =3D 0, ret; =20 for_each_set_bit(i, mask, fwd->chip.ngpio) { __assign_bit(j, values, test_bit(i, bits)); @@ -384,26 +389,31 @@ static void gpio_fwd_set_multiple(struct gpiochip_fwd= *fwd, unsigned long *mask, } =20 if (fwd->chip.can_sleep) - gpiod_set_array_value_cansleep(j, descs, NULL, values); + ret =3D gpiod_set_array_value_cansleep(j, descs, NULL, values); else - gpiod_set_array_value(j, descs, NULL, values); + ret =3D gpiod_set_array_value(j, descs, NULL, values); + + return ret; } =20 -static void gpio_fwd_set_multiple_locked(struct gpio_chip *chip, - unsigned long *mask, unsigned long *bits) +static int gpio_fwd_set_multiple_locked(struct gpio_chip *chip, + unsigned long *mask, unsigned long *bits) { struct gpiochip_fwd *fwd =3D gpiochip_get_data(chip); unsigned long flags; + int ret; =20 if (chip->can_sleep) { mutex_lock(&fwd->mlock); - gpio_fwd_set_multiple(fwd, mask, bits); + ret =3D gpio_fwd_set_multiple(fwd, mask, bits); mutex_unlock(&fwd->mlock); } else { spin_lock_irqsave(&fwd->slock, flags); - gpio_fwd_set_multiple(fwd, mask, bits); + ret =3D gpio_fwd_set_multiple(fwd, mask, bits); spin_unlock_irqrestore(&fwd->slock, flags); } + + return ret; } =20 static int gpio_fwd_set_config(struct gpio_chip *chip, unsigned int offset, @@ -533,8 +543,8 @@ static struct gpiochip_fwd *gpiochip_fwd_create(struct = device *dev, chip->direction_output =3D gpio_fwd_direction_output; chip->get =3D gpio_fwd_get; chip->get_multiple =3D gpio_fwd_get_multiple_locked; - chip->set =3D gpio_fwd_set; - chip->set_multiple =3D gpio_fwd_set_multiple_locked; + chip->set_rv =3D gpio_fwd_set; + chip->set_multiple_rv =3D gpio_fwd_set_multiple_locked; chip->to_irq =3D gpio_fwd_to_irq; chip->base =3D -1; chip->ngpio =3D ngpios; --=20 2.45.2 From nobody Thu Dec 18 10:24:19 2025 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 54056221D8F for ; Tue, 11 Feb 2025 12:10:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275815; cv=none; b=hlRPlSvGZEwbvLiUwfdBq4SUaprcUl10NY0X7A2ugVBwepQPSbk2tP5Wy/97rHdrLVhomnUJA8GhjdoklAJeHgmkiR0JMeFHdWltNRoaMhD9VkptinsJaIkOCcYHmaJqP54+lOcGyLyx3PqGdLvFl5ydqYKmTl/gWX4dFlF1Opo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275815; c=relaxed/simple; bh=U32O6gpHaPHK23/7gdVmxwYFuZ9Da+Dn1al7zxctPU4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KFbTv3dkRpQcDk3JO/+WW26YOtMNaHAOkznSL7/N1nLU9U/5HubDOiNFL2YQcWbAAjU2SF2GWPPkYi38mJ0t7m+xF7wd3V3EOmZxA1UuyWfMWUgLnFCxdAKBvUAFfaajQdd3EmxvlnrWVy9XlfVKHRlLlw/HZQ6Q7r/TSE6sJ7c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl; spf=none smtp.mailfrom=bgdev.pl; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b=NQr9i1gu; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="NQr9i1gu" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-4395578be70so3887825e9.2 for ; Tue, 11 Feb 2025 04:10:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1739275811; x=1739880611; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=6s/3Qc5kj61ZYPHh1DjfYym66L0t2z7xf+S0LPTqjrM=; b=NQr9i1guaRZ21li6lhJGJcRwCw+fMrVW+qxYCy5iKeyCpu2Ye7GkbNJmdiE5JPRvEh nqkHKccJIIGqu7MQ/1KoJqPnndpFjx6t430IqJGD/i5n8WBfCw0DwtW2RXU8Ybj5kKyD ihkC6nU/mgJap1vzJR+Yogau/eDGpbd0A2NIl7z5lB+ZGIFfE6wF3qtry9hQtA2yKyuQ pZVBUVTWbNGgftWyQ7lUfDq6Eucq5m1O46n5FZWqZYUjlh2Gq527DbJuj2Huy6iJpuw/ koiI4t1vJinIWJBTGDxe3Fjj6oEWjEpixay948dMi45HkIOOWzC6LkwDpR7iw8jeF0Fj cY9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739275811; x=1739880611; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6s/3Qc5kj61ZYPHh1DjfYym66L0t2z7xf+S0LPTqjrM=; b=sHZyY/Qp5elCRXfWNL4yhaMchXYjPEMsJgV646aBBK6o5n83GZFGuX0iYP/uMGawak 3jf5geQQUI+Mvnx/mcLVT8saONayMxwwLFod8Lh2D2H/U3QML9xVnkSdcEPMDQ2ZtzEX 1kFcZ9X75VbCWsknsjMUKDgYLvMY3Oqb4xP3444Q5CSZNoXUxwln29Y6npS+bsQfa8eT 0ktfaZpHV6ysWJDwNl1iEt9kyIF2wWOKqS8Dnuc4lolzJz6T4ZRIUgRL78knsahV1Tvp DwLWGGMmnA3oxSxWAqm7YouE4vxygtRpfII/XYBPvk0Qpra3gZP/xnNn4HFwhJruXP84 M2kg== X-Forwarded-Encrypted: i=1; AJvYcCVsJ5mFpZrlCWUsB1iWOmLJjzsx0t1hJwOHeZnH5Zx2zY/IOFQneKCaTHkCVzBYuVOqf+09PBzFI0/T82Y=@vger.kernel.org X-Gm-Message-State: AOJu0YxaTiF6yqRAffPuQIHDIXcUhnd19VCf//nFE5bScnhOcPZgC/EL ntP1Zo/slNnJg0gA+0JCU7fY7y2vWP4nmwmUasDzkYoZ37fhwqgRgRHyjiWsVq8= X-Gm-Gg: ASbGncvPqaJLy+AlO/TLvTcH2aT6dbJwAnPbOtofGa/9P99K5mT1yXjMtr0+mTvt5dy dXpa2KlS4Z9IydgSZPSnItxov+h7pg2ES5zY2mY6Zr29Cm03E0b5q15kv9MeyNu0vuKro5CnN3i CUzBlGi2i0AyJlFXXMETv6zTtsQ0uNwHMda63JW4DIiz+doLqbKmBO+ciZlr5t64J/0FY6qNh8K oI4C/Kn5x8VhGfjDa3uIks/hAcAHQp1Ro8g4GziPvu44RMPpgWbOecIazTCbx97Dl2wZxsXHcWm kcAu4x0= X-Google-Smtp-Source: AGHT+IEAg/pd03kYibzlfvSIvaqSVi+PbHjfA0+hJLFu7VnMhfg+SjjsM8kKANNRe9M0XCJR/yb96Q== X-Received: by 2002:a05:600c:1911:b0:439:3f09:9f57 with SMTP id 5b1f17b1804b1-4393f09a24emr71567815e9.28.1739275811521; Tue, 11 Feb 2025 04:10:11 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:561:8978:1d41:636a]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38dd4342502sm9152327f8f.26.2025.02.11.04.10.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 04:10:10 -0800 (PST) From: Bartosz Golaszewski Date: Tue, 11 Feb 2025 13:09:44 +0100 Subject: [PATCH 10/14] gpio: max77650: use value returning setters Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250211-gpio-set-retval-v1-10-52d3d613d7d3@linaro.org> References: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> In-Reply-To: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Michael Walle , Bamvor Jian Zhang , Geert Uytterhoeven , Keerthy , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1868; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=7Yn+9j8mSRoVcG++9lBVBUXAn3Cu9Rh2EzIAuG2CoYU=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBnqz4XuECycR3qhOz/OYu84vZrJcUgcvNbq5Tw/ AiFsff0T9mJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ6s+FwAKCRARpy6gFHHX csV1EACd44PZNfM4fIZiQchYANBJsGiF5TjH6x92VBA9EbWxUhZHbq0f2O4Ts6dA9ax0RAGSIS9 wvQdN6uEu+kWvZwFHQ/rl3WSMK+7hOkjHhd0oMNttZFzo2ZNtcZl0wK01L5joMszeWMDUtZSnoS kRXQQzk4mAlwbB6ptn7UXFyKiBmVJmQiuiiDDrVuoKLgpBZKqdv7hQD48slwxlchf3kgS0KIXFZ OdzSgZGr7f9XE4q2SSAxAD99q4aER6nZUpyY/ufo9rpY7xrcj7zNr0bii3QLdNLFlCbjROBl+mn 7mtA+ctGns2QHZvZ4BVt/FVdDsIci4JkpHSR/luLp5/jLnMC11pyA+Z8sR1+ICDRCVVLoDufjBG awKgUEjiKWj0c7GLdN44qS2F3LU/+6E98ESik/eC6MBgo26o97V8xUIpKG/F7dtaYaqvUnomZx8 HhGDOd6KWvJC+pr4/m4dUV4IEGJ7g/XouYcWL33Zv9HfkvX9TNiqCyIE9fMXq9aajYWS+2MJjLa nMYkFbSZKBx3STNd2niNXLth8tXt3r4ywbG9dcY7KTfjv8Pynj57ahcwj5ZFQV6huDX6IuvmZ9l 9mun4hkh4bbkdeFMsHLVYbicg/UIGZYQWxu9vYYeJC+nMmMk/cIwrLU6FffkT9zo8WsnHeX2gS5 3G+BFNOoyuFy0FA== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski struct gpio_chip now has additional variants of the set(_multiple) driver callbacks that return an integer to indicate success or failure. Convert the driver to using them. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpio-max77650.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/gpio/gpio-max77650.c b/drivers/gpio/gpio-max77650.c index 3075f2513c6f..a553e141059f 100644 --- a/drivers/gpio/gpio-max77650.c +++ b/drivers/gpio/gpio-max77650.c @@ -62,18 +62,16 @@ static int max77650_gpio_direction_output(struct gpio_c= hip *gc, MAX77650_REG_CNFG_GPIO, mask, regval); } =20 -static void max77650_gpio_set_value(struct gpio_chip *gc, - unsigned int offset, int value) +static int max77650_gpio_set_value(struct gpio_chip *gc, + unsigned int offset, int value) { struct max77650_gpio_chip *chip =3D gpiochip_get_data(gc); - int rv, regval; + int regval; =20 regval =3D value ? MAX77650_GPIO_OUT_HIGH : MAX77650_GPIO_OUT_LOW; =20 - rv =3D regmap_update_bits(chip->map, MAX77650_REG_CNFG_GPIO, - MAX77650_GPIO_OUTVAL_MASK, regval); - if (rv) - dev_err(gc->parent, "cannot set GPIO value: %d\n", rv); + return regmap_update_bits(chip->map, MAX77650_REG_CNFG_GPIO, + MAX77650_GPIO_OUTVAL_MASK, regval); } =20 static int max77650_gpio_get_value(struct gpio_chip *gc, @@ -168,7 +166,7 @@ static int max77650_gpio_probe(struct platform_device *= pdev) =20 chip->gc.direction_input =3D max77650_gpio_direction_input; chip->gc.direction_output =3D max77650_gpio_direction_output; - chip->gc.set =3D max77650_gpio_set_value; + chip->gc.set_rv =3D max77650_gpio_set_value; chip->gc.get =3D max77650_gpio_get_value; chip->gc.get_direction =3D max77650_gpio_get_direction; chip->gc.set_config =3D max77650_gpio_set_config; --=20 2.45.2 From nobody Thu Dec 18 10:24:19 2025 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4DAF822331E for ; Tue, 11 Feb 2025 12:10:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275817; cv=none; b=ms1mFP8a32kiQEoSDszX3cGffcHvhs6dLbSREyWYy7rvXILoJGle8wxVOEeksLctHNjRz3giP2GideNuVdhA/gdYzYzA+SI3rnItHizwUIgQK1dRNpHS83qQDzABgzEulSi+znjnoZtHK4Q7qivodroMGfgXD9mLa4nNFXOwhgM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275817; c=relaxed/simple; bh=/iCqyNtOnVMnbbHM/gy8ix4eEtzaJskfGUpAc2pSNTk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eMow713eqng22uomsohG00AFGMLwSjKkZmSDQf2UK0oNWniViJeE0o5g37JhTWtiPDhZ/fajgos5niJ0INQwx5NKxsAGw2KwW4EtH1CNqLHMmf08cn9lWPZ3/77zigyTa/M4GcUoqCKQkY+TyjfOVy7n9LX07lYYJ5qNIBjt39E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl; spf=none smtp.mailfrom=bgdev.pl; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b=oq6wrCJn; arc=none smtp.client-ip=209.85.128.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="oq6wrCJn" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-439566c991dso1472765e9.3 for ; Tue, 11 Feb 2025 04:10:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1739275812; x=1739880612; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=OTYoMr8LVW6oql9XQW/RHXmZcd/4RwEHGY1djKLQY6g=; b=oq6wrCJnQ7o0qF64Kkguipp4CjnhpaC6ESDxSOia6H/G+Ww4m8I2O6RhS8XkDGHvwd rVHyS3kBCye4/gRwGntpG/RwxnrAHaBjtMx7Ils2LB5T2UjQGCo4PLIMTXJhv5GenVZD Sr3yvimFvbAoduEoCkhyo+e8xf32hIKLDK5mH9hLGz1XNWpwEkhmBMMcE66sRO6jRy1l pKmV5t5MjXwMf81ZOjVvw1piRtkF9+vpFs3F26zKgPlDms8Ff3Q+8YClsVEscQgSmE+R YBWhXTvXTpXOwt8fdR2nI05RB8/Y2TEasHjDsVTmfIkvZthvvdEsFi2E4WN3cSWufK78 xLqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739275812; x=1739880612; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OTYoMr8LVW6oql9XQW/RHXmZcd/4RwEHGY1djKLQY6g=; b=OdLudYjgAo/hvffWS0r5Lqi/+1DC2coJm3fFb705QMn3KKojeZ9n186zX3J3is+OGX XLzdHEFXbX5viSWUt5835xZYv48hdDrEl0n9YHe+eD/32Cr5lISoXpt4L9ijGqs0NgdM x9ddulJEe/zs1ASLkxbPLvJbKALA++tvg8gak7oZyHM5utktl7YnbeQUFUhYTYKatAMb fhIY4XhQy506g11MejwmzySrmpEpWjKiAGAjKH2IfKG8sFz3e/Q7EwTczQ1WLwTUvl2N JnB/WsDfhphry9D+LPyXTDSfB9B7FpAZdzuKKi6gZ2A1dvMPIsBhONa/0iVJg7mzS/Og jXvQ== X-Forwarded-Encrypted: i=1; AJvYcCWlQS+m9AqifhNnuEJZaEV291Rf/HXctzN+5N1Hgaaj+pPJDYXQixoqjTMuEEo1nbaSEdrx8ahMau7IYsY=@vger.kernel.org X-Gm-Message-State: AOJu0YwIcfbdghmieLgls+Aw15j2wcl/2QzvYjl8zvq5qyZWOC/WbFp3 aUeYMCVNnhsacfsSjSTU+y0lRlpyTJj/Yb6B3LhUb/x2LjZI40eGqekS6znqwN0= X-Gm-Gg: ASbGncuJcVssY4driLPgkxVC2AIuzQhxJI86Pu0RQkMh5VVmAgjbNaMEtvWCKlLyNV5 ELiPfbXyVguO764wUkFB484upiAegjoaO4VxOPlALguXoami0WuLUf+Ur+xRt/3kuPD+lix8HKx sjadQK7VSnLJFb40B8Z2+wyzjLaG99IkHG1leNUSJHkW4FstcDs+eju7EfdL0gpRySFd9nGoT9K 8RAj60PqdbJfYBfkSlOKXYX88EN1woE0rD0fgOlaJ3nTSQgox67nv2nXDak36bzVO33SC6UsqMP /TB4vaY= X-Google-Smtp-Source: AGHT+IG7wcpRxpYqNTSatf+2VHR59C3o2yV9oqJ8QNDyjYyiCGKyAQj9OAlTJV+OD1flLjJBjZ1EcA== X-Received: by 2002:a05:600c:458e:b0:434:9f81:76d5 with SMTP id 5b1f17b1804b1-439249abc43mr135309205e9.22.1739275812541; Tue, 11 Feb 2025 04:10:12 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:561:8978:1d41:636a]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38dd4342502sm9152327f8f.26.2025.02.11.04.10.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 04:10:12 -0800 (PST) From: Bartosz Golaszewski Date: Tue, 11 Feb 2025 13:09:45 +0100 Subject: [PATCH 11/14] gpio: latch: use lock guards Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250211-gpio-set-retval-v1-11-52d3d613d7d3@linaro.org> References: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> In-Reply-To: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Michael Walle , Bamvor Jian Zhang , Geert Uytterhoeven , Keerthy , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1683; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=h+cWYBz24KdzBpvy5VJxnnE3YDAW9zbdVpnPgLfhLXs=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBnqz4XmMjvRWj0VIMHiQ2Plb6LzU0Rt2YzZJCyM O9agC5YB7KJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ6s+FwAKCRARpy6gFHHX ciSFEACmHs+cc7n0U2drgKwPJN5BRA36H3RTLy+b8s1iKC99BlEktOi67G1rUJA+b1fff0TqzIv smAu9c6tzmEpnvAMNDUZCrw4JpCdRuzGQGZ2E0Gxd/42V4aFeFGpsXur/ah/PCdhmTHdb+JASPe MGwcy7D0bRei1p1yQv3dWA60H4l4svOXh1tWK/XG1vYM5+AVj9IRmK3NO3/7BJLv13J4EMT2OqQ Ck9X468FsXxfBaS7Qv/JX0njiYfgw8Qc7sgMq6FtpqN+JUh2bQK22nY7mV45mUBpybLAyt/J3Gd N9X1Otv0xTqoc7bAs7QAJBw2taGRqbaOVZErbgYfL8dpjhx6dWNnV2N+9wyNNevq2p1TGn3eNAA mhtqGnjvRj1pbGkuaPPqQABqSkXvIqpuwyKrghqQOqka3rL19diU3mKaB5G/surlnGztcpDTTs8 8YqbHI0MKhDNtm9WYcjEdwz4n1loQeP7jLU5tzALYvehZCpOfbpwFnYlB2byi+LoE2Gs4tslKaJ 9G78E6mPs1g1c5Zw1N+FlgXKHYqD7eNXwHcwodQ+eIGr5bHSeTOfwI354KEvVZcb88roh7fQAly 1D9bxWsZvoMtmUMWGBvvDWB0zqYoCZf5TXrOdMjvWneAZM+Im1Tuvd2uv+thdPbvrW0M6VhRI8A dY6ClfQ2mYQv9uQ== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Use lock guards from linux/cleanup.h. This will make the subsequent commit that switches to using value returning GPIO line setters much simpler as we'll be able to return values without caring about releasing the locks. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpio-latch.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/drivers/gpio/gpio-latch.c b/drivers/gpio/gpio-latch.c index e935b3b34117..d5d3817eea67 100644 --- a/drivers/gpio/gpio-latch.c +++ b/drivers/gpio/gpio-latch.c @@ -38,6 +38,7 @@ * in the corresponding device tree properties. */ =20 +#include #include #include #include @@ -93,24 +94,19 @@ static void gpio_latch_set_unlocked(struct gpio_latch_p= riv *priv, static void gpio_latch_set(struct gpio_chip *gc, unsigned int offset, int = val) { struct gpio_latch_priv *priv =3D gpiochip_get_data(gc); - unsigned long flags; =20 - spin_lock_irqsave(&priv->spinlock, flags); + guard(spinlock_irqsave)(&priv->spinlock); =20 gpio_latch_set_unlocked(priv, gpiod_set_value, offset, val); - - spin_unlock_irqrestore(&priv->spinlock, flags); } =20 static void gpio_latch_set_can_sleep(struct gpio_chip *gc, unsigned int of= fset, int val) { struct gpio_latch_priv *priv =3D gpiochip_get_data(gc); =20 - mutex_lock(&priv->mutex); + guard(mutex)(&priv->mutex); =20 gpio_latch_set_unlocked(priv, gpiod_set_value_cansleep, offset, val); - - mutex_unlock(&priv->mutex); } =20 static bool gpio_latch_can_sleep(struct gpio_latch_priv *priv, unsigned in= t n_latches) --=20 2.45.2 From nobody Thu Dec 18 10:24:19 2025 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5E5BE2441A1 for ; Tue, 11 Feb 2025 12:10:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275817; cv=none; b=fClUCFzkyImSeudHgxQBtP/KlippU037PkRvoIFrE2mPcgx84rjz1O3qGjSNN+yDIQKw9gx+GDdHJARJjvDngwbuoOyX2R+4+MOOhPtlC2qvW7eDu/9k7Hmisw8gp4GShttUTwjGs0dI3LAbofLn1eliOVyFIWhhxc75cBMHHGU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275817; c=relaxed/simple; bh=hYAYiepkLifuXDe4dZFy1Ie1vUXArX8PbVUCRbZM54s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Nd3rJw9tkXM++R71pF1xCZcPc+2c8Od99icWkrIWdGQcI4DY8Bi0O7O1XxgcTZ9EfUH5QA8siqO9nLcBdivKDB2yCPYS8bJZ0PzR6RNZrl7m22zez4cpL7BX5EwNNL/2K0SJzvbnT/I4/q64aKIg1+uy8L3c6QN7RoaZSp2y5g4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl; spf=none smtp.mailfrom=bgdev.pl; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b=C5ULmwlL; arc=none smtp.client-ip=209.85.128.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="C5ULmwlL" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-4364a37a1d7so54416385e9.3 for ; Tue, 11 Feb 2025 04:10:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1739275814; x=1739880614; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=KToW2+Iuwbkj7Tb9LD01jCq8o7gpbrPrNmCFjVQZ3rk=; b=C5ULmwlLH41Fg2RfGHmFVEw+5YyiKHz4+QZT9nWG1PyItMo2FA9Cz7Rb75E6LUEpyj 3+DI71cLv1PQ78A2epdI0naUGgqj+2WdY+MtmIF65lh3snhXV2iDq4Wn6nfG5EJUSOSJ RSQLxmzGIGdnqPiz8zZFEDFVS7lmJNK90tCuzdVboU8PKYoKc1B2Qv+gRvXHkI83F3ow 05GWhue7FTfXK33FSje0urNIBlKmPjU5t/pmdtCa0HD0a76VhiNiO6DGour7EULEc19U 1bkGa2XHhwY90hZtO8hI7hvY9GAFxxCvEwz5ex+micoitNjSvDI1hX9u6QgosWUwDe+Q E9bQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739275814; x=1739880614; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KToW2+Iuwbkj7Tb9LD01jCq8o7gpbrPrNmCFjVQZ3rk=; b=I4yqh3hUgVG8AdkecZvfJl26TDAyLlqA+f9T+WHskVMCDQl+qBLgKllGct/s0jCYfP QP+clnL7uTFvTrNzqPEyU22R69jSkyqaAClUy0m2LN3GSaf3UslZo7zIu9lfiVPXXIW7 wwpctyp7eZWKBAa1/HqDsuaaft1ivxV1V6YQrVXdQhIoCtZ8P8wr8GJT/xZFnpwWIlEw lGeUpqxjiDEM0z+WaZkX/wwl9ILDTmfxy2jUSBsK3RQ+ALueOTgOK8rWkpUGmUyJPO9W B8HBB5z+cuR527Nak5E8b+XP6XItjwVCFr3Z+ZakZzsf5m0+Lro/leaIoowD4OILJaPf pxww== X-Forwarded-Encrypted: i=1; AJvYcCVhHbWYToOmy0oCz2ljCTb0nKDQm5Q7YknZY/Y+S8nIPMC7g95nQ20avY4/T2Lr4gdvN4VnvPYNLXRbArc=@vger.kernel.org X-Gm-Message-State: AOJu0Yw/NvxKniZu35VMS3yy2v/Oz+AmiYVQnolH3zN4AuEQVDgnID3o jbsjFjzU2uGy53efSIWZF9g36oUxqrKEAdxmnkeglxIxczwmRARNavevSIlcFX4= X-Gm-Gg: ASbGnctGXdYAOr0Vg2Z1qFfPPcO+VhJ6BQ4jLgBTOSNRI+yXgJzoHvVhn7mPbTLuWfR Q9jp2J7fug8HGJOHLyvUikuTkYn4IEJ0PX0+EuM+R0Z/hyO60Dp0CLdWWuINx9udUGZkLIZVHem MMX9jg2e4p6wbD0U7Lq5X2Nsnb+4ur41m/JKu3A+E8yHhXMzd/srq7OYA26gwV+b56qz8amm9VX Xk3WUG7XOQcuwkN/vfvFWOHkz7Cx6TNJJiZZTBYWIOH3ulnBRUH1G5b4pgwwEHbAI0F4ZxHHpp2 vJPv9Ps= X-Google-Smtp-Source: AGHT+IHJ6iBxA6sKexsgFUuQe5kxoHmgCMwAZzbU3s1dj6rDjh0p2Dy+H3J23xXGryvIcW6W8LbGkQ== X-Received: by 2002:a5d:5847:0:b0:38d:dd8c:51db with SMTP id ffacd0b85a97d-38ddd8c53d1mr7954281f8f.53.1739275813588; Tue, 11 Feb 2025 04:10:13 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:561:8978:1d41:636a]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38dd4342502sm9152327f8f.26.2025.02.11.04.10.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 04:10:13 -0800 (PST) From: Bartosz Golaszewski Date: Tue, 11 Feb 2025 13:09:46 +0100 Subject: [PATCH 12/14] gpio: latch: use value returning setters Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250211-gpio-set-retval-v1-12-52d3d613d7d3@linaro.org> References: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> In-Reply-To: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Michael Walle , Bamvor Jian Zhang , Geert Uytterhoeven , Keerthy , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=3126; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=Q4wKnGN06mVNx83+jVe38nMnlEIw9AMAxQkGAiO4jL8=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBnqz4YHvbrzPRog6+3l62ZLwv8JdJos+QTKG6Qn HfGHOzYgkiJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ6s+GAAKCRARpy6gFHHX cr2rEACwQK7T4mktMuHRmDpsb+OIcAdWyH25v0hXERhYnpMpctyE75kKnS9rnjYYqYA/IyDdzEX VeOc3YzTta/FkNK0x+L9K/SxGI9LH27W0RtraqHDu3nThmh6UXmDe9ecfRrjW9aUS1krlwHer1d EsL5WUlGiRagCwuD1K1rXw5rNq0EnZpFG9H7z6HasFRH2Z0cJ9+d9Ld5FNqdIuk9mUK78XLiZbs GqjB8bL9MADczFMVbwv1ElqkN72A2LSoWCORcPXQreOFcGSABiAZV829jLrIkRwA3/WZEf3AF1N C7W/NS7QhILUbFBa6Fq0ifHa80M6nSHNoRjQUw+82xkuE7WgWLVrO8h8B6jD+t+Jt3EaX6V7b49 tfd7fTBGlLiPVIghiqKn/NTUXc9oWZ9GAN3DM5J1Yp/RwyeAPStbPb6X/IZ8yaF9bfFXruRCWFy xXAtujaCWcsHpHVWA7PjQqGiRg+Hz9gNccweZtlRtXsoKVowCND/NRzMCoYT9w5mhnikTOMXHlV iaE55DLOV849XbHTf/5YaFbAbr/wh97gTPAdUcL9BW23JxKD/rucOon8rXpmdTQoigoX+lpSFxY FBzcLaFu2S4swsMFxQb6XV4kPul8zp++bG59p++rBmndSC3Q/bUh0N6jEcXMDAh8hx2p9OOMOMU e26DuOjSzD2eqwg== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski struct gpio_chip now has additional variants of the set(_multiple) driver callbacks that return an integer to indicate success or failure. Convert the driver to using them. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpio-latch.c | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/drivers/gpio/gpio-latch.c b/drivers/gpio/gpio-latch.c index d5d3817eea67..184b7dd17425 100644 --- a/drivers/gpio/gpio-latch.c +++ b/drivers/gpio/gpio-latch.c @@ -72,41 +72,46 @@ static int gpio_latch_get_direction(struct gpio_chip *g= c, unsigned int offset) return GPIO_LINE_DIRECTION_OUT; } =20 -static void gpio_latch_set_unlocked(struct gpio_latch_priv *priv, - int (*set)(struct gpio_desc *desc, int value), - unsigned int offset, bool val) +static int gpio_latch_set_unlocked(struct gpio_latch_priv *priv, + int (*set)(struct gpio_desc *desc, int value), + unsigned int offset, bool val) { - int latch =3D offset / priv->n_latched_gpios; - int i; + int latch =3D offset / priv->n_latched_gpios, i, ret; =20 assign_bit(offset, priv->shadow, val); =20 - for (i =3D 0; i < priv->n_latched_gpios; i++) - set(priv->latched_gpios->desc[i], - test_bit(latch * priv->n_latched_gpios + i, priv->shadow)); + for (i =3D 0; i < priv->n_latched_gpios; i++) { + ret =3D set(priv->latched_gpios->desc[i], + test_bit(latch * priv->n_latched_gpios + i, + priv->shadow)); + if (ret) + return ret; + } =20 ndelay(priv->setup_duration_ns); set(priv->clk_gpios->desc[latch], 1); ndelay(priv->clock_duration_ns); set(priv->clk_gpios->desc[latch], 0); + + return 0; } =20 -static void gpio_latch_set(struct gpio_chip *gc, unsigned int offset, int = val) +static int gpio_latch_set(struct gpio_chip *gc, unsigned int offset, int v= al) { struct gpio_latch_priv *priv =3D gpiochip_get_data(gc); =20 guard(spinlock_irqsave)(&priv->spinlock); =20 - gpio_latch_set_unlocked(priv, gpiod_set_value, offset, val); + return gpio_latch_set_unlocked(priv, gpiod_set_value, offset, val); } =20 -static void gpio_latch_set_can_sleep(struct gpio_chip *gc, unsigned int of= fset, int val) +static int gpio_latch_set_can_sleep(struct gpio_chip *gc, unsigned int off= set, int val) { struct gpio_latch_priv *priv =3D gpiochip_get_data(gc); =20 guard(mutex)(&priv->mutex); =20 - gpio_latch_set_unlocked(priv, gpiod_set_value_cansleep, offset, val); + return gpio_latch_set_unlocked(priv, gpiod_set_value_cansleep, offset, va= l); } =20 static bool gpio_latch_can_sleep(struct gpio_latch_priv *priv, unsigned in= t n_latches) @@ -160,11 +165,11 @@ static int gpio_latch_probe(struct platform_device *p= dev) =20 if (gpio_latch_can_sleep(priv, n_latches)) { priv->gc.can_sleep =3D true; - priv->gc.set =3D gpio_latch_set_can_sleep; + priv->gc.set_rv =3D gpio_latch_set_can_sleep; mutex_init(&priv->mutex); } else { priv->gc.can_sleep =3D false; - priv->gc.set =3D gpio_latch_set; + priv->gc.set_rv =3D gpio_latch_set; spin_lock_init(&priv->spinlock); } =20 --=20 2.45.2 From nobody Thu Dec 18 10:24:19 2025 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0B06E24CEFF for ; Tue, 11 Feb 2025 12:10:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275819; cv=none; b=QgDN3gh43Ibc6zCXYuJPbGCuEfvbkyZBwFlYSW6gUIBplYbFVndTQ5CcKe/lR6bEmj2QR826WNwMy/1oh++dqgCkYSacqM0BmMsLACHowDKfY4166PDVtm6OM+7UaY2ocGqkj6nNDg+4yhj5Zc97Hh9zQxkd4h1n7NalmOMrPyM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275819; c=relaxed/simple; bh=bHBkkQ3gwrzmNpAMzNtD02RKPcIOd8kTW4JbUoyfFV0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hSM8rSTeKviOQsNeqXtryb4VcMrzy/C9mj0WQya61kRMB3ktSzddiD6bs7TCrxx5Glk+HwRG/l5wRM2qXf9KsJwpALgbvrWa+l7jsda1zuGmFKpgif+S9vQEfe1Vv5XQkgWTttZ91qWYgM/8toYBtEoG2QR6DotSoicxa3uBahA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl; spf=none smtp.mailfrom=bgdev.pl; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b=HkuweSds; arc=none smtp.client-ip=209.85.128.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="HkuweSds" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-4393dc02b78so16215875e9.3 for ; Tue, 11 Feb 2025 04:10:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1739275814; x=1739880614; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=wWAYSRpQyGW1MmOUzWp6CZEaNkYKfy89Gcg/wUWpW38=; b=HkuweSds/bfFj2FDg3cU3m1gb8cFRnaraTsQOD5hIO/eHrgvTQr+gY0ngKYT+F4pbd 9YzSl4fkpW15VVoGFmUcoWTSh5EmRC1CsP46JNph+r//SEE/8dAqxTLX/qzUZFzj4MA4 0PXZ/R3YtrnVnpHBXlkHyf/CR4NNtEMMBVuu7XLNqnZ0rd1ShrC6JR2eY7wBMpY6dwEl qzeV3wdvZb7+Cdf6OWCB0SVHy475bM0vMykcdWinXxCjl/5Q25Yaweq1zDy/PEW3morn 8gcDHebakzyEuYjAfSmH8NHrbczuNhX1tF6Uw1VZgUDX82jiHS8ip2/ht1bv4Zc3kZT4 HEIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739275814; x=1739880614; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wWAYSRpQyGW1MmOUzWp6CZEaNkYKfy89Gcg/wUWpW38=; b=onyvZzJnMJlcnfKF415cpQ8tbWIubQYDV3PpVvfYqq97MnEeitlo221GvDqEypyNru jQ00ehVs6g8Kd9sFv0yQr1MPAuIvnFmXEwzKOSw4ogLyf4KI2d91Zq3haCkhta2tYYDy D/Vlm/50EasbePTpFuneRGmZghSyijjYDQ81uBp8z1w+QF/yG27HrAHBUur78Erb8Q+A Sr0bP48fpwRL+dNzMtKwynibdv6uEw7cqg6mm7X5/QRi5zLozeVR7CcEL06X5247eVR8 f0NKDYCzfHAIWZaLqL+0LUSTb7dhQSRBqMthEVG2V3LjxtlShPe5xqdRA/HqJ+T92GmF mbfQ== X-Forwarded-Encrypted: i=1; AJvYcCVG7c4RJ9rorRxQwaC9vFTwCx7obFkLxugCF9sIqDSGx7Q1VV3F0txJoa+eNRtnygeVU9bKFjhHQObYbPI=@vger.kernel.org X-Gm-Message-State: AOJu0YxSrX52CRBC3zzeJxFnArTM75lFQW4zrLt4KemzNu5CfnMDPAbR f0Ou+OOWICM9zzYko0jrkha8JVU+FCYYv2zzk92tfjsOJz4DBqiousf4Fv4mBMM= X-Gm-Gg: ASbGncufkZ1Eh2EAOzl4kxPcH0wEuYfzmiqOvG7gRIyqQD8tAZFkqBRs5E/4fj/GSxs lFWCmcnve6yTpsUPoJHV3e0LKdAURCXhrxKM3DsnVAsG4h4kNmfFHL+CiBkDL37rrdro35UABtQ ygDYkIIZxxN9I8x8mIGdlkOwr2shNzWI3+VPn13+E1pIW/V10GxUY95neHlKgKCrUw6FeejE4hf HUGUdxmfm/V5H3eV4OWNvcDLyrgiAD1c0oj9Zfu0M8aD91T0D7zRX8iKPsZwHlSq5yqR3m6kinv WWeBIjk= X-Google-Smtp-Source: AGHT+IHYgYYOaXEpCdGY3z7Bd2VkYJBXiycDpU53N+TlhIMT/SWdj99wXGUXUo6mOipeYCRicV9nKg== X-Received: by 2002:a05:600c:1ca8:b0:439:3d5c:a028 with SMTP id 5b1f17b1804b1-4394c81a33amr38392455e9.12.1739275814586; Tue, 11 Feb 2025 04:10:14 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:561:8978:1d41:636a]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38dd4342502sm9152327f8f.26.2025.02.11.04.10.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 04:10:14 -0800 (PST) From: Bartosz Golaszewski Date: Tue, 11 Feb 2025 13:09:47 +0100 Subject: [PATCH 13/14] gpio: davinci: use value returning setters Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250211-gpio-set-retval-v1-13-52d3d613d7d3@linaro.org> References: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> In-Reply-To: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Michael Walle , Bamvor Jian Zhang , Geert Uytterhoeven , Keerthy , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1519; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=yf93BY6UtZ3z9CvJxszbP+L4YyMx5+aznul9fLO8j0Q=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBnqz4YjmuswHK/ySgxs6vkxh9UOnLtF49m+HYhw kEk7Bki8iKJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ6s+GAAKCRARpy6gFHHX chwlD/9zW+lnpiPgLXbElhrE9+pbLjQ2E4wbziINynawEf9Y1rEgv29XTE28fO9Om5SdY6yvMzi bQbAf9MA0YtwVvH2NhyDNMIicUx/lECPglW0WtDX806YERgydsNPcowpxzwpV86Rq4kDdJy6X5/ AyYtg8ucPcQBP7AXgKsI6YLfqImcjahAc+c7FkN7RJvTMNQtQqMvX7dk0Q+iYIYhY4z2QQZUH0C bQFfqBme6mvn3FDLOSALr//ITeFg8zX98CRPFaN+Jkjtz+QEshMe6t0N/5gCZQRFF19O0SGaWWT 7yYmtdo+01jdh7eOtUFsFLTORsIa11wtKiBbmoZb6xjPc0n0cnWsDm2iogGJ4WnIXPbN0RZxqJZ aNE2fywbdg6PSUgreOKplFn77Sn+uMletLUpQbJMXaeVM0liZ/3hixVLdc9cXgYbdQG2LPREQYN EhMy713GOGXoWh66FCQH4CdKtvkc/KwRo9SHj9kwDY77vn25G77vplG9BAlU0+HJ9ldg6d1jjLp 8CTlUEBle6etiWuPIh/vJEab9TgwvrTW04j1UrkE47R2f/q6kd2g260X9hs/W25H4wGWiXTVVgn hhwM87DBACNCKWp8MuZo077opF/SlR/MkrKLdI+FSOTmbXwYF8Ov1RUgsvk09W9Gp4EDAzjWznq zUMwfdpHgDO41/g== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski struct gpio_chip now has additional variants of the set(_multiple) driver callbacks that return an integer to indicate success or failure. Convert the driver to using them. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpio-davinci.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c index 8c033e8cf3c9..63fc7888c1d4 100644 --- a/drivers/gpio/gpio-davinci.c +++ b/drivers/gpio/gpio-davinci.c @@ -139,7 +139,7 @@ static int davinci_gpio_get(struct gpio_chip *chip, uns= igned offset) /* * Assuming the pin is muxed as a gpio output, set its output value. */ -static void +static int davinci_gpio_set(struct gpio_chip *chip, unsigned offset, int value) { struct davinci_gpio_controller *d =3D gpiochip_get_data(chip); @@ -150,6 +150,8 @@ davinci_gpio_set(struct gpio_chip *chip, unsigned offse= t, int value) =20 writel_relaxed(__gpio_mask(offset), value ? &g->set_data : &g->clr_data); + + return 0; } =20 static int davinci_gpio_probe(struct platform_device *pdev) @@ -209,7 +211,7 @@ static int davinci_gpio_probe(struct platform_device *p= dev) chips->chip.direction_input =3D davinci_direction_in; chips->chip.get =3D davinci_gpio_get; chips->chip.direction_output =3D davinci_direction_out; - chips->chip.set =3D davinci_gpio_set; + chips->chip.set_rv =3D davinci_gpio_set; =20 chips->chip.ngpio =3D ngpio; chips->chip.base =3D -1; --=20 2.45.2 From nobody Thu Dec 18 10:24:19 2025 Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 37A0224C686 for ; Tue, 11 Feb 2025 12:10:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275819; cv=none; b=FJJ6cu5svaB2OyO8OZBwE+KbBWmc3eIKcb8PLozASsVH/r8Y1jRrjocmzFgHcJNwOzUJi1QYKTswm8RSKTkrI9FB6Vr8SejGPJ5AsHUGM77samCCfir3nhqHBVqlI8m3L4yJBwkWF25pizSsuizanFQT5e/b1OYes3x8TIV3pf8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275819; c=relaxed/simple; bh=OvyGL2YeY7Q8iznU+X9mmrIKaFtAa6AYlttV774XVbg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Je1qIZKul7PtVr8q2VsFm6yabTldk6LnY09BbC+4FjUlwUXhmptaevw2QrS8rL5s/bbkxnJC8pTvEguIINMQ7puuJA3+p2BNchsvXU5piplVXAedZGLCZis1kRoJEX71BrX2dRlzbUoWTW9SszTwxJOYcBuY/3zqBkKd8RHO7JE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl; spf=none smtp.mailfrom=bgdev.pl; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b=e1wVmPp3; arc=none smtp.client-ip=209.85.221.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="e1wVmPp3" Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-38dcae0d6dcso2355028f8f.1 for ; Tue, 11 Feb 2025 04:10:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1739275815; x=1739880615; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=oRq/T6GE9bSeX1D1Gt9SuyzuOUWanfcEXtTNwUHWu90=; b=e1wVmPp3Siv4FDFOFsvxliqAgDCA0u/iBke5kPGLo6o3Ee6WeBy8K8/YyNz3jeR587 O0vbZKdrjezlbEq2CL+n4pkM1XMfsqhap/OMuP2rmXQ2CrjG+yaNVSHY2dSZna65hrJZ MQbr02Mhj271uj4fzx4Mz4JA2164cJVsgT5NoNa9VktR0NqWlVESPjn8EAzh/QnZK/+r CU6ZA7OvBbmn+rg3ZKAvi1G89BcTb+G+XyQXw1Glz5PDJdtZ9bb66iVrzsicEdTBaLeF 2F7mNIcmYsnQMbk5eXoMm32lEK8dj7pDY5QKb5whPhoaIs2993bY64jvh+iUGzuo47ot 2zjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739275815; x=1739880615; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oRq/T6GE9bSeX1D1Gt9SuyzuOUWanfcEXtTNwUHWu90=; b=agDq0v9WhpwbDTzQPSBhcUmJh/8RbaevQ7dLxZwXQdvVkKjm4mwdqXqQayvN47xtrA T4P4OCEQjil29dULxcW0uJlPzd9Q6SnlkMXmluvPBtP+RgLYscK8Ioa81t8dtsMQYPHa CXo2CMe9gm7d5q7wGDRulJlgmm8Ih4AICusvC2bLY1AVG/pBgpYdJSkq28/T7ovHXe9Y /3BGmMKl4iLvSN2wp95WvEwHEBHVoNLNoXkSY4j/dfH1IznuK2svpKS1tKRs5AYscj6H A0QnPfit52iOPY3evgNJ3bjHXY8O9BPrVW6N0fN6KKKrXkD6SO5ibKSJ2VCVWQA7G1jY Rl4A== X-Forwarded-Encrypted: i=1; AJvYcCVS55DFtXPUu4HL0GtLPIbugPB9DtHylbSZEICXiI07u0AlY+Q1CbnOLyyZEF0E2SPmWeyI+LNNO5XPvsk=@vger.kernel.org X-Gm-Message-State: AOJu0Ywe4k74ICTwcVzRSk+HadHrxv9DW1D0jq00tmZ62ZTzClXoV1nX B+K52YncauMao2mlRm2TqCs/UzC21NAZ0eH80OQVPjGtOLsAtJgSzm6q8reVFkM= X-Gm-Gg: ASbGnctz3W6gB275rmyLCDf4m3iIaYMq7S1jAChWLPkjAwf0otSh8maO+zHxfDJUtF1 DxkbW89VnSXdYtS9RpcDBMN4faQ5G3HQjmM7ezdAnMLPCVelOLvu6tkNDATrVyfpJg03P0rBAil TFImD0MtfKBgjcI/X6fWO0Mw+DNffgCuPi0BYPbKzVJVPplpdQtXa3bpMjgDeJM4/DSwFWIEoaf bWZc5zx2iUqRENoq+gyHI1VwHNdXzhMQ1yrnpH6S3huXk5bZRY/upFyQgY0dMi/HGPIyVdEO4EV wgSYJBg= X-Google-Smtp-Source: AGHT+IHpk+5B6aVQLxsLSPqsY19+wTs9O8NCp4xKz9/p1TCNTCXaDWyHFV1DSI5SZkQBCHMGhHyv1g== X-Received: by 2002:a05:6000:1448:b0:38b:da31:3e3e with SMTP id ffacd0b85a97d-38dc90ee504mr14083350f8f.28.1739275815512; Tue, 11 Feb 2025 04:10:15 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:561:8978:1d41:636a]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38dd4342502sm9152327f8f.26.2025.02.11.04.10.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2025 04:10:15 -0800 (PST) From: Bartosz Golaszewski Date: Tue, 11 Feb 2025 13:09:48 +0100 Subject: [PATCH 14/14] gpio: mvebu: use value returning setters Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250211-gpio-set-retval-v1-14-52d3d613d7d3@linaro.org> References: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> In-Reply-To: <20250211-gpio-set-retval-v1-0-52d3d613d7d3@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Michael Walle , Bamvor Jian Zhang , Geert Uytterhoeven , Keerthy , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1667; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=CxAelnjMdbcRuwV9O+C01TbuJn6vA1w0ry/4z1+OR0s=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBnqz4Yj6qJLPO+UIt+NymYEMJOR8YxigCMSlVHs czl/relyCuJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ6s+GAAKCRARpy6gFHHX csWaD/9mbJ5eKSLEyErL6bqsXcw8l4WAJV6ugzeHQolcyWwGuFbMEcsOmsgbW0weQReaWnpgHtC cKaWmRGoYTvghOaPshMV3QLhWJu6CHvTVNE/mYu+NOXoscZQ368Eeaal9X+7MkrD1rtnSs3Q4Y8 9055WiVqsC+Ws98hWBUs3ydr5dDYMJ0U7JkwI3ky+QLfJlOs/OM44yTRDLU9cXIcujbu65DwiOK 97wz8+lL3ie4/3bUF2f4Jb4x2SQN1KhCVjEbufOxg9GvfA94Wb+nkni7BDf+UMGqH5uSHcJeD4z qJa/Vhhr/jWV/RdgNptcufaav6wK3yZYhPlnZNghO7Bo7mHQSv/PvObxEEPgBoX+QFLn7mzf9V/ u+TIUwYAcAYmuvaQ5VyY6i1GtmgA/xw1pXnz4El933Jh3WPi+thZmNNKE1zzUaNwUn/6wtsPb+G Ebv84adCqb1tx9BsdBwfeUHELnt/KYeFGyba86EGdtsP1AnamQ74ZhHQWaA9EMyYXh0diVzGMfx H8T7ymolklssV+IrhKSvWqhruc03x0KUlU4rrGlUWm1SncP7i/qEs2EKQJS7SHC298CV2HfAqZz qh5cWxccz8FiDS3Qfn0TbjyD42EXMtJNoaGauxiWM5QQfKz0DJe53sDxCDrl392pYcyGV6LtRMj iSI93SL42UVXOTg== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski struct gpio_chip now has additional variants of the set(_multiple) driver callbacks that return an integer to indicate success or failure. Convert the driver to using them. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpio-mvebu.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c index 363bad286c32..3604abcb6fec 100644 --- a/drivers/gpio/gpio-mvebu.c +++ b/drivers/gpio/gpio-mvebu.c @@ -298,12 +298,12 @@ static unsigned int mvebu_pwmreg_blink_off_duration(s= truct mvebu_pwm *mvpwm) /* * Functions implementing the gpio_chip methods */ -static void mvebu_gpio_set(struct gpio_chip *chip, unsigned int pin, int v= alue) +static int mvebu_gpio_set(struct gpio_chip *chip, unsigned int pin, int va= lue) { struct mvebu_gpio_chip *mvchip =3D gpiochip_get_data(chip); =20 - regmap_update_bits(mvchip->regs, GPIO_OUT_OFF + mvchip->offset, - BIT(pin), value ? BIT(pin) : 0); + return regmap_update_bits(mvchip->regs, GPIO_OUT_OFF + mvchip->offset, + BIT(pin), value ? BIT(pin) : 0); } =20 static int mvebu_gpio_get(struct gpio_chip *chip, unsigned int pin) @@ -1173,7 +1173,7 @@ static int mvebu_gpio_probe(struct platform_device *p= dev) mvchip->chip.direction_input =3D mvebu_gpio_direction_input; mvchip->chip.get =3D mvebu_gpio_get; mvchip->chip.direction_output =3D mvebu_gpio_direction_output; - mvchip->chip.set =3D mvebu_gpio_set; + mvchip->chip.set_rv =3D mvebu_gpio_set; if (have_irqs) mvchip->chip.to_irq =3D mvebu_gpio_to_irq; mvchip->chip.base =3D id * MVEBU_MAX_GPIO_PER_BANK; --=20 2.45.2