From patchwork Tue Feb 11 12:09:35 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bartosz Golaszewski X-Patchwork-Id: 864633 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (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 6BB381FCD06 for ; Tue, 11 Feb 2025 12:10:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275807; cv=none; b=jTnI/DvfjflKoA3LhhUTeL1MIJbuEi+tAZY8kxc1CGH/Z3XDLw+K9fs3YN3fqNNaOTLLAVcPrm8HRlyNSXsT6iGzyio9dYEgvLxWzGPqaOQ6r9zTI+6qoXafMymRIKE/nxqj/69hUEbXh0p47nh8usnr4dFihemYZys6dbCcic0= 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.49 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-f49.google.com with SMTP id ffacd0b85a97d-38dd9b3419cso1381426f8f.0 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=Awb8+wf5gw13pzMjq/gwTgvGLAuaoQtYrLO461vQsprfJDF7wn9K4VY9fwMeSgw5Y4 ByT9iDjvsfRVCipPQMbSDe9t7Ux5wRxhtto94uNrDzpLALFs5V0endqYRnu+DAJIHmgj kg7oqVbLQTeoCX/MlqjEkHB+9oxARrnUnzEvVrxvZ/dQeAjuUQmbQasOqQcpuKoMMuEb PYI5ZfB/PMPb5UmmGEHAJRR3U4liRc9Q/B8RrcyXWatLPMaLE6YHv9rMLM+QNyBH6f9D ZpnixAbi4zV+FW/pDPfKUUaR7RazUqiAq7nhnMTp3g6Nk6cMVN51pCQQJukYmEQqTRbj d1jQ== X-Gm-Message-State: AOJu0YwAihNsdPqVRcmNlukh1OJYzqkeW8O0wRaDhLozXW2yUloMkx9u Cz1e3mUuw+1YhNAbkHm7RtBHK3pzt4cxis2fRU1R3RyxSRHwMx62OawwRoDBxHg= X-Gm-Gg: ASbGnct9JyhLFP9O4T2ouqYJkoNXevxh4yJvx98piCWXF5UhoH7a7uGh2K0Z57J58oQ NqH3N6drOL3NVvKY0BZQ4Y8ry0cXqwkWva7CdNC5dGUoCvK1v9qKuptqw91h0IdPJLpe+BPGGLI 6vWt/SkoCuz20xfrfGWSB9SX4V3ij8dqSFGdGPG+KATdHmUjUsHtwhzwjpp0dAWWBE6/TBI2eY7 3iCovSJvWuW9qVEt9+awG5zpFyTYC/7jDAq0svWzBeKwXndoisYre75jy6Ggymhnr2FF1DUVjmp 0uHWn8g= 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-gpio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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 --- 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) } 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 = 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 value) { int ret = 0, offset = gpio_chip_hwgpio(desc); CLASS(gpio_chip_guard, guard)(desc); if (!guard.gc) - return; + return -ENODEV; if (value) { ret = guard.gc->direction_input(guard.gc, offset); @@ -3403,6 +3403,8 @@ static void gpio_set_open_drain_value_commit(struct gpio_desc *desc, bool value) gpiod_err(desc, "%s: Error in set_value for open drain err %d\n", __func__, ret); + + return ret; } /* @@ -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 = 0, offset = gpio_chip_hwgpio(desc); CLASS(gpio_chip_guard, guard)(desc); if (!guard.gc) - return; + return -ENODEV; if (value) { ret = guard.gc->direction_output(guard.gc, offset, 1); @@ -3430,16 +3432,20 @@ static void gpio_set_open_source_value_commit(struct gpio_desc *desc, bool value gpiod_err(desc, "%s: Error in set_value for open source err %d\n", __func__, ret); + + return ret; } -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; trace_gpio_value(desc_to_gpio(desc), 0, value); guard.gc->set(guard.gc, gpio_chip_hwgpio(desc), value); + + return 0; } /* @@ -3589,12 +3595,12 @@ int gpiod_set_array_value_complex(bool raw, bool can_sleep, * This function can be called from contexts where we cannot sleep, and will * 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); @@ -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 = !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); } /** @@ -3630,12 +3637,12 @@ static void gpiod_set_value_nocheck(struct gpio_desc *desc, int value) * This function can be called from contexts where we cannot sleep, and will * 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); @@ -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); @@ -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); 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); } 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); } 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_size, 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 array_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(unsigned int array_size, WARN_ON(desc_array); return 0; } -static inline void gpiod_set_value_cansleep(struct gpio_desc *desc, int value) +static inline int gpiod_set_value_cansleep(struct gpio_desc *desc, int value) { /* 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_size, struct gpio_desc **desc_array, From patchwork Tue Feb 11 12:09:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bartosz Golaszewski X-Patchwork-Id: 864227 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 6BF631FCFC1 for ; Tue, 11 Feb 2025 12:10:05 +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=1739275807; cv=none; b=Y2NR7vDE0pXV9IZH11rDE1wPOcjgzl3QVZgPwFqpSqj5LMXrNMcbvRU60sqlFjnldtSw0WWmuZGgBachuqilyscLRAjENZVR7wX7ruvSsr/s5x5+4xtjLK0jFN23B0bnDYc9JWWhQro6JtauSI8aHmIciz39SJTtMvqU4xzNQu4= 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.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="Rkr0OOAl" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-4361815b96cso36585705e9.1 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=AYxia2xMUHkMfTCarFttJTcArGf/Hu6OlfCw7oq+T6dSIODCBcuIejBciHVA4/o8wp As+SvJ4zI/RPFw96kDQg9gdc0Ensv3TIND9UTZ1txuNCtYNGKMTNqbs/XPuzgK5BP7xh xT9CTjZ5U/q2P1JtOTgdJh7Ws+V+KCej7AcJvibeFfjQcBsiQUMAkuq5Vp5uF9dJiXGp VY94XiRjz9mEjpAPOdy+SZxhRY2LsdwdCCUpyxChlqIfugpaLgPjNfnbKM266M9HGmMW h+fJKZhaPdDxM3KKUDmA/NM5bezWEt4BY6KvDf+mVfA0P0t1ZWI4zRFYJORdZm4nG6Yh yegA== X-Gm-Message-State: AOJu0YxVTX8h6arRz5YtBNGK5xYjjyg4yZfYv7+YX5xQS4Cu/kvjGLLc J/HMzoSbqsZhwyPVmGkBpfkA/EFz/JTBko5VzRmqrNPYvPqflQ3YvrVOzb55ASXEizkHXdLgFDC 4IrA= X-Gm-Gg: ASbGnctdTWn0w/2F+vLa/KJlbVK0yp1D3qmh9uz6XvivSzpPu9otKan7BXkrrUFC2zt mJKT7mrwTpFT5mGa/TT30qtfSIpj8WY9wUt0NmQ7fT9HEpyOwbZIVKbakG4hCa+86QDNgd97azP Wq2OY/+duKsFWGRlU66T9iR9exIWyuwqOCiMc0ZJV+UdTmUbxglRxvX86ahFPt6hNsZs/5hKmon ldGbm3YXVBWsgpjygGfAgUui3PMeKBZL66K1hglql62YC0HcAnICJalKYTGEd1iQmY9HbxKBiFY hCsCMOE= 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-gpio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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 --- 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; } +static int gpiochip_set(struct gpio_chip *gc, unsigned int offset, int value) +{ + 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 value) { int val = !!value, ret = 0; @@ -2783,7 +2794,9 @@ static int gpiod_direction_output_raw_commit(struct gpio_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 = gpiochip_set(guard.gc, gpio_chip_hwgpio(desc), val); + if (ret) + return ret; } if (!ret) @@ -3443,9 +3456,7 @@ static int gpiod_set_raw_value_commit(struct gpio_desc *desc, bool value) return -ENODEV; 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); } /* @@ -3468,7 +3479,7 @@ static void gpio_chip_set_multiple(struct gpio_chip *gc, /* 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)); } } From patchwork Tue Feb 11 12:09:37 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bartosz Golaszewski X-Patchwork-Id: 864632 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 56E731FCFF5 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-38dc6d55ebaso2679842f8f.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=ZEFjyseLBMb3DnPZt469llyUJSMG6/LRTKIVBQUYg+EwgIGKBJZnQXFvjRFMY1/D/v zbrBSVbPV+dtJ197BWfc/1c2QNLaRuwrWt7hoU1zSjQCp1cSajgjJqeh0hijTxLn2d7x fVp+YQ3tr9JoN6/KpD4yPih4BgraHx5dfnQZVb9nI4NQESqiaD7UxKIAIQwv/phQRpRR 46EauhWU5oL9nzLfEe1vZRQcPL0lQqn/NTO7JH5scLRyQ/wwrZjMXK8BAoZt4mSlpw8/ 6fdFtNZKgA2NxJgoL92ebmaWjxQBTg5U3mi0ChSgDklD4OvCg+zeMogT2i67QTbYeMsF ULVA== X-Gm-Message-State: AOJu0Yy/hrjU8ADBlhW++pTqpmP+z6zz/GMFrp9Rd3NAfgVLV20F4jvB Nc/FD9N5RCs97rU4fiJe95IMJxu2ku1X88U+qqydWht81VHEC+Zso0e0/K4AIXA= X-Gm-Gg: ASbGnctYx8jmzfCFx0y4eT4USC/B+9/JONN4kzsXHkQBM+8Ukti8UK4Xa+e8D2/cjhd QyDYn/02EDJItft/dGEw1DsGNXzRq23ny0dKjXA5LPfUvimwjbAK8HWKnu+AmAg+AH9VDcIAkxi 6CngPyTQfs3W+m3Kd1Iy2gl1G3bZB6O0Q67vFfoKaeh00ix/jwMzedNXrTtR9yiQy+ExoPXyI3s SgFNTI+LEyvMc0z84nXV7DEtnVK0bTbh8pVZOq/FLpms/b/yb7ar3Izyi9PeJTh/5kTDk8zCUtg whJojoI= 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-gpio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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 --- 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_desc *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 = gpiochip_set(gc, i, test_bit(i, bits)); + if (ret) + break; + } + + return ret; } 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 = 0; + int i = 0, ret; /* * 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); - gpio_chip_set_multiple(array_info->chip, array_info->set_mask, - value_bitmap); + ret = gpiochip_set_multiple(array_info->chip, + array_info->set_mask, + value_bitmap); + if (ret) + return ret; i = find_first_zero_bit(array_info->set_mask, array_size); if (i == 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 != 0) - gpio_chip_set_multiple(guard.gc, mask, bits); + if (count != 0) { + ret = gpiochip_set_multiple(guard.gc, mask, bits); + if (ret) + return ret; + } if (mask != fastpath_mask) bitmap_free(mask); From patchwork Tue Feb 11 12:09:38 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bartosz Golaszewski X-Patchwork-Id: 864226 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 35B641FDE31 for ; Tue, 11 Feb 2025 12:10:07 +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=1739275809; cv=none; b=U/AQg+hZEHcrvMmyoOda0FuuBx/UiP1jrc/2+hs7blpq2RmF1S8bEx+13wd9P3SV4zb/DluO+uT/LpnnYs6IcGyrKR/T9XxxcRsD1ourKNOmLEuKT1h1iyMTCms0XIPZur53g3QcfjM5HYWiALRzY3CYH91c2cyo/8J+UHqGc30= 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.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="09VUB9Gq" Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-38dc5b8ed86so2354456f8f.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=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=NqqyH1b2FRokTJ94ejeaMXsY5Vs/xggZaVeUSn1zaPHMKOjwkDZefFxd4eP5bc5QH9 rax4PKleFEzxvf6454r55qEm3fp7ys0nr1SJxc8oN8S0mufqbOOpflV9EdED5t3ZX213 YxZpYJmHYflfrqKQY0hkEep6+Law58RhKanlH/9A6e8TFgE4NkWIyVi5AKz8DcZGhxM2 rLCUfyjkbIY3W1Ea7Y2tATAD1+8wSjuBfk3Z8HZ+kKwOsTyYOYPimL05agg1dpeR+XpU NiiGYi5/caUpZEWzIKCcJjdDrc+/ANHNsD/ZwFUZSBdLceYVnsaEBOLpr+6ZyaWpxnvh CI2Q== X-Gm-Message-State: AOJu0YxEqhwIy4XR9zjHy5wtZ71Y6WMAEUbDcBA/sUSPwaMJjsgO8+hM o3hf6QCk6ph2v1XItKx7fUrw3mDeSoB0Ebd9ZB9cjC4+klP0HvohWn8sVoYqQUE= X-Gm-Gg: ASbGncvvWMaP7R7cnxIVwiPtdXri0xKwrGKTX3mYvOtWKCHlWn3N4VwjWmh8VXoUbzy C0QnXnD/dZItEq7axONRmrpQZWHditr0G8LyY69+rCzYgelAzYADHawmqhCZhHXOR7KJqwSKMfN aRTopS8Oo2I0pFsEnVsicjVmdTllSn0dcUlDDm0GDzYZ7PQmUvzCWw/Qo1KQkPWI+Y2gOz78i9b jHe3xJIaT/AVl5baiwg6qAxl7xOfjcqabqz5sY39VjTWHc4aKztd41S4wq60m9T5SBWwrcqGNZL U03Q3eI= 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-gpio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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 --- 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, void *data, int base = 0; int ret = 0; + /* 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) static int gpiochip_set(struct gpio_chip *gc, unsigned int offset, int value) { + int ret; + lockdep_assert_held(&gc->gpiodev->srcu); - if (WARN_ON(unlikely(!gc->set))) + if (WARN_ON(unlikely(!gc->set && !gc->set_rv))) return -EOPNOTSUPP; + if (gc->set_rv) { + ret = gc->set_rv(gc, offset, value); + if (ret > 0) + ret = -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; lockdep_assert_held(&gc->gpiodev->srcu); - if (WARN_ON(unlikely(!gc->set_multiple && !gc->set))) + if (WARN_ON(unlikely(!gc->set_multiple && !gc->set_multiple_rv))) return -EOPNOTSUPP; + if (gc->set_multiple_rv) { + ret = gc->set_multiple_rv(gc, mask, bits); + if (ret > 0) + ret = -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 "mask" + * @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); From patchwork Tue Feb 11 12:09:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bartosz Golaszewski X-Patchwork-Id: 864631 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.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 37F0F1FF7B7 for ; Tue, 11 Feb 2025 12:10:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275811; cv=none; b=Xty5N1YSPvthq4DZXQARbEuW94K4oLJOGk9i+0IZmsRuejpbj8RPUs6gdnFIDUhL/D+3NQvlRXLF2/tHNCHIlEIxqVb2pVHARbuVRzlPJ1MmV7cyZqcsToSeSuGyisED2Tap7MKWh+YX7+4QazbSaOYaq1F8Efhgo6BSu6L/WQk= 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.221.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-wr1-f54.google.com with SMTP id ffacd0b85a97d-388cae9eb9fso2849422f8f.3 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=f+CWIgxVmloSvrbR3Wu+oUi1pYGDGNqAo22w3Q3uydDK8QQMQlGYLdRUYi4xgEzIvm 3d2Lx47rBX+K/OLONY54wT1glFuFnMJ86OwGpAJ+J4SKCipebIh5logfCJlLdDeV65wB Zzc1VLX7VSmuNxZoTRk9/jOfNHOFq1p4hPry9OoS6o3h6GdSR+OP+fWgr/z7+4fqokrI ejMMcH9IBKv9sWEReEnlSF6uFHC/pdQizb1oN3hM0BAew0P2K+uFXYXWs1Mt2KKE8Es9 PuukX31PcUIyTu89dunSy2hn2znhUphyAmLegncXnlP8I8h4s3GU3S40y88+ixYDEmnT NxlA== X-Gm-Message-State: AOJu0Yyy2c/Lixc5s8EhVuUZW59Her/mdGmnJ98MvUK3DNRUnL6eJK+o ZiBjPWi0JtuYWS8wkc4uF/nuswst/DTFpMspCkRVxqvKRmg+D9U5PSHmklhepSk= X-Gm-Gg: ASbGnct/MwL4ItIAS9TU4kU3X4fNo2fnJWmnpWyftxLoLAHVUxJqWrrRfbFP3do5zag 3ceat8lWB8Q9FOUAL4DNqnmYk3f53o5iUSsbXJ+O1d3kuv6KyiFv/J9BsrKIT6Tw8cTh2Pzgh7l dgNwfZFQ/5dAF/DoF9+zI+sTrP8YM2hinP+AQTsBGItDuQpfJV/asnPFLt7BwsEB/UnezgX6GOF pZUcvrS5xBawtlHZVBtq8DG3OyhQPzZaWM4i1+jAeRpO9bLdR91kFvM5nHtu+G8QuTkkMhsVgse MY4qFHo= 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-gpio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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 --- 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, unsigned int offset) return !!test_bit(offset, chip->value_map); } -static void gpio_sim_set(struct gpio_chip *gc, unsigned int offset, int value) +static int gpio_sim_set(struct gpio_chip *gc, unsigned int offset, int value) { struct gpio_sim_chip *chip = gpiochip_get_data(gc); scoped_guard(mutex, &chip->lock) __assign_bit(offset, chip->value_map, value); + + return 0; } 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; } -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 = gpiochip_get_data(gc); scoped_guard(mutex, &chip->lock) bitmap_replace(chip->value_map, chip->value_map, bits, mask, gc->ngpio); + + return 0; } static int gpio_sim_direction_output(struct gpio_chip *gc, @@ -481,9 +485,9 @@ static int gpio_sim_add_bank(struct fwnode_handle *swnode, struct device *dev) gc->parent = dev; gc->fwnode = swnode; gc->get = gpio_sim_get; - gc->set = gpio_sim_set; + gc->set_rv = gpio_sim_set; gc->get_multiple = gpio_sim_get_multiple; - gc->set_multiple = gpio_sim_set_multiple; + gc->set_multiple_rv = gpio_sim_set_multiple; gc->direction_output = gpio_sim_direction_output; gc->direction_input = gpio_sim_direction_input; gc->get_direction = gpio_sim_get_direction; From patchwork Tue Feb 11 12:09:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bartosz Golaszewski X-Patchwork-Id: 864225 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 2EB271FCFF5 for ; Tue, 11 Feb 2025 12:10:08 +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=1739275811; cv=none; b=GLfzWBkvvrs2sXJ/BpXysJ49T10drcS9COn6ZssdreMEhYqKpPBy1uedSD8ECCzh3WKapdvCS/4L1w//wo8ndVDOrcFU2hIp/ZCUC8XWil3kx0GuhfVP8VnNPkEBK9KUhfaGrXet41M+HtwBErCl3tv0m6WQ82gvylGMhePDun8= 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.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="io664Vv/" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-38de17a5fc9so1108532f8f.3 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=AMaDu7qS2+nHJhfvIr637nhcx5HpA1qZLHRPWqVHOilBgTnANXL2e84ckyRl/NMQjV ew9Hb47xoE+4FTfxekCHqur5CyG+eQaaKdyDW9QCGhregy+EnKvx9caQtesZx0GfPXX/ zTTw6v5THujvM/91e2Q4GI7YqN6zyLuNPPvzqPnZ5PZbErvWPrWUPRnifOaUJQmTQ3q3 1q9l4EpgSTch+Kpowq4iBTCwaoNFCe5M9xfzuzLrftCVxatppv9UZLqZ6bZuayQ9q1+x QcawbW5i5eI/I8XhLoQD+vyhiTRY5X4l0G2wrzx/BdSKgBw/YfHfZKjvAZDsRYXGjpbz AY9g== X-Gm-Message-State: AOJu0YzzVWymEOLk+gDMYTRItTQNILi2ZyHguSgtw7w+qb4s5x3NtTpv m//W5qRDPPON/gJUFLvtb/QQ+v5axSGaHzOsvfbiOmCDeXHeWTB/w4F9PgWRQ1Y= X-Gm-Gg: ASbGnct2jfqizqxBHgooKOM2d2jWM3S/kUMpjQ1kMCnZSDk8diAKQcyjJRkmxJ8DJ+o 9NIx0kgp/7yFVg1VQ9s6U0Kqj0ffyQ31CKqGL3d1TiB0WwbBCdKhy2KlMIHYY8nyjrW+G5N+cg+ 36eu7nel6oVu8Qi0IzJ0BPNMOYnn0OuCdShfTjpN3dR6Sq3MOWlNZe/qApPwDJapqTqkekOcQsx XaHsQuP50boqvKm6BZMIdpheB8F0S7qFWBpXN9+g9ddlkGwo0s681DeVHt+aal1yeS2BEm32RP6 RCZICkU= 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-gpio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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 --- 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, unsigned int offset) return !!(val & mask); } -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 = gpiochip_get_data(chip); unsigned int base = gpio_regmap_addr(gpio->reg_set_base); unsigned int reg, mask; + int ret; gpio->reg_mask_xlate(gpio, base, offset, ®, &mask); if (val) - regmap_update_bits(gpio->regmap, reg, mask, mask); + ret = regmap_update_bits(gpio->regmap, reg, mask, mask); else - regmap_update_bits(gpio->regmap, reg, mask, 0); + ret = regmap_update_bits(gpio->regmap, reg, mask, 0); + + return ret; } -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 = 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 = gpio_regmap_addr(gpio->reg_clr_base); gpio->reg_mask_xlate(gpio, base, offset, ®, &mask); - regmap_write(gpio->regmap, reg, mask); + return regmap_write(gpio->regmap, reg, mask); } static int gpio_regmap_get_direction(struct gpio_chip *chip, @@ -266,9 +269,9 @@ struct gpio_regmap *gpio_regmap_register(const struct gpio_regmap_config *config chip->free = gpiochip_generic_free; chip->get = gpio_regmap_get; if (gpio->reg_set_base && gpio->reg_clr_base) - chip->set = gpio_regmap_set_with_clear; + chip->set_rv = gpio_regmap_set_with_clear; else if (gpio->reg_set_base) - chip->set = gpio_regmap_set; + chip->set_rv = gpio_regmap_set; chip->get_direction = gpio_regmap_get_direction; if (gpio->reg_dir_in_base || gpio->reg_dir_out_base) { From patchwork Tue Feb 11 12:09:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bartosz Golaszewski X-Patchwork-Id: 864630 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 14930214A8F for ; Tue, 11 Feb 2025 12:10:09 +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=1739275812; cv=none; b=o+fFgAbUzoY2p4VD2/nDNveojIj1talIiiQWVWbBRnbBdU0rbfa995TD3eyUv2KbxgyU6swFJ+MT+04Hgk5fBP0R+uotxkpdR0frP4663B0WkjB6DvnVrD7Ofyu8LU/gzoLPwW6MBG4NxNPEh+6h7nGyNf5VDrdoJrthbt+7Aog= 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.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="VcCQe2g5" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-4361e89b6daso37865235e9.3 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=ZDnapXHhRKQ1SSoonZTnb6K7NK5OlnOTLgBTqNLWw/QH3JUyiFJJFzC5SLBZEync8t kQ1RQN8Y7VX2Uyc+F119qDPfVFFnyLD3Bf2Y3vzwq3WsVWy1wSrCHbgUp70/SZUrvBRh m1JYQmjQLLiyZydixjxr4qC5corrXrO8lGDQK66aQn04d7XKY4K8t1s2spKmw2o1Ewdy GfXzAAqSGE3+DSEfmdWU5h0kg940fQktQMlP0YgLdjKrfP5zAcIkaq7sTyo6ftiOZEL5 F6vLvv03AnkK+PnrqjuNQ+xiZTqgYK9+OeVBl5eX/06nW1jISPU3eX/D/lgnFbNKgmlv D5lQ== X-Gm-Message-State: AOJu0YxoCfRK2RtX4cKpLU1UQxKQOYABY3iLg2ueFp83arUi8d6/rGqL D/cObNvLpMKDz4NBqroSLVC1lES2d6qDsV4LYcNY+74dK/g3zww0OoF7L73r7xc= X-Gm-Gg: ASbGnct+/edZyR2JdaCwZmg98exdt65X6g4tAKi8WkEmblDyaZluw3NVLTJo5D914KQ bsBtmAD4C8H4A7sOg8OhZqi07lLfaW82PIuahWyu2ywJVmF2uEl4sp2htZzG0ExbP4H66tRbtpX olbh25HVpDGlsZzNweWPJxsAqkSP2Yvq5RgV1/uAsOtZIVZkPoAyzAdi2E5Zq+hpcv8k83eBiFa D9kddiXS/ynkT0V4GYDP8QYZScFlmTVfX1SiUfEDW5bzYRcsObQtatlFz7G8R816gvn3Us2i/gi u+BAhTs= 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-gpio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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 --- 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); } -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 = gpiochip_get_data(gc); u8 outreg = 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) guard(mutex)(&chip->i2c_lock); - regmap_write_bits(chip->regmap, outreg, bit, val ? bit : 0); + return regmap_write_bits(chip->regmap, outreg, bit, val ? bit : 0); } 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; } -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 = gpiochip_get_data(gc); DECLARE_BITMAP(reg_val, MAX_LINE); @@ -627,11 +628,11 @@ static void pca953x_gpio_set_multiple(struct gpio_chip *gc, ret = pca953x_read_regs(chip, chip->regs->output, reg_val); if (ret) - return; + return ret; bitmap_replace(reg_val, reg_val, bits, mask, gc->ngpio); - pca953x_write_regs(chip, chip->regs->output, reg_val); + return pca953x_write_regs(chip, chip->regs->output, reg_val); } static int pca953x_gpio_set_pull_up_down(struct pca953x_chip *chip, @@ -693,10 +694,10 @@ static void pca953x_setup_gpio(struct pca953x_chip *chip, int gpios) gc->direction_input = pca953x_gpio_direction_input; gc->direction_output = pca953x_gpio_direction_output; gc->get = pca953x_gpio_get_value; - gc->set = pca953x_gpio_set_value; + gc->set_rv = pca953x_gpio_set_value; gc->get_direction = pca953x_gpio_get_direction; gc->get_multiple = pca953x_gpio_get_multiple; - gc->set_multiple = pca953x_gpio_set_multiple; + gc->set_multiple_rv = pca953x_gpio_set_multiple; gc->set_config = pca953x_gpio_set_config; gc->can_sleep = true; From patchwork Tue Feb 11 12:09:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bartosz Golaszewski X-Patchwork-Id: 864224 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 EB1CE215067 for ; Tue, 11 Feb 2025 12:10:10 +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=1739275813; cv=none; b=PjErNDjLvEDnPY/1a4tlrM9XIBmf6IVa/TMoQZsGCTRw9XJTojskCnZeBLrRoKMt2KJq7oGUDFmTQZXbWpLi/QAAhasElDQc4lzZ/aUFFj2pbMOaXgI3q+Mp8ROPLwairN8vqKFGT7GUO0TsPYJHlRDSmX1kTg6XQ7M/exzaq5c= 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.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="LQ1N6gAF" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-4394c192285so8400195e9.0 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=n3uyle2AwIDCx2qQcIZXveN0somsAClXdCvCQLxmAPOIMPem5EHKn7gml9moLXO/BA 5RLWOm2M2Ay6RUv+NBLwP9HjYhtEKn5gkDqkzVto4Tlg9OSO68WdNBA2hLOYd0/K2AX9 0OokAhF+ECm1WjVnf3JDPV7QCxyxEj2DuJRMZnyAl/TYLoYGgQRq0wEYQ8ha2DYVZgQW qj3w3g1DbOsxv0LI2bMtfLGcIf/anDHGnw/h+Pp83eO7nTCOz1wmp00CMjyl19XRBztg RJiMJ2B6tqsi74f2FAbjZT9MjvH552WVA1fs/wj3JP3XUetCG+DykXu38VzbuWCd4BqY +pcw== X-Gm-Message-State: AOJu0YzkVtyOauDvfzd5Ga0SX7qnFndrVUAJdDoxgSGav18Gsw287Rkm wIQFgWBmp53FvBjxyo+jXjTukIqWLeL91yBs0WZ1XEVzO/9pBmxt3CVediH8Y9I= X-Gm-Gg: ASbGncvcUmoP9He6WAc6qxpPU0SFDqh/OZpeGBqDprnwpCEsFg0nKPWJMyuvw/hdd7z oLYEGmW6NsKCN/e+RjrSdGhAmff4MrYBbH9eMVJkt0RarVzNJ+tAJXdyf76qnKbcQkTRmrhPChl EJkzmg/aF5oL8InD4ZUIPXmF1nrOFEZRBRNqTTmpKeS9N1yc8xwsp76NbZ7ledr1uqpNtxqqD6w TuEcrCsOC5ja62Fhr6+IpePdz3/GUU3PIEPl+7tJjd5wgPkNL0vU1YVbqTD6kIOz1ftOgy8i8qw zouataE= 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-gpio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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 --- 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 = !!value; } -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 = gpiochip_get_data(gc); @@ -130,10 +130,12 @@ static void gpio_mockup_set(struct gpio_chip *gc, guard(mutex)(&chip->lock); __gpio_mockup_set(chip, offset, value); + + return 0; } -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 = gpiochip_get_data(gc); unsigned int bit; @@ -142,6 +144,8 @@ static void gpio_mockup_set_multiple(struct gpio_chip *gc, for_each_set_bit(bit, mask, gc->ngpio) __gpio_mockup_set(chip, bit, test_bit(bit, bits)); + + return 0; } static int gpio_mockup_apply_pull(struct gpio_mockup_chip *chip, @@ -445,9 +449,9 @@ static int gpio_mockup_probe(struct platform_device *pdev) gc->owner = THIS_MODULE; gc->parent = dev; gc->get = gpio_mockup_get; - gc->set = gpio_mockup_set; + gc->set_rv = gpio_mockup_set; gc->get_multiple = gpio_mockup_get_multiple; - gc->set_multiple = gpio_mockup_set_multiple; + gc->set_multiple_rv = gpio_mockup_set_multiple; gc->direction_output = gpio_mockup_dirout; gc->direction_input = gpio_mockup_dirin; gc->get_direction = gpio_mockup_get_direction; From patchwork Tue Feb 11 12:09:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bartosz Golaszewski X-Patchwork-Id: 864223 Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.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 80033220686 for ; Tue, 11 Feb 2025 12:10:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275815; cv=none; b=on3LFvYQO/AmGZNccTYIgzib1rcF0E+YYiogaE1qB19UzIDLYUYxR/CxQa9O1NuU7xwASn3PE2n78hBkF3RRe66uyTqA14CeEgpfeeQ4EQKp258mP+bBFKk0HiVk1GSskw5humA3pdISdhqwGhbDSordDLV1mniK1uBSK+kT/fs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275815; c=relaxed/simple; bh=/VBhiRwoQ267W/j7YB1GP/Wml1ttqJQc2PSxQAtybVk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=o/GSNc04qLIOXHAVQRH+hwjxqksp3+f3tI8+kGVHc1gOF2++Ro95Dcd+YXivNyS8RClI7PGBpQ0J0ZAT4Tt5my5ds6F+UKe/NtXIU2Dbj1nwAS/Rx15L4+J7xoEi1fkbfBwpaY65okUjWJ0R8FlIWzSW8A+4w6upYh4i5jtM+24= 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.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="1//6zzPb" Received: by mail-wr1-f50.google.com with SMTP id ffacd0b85a97d-38dcae0d6dcso2354941f8f.1 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=vv/rq8nBAQ2EErTowbMnXsE3ZgYiX/RuhsXxgBz2KM1xnTZMGiZj4AALLNIP/ruyHC 6wUsA4jMFCRaHWnmHIv/F5p+SfY3zVYOsaIo97t4hNBCLbXPm1/SGRG1d7RrWy8pgVUv Y/0A7KbbWsPrI1Es9JPO91K7tWKKiVM4B81SSte/2Z94owOi10W3wI+6ofIUqz7HAHPB yE4e5N6w12753eGKkt2TFcragGdubLHFXQsqX5RliNuXUNiBWVIGOrYXrGDSxFe65jQ9 TSKqgtyt0uJ1aLUv4z/GcxqeUjuGGWDMtIwPU1iElrgHaH/365bcXoQYVV2ghVomTFx9 /1CQ== X-Gm-Message-State: AOJu0Yw2PykNu/QbtCzXr6fq+Nqp8uwh93IjkJI1DqpKKoeaq/2MCegH EFl4RMwxmQCRNNKe4Os3cVzOGrLZMtZykFDc4wZInF/VcBip059zVfP3wCe8eDc= X-Gm-Gg: ASbGncsRyok682WUifA2W3erlihmeM0XLwZnvIF7+vbxSkTMSjk3IeZs+/FouF9ExpP 5qFcF8rj1kg9xYG/DxqAqM6hiMnqeyedQol8oRBzLeJHaMNwzmdOidIF6ai5h/oNhtP54iLtGxJ Us7JcSMwszoEliwt2luvftRrBmOocO8QdvarNGr8r625EsUM0tqlb1xxDkwOADv19iIzAp1uvue U2TqDDvagtQtBnYpazuQNfz6yzcpmDLyCGC7YneEBya8K4wbyRcIlqfonryX59v6a5IZ0R3YOcP ypIYTWo= 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-gpio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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 --- 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, unsigned int offset, int valu udelay(delay_us); } -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 value) { struct gpiochip_fwd *fwd = gpiochip_get_data(chip); + int ret; if (chip->can_sleep) - gpiod_set_value_cansleep(fwd->descs[offset], value); + ret = gpiod_set_value_cansleep(fwd->descs[offset], value); else - gpiod_set_value(fwd->descs[offset], value); + ret = gpiod_set_value(fwd->descs[offset], value); + if (ret) + return ret; if (fwd->delay_timings) gpio_fwd_delay(chip, offset, value); + + return ret; } -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 = fwd_tmp_descs(fwd); unsigned long *values = fwd_tmp_values(fwd); - unsigned int i, j = 0; + unsigned int i, j = 0, ret; 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, } if (fwd->chip.can_sleep) - gpiod_set_array_value_cansleep(j, descs, NULL, values); + ret = gpiod_set_array_value_cansleep(j, descs, NULL, values); else - gpiod_set_array_value(j, descs, NULL, values); + ret = gpiod_set_array_value(j, descs, NULL, values); + + return ret; } -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 = gpiochip_get_data(chip); unsigned long flags; + int ret; if (chip->can_sleep) { mutex_lock(&fwd->mlock); - gpio_fwd_set_multiple(fwd, mask, bits); + ret = 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 = gpio_fwd_set_multiple(fwd, mask, bits); spin_unlock_irqrestore(&fwd->slock, flags); } + + return ret; } 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 = gpio_fwd_direction_output; chip->get = gpio_fwd_get; chip->get_multiple = gpio_fwd_get_multiple_locked; - chip->set = gpio_fwd_set; - chip->set_multiple = gpio_fwd_set_multiple_locked; + chip->set_rv = gpio_fwd_set; + chip->set_multiple_rv = gpio_fwd_set_multiple_locked; chip->to_irq = gpio_fwd_to_irq; chip->base = -1; chip->ngpio = ngpios; From patchwork Tue Feb 11 12:09:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bartosz Golaszewski X-Patchwork-Id: 864629 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 398552206AC for ; Tue, 11 Feb 2025 12:10:13 +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=1739275815; cv=none; b=GCnP3TZrmCH8DEFqvhyUM/Bvjg7oOQy1hadWq2T9r6siOqo6lxRG52PHCB/uPOiB13fU4+BhSb0pWbftLhFFvBgu9Gln3z8LzR5Nf3Ad/wgEsvDZxCPOHCTntBxOn8s8b6NIqwXqetAQOfatRboIF2KY2SXiCsfv/l+v7xMS9Fk= 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.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="NQr9i1gu" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-43948021a45so17402445e9.1 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=Kq8fsLd7Pv6ZF22ItNoutdmcnq3c1sIenPGGUM//OhVgqcgX0akWnHJ3Vk8JOB4Dh/ /ErxtfUHljrkOQ9Qw/HqhzQnYc/xUyo2plOA+uyx//X/pwrKzyoIdaJAE6AesXhy320A yAlV2F43ATzYCPhIDdZrg53YRtqTvT6+M+oct9SzY1/33SFgCmAVhgRgTHtHILgSxUQn PK4cdypgmMxrfO3PUK2YflMo9xGk+q0nVVeE1JCAbxlJ3cDPvrtOUVvYiyPwFp73kqUV 3snX6j4ablL4QOJWgfzWtX+OyLK7n3bayet6KlAU2hd5rI31GydT3ZawZePvmJIzbpHv +m3A== X-Gm-Message-State: AOJu0YwrMikjD9Qgwe0E7iICDhvFN0w8GAgc5n2pG/7DuHbaKi6pcN10 7/cjqwUSEmlux3uEl8RAicv8JzvtwFSWRMxWvcEtvHRBm8YE3gr1je+kyzNngb4= X-Gm-Gg: ASbGncvCdtGr+8t3McW9tjBzKkBaKcjOEcp3q3N4+QBxW0cb5aaCjaTEdvW2UuMX98N wXxhuC4wI6UoaeMF2iZY8Gw2e9CQLi12pan/OHvpXBAmOy/ZjxDDUmfnskopXqZpGjLEMCsobVJ OLgmBijC3Dnvjv5pMDeiUfAN5cp6UrsgUGTL1fAEXVq75TgmDD8ee7OrDRkfKunrktTthOHcikw VbWxWG9Gmf3Jvm8z99Qz+2JTgYRt95eeqJA3/vZUdn1f8JW45X2HEH31qRor0rkKo4RBNAIstCd kK+OQyM= 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-gpio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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 --- 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_chip *gc, MAX77650_REG_CNFG_GPIO, mask, regval); } -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 = gpiochip_get_data(gc); - int rv, regval; + int regval; regval = value ? MAX77650_GPIO_OUT_HIGH : MAX77650_GPIO_OUT_LOW; - rv = 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); } static int max77650_gpio_get_value(struct gpio_chip *gc, @@ -168,7 +166,7 @@ static int max77650_gpio_probe(struct platform_device *pdev) chip->gc.direction_input = max77650_gpio_direction_input; chip->gc.direction_output = max77650_gpio_direction_output; - chip->gc.set = max77650_gpio_set_value; + chip->gc.set_rv = max77650_gpio_set_value; chip->gc.get = max77650_gpio_get_value; chip->gc.get_direction = max77650_gpio_get_direction; chip->gc.set_config = max77650_gpio_set_config; From patchwork Tue Feb 11 12:09:45 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bartosz Golaszewski X-Patchwork-Id: 864628 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.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 4D1201FA14B for ; Tue, 11 Feb 2025 12:10:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275816; cv=none; b=U+PbxZ00Lu8beZNc2gyPEnpdRki8gKG2+QFlUGV5c5NztislWSemmhvWZ7+a0VZ9w+u7SengvvD+3odFKR+ZpZEBBKGDSRc6VmvClY/kelyEk2zgbr5QwhyYepYn8aBnIZ3m16U47GFyxJjiZYOd55rUvPDbVvG2P89IjmirFho= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275816; c=relaxed/simple; bh=/iCqyNtOnVMnbbHM/gy8ix4eEtzaJskfGUpAc2pSNTk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lAqOnif3H/vcSrdWd+UoLTOz0idR59DI2z+j0tTFbOcBtJRGhrLc6V4py5Up5ZtUfw++1RUupSJRjuFSI/C9eL4qb8C+5REN2h7bYqolw/l2KCloT52G5KwXixwjbB6nZxCovSGb6YcisJer5EUjwW/y1T921bXqajA5pS+4t3E= 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.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="oq6wrCJn" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-439566c991dso1472775e9.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=uPAaIrJeeI6QgPAKLHzyEiGnnJptiAwF97Ih/Mp0P7CHv1r150l1mzLsowGNlSWCtL C1LkzIsTLmDh5Ncp//tnAic/5rYeCdeDQffB9n+XxPCaphAem048HsJpY9357FeMazaz tev8MlbuYMuPXAq5TlC6AWN4rcxCYfADXHFzqYERdy1ixBn58YBVl5EBQJDx5F2tO0JM rpw3fwm7GfWQcapFRgzI+MciyxQAbh9eFmYZ1Gi7d6Zk/lApgFPzvQ1EbYS/UZUn5h6D DOErW6xX6BAL95ng5XsNRofnY2mkojEgXa1uUHQP3C/S30u+eu45vy51enWh1EgRd3nB 2pCA== X-Gm-Message-State: AOJu0YwWsxw59nWHDK59M2tGNmCs4yoTvu50xE1FomlDHT7extxGwsid O+I9MWNNzRs6Yj+4miQ52Q2jwaPzXA7WvwxNy5wZgiI6t8iX4iBDrVTZ46HOm08= X-Gm-Gg: ASbGnctjHYZwz+RVxHvUXefQtbeen24aWZh7aiPcTPdQLaweuHcgq09gn4UNQ1+SR/R bS9mO/xa2plb/29Pl1DkMPJ+63wwgqaLemJv5HQ4UXn+OBAApTVdGIvdiedDJdiGoeF2JPboykd twZBhUxP5xuWJmlPivPlINOHp0BUb3PqfiRO9T/HkqxmVSs4VYF8gFtBUt5wWePSNn7N9JcfXXn kxCdO6EZ5ljoGsuI/Zr4hsLVs7VFP9elEBVTKyJEsy4aFNtrb7wFdlM3L+3U626O4GKKB57vbPk dQ7Bzak= 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-gpio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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 --- 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. */ +#include #include #include #include @@ -93,24 +94,19 @@ static void gpio_latch_set_unlocked(struct gpio_latch_priv *priv, static void gpio_latch_set(struct gpio_chip *gc, unsigned int offset, int val) { struct gpio_latch_priv *priv = gpiochip_get_data(gc); - unsigned long flags; - spin_lock_irqsave(&priv->spinlock, flags); + guard(spinlock_irqsave)(&priv->spinlock); gpio_latch_set_unlocked(priv, gpiod_set_value, offset, val); - - spin_unlock_irqrestore(&priv->spinlock, flags); } static void gpio_latch_set_can_sleep(struct gpio_chip *gc, unsigned int offset, int val) { struct gpio_latch_priv *priv = gpiochip_get_data(gc); - mutex_lock(&priv->mutex); + guard(mutex)(&priv->mutex); gpio_latch_set_unlocked(priv, gpiod_set_value_cansleep, offset, val); - - mutex_unlock(&priv->mutex); } static bool gpio_latch_can_sleep(struct gpio_latch_priv *priv, unsigned int n_latches) From patchwork Tue Feb 11 12:09:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bartosz Golaszewski X-Patchwork-Id: 864222 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (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 5798024394F for ; Tue, 11 Feb 2025 12:10:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275817; cv=none; b=kZ6it+MvneclEJqyRDswsyCVdcrobRbUzK+HembeMNWvBHO9Vio/3ohNlrDf+SjZKoMeILFAg1y3BOmKe6L06s7VTZqzKUb3TQSrepEvLByOB9SkX0dvySXNoY/B9YIo9VTtvMNXQPQNY/JbbrxjeIrMRR9jk4gPe4lu96kZLwM= 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.221.49 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-wr1-f49.google.com with SMTP id ffacd0b85a97d-38dd935a267so2125194f8f.1 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=q5RjS3eW1xnc8aqqGi7khbs+oKvFyqGHEbCrQwhkJf1EwieuHENj4L01m0YLdTMCDO PsQ5rR1HCtYvonaqM157+3SxUJqw5h+nUbCWtxY5k9dQTrxLnB5pmm57hbadFeZx33eb qoFn/GLTxVbNFrhD1AEJ0qqWFFpAebrGYc4yTDNCWP/nfWdSfLLibbNyl026PDqyzMoZ RTuGT5j0rdHEBtlkOHOdrrYcRZvC4PR2aCcPIMv9zgDte65qXbHdorZRjS0q9lEnq6iz JGoYK7Dw0d6Y4+IJxBJ6kwToLsh7e5F+2JdjSGZoR3xpGoySUlNUuXhJQ1UxcAYqIjym hg7w== X-Gm-Message-State: AOJu0YwK487P9fvnDEjtB4UaFG6l1PnNaWZc5Gz2MB5R6ypKunZeWYaC yAeulWWmB6i3NSfYZbSmbVrXZxhvXjko/6QU01QXSAQXLudS6FHjY7/nWdoY6osGqfnC/NmezDv ml84= X-Gm-Gg: ASbGncuh+yn3oOAwKhkGluyQZb7kTH8GmSP1rDI038h5MX17Njpou+PHv0hPHgSuuPu dDP6AjlPPRv4ZSCaBULd73FPSOzkNL/yrQIBx+6OfTW8s69XtkYUJzzU2hDr33IZ0lSSlfsKRwS 9LhZ0l9tfDxiL87NwKLDBpBkInR2sfNo3aU2CTK7h2LV9p/e1k2XzfAH1caXNVAErI8lGj4a3qE OqoYvPWkwGdl8ngVEQTHqTObQUkW++RvtqoKivWDgQkCiQBWXPxSUSr/r5s6GajwignbQYnk2Nu kIE//so= 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-gpio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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 --- 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 *gc, unsigned int offset) return GPIO_LINE_DIRECTION_OUT; } -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 = offset / priv->n_latched_gpios; - int i; + int latch = offset / priv->n_latched_gpios, i, ret; assign_bit(offset, priv->shadow, val); - for (i = 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 = 0; i < priv->n_latched_gpios; i++) { + ret = set(priv->latched_gpios->desc[i], + test_bit(latch * priv->n_latched_gpios + i, + priv->shadow)); + if (ret) + return ret; + } 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; } -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 val) { struct gpio_latch_priv *priv = gpiochip_get_data(gc); guard(spinlock_irqsave)(&priv->spinlock); - gpio_latch_set_unlocked(priv, gpiod_set_value, offset, val); + return gpio_latch_set_unlocked(priv, gpiod_set_value, offset, val); } -static void gpio_latch_set_can_sleep(struct gpio_chip *gc, unsigned int offset, int val) +static int gpio_latch_set_can_sleep(struct gpio_chip *gc, unsigned int offset, int val) { struct gpio_latch_priv *priv = gpiochip_get_data(gc); guard(mutex)(&priv->mutex); - gpio_latch_set_unlocked(priv, gpiod_set_value_cansleep, offset, val); + return gpio_latch_set_unlocked(priv, gpiod_set_value_cansleep, offset, val); } static bool gpio_latch_can_sleep(struct gpio_latch_priv *priv, unsigned int n_latches) @@ -160,11 +165,11 @@ static int gpio_latch_probe(struct platform_device *pdev) if (gpio_latch_can_sleep(priv, n_latches)) { priv->gc.can_sleep = true; - priv->gc.set = gpio_latch_set_can_sleep; + priv->gc.set_rv = gpio_latch_set_can_sleep; mutex_init(&priv->mutex); } else { priv->gc.can_sleep = false; - priv->gc.set = gpio_latch_set; + priv->gc.set_rv = gpio_latch_set; spin_lock_init(&priv->spinlock); } From patchwork Tue Feb 11 12:09:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bartosz Golaszewski X-Patchwork-Id: 864627 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 6BF1124C67A for ; Tue, 11 Feb 2025 12:10:16 +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=1739275818; cv=none; b=OKrAUfu+pmg5oLEzGtmYYQZSL1Jrx2kwRobv5woc1BfSbENvvywGqp3Qu5d8Aw9NgM90NKaAavWlpodIcBQ5itKSnkzN70xDLzPK29VLKBXzYgVMJmXVpjWrEtaWQmZOXIm0/34YnQcHnrXyEtBclLYHmkQzVcSY6DQbRFyRaqI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275818; c=relaxed/simple; bh=bHBkkQ3gwrzmNpAMzNtD02RKPcIOd8kTW4JbUoyfFV0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=S3iFsdbM5ORGqhIBUQlxn+zrd/6G8yygNxN1x6p0d2SOhSZOTrIJPtG7395MNSeLW0AzCXQBcH4c1uVq5skRVdZNlOGvGKhsDsUGnCq3GW2/2UOIkwwj5TEG9GPx7j/DeXOSQvy50US0pRrtLnVX+I4WONK225RHF82EsLlzG1w= 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.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="HkuweSds" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-43937cf2131so18674815e9.2 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=BpTq6GurlqZ8vTCgxnv2CDwnw+X3hW/3GjbiGYDRhFEO1maxbib4TlcHtlDPIOTyW8 l6eR49wTigWLBjfFiXS7UJw7B5yhBclJLPAuHhGfGyYmFc9p4QFbS9CW3p+Xn5DlYsz7 zH94XDV7PfH9ToEj0dKgipTSp+9CjK7IpgPRd/+oeXaQ3mnEmbe0gGpqgPVq/tJgbPGZ tovoJdAVqD0l2RUzH/EtcScEdFsaFmoTXmQ3/GtTuzmv7dvXmHknQS6Ggmo4gQx93AM4 +QTUyIOvVM3nTsBruxhhdIBbkowMw0K+9JKTkyFdq0XXedskXR8EuJfcBThMBZE5NLoa H7uA== X-Gm-Message-State: AOJu0YwJt8Xx+H3a6ePPOu8DXAnGaeEkmnvmFNFdLImOBBqQvjTSj8s5 7ijuUgMI8MCmQUCDqcyfeZ84MGJC9C+qpnR8JVYP/8kA1hqJrhK/hv6OP0b+YlM= X-Gm-Gg: ASbGncvcKXOQfYrYs+W+pNzqHF3S5pe+SlmMKDStBbndKXbx0Otf7CVp8Eq6TrQsviF d+uTl5+BxAVFbFI+rXz044vkb7H7gagh0b0npjVsxdDOHWMBOkK6usl1KkcL78vZNmUqQL4fUR5 2k5euCcQedmDVJj4rC9AWjyPP5I933eFyY4PxbnJpAk7OqZrJPmXZWa5R++67z7CjAKnifMFH8o R6s5iNAadN9MK0wmPJCj18+7CYArq+Ld2yoKvdyojsuvTXZpeti8hWBq6CklCNuvztElMMwP+5Q 3nok/y4= 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-gpio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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 --- 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, unsigned 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 = gpiochip_get_data(chip); @@ -150,6 +150,8 @@ davinci_gpio_set(struct gpio_chip *chip, unsigned offset, int value) writel_relaxed(__gpio_mask(offset), value ? &g->set_data : &g->clr_data); + + return 0; } static int davinci_gpio_probe(struct platform_device *pdev) @@ -209,7 +211,7 @@ static int davinci_gpio_probe(struct platform_device *pdev) chips->chip.direction_input = davinci_direction_in; chips->chip.get = davinci_gpio_get; chips->chip.direction_output = davinci_direction_out; - chips->chip.set = davinci_gpio_set; + chips->chip.set_rv = davinci_gpio_set; chips->chip.ngpio = ngpio; chips->chip.base = -1; From patchwork Tue Feb 11 12:09:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bartosz Golaszewski X-Patchwork-Id: 864221 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.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 3A4571FE449 for ; Tue, 11 Feb 2025 12:10:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275820; cv=none; b=kg5Zrc/oGlnxMJr/6PLoy6hLzbPFckASmPYd5+oCiTdQ6eVJNKiZOZvAo+26rbXZn5L5g7A9VzByDLR0bh87wjYZi9MJjdXrukkVDspQ7fAXvCfQpO4cb6/+ncJbyUGl020htmzjrDUKMIbPAQNcFnFvwuv8nLLhjio24OgFex8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739275820; c=relaxed/simple; bh=OvyGL2YeY7Q8iznU+X9mmrIKaFtAa6AYlttV774XVbg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fbhddpXnON2L3Jm3NeS+6zYbwrVPnLyClJOvQ8uhAyXUUNPPN8Z+1jMhnSimxY59IUDmnVHjjfjdDjDXaWDuBQR87FDt8Ik5tDLBrbtcZCn0ufgQBghQITtB1lekrf7MxYgS/Ek3dJixKdGzG6ranuQQNDyBvf2ljKu/Wfs1Nco= 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.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="e1wVmPp3" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-38dc9f3cc80so1471773f8f.0 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=Z1Nt7Ng49giWVOn7eh6yyAm8nL1j/LT1CHihrrJWThiRqILDbtDn+rLQeSgEV3+GM3 iZy3NnihMNhqfLu+ngAK6ifaL4XZPFlx3NWNcSXxqdyh46x17FIWvWA3ipfPYLmyvqGe CKzNZi1OdPUUP+mkqQjkmfCStj4X7hkv5b/lkrbZwFg5Tb7atbhAmWyccJnkVc1cU8Ef +UsSsmq6UTXhDgLbdEfm5WzAxT4Ai7+nxY3WYi/UuV8GdZnGKA4l5A9q9W9z7TWfN0GA r3NMWjFPSocS35+KAVEk+ew0BhfUAPdPh6bJMCpZ1Ro/3kcK0pTxzzsV0zwdIEdPyoM7 a1dA== X-Gm-Message-State: AOJu0Yx0pPsElGuBqk7lXO4zYcb6XOYIOnX1Cez2+b/8XypqKkaJMz41 mZq+d0+BU1PsEeUvKsexjG9VnR5KBtRCNBqJPcGYDIi32qS5Hjd3QbPdbvaIWXY= X-Gm-Gg: ASbGncvLqdJv5bTkM4i1zilUh2DvzvA/euVdWdhn6Wkx1XEl3LPynRALETvOYLbPrkF c4zXd2Qj9805OZbAZUaSxZ4binnPCxW4N0EgJSP7ClBuNMGEWDaLFczdNEZTcCwOCvLIhU5wWVV at1ARjCH3afz6cr6OxaTgTj8FDMAn0VQJq6t4Mahsqns7Z2CzDvMa0c3dBlWsmFWaQ5343TuyDo DzQFb4MQdTPOztupT13+xqhtgiBb2cMnXeVdCP9oWTWXLPBNj+Vs6GFwENeWqVEMHUTIjnfG9Lo rk9N9RU= 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-gpio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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 --- 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(struct mvebu_pwm *mvpwm) /* * Functions implementing the gpio_chip methods */ -static void mvebu_gpio_set(struct gpio_chip *chip, unsigned int pin, int value) +static int mvebu_gpio_set(struct gpio_chip *chip, unsigned int pin, int value) { struct mvebu_gpio_chip *mvchip = gpiochip_get_data(chip); - 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); } static int mvebu_gpio_get(struct gpio_chip *chip, unsigned int pin) @@ -1173,7 +1173,7 @@ static int mvebu_gpio_probe(struct platform_device *pdev) mvchip->chip.direction_input = mvebu_gpio_direction_input; mvchip->chip.get = mvebu_gpio_get; mvchip->chip.direction_output = mvebu_gpio_direction_output; - mvchip->chip.set = mvebu_gpio_set; + mvchip->chip.set_rv = mvebu_gpio_set; if (have_irqs) mvchip->chip.to_irq = mvebu_gpio_to_irq; mvchip->chip.base = id * MVEBU_MAX_GPIO_PER_BANK;