From nobody Thu Dec 18 01:48:52 2025 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ED3E71F03DA for ; Thu, 20 Feb 2025 09:57:17 +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=1740045440; cv=none; b=jG2apY7xHOSfJD4CxTUDLErR2ty54VFfg/h41MYAAuHWFzFOpALcQSq1Jd4UG5EZ7ttRgAIM5ezB8eGlpu9sqVfsMatUysiEMM4JAg+WCto5ViblCcpRehPQwioJ8Efbn7+Q1N24sQIYCv+QDVQLIuo41Y+WyV3kPuXmsYMsYWc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740045440; c=relaxed/simple; bh=/gqeqRwMs8CevwwaRvu7rMfOHz8FGAeaeJay3AIimak=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Neu3do+9ZaYt2VSv/WtnjV3Cp3uQ+6kL25jFmbg2Hv4g5hFEiGLTIrktiHpogC7iCSjjMQrMb0GdpiWTG9lRcby42PnkbwEKLs3uESb7J5+nvUZTeXVixqXqeCv1nF/MnBzxR+DsXBSeBdPaL57Z9nLQWCN42G+ExeW/+PbqEO4= 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=mNqV0fLu; 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="mNqV0fLu" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-4393dc02b78so4406425e9.3 for ; Thu, 20 Feb 2025 01:57:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1740045436; x=1740650236; 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=ePE6aVSyq82nNiteS0eDm4Murw6GeKSP9YRuA1+AOq4=; b=mNqV0fLuVu2L5+QXJoh2GuOOj6dnK1k0W/KI80AeBRCN7EfV/v29KcZzC7aS3NGi5g 02GsEZLzfR1cDUH7vFqFyDIl/8o49E928FwZVOorLuc8KVVfJDifD9UFqQigN60P4hDZ J12zXzOhcUhKAUoaqbiWO9amXXxMy+uRJe7IpIhmt/Vg66yKdYlpYUiwWgFqJZi6LxJA oWyis+a8oqroRe7E0VaP1JCvnyRINAHmGHrAbgty0Cm3pMYIvsfZI5cds3k+bb6M6loQ nrH0mhrweh1v+z7SlIyc7HukEx2rLnNYpo0e3iTGSc18jZP2CkouI3qZ0EszG7JgQcYs LNgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740045436; x=1740650236; 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=ePE6aVSyq82nNiteS0eDm4Murw6GeKSP9YRuA1+AOq4=; b=t+oZYs3NEbHl0zyLrpQ9FR6nREMJxlHNL+VKwX8ruaBe2qPFLBp8D+IcHKxbTKKLKC VmTPzHaUVEa/VV0+YS4d9OE6gH92RkTT+pC1CsiKvMIQzScfDGvwjE+CVgbJLdw1WlgF BkL9uNRYzfMDpjdbUbQndAXFg4gabkax6CYR7t1kHX279J/AIdOd3j3LbEWc6MUDAMby TvYavqG6DAzBMl6eKloitCoqDQXre7Ye41fCjHRBV3M/YWMrAhZbDDGHvUTHYz7fTPTU +yeyFfuEVJpeOH8fCcl2I1/FhtdDYi5v6KWLRK1CVf1ujbeN3EAwWDwAQRNKUJ8yCwhc zwDQ== X-Forwarded-Encrypted: i=1; AJvYcCWx/2iWne3nUVY+rXJ9VaiqCfRjlM8jXl0FhBZMc7gHCGTnV0fzOVkH1I0ukNHX3CSaGg5sz9yLH2Z3i7o=@vger.kernel.org X-Gm-Message-State: AOJu0Yw3nLc9Qqw20aXoCaPdbqYY6pq+CaTE0cJCkuO1KyI0p9Ehknjs iju9IzoMxiuR4QMFcZ/N8EzzcmAtHrtTPBZRcO2e3NBe3/STEDgDEmaZStcliVA= X-Gm-Gg: ASbGnctFHzGFaOTUlRKCIvnfCoIX1ZBCgtSy72544de88NrgJXzeiRHvN9YXScs7pr8 ovDAWulz+loKbou+8me6wtdSn2jNKzwjkte3kgV8XoemlEM4PlXH2XMXbHV0ryv+IETOAzOCuGy Lo9mMFTxGPOQ9av4ew1yBIj0k3V3M8yox/BpRXuWUYy8Po2nQ2Q5pjyaY+carS7Yn3tZgUEPD1F EykcfVbYzBmwLLeae+xxMzcQad9TXVMMy/I5tSl6ZAjkmpS38O1cZ/Jg5SvB7VONzTFdkfj7B7c kbM8WtI= X-Google-Smtp-Source: AGHT+IEJ18E0znCg/W6pI6SBZ6POwzntvKs5Wddj1jzrAx7EMhapZSXX+0+m/ezVaZFBdWbuk2I/Mg== X-Received: by 2002:a05:6000:b07:b0:38f:2a5e:f169 with SMTP id ffacd0b85a97d-38f651405d3mr1047722f8f.37.1740045436112; Thu, 20 Feb 2025 01:57:16 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:e2e4:418d:7462:9cf]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38f259d65dfsm20509174f8f.64.2025.02.20.01.57.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Feb 2025 01:57:15 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 20 Feb 2025 10:56:58 +0100 Subject: [PATCH v2 01/15] leds: aw200xx: don't use return with gpiod_set_value() variants Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250220-gpio-set-retval-v2-1-bc4cfd38dae3@linaro.org> References: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@linaro.org> In-Reply-To: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@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 , Lee Jones , Pavel Machek , linux-leds@vger.kernel.org, kernel test robot X-Mailer: b4 0.14.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1051; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=PIuGkhnXNIukoW+JQ2UdGjN/QTq1yPTYeOxQX3xtWd8=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBntvx2ZKtP4FP+4pU3UV9J1oA5xxYaJP4wFaj6s eKwF6do6XaJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ7b8dgAKCRARpy6gFHHX ctGWEADaiKjypEdiDNeOeEm1nP8JwKq7Occ+KYMcJrlW2mkA6sC+tG3lFxgXKdHHkra8cMdvmeE yKalq+0h/rNSkpMUJhlg1TMVaFucMWJSqvZca28OccapHZu24j3I4l/+A9kapSZvlk8n9/kC6o8 N5AfP+VRR3Q+Zj4V5sq0NYLAuRHwQOx/oESmv8OFHwI5ihgB4rGXQh5Qhwp2JjitTiZDy8QAS6m frYj/XuUZXMo1yCr/uCgSgEyDvWe3vhZkRj48p+eivBPeibHsRXJaa9fTzutNFfdIfCna8TIZXJ g95pL2mCdWhrGWwIuj6jccIUSyV+twxjrXorYhRB4ZaDREF/hu1MD8mFRIp8PUxCk1T3Shhsdwj 3IEcpvxalJHy8mckvNeOpQGqoL6bphxTTQbz0hKJfelAdbdNkph5Yvy93r08vg+YM9AxGJqlqQM TYOcyugVDZUc92iHjac5lV/rz5h2LjhYhDrCJ1ZE5rse9uhAoLfMpfWHLiIohS1N43NM5xr+atb ILkzVHghd/xo6/q40EF4GOhyVmDR2Xvenw+T4rH4zad2I3KlyVEbuNxwKFIc9kkTIEEySJVXARm DmO75+rvkfLQb5t648rPOARandd31y2oTkZE3B6z+Mi3r2sR2TPuLVSwoMaxf5LMTvA2ds/UyhC HngwkMA5k2QKIBw== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski While gpiod_set_value() currently returns void, it will soon be converted to return an integer instead. Don't do `return gpiod_set...`. Cc: Lee Jones Cc: Pavel Machek Cc: linux-leds@vger.kernel.org Reported-by: kernel test robot Closes: https://lore.kernel.org/oe-kbuild-all/202502121512.CmoMg9Q7-lkp@int= el.com/ Signed-off-by: Bartosz Golaszewski Acked-by: Uwe Kleine-K=C3=B6nig --- drivers/leds/leds-aw200xx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/leds/leds-aw200xx.c b/drivers/leds/leds-aw200xx.c index 08cca128458c..fe223d363a5d 100644 --- a/drivers/leds/leds-aw200xx.c +++ b/drivers/leds/leds-aw200xx.c @@ -379,7 +379,7 @@ static void aw200xx_enable(const struct aw200xx *const = chip) =20 static void aw200xx_disable(const struct aw200xx *const chip) { - return gpiod_set_value_cansleep(chip->hwen, 0); + gpiod_set_value_cansleep(chip->hwen, 0); } =20 static int aw200xx_probe_get_display_rows(struct device *dev, --=20 2.45.2 From nobody Thu Dec 18 01:48:52 2025 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 076BB1F0E20 for ; Thu, 20 Feb 2025 09:57:18 +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=1740045441; cv=none; b=q1iiikaR+EjO+Qc2wb+NJSzUdO/71Sktuj/87HqT0yS4UCFgjBO34zwPQ2LpeNbpx11KkRvOLg1GBy2lQN/WSmKJuq2WIFLS8rnb/ie1s762r3Q8aNayQpMveoijdl2c2yCYx8EBamfrerONuYDw+R59k1BZRdTAZuhOd9E0MW4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740045441; c=relaxed/simple; bh=iO/ZbpMvZ02JRqCkfPBpteZT3vWeK7OdysnNM0BDtZQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EvoP+6QwTyzDDtCOp1/3r/uNq2XLFVRgzwM7xeCxVbyDdZukuSjtbmLA0v/M57flq9QGOgzWMjw5DCOrY1Kfo4G8qieCVcX4yh1tyrOifAgCUR3afJC4jt3QKic/WEeApnykB7EEBOs8vrDBO5Y74E5lBimCw3t8Ptot44o2w1k= 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=LZE7nVQs; 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="LZE7nVQs" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-38f488f3161so320809f8f.3 for ; Thu, 20 Feb 2025 01:57:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1740045437; x=1740650237; 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=iAbjZEsyovWHnhnuIRi16DbT8cLgW12JjjHyyk7tJPo=; b=LZE7nVQs7IFhPcSCZ0CZeEm8zasfDud0HXRQVRKFoZWlrp4qcE6ilLtuLoz5EX+8JZ 8gz/VZ+rOXZSMTQvEZOaV/nI2iUjQunYRJN6KA0YGbPnklEwIuWNIO72za8iiZ/ayyXd dq4OGQPyRFjNKn94qOXOo2Fq2TKFN1Jfs5ZSjJcReCzqR998AfSUFPUix9MD0GWnt3wC BqwApHG2ZWHtHUwdF2SfD+KD+sctgXeQepO3/1M7rBZoUC7ur1Pok9hPlnXkTZ6h87wU 2UNfYtjb92VQK3MDc3FG//Il2B9OvpLrncF3nM3AlbwU7tU+Pg1EMVViHl5ZITgGCfvk Xlvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740045437; x=1740650237; 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=iAbjZEsyovWHnhnuIRi16DbT8cLgW12JjjHyyk7tJPo=; b=W4zwE3sLCB58SltGvTZOXsIFKMX2PozDFCZp/K4zjhJlvkT8AZ08e/41qc3t+fJwc5 jFnKuWmh5cQb1J0Zn3/H5OncGkHP7llxn0lYeP6QxMmgbKU2JY7GuDsgB2z0Znc1u1LJ wTFhJKFLqal8gmFZceDwgOx+dxPMc2p9x5pwQ8NhIb5go/NSP+UdQcSBff44hZ+7/9NV GiroNKf4j+kGQB3jVpXK9SVI/+t/2HPGyMWkV/d7GljK1q+IEf1lx5Q4jOQsyezqNvNX hjgf02e1lB1eyNR4E6ztCQ3C0KFwanbrXNsB9NxXbGJ3hebUrfFHYvRf4q3juSFoN5CV j07Q== X-Forwarded-Encrypted: i=1; AJvYcCWTtpv6LJKR9AMki6VfAZZbKz0XyL4cBJrKc9J2xJVB48RW0tQHfMMXgq1jYmtbGRG5dsgKXw/9J3oocnY=@vger.kernel.org X-Gm-Message-State: AOJu0Yx76AZEfBP5XLyysl/GEjap0rpslAQQn1zvzaZ5xtB6KIUPv3I7 FnyEWr6tbRehYIQyni/ZlWZLVzIgbh/QcrV7Kjw8KARPNWWhBxxQGjev1PoWG00+mLo2jdh2hwC vL8E= X-Gm-Gg: ASbGnctBFu1gNj/AIxHI5e8T19mIBIlxHzbo5jckoNXTOs/NlMDdVUUnz5EEaEXVEWc fyeO+hh1ZpdkSZ48LcDsXHb7RQi/ax8FOb9+rN5ZJP/XHUWaX/PblSaETALHVCFZ+Ty7rVnZ9YS qyow2skthOiJ6eP5He5o9yO8GkMCaP7uO7UiD0E29DBWMhYVjKtWGjCVnSXQM4TJspu3Wxe/x46 6f1OqtGtVfZY1sVlF5tg4+WJOW8my6JwY0+RoIrLlRl6AVzDQk9kVfHMv5+ksnAe5lXjERgWp5x tlvoSwY= X-Google-Smtp-Source: AGHT+IG5BbyoigVPB4H90q685mzj9qEeNBW2m9Kp/DNWxK7ykBjIOJ5A2hfa/IcK//xPSW2E7ZnkZQ== X-Received: by 2002:adf:e8d2:0:b0:38d:d603:ff46 with SMTP id ffacd0b85a97d-38f33f1c86fmr15011096f8f.14.1740045437112; Thu, 20 Feb 2025 01:57:17 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:e2e4:418d:7462:9cf]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38f259d65dfsm20509174f8f.64.2025.02.20.01.57.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Feb 2025 01:57:16 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 20 Feb 2025 10:56:59 +0100 Subject: [PATCH v2 02/15] gpiolib: make value setters have return values Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250220-gpio-set-retval-v2-2-bc4cfd38dae3@linaro.org> References: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@linaro.org> In-Reply-To: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@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=11632; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=gHQNRRs7OqLd+yRQPCZEx3EYSJvoT3gylIXinac1eso=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBntvx2XKvoHEC22D24BWdlPEFovVL26UxJ5fipn kNJXttemTWJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ7b8dgAKCRARpy6gFHHX cooHEADGQUNaICr47kZlYSbFnf1TF9rYgWpKy3wu9evpIF2GrZWUNoF59nooKLAyRKNf/WnaZ4N xN5xMQYrdHldE7NocU43m8UaC9k6QW0eVhs0TwW76PSK2jpPYMCUK/0dc4N0f617mrYSY3x4Hlo eZhZwpyclDrh98dlFa9GkVkb9aBE85fdOqDBtDdqzOuCM/90hbxT5Op1+UQyfwFSG82+xP3Wssf U9XrIzSFVprFb7SeHz4CF93a8CbRfHWLb2P2v39IOa5afUAE8w5xSp7N5WYqT5uINXj//Xm6QmL qMVB4xw+FoAWMdEC4CuH+BxD53CZzlO+QBGjVnR8cWfEpBwI/PNthZwmXmYuXQPsVNvJQ2UESjh opICYQ3aC2AY76Q21sbL+Qg9ixW1hd3F2R0MWw0HFIU5jZkk4HMftSOQjY0EQ7e+nR36vCU2QRf vp75fTlbq3h7AHgCQZLrpqNjeHeKNwjObC2+ciRHhmv6fGIooSpDallwNSZCmm/xuuv96bUcQW6 E9JhiK8wS5MGP4LsXtXWHXnHFWzQaX/osqc1tzsRQh1DXMckSeabVCvnviEwK6fDzORkIGzXmaR SPyKKGHWdTGRhot/mTfN8GEImkDlrkU3hJG5H01sYfG1rfW5mRl+7vW3f63RAVVsd8OmrFlGaQ9 dcjXjvmk/wqYudQ== 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. Reviewed-by: Linus Walleij Signed-off-by: Bartosz Golaszewski Acked-by: Uwe Kleine-K=C3=B6nig --- 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 46cdfb08747a..64174ea7d008 100644 --- a/drivers/gpio/gpio-latch.c +++ b/drivers/gpio/gpio-latch.c @@ -73,7 +73,7 @@ static int gpio_latch_get_direction(struct gpio_chip *gc,= unsigned int offset) } =20 static void gpio_latch_set_unlocked(struct gpio_latch_priv *priv, - void (*set)(struct gpio_desc *desc, int value), + int (*set)(struct gpio_desc *desc, int value), unsigned int offset, bool val) { int latch =3D offset / priv->n_latched_gpios; diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 704452fd94bb..0a47fb38dd61 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -3405,13 +3405,13 @@ EXPORT_SYMBOL_GPL(gpiod_get_array_value); * @desc: gpio descriptor whose state need to be set. * @value: Non-zero for setting it HIGH otherwise it will set to LOW. */ -static void gpio_set_open_drain_value_commit(struct gpio_desc *desc, bool = value) +static int gpio_set_open_drain_value_commit(struct gpio_desc *desc, bool v= alue) { int ret =3D 0, offset =3D gpio_chip_hwgpio(desc); =20 CLASS(gpio_chip_guard, guard)(desc); if (!guard.gc) - return; + return -ENODEV; =20 if (value) { ret =3D guard.gc->direction_input(guard.gc, offset); @@ -3425,6 +3425,8 @@ static void gpio_set_open_drain_value_commit(struct g= pio_desc *desc, bool value) gpiod_err(desc, "%s: Error in set_value for open drain err %d\n", __func__, ret); + + return ret; } =20 /* @@ -3432,13 +3434,13 @@ static void gpio_set_open_drain_value_commit(struct= gpio_desc *desc, bool value) * @desc: gpio descriptor whose state need to be set. * @value: Non-zero for setting it HIGH otherwise it will set to LOW. */ -static void gpio_set_open_source_value_commit(struct gpio_desc *desc, bool= value) +static int gpio_set_open_source_value_commit(struct gpio_desc *desc, bool = value) { int ret =3D 0, offset =3D gpio_chip_hwgpio(desc); =20 CLASS(gpio_chip_guard, guard)(desc); if (!guard.gc) - return; + return -ENODEV; =20 if (value) { ret =3D guard.gc->direction_output(guard.gc, offset, 1); @@ -3452,16 +3454,20 @@ static void gpio_set_open_source_value_commit(struc= t gpio_desc *desc, bool value gpiod_err(desc, "%s: Error in set_value for open source err %d\n", __func__, ret); + + return ret; } =20 -static void gpiod_set_raw_value_commit(struct gpio_desc *desc, bool value) +static int gpiod_set_raw_value_commit(struct gpio_desc *desc, bool value) { CLASS(gpio_chip_guard, guard)(desc); if (!guard.gc) - return; + return -ENODEV; =20 trace_gpio_value(desc_to_gpio(desc), 0, value); guard.gc->set(guard.gc, gpio_chip_hwgpio(desc), value); + + return 0; } =20 /* @@ -3619,12 +3625,12 @@ int gpiod_set_array_value_complex(bool raw, bool ca= n_sleep, * This function can be called from contexts where we cannot sleep, and wi= ll * complain if the GPIO chip functions potentially sleep. */ -void gpiod_set_raw_value(struct gpio_desc *desc, int value) +int gpiod_set_raw_value(struct gpio_desc *desc, int value) { - VALIDATE_DESC_VOID(desc); + VALIDATE_DESC(desc); /* Should be using gpiod_set_raw_value_cansleep() */ WARN_ON(desc->gdev->can_sleep); - gpiod_set_raw_value_commit(desc, value); + return gpiod_set_raw_value_commit(desc, value); } EXPORT_SYMBOL_GPL(gpiod_set_raw_value); =20 @@ -3637,16 +3643,17 @@ EXPORT_SYMBOL_GPL(gpiod_set_raw_value); * different semantic quirks like active low and open drain/source * handling. */ -static void gpiod_set_value_nocheck(struct gpio_desc *desc, int value) +static int gpiod_set_value_nocheck(struct gpio_desc *desc, int value) { if (test_bit(FLAG_ACTIVE_LOW, &desc->flags)) value =3D !value; + if (test_bit(FLAG_OPEN_DRAIN, &desc->flags)) - gpio_set_open_drain_value_commit(desc, value); + return gpio_set_open_drain_value_commit(desc, value); else if (test_bit(FLAG_OPEN_SOURCE, &desc->flags)) - gpio_set_open_source_value_commit(desc, value); - else - gpiod_set_raw_value_commit(desc, value); + return gpio_set_open_source_value_commit(desc, value); + + return gpiod_set_raw_value_commit(desc, value); } =20 /** @@ -3660,12 +3667,12 @@ static void gpiod_set_value_nocheck(struct gpio_des= c *desc, int value) * This function can be called from contexts where we cannot sleep, and wi= ll * complain if the GPIO chip functions potentially sleep. */ -void gpiod_set_value(struct gpio_desc *desc, int value) +int gpiod_set_value(struct gpio_desc *desc, int value) { - VALIDATE_DESC_VOID(desc); + VALIDATE_DESC(desc); /* Should be using gpiod_set_value_cansleep() */ WARN_ON(desc->gdev->can_sleep); - gpiod_set_value_nocheck(desc, value); + return gpiod_set_value_nocheck(desc, value); } EXPORT_SYMBOL_GPL(gpiod_set_value); =20 @@ -4084,11 +4091,11 @@ EXPORT_SYMBOL_GPL(gpiod_get_array_value_cansleep); * * This function is to be called from contexts that can sleep. */ -void gpiod_set_raw_value_cansleep(struct gpio_desc *desc, int value) +int gpiod_set_raw_value_cansleep(struct gpio_desc *desc, int value) { might_sleep(); - VALIDATE_DESC_VOID(desc); - gpiod_set_raw_value_commit(desc, value); + VALIDATE_DESC(desc); + return gpiod_set_raw_value_commit(desc, value); } EXPORT_SYMBOL_GPL(gpiod_set_raw_value_cansleep); =20 @@ -4102,11 +4109,11 @@ EXPORT_SYMBOL_GPL(gpiod_set_raw_value_cansleep); * * This function is to be called from contexts that can sleep. */ -void gpiod_set_value_cansleep(struct gpio_desc *desc, int value) +int gpiod_set_value_cansleep(struct gpio_desc *desc, int value) { might_sleep(); - VALIDATE_DESC_VOID(desc); - gpiod_set_value_nocheck(desc, value); + VALIDATE_DESC(desc); + return gpiod_set_value_nocheck(desc, value); } EXPORT_SYMBOL_GPL(gpiod_set_value_cansleep); =20 diff --git a/include/linux/gpio.h b/include/linux/gpio.h index 6270150f4e29..c1ec62c11ed3 100644 --- a/include/linux/gpio.h +++ b/include/linux/gpio.h @@ -91,7 +91,7 @@ static inline int gpio_get_value_cansleep(unsigned gpio) } static inline void gpio_set_value_cansleep(unsigned gpio, int value) { - return gpiod_set_raw_value_cansleep(gpio_to_desc(gpio), value); + gpiod_set_raw_value_cansleep(gpio_to_desc(gpio), value); } =20 static inline int gpio_get_value(unsigned gpio) @@ -100,7 +100,7 @@ static inline int gpio_get_value(unsigned gpio) } static inline void gpio_set_value(unsigned gpio, int value) { - return gpiod_set_raw_value(gpio_to_desc(gpio), value); + gpiod_set_raw_value(gpio_to_desc(gpio), value); } =20 static inline int gpio_to_irq(unsigned gpio) diff --git a/include/linux/gpio/consumer.h b/include/linux/gpio/consumer.h index 0b2b56199c36..51ab6728a998 100644 --- a/include/linux/gpio/consumer.h +++ b/include/linux/gpio/consumer.h @@ -121,7 +121,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, @@ -131,7 +131,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, @@ -143,7 +143,7 @@ int gpiod_get_array_value_cansleep(unsigned int array_s= ize, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap); -void gpiod_set_value_cansleep(struct gpio_desc *desc, int value); +int gpiod_set_value_cansleep(struct gpio_desc *desc, int value); int gpiod_set_array_value_cansleep(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, @@ -153,7 +153,7 @@ int gpiod_get_raw_array_value_cansleep(unsigned int arr= ay_size, struct gpio_desc **desc_array, struct gpio_array *array_info, unsigned long *value_bitmap); -void gpiod_set_raw_value_cansleep(struct gpio_desc *desc, int value); +int gpiod_set_raw_value_cansleep(struct gpio_desc *desc, int value); int gpiod_set_raw_array_value_cansleep(unsigned int array_size, struct gpio_desc **desc_array, struct gpio_array *array_info, @@ -360,10 +360,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, @@ -389,10 +390,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, @@ -419,10 +421,11 @@ static inline int gpiod_get_array_value_cansleep(unsi= gned int array_size, WARN_ON(desc_array); return 0; } -static inline void gpiod_set_value_cansleep(struct gpio_desc *desc, int va= lue) +static inline int gpiod_set_value_cansleep(struct gpio_desc *desc, int val= ue) { /* GPIO can never have been requested */ WARN_ON(desc); + return 0; } static inline int gpiod_set_array_value_cansleep(unsigned int array_size, struct gpio_desc **desc_array, @@ -448,11 +451,12 @@ static inline int gpiod_get_raw_array_value_cansleep(= unsigned int array_size, WARN_ON(desc_array); return 0; } -static inline void gpiod_set_raw_value_cansleep(struct gpio_desc *desc, - int value) +static inline int gpiod_set_raw_value_cansleep(struct gpio_desc *desc, + int value) { /* GPIO can never have been requested */ WARN_ON(desc); + return 0; } static inline int gpiod_set_raw_array_value_cansleep(unsigned int array_si= ze, struct gpio_desc **desc_array, --=20 2.45.2 From nobody Thu Dec 18 01:48:52 2025 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 D38381EDA36 for ; Thu, 20 Feb 2025 09:57:19 +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=1740045443; cv=none; b=iR+vO/3SjZbFBLUJenXTxnICaPfwRL1LKCH/4Ls3klLuEkk2+KRgSldulyNzoce1iVE3Tnc03Un6TBApCVNaHkr8qW2ROiRK3sdLDb8HwAENQRbvsoka7BX8NqVVqN8q5jh2VebhNM7E4uNT5fg+MrfO3DVP8k7LrpzcZHC3xeQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740045443; c=relaxed/simple; bh=+Xr6oK/Ht9wHw9nBP+zpmINE/igg0/oGpW7h6Rg2Dvs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lxRmKxIQyQyzqadG5Qe+ho5lMm8+uVczoYRimgX2IQuMM/HPQg3W2mbnrhtJ6PRMUbOgVlBjVZmZOzBq8QMwXcjOSytNU1rIA5ghbjPpjR0UcHYHt6RHy2+A2SWbVtOZu8N9wPF2QoS64GsbLD3Dq9ZEBXrHuvnXLZc+mS5V3CY= 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=fjLMof2j; 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="fjLMof2j" Received: by mail-wr1-f50.google.com with SMTP id ffacd0b85a97d-38f3ee8a119so351014f8f.0 for ; Thu, 20 Feb 2025 01:57:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1740045438; x=1740650238; 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=/sXz+4tNFW/bf9SGPlUIBQPKXDJQTdpVYHzJ1o1hhmw=; b=fjLMof2jeBHJ4d5NDU8RazHC4r9XwHb0fqSDwyfvbEd8quItniloWnIaJsuHg4G89M mlthpmPNLHLt3m/8UPSt1Tihn7wgwKEZeVMaiEfW/YBljomk1jz3q15kXmswZlv9eOz7 uwU4f8F81I5AzntKy2Dp6H+GX0MNwJtfjByNfGotadBmA50fPip9yh6K1I2zMTv1s68k U+u/u9SMlIU0XKpichv9n/HzN4JSniX5QTo6UuBikKw8j6V3kMdBJtPKoziASOUCpoCI /ZyF4z+FrbD+N4OVfZz5AJqC82/F8IP/yvZRTT9Ngh0cBzFkLZ7VQvlSiPg43PC8IEQX JWdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740045438; x=1740650238; 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=/sXz+4tNFW/bf9SGPlUIBQPKXDJQTdpVYHzJ1o1hhmw=; b=befIk3s6oBQqxp+s/n61OnH4AGY7aWjbzPeWlC0nz4pmkwPsBRw+oRrooCzIem+0bz f0L8GeA0S7VsKbU5gflEA3027cbtVJZiGzh20alBqhhsHTNp+atotXYsoaqWKLlZg5CX 63Nx4DSqQxaJp6MZ2B2S0y4LUC8i3Zy3SgcBgzRqUqMmrmWfZWSTB3zmzzTWm0zflTWl wOh5HlISot1fMHFWJCJF1/3SGQZhlXwNiwsS4LcTygcQg5f27H9XZrh8YP+3hIrE9RQb DJyn752GcEkESz+gDsNvap2dBBYpTKLPQ2K5rpby/O62j3Bml5tgQeIj2zmo1EU4GyWl jTyg== X-Forwarded-Encrypted: i=1; AJvYcCVUP/M3B0HliqacYzoliC1RBcgxccKdGoN9ouJMxSvIdckXn+UTZ+VQmgnsf7OT29keSKzcd3z1nHR4eys=@vger.kernel.org X-Gm-Message-State: AOJu0YzOP1tP8C5cP2BZCo3BXdq02dpwPifq9kl8oKEi+PhbZ4PDQ/9Q T9En6i55GrwgCkgbV1uB7eViVD6bbFf+1gu1D1uu/NSLUttx+Pk0SlcH1SGHrgw= X-Gm-Gg: ASbGncsWKvSZma/h//KW4dAbOo3+FbtotkaZg9UCvYp1i1eVcDAxKL37By+O5hlB0xA XT1q8ImoRsS3WZdRDc6ZODogHcFSbSGbaMQzZFmoEx/bxJBQYpKaHt+b4QNzCbnWX48rrxw5uTw z25Aiw9uyZIoEk6bglfLcTjx+mOiv61bbnO8aw1akM3a7TlKI//mdb3RwqcBkI9K2El1L+OyJGH /byOtcusCLctAZbZBUf6cU/gZ4PemQYY8XlQLrf0OC8a1uCeEzcCl0adDntNxzPeXD7wNaEJ5ru NIozKCk= X-Google-Smtp-Source: AGHT+IEUcIIWgogQ/V2/Cy3TUa1rBPDTehvksRZT7Bu74zZ+4Tf95QDLA/2KI4a6FQNi3GKxdEoTZQ== X-Received: by 2002:adf:ee86:0:b0:38d:b113:eb8 with SMTP id ffacd0b85a97d-38f33f28774mr14644303f8f.20.1740045437998; Thu, 20 Feb 2025 01:57:17 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:e2e4:418d:7462:9cf]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38f259d65dfsm20509174f8f.64.2025.02.20.01.57.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Feb 2025 01:57:17 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 20 Feb 2025 10:57:00 +0100 Subject: [PATCH v2 03/15] gpiolib: wrap gpio_chip::set() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250220-gpio-set-retval-v2-3-bc4cfd38dae3@linaro.org> References: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@linaro.org> In-Reply-To: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@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=2148; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=uCnOYzpuHE5Zrq+zDhiY242948Qctv914RGVf27gLnk=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBntvx2f5uyro8hvEgFdU3ntj3hHzSe4ZZu7m3re pWfOrjmfe+JAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ7b8dgAKCRARpy6gFHHX cjWrD/9sUe5qUSq9ERYH1Bx0qhafbeFnmoXkGkNGZ/QBTTk0S/1szvmMJN8uLK+lcRiUQLqc8sm IgORwNWtxFF6Q4HoI62etlIshKoGo5F0uWlTdTgq0DZ9R0coc9Xqwfr1gux6l3avakBARZOBmin qb82SvHbS/HYdmZqbwD/2E8ebzpo0GFIAEdjWa6h8O/pqtHf/va5NaYPvkihjwl38U0l0hFTp9U MI3U2rYo2M4Yvq7H7PjHUt28BloDVSQljYHFj9Wx0gzPx8f965fLEuLWmaU5f/H4T8pBqv6qgAb 7kbYx/p14FOIabJBcse8+Vi6aPbUzbh34ddJN/NL4ZTjxN94ndChlVx+0fPNf44mh36owImYQJ2 GiBZnT81dpIT5g1KLvGA//HM0OFaYSEzBlVZGzy8HomiEUh5GN2DrpH92rewRDmVMVYKi92USzi PCVpcaoUzRos8i2hNM6VVMMX0GWqgrkbg2072kQUvz2jqpS60CjJ33BDjyidwWryKpOaX0H/rPd iIam0aT1GwJ2yOr6Iz8EjMQOVlVh1BPj+FS8DQhGafVxoTUzIPogkyWtx+2LhYF4tumiNn/QiMr MYPKye4WSuHdzE25ai6YkXZDZJtMKGmBA5HJxNZ6qw/oK0w6e3y/L+XLLq4CFSyDZ5H7FIZFsKg P2o3tFZ0A23/9dA== 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. Reviewed-by: Linus Walleij Signed-off-by: Bartosz Golaszewski Acked-by: Uwe Kleine-K=C3=B6nig --- 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 0a47fb38dd61..040b4689eb8e 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -2755,6 +2755,17 @@ int gpiod_direction_input_nonotify(struct gpio_desc = *desc) return ret; } =20 +static int gpiochip_set(struct gpio_chip *gc, unsigned int offset, int val= ue) +{ + lockdep_assert_held(&gc->gpiodev->srcu); + + if (WARN_ON(unlikely(!gc->set))) + return -EOPNOTSUPP; + + gc->set(gc, offset, value); + return 0; +} + static int gpiod_direction_output_raw_commit(struct gpio_desc *desc, int v= alue) { int val =3D !!value, ret =3D 0; @@ -2797,7 +2808,9 @@ static int gpiod_direction_output_raw_commit(struct g= pio_desc *desc, int value) * If we can't actively set the direction, we are some * output-only chip, so just drive the output as desired. */ - guard.gc->set(guard.gc, gpio_chip_hwgpio(desc), val); + ret =3D gpiochip_set(guard.gc, gpio_chip_hwgpio(desc), val); + if (ret) + return ret; } =20 if (!ret) @@ -3465,9 +3478,7 @@ static int gpiod_set_raw_value_commit(struct gpio_des= c *desc, bool value) return -ENODEV; =20 trace_gpio_value(desc_to_gpio(desc), 0, value); - guard.gc->set(guard.gc, gpio_chip_hwgpio(desc), value); - - return 0; + return gpiochip_set(guard.gc, gpio_chip_hwgpio(desc), value); } =20 /* @@ -3492,7 +3503,7 @@ static void gpio_chip_set_multiple(struct gpio_chip *= gc, =20 /* set outputs if the corresponding mask bit is set */ for_each_set_bit(i, mask, gc->ngpio) - gc->set(gc, i, test_bit(i, bits)); + gpiochip_set(gc, i, test_bit(i, bits)); } } =20 --=20 2.45.2 From nobody Thu Dec 18 01:48:52 2025 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.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 C4CC41F0E34 for ; Thu, 20 Feb 2025 09:57:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740045443; cv=none; b=KJknGJ3FqKTgbSfeWVmS5C8SCgfb8h03PvWs6eesyQfXTXvNUQnKvzWoWekkKoADROzGAE4xTjDa2vKtEiWriCNtGGgbpfQ7seYyvrLOxCtA5AhV2/bWXh/hPOEhZ6xJEsqXhJzv6vm2zaZbYws37eBZ1NFg5bUVwUKnvroLMAg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740045443; c=relaxed/simple; bh=RNJNJ+PGyKQWS40w6Hglqc3fY+OmbLq4bUxyI0fU5t4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=G3B8g5BgNNwFFa17J56FAHE3tllpPgQD6YtFEmADt/VpgH2RQo3ZsgO6wCjc5oh5gFBCvJzKngFheKSIebo7MmdYkxaT17ZU1F5/j0iaBhxtPk9lFwWr+4QYHY0v9X2fiukwQ16KUWJZYuiJjBPYTYdKoOKgFydpzELjHNVw+HY= 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=bcoSw5au; arc=none smtp.client-ip=209.85.221.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="bcoSw5au" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-38f3ac22948so359216f8f.0 for ; Thu, 20 Feb 2025 01:57:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1740045439; x=1740650239; 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=oK7z7kPUwbiYR8aIbiZmR8S1YTF2yDqL+/19TJNz4qU=; b=bcoSw5aunqwrL6ZajzVcVRxUXc5NcSS2kvRpzZtQbfOgXtL9HYJrW5Vfau2I9LWJoi 67OP3og8RWFBii+bq3u3YyyF8BlQbQ/xEJk9oswHri9bd2/3U26LpP0lcQ/GNIN+adkj 3ToZhhXQxrakU+06HsMmoV6u48RQFHjse4Th+pItxkqiUN2DCGuUEtdAanuSLO1YNQnW PfaQ9FCP8EW3q4kQeeTPz9yuvvVFjinLDvw2yeRdvsro/ZADYcJgO0TjOH9OowIkwtnF xdmVKA1bL8lyGfYvaS2m99jD5R7kADRJ6YS7TA2/GnSYR77f2R5Fxf5vQu+oXs1rYWy0 XhaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740045439; x=1740650239; 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=oK7z7kPUwbiYR8aIbiZmR8S1YTF2yDqL+/19TJNz4qU=; b=gZF4YgMO1iV6CIsMH+vuTSURfchv9c4UvrtlwZl2mXimigBtTkS9udsZMfOoC9I0l+ fs9UkKfZf8vU9NOeJRMyfoX3ON9oB0niiK5gWeT6ad0zg4x8CyGF6TKnaQ2/TbnO742p 8M6ilcqpCY2oDlDZ2Tu5QGtQhIrd6MRcfim8jyeBaBQa8rRM+TKSTotF2MbUqHTXBNpn OtUKQTgFo68xOqykkzeiIIQgAw/B1nF8HehoNaCEDhpC2eRKvNja8l3ex0Es8+IWxQbW pN9QzDi14hdwlDk+i4RFaPpPQr/EJ8eCT6P+W8fhEVFeqd3kEm/WbtSVqhH8agfin96o s0eg== X-Forwarded-Encrypted: i=1; AJvYcCUC+4rZuMrcbB/T4Ja4A+f1hnDlDr4NYWfLx/EShifoDh78hwUGXe2zevXBGYLwIShqJsG+lDHc3onVyEc=@vger.kernel.org X-Gm-Message-State: AOJu0YybtApXsR3HVjpjv/CO1n9lMeZsG9Kjty/JyBFnJMxckS3o20Vx Yq8y25RiJDywMFr6Am4RT6iQ/9Srm0IaKQdObDfMV82M6A4U4yksboqPIC17h3Q= X-Gm-Gg: ASbGncuw5KPKbiv5s9R+TBbjNeBuxw5tWOtgYXk3avc56av+bBtrHIBxNmOPVmn/HUm O6+d45py6g/wVdIWxslkgH6N/vbaf4d02viZ5ZK4MPK0YhqcjHMDbSkZuqM+AAm1ejBLmoXm2Mm 1Kuk1DM+Klj5COauwfD6/SFPHBBlbHSKtZJqiZk0WH2DxEywjFYumtn0BlHqFaBc3LS9BM7caDh GCqCIQcx5UWc+R/iuHX6P6npFGmjnnY+pIUOZ0UdfjVEWk25SiUDHincSbZpklJoQUJvHz7beC8 WzjpefI= X-Google-Smtp-Source: AGHT+IHdxXE+wkntxsbZcPRj34UPFgSF33vvtbpTzksheLUargpon2xXaSy37ux13ny+vp77dBRVMg== X-Received: by 2002:a5d:64e8:0:b0:38f:4308:e552 with SMTP id ffacd0b85a97d-38f4308ea65mr14863294f8f.14.1740045438946; Thu, 20 Feb 2025 01:57:18 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:e2e4:418d:7462:9cf]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38f259d65dfsm20509174f8f.64.2025.02.20.01.57.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Feb 2025 01:57:18 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 20 Feb 2025 10:57:01 +0100 Subject: [PATCH v2 04/15] gpiolib: rework the wrapper around gpio_chip::set_multiple() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250220-gpio-set-retval-v2-4-bc4cfd38dae3@linaro.org> References: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@linaro.org> In-Reply-To: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@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=3176; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=/NIPd7ogpCDV54abkx+5Qvd5OSnBBOxjUL7k4561kEw=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBntvx2hTPlqMvIbDt8rrDsNS+Jz72qIvaMe3VD5 07XlnC7QfaJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ7b8dgAKCRARpy6gFHHX cmmJEACdZa0JZ8nPMZNjF3M1FUSZMRLt4T/dfJhH1y3g6AJezAVkjz++qC6PaEhyC5iu4HiONj0 TkLxXdykhwv3wbH6rzcwQFYp45F4ONns+8PAxRDGjJmuNUNObix/7BzDKGcR4vwz/HLAZsG6tzX 4dciGqQ7ph1oXOzJOlCeETaPJ9JBI04kXW5GrKWK/FJ3UknnBf3h6Yzgj9PrGMuM5h1wn1pWgwx PkaAe0q9rnxo9uLZDEOwCvI5/2U3zqMrRedQKnCEFZw0cfUwIEC4JlLsPXkMthLPX+e8y/+9CAp pIuBYR/atk83zkrBFeIgpNgesPl8F7zvZaDi4A8KHZ9APBZnGY9el8xBAxgXqQjK0vy24c9BkQL aRO2XSWXAyCmyaa4LBMuv6ah68zrCaXyiEmjEZPaLpBnRNbisZXgh4N4CMbgU1A5AIVo1S31Tig IzMs8sy9Caw6Nhf0LxQggvBLayNSZiOW8Ix9Bhez3gz3rN+kgMBYJa8vg3qFowajuG7mbpBEaz7 mzOCMsDqSLx0LJK7+JGjNpe14MYUvBycO3y4m/zF4jNENDspLWciqjGMuWxoSxmAqGc0Ry0eqrw KiG8IrckaPV0CiEhcLBbFWeVqjw1Ws9WQ9R/yrR+8Gs7+KQRJOGHlpBiYQNPBkxPlaWVTCmgImt dfU9MnqKzV2zD9A== 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. Reviewed-by: Linus Walleij Signed-off-by: Bartosz Golaszewski Acked-by: Uwe Kleine-K=C3=B6nig --- drivers/gpio/gpiolib.c | 42 ++++++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 040b4689eb8e..b1e7d368bc7d 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -3490,21 +3490,33 @@ static int gpiod_set_raw_value_commit(struct gpio_d= esc *desc, bool value) * defines which outputs are to be changed * @bits: bit value array; one bit per output; BITS_PER_LONG bits per word * defines the values the outputs specified by mask are to be set to + * + * Returns: 0 on success, negative error number on failure. */ -static void gpio_chip_set_multiple(struct gpio_chip *gc, - unsigned long *mask, unsigned long *bits) +static int gpiochip_set_multiple(struct gpio_chip *gc, + unsigned long *mask, unsigned long *bits) { + unsigned int i; + int ret; + lockdep_assert_held(&gc->gpiodev->srcu); =20 + if (WARN_ON(unlikely(!gc->set_multiple && !gc->set))) + return -EOPNOTSUPP; + if (gc->set_multiple) { gc->set_multiple(gc, mask, bits); - } else { - unsigned int i; - - /* set outputs if the corresponding mask bit is set */ - for_each_set_bit(i, mask, gc->ngpio) - gpiochip_set(gc, i, test_bit(i, bits)); + return 0; } + + /* set outputs if the corresponding mask bit is set */ + for_each_set_bit(i, mask, gc->ngpio) { + ret =3D gpiochip_set(gc, i, test_bit(i, bits)); + if (ret) + break; + } + + return ret; } =20 int gpiod_set_array_value_complex(bool raw, bool can_sleep, @@ -3514,7 +3526,7 @@ int gpiod_set_array_value_complex(bool raw, bool can_= sleep, unsigned long *value_bitmap) { struct gpio_chip *gc; - int i =3D 0; + int i =3D 0, ret; =20 /* * Validate array_info against desc_array and its size. @@ -3537,7 +3549,10 @@ int gpiod_set_array_value_complex(bool raw, bool can= _sleep, bitmap_xor(value_bitmap, value_bitmap, array_info->invert_mask, array_size); =20 - gpio_chip_set_multiple(gc, array_info->set_mask, value_bitmap); + ret =3D gpiochip_set_multiple(gc, array_info->set_mask, + value_bitmap); + if (ret) + return ret; =20 i =3D find_first_zero_bit(array_info->set_mask, array_size); if (i =3D=3D array_size) @@ -3614,8 +3629,11 @@ int gpiod_set_array_value_complex(bool raw, bool can= _sleep, } while ((i < array_size) && gpio_device_chip_cmp(desc_array[i]->gdev, guard.gc)); /* push collected bits to outputs */ - if (count !=3D 0) - gpio_chip_set_multiple(guard.gc, mask, bits); + if (count !=3D 0) { + ret =3D gpiochip_set_multiple(guard.gc, mask, bits); + if (ret) + return ret; + } =20 if (mask !=3D fastpath_mask) bitmap_free(mask); --=20 2.45.2 From nobody Thu Dec 18 01:48:52 2025 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E35FA1F0E51 for ; Thu, 20 Feb 2025 09:57:21 +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=1740045444; cv=none; b=eQczJy0nDJIc8RM3us3YkWF8HujhwFH/uvjlk//825gIBIXDdKWUNSuvhXb0d8X4JIvLJE1xtDyADX7ZEYEXDeb/gCTaNzAWljo92JiFxVsW3OYPUoRAvHMDSOSHTz+DT0yhXjZVZntZ3YTXlZNd36/BX43Nk9Blp61cxftbPVw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740045444; c=relaxed/simple; bh=Hx8x42h3TmyvG19Hvhj3xP7pPFU/ZDoyjClGhadyhMg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uh80LNkqOzieEZV1VjTyU19PAV5DS//T/5fTPWBoux+EvoClQDGn5tmhS82yjVswqrU8SapWTbzB3W+FqU0Xq7qHcKyCIQ+vrrasCpaEXb6/61YMXXSAsNammSwzXLFlryMjRmKOek47OQQt+YqAVpBLpasMEpIXHJCRdfI+q+s= 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=eJEaxOwZ; 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="eJEaxOwZ" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-4399ee18a57so4255875e9.1 for ; Thu, 20 Feb 2025 01:57:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1740045440; x=1740650240; 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=CW1BtDxAa/GSG19LzM6FVm6kpOL/sCLazVCSkC2HISg=; b=eJEaxOwZ49GirZ7WB7oRfLIYRLO+MydNW8gTlGzR5Q46+ZiD+7VaTXJ8A/boLs42Ji otgBkXwuE3bO71peK5w18tUYB3AZAlKfgH7/LyQzFAeWwKL/94f2hEUB+LoAItH1vZ8r vqu+RVTp23S6xtZfpYxGQpIYD/b8ZFdqXsbpHCtibSpAE+hbYf30wvGAWHj7A9Kwx5IO ERdXVKsU1xUGguAbQagf7VqmmAtsJkBPxj/wP41n4Vt6psmtg8peahcMCgEYGPLMMMcu 2Q9UW6gRT+9jYX28vp/kLbS+5Qji/671ecpyUGwe+/Sl4yZBK4EqhsMTTZfkopMadx9u qrxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740045440; x=1740650240; 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=CW1BtDxAa/GSG19LzM6FVm6kpOL/sCLazVCSkC2HISg=; b=PUfA9jvLD57LCfsNQV4BlR6l2nWX4qF5rHFQZMXY2qXx/O1GdAKDW3+LPFSDlB2rhQ G9FUPScpJ2249qa+4u96c8q1hGOyyHRDGrCvj7E7I17ASlkUwt40lRm7dktWv48X4Nlg AW7WzaO1fTjpvCdR1wFoZTLVdIoK7yMpDsqdenkI+eRLZfSxxszRNKdzuSLPnxwxpiTd lI9TMuQWGtkG1vMOseCaBlbiwexZBut9E84YTK27N6yAwT/kWh7mM1hbhL5b69SYioMA JW9PqWJ/3oGqebl7JqynByc/uiOhyjDb22zob5pSbc+nApIfY7etWvsdvHIIWO2Jfxd8 DC0w== X-Forwarded-Encrypted: i=1; AJvYcCU6f9yzgEyMMC9NHFj5GTGVyJ1rI/4X346JhNAUbV9mP6stxTipe7NxJnvpi97bs2fF6Vqp0YFm9nQ51lk=@vger.kernel.org X-Gm-Message-State: AOJu0Yy/VDDQ0wvR+w1d9gV59PnhlO7P/nsbGNl/uptoG+a84aQ6ZtD4 B5ASB+IIVOBvbCbf1EGYeN1cAL1k6ey7FjzjAcQvfPvyI8Xap8cJKpxLIXBL8ec= X-Gm-Gg: ASbGncu0EaxgEJmTyH/wpSHfGeYCKHcwoh97VUe3n86D9Mz8d4EddCCLMFT/Ixv2FQ3 MDR8NDlXlbhOJ5RVPpqsQ0YXjzEdXIolkI2GtX1PSdS1UniHXaNir/Gl9h3gWCJ2yC5ssMuCrap kGh/dreVp7yKrgjjvPI8IO3wShTZbgMG0d7VTs2QmSPhtVbN2V9iuL9MgiFN1cqn/yTbe4YsjYX qOVuvqoHWtTb49dKjolqUWpoqj4U0lulKv247A90V9wct3xFVDfKhQ0jgw3DtL1S9IC/yMayxiW iPCLv9Q= X-Google-Smtp-Source: AGHT+IEzfYTeDdg/DrUePFOBkrqsf083bzzXDfXkF2qzL45+2j4Kd/nMhGJG7tMvJ7+QZy9eEcP3Tg== X-Received: by 2002:a05:600c:1516:b0:439:5d00:e78f with SMTP id 5b1f17b1804b1-439a30d4c32mr21123675e9.11.1740045440011; Thu, 20 Feb 2025 01:57:20 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:e2e4:418d:7462:9cf]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38f259d65dfsm20509174f8f.64.2025.02.20.01.57.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Feb 2025 01:57:19 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 20 Feb 2025 10:57:02 +0100 Subject: [PATCH v2 05/15] gpiolib: introduce gpio_chip setters that return values Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250220-gpio-set-retval-v2-5-bc4cfd38dae3@linaro.org> References: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@linaro.org> In-Reply-To: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@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=3620; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=A1iH2N7/CXnZXWebW/r7AKV8RFBFJ+TvTYVcN6Ufjwk=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBntvx340P6bz8HBHSRoz1htB8NvNzkOI84ft9b7 Or6HUMWz9GJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ7b8dwAKCRARpy6gFHHX crNxD/49lgMRbbBvfftYNyPR3zsQIi3k6BMOdyIhLPRspZIILH/urHQIKCOotMqhAU/Ab2cKPiY jxjvOxmTQN7MUBTRQ6df1NEDwthBY4RKKf+JURBJn3bQ9SwPaLzI1EVx8zRrcqFqiAxxpGfmTP2 OUU1tpThztixzKi6Knf6+0loNH8aWYXd9bxs6+mjQVOisQqe6RGu2JEsC4v6jvC/FwdLseCaaSf x8Kqw8o6wtQixtEHVtV0jl8eKahilwSH+I7v7qzIiCay0ctDkpxNKIRIV/GTb+FudqWxjh6nuZq FXQG3PDWhT+2+CAaPGsX7AiLsoJChWoVVLgVp/SdcVmgq4yv2ye09RNxgkvc6YmuizOU1rJiFg7 Tae4zQ0KEKHfXuHCTi9z8IAxCUtF+vm3jkkX6f19O3jnMyfiP7OUj+7Gmu8goagEc3zn5nPPTf5 +xEl+ig3mNs3B48/wdRAXAdUVP5oS7PhTqOEHA+GxR6nB+K8K/c3bldMADga6CXx9RHNetTWTLl KVh+ZCs1b0t5eTOyMFY+fmjVCyD+iwnTs35enqg2kDRve/6XJe+9fqvMYsVJDlZvUFgc075w1mw r8wwTdvLHKWpfiyXVNx7VTsNqqunZZ5khVevjPD209bcw/26iq13yhhQ49twYY+dtNTeAMu5tzD 7c/rAcxajd8AdVw== 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. Reviewed-by: Linus Walleij Signed-off-by: Bartosz Golaszewski Acked-by: Uwe Kleine-K=C3=B6nig --- drivers/gpio/gpiolib.c | 27 +++++++++++++++++++++++++-- include/linux/gpio/driver.h | 10 ++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index b1e7d368bc7d..19f78ffcc3c1 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -926,6 +926,11 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, v= oid *data, int base =3D 0; int ret =3D 0; =20 + /* Only allow one set() and one set_multiple(). */ + if ((gc->set && gc->set_rv) || + (gc->set_multiple && gc->set_multiple_rv)) + return -EINVAL; + /* * First: allocate and populate the internal stat container, and * set up the struct device. @@ -2757,11 +2762,21 @@ int gpiod_direction_input_nonotify(struct gpio_desc= *desc) =20 static int gpiochip_set(struct gpio_chip *gc, unsigned int offset, int val= ue) { + int ret; + lockdep_assert_held(&gc->gpiodev->srcu); =20 - if (WARN_ON(unlikely(!gc->set))) + if (WARN_ON(unlikely(!gc->set && !gc->set_rv))) return -EOPNOTSUPP; =20 + if (gc->set_rv) { + ret =3D gc->set_rv(gc, offset, value); + if (ret > 0) + ret =3D -EBADE; + + return ret; + } + gc->set(gc, offset, value); return 0; } @@ -3501,9 +3516,17 @@ static int gpiochip_set_multiple(struct gpio_chip *g= c, =20 lockdep_assert_held(&gc->gpiodev->srcu); =20 - if (WARN_ON(unlikely(!gc->set_multiple && !gc->set))) + if (WARN_ON(unlikely(!gc->set_multiple && !gc->set_multiple_rv))) return -EOPNOTSUPP; =20 + if (gc->set_multiple_rv) { + ret =3D gc->set_multiple_rv(gc, mask, bits); + if (ret > 0) + ret =3D -EBADE; + + return ret; + } + if (gc->set_multiple) { gc->set_multiple(gc, mask, bits); return 0; diff --git a/include/linux/gpio/driver.h b/include/linux/gpio/driver.h index 10544f4a03e5..b2627c8ed513 100644 --- a/include/linux/gpio/driver.h +++ b/include/linux/gpio/driver.h @@ -347,6 +347,10 @@ struct gpio_irq_chip { * stores them in "bits", returns 0 on success or negative error * @set: assigns output value for signal "offset" * @set_multiple: assigns output values for multiple signals defined by "m= ask" + * @set_rv: assigns output value for signal "offset", returns 0 on success= or + * negative error value + * @set_multiple_rv: assigns output values for multiple signals defined by + * "mask", returns 0 on success or negative error value * @set_config: optional hook for all kinds of settings. Uses the same * packed config format as generic pinconf. * @to_irq: optional hook supporting non-static gpiod_to_irq() mappings; @@ -442,6 +446,12 @@ struct gpio_chip { void (*set_multiple)(struct gpio_chip *gc, unsigned long *mask, unsigned long *bits); + int (*set_rv)(struct gpio_chip *gc, + unsigned int offset, + int value); + int (*set_multiple_rv)(struct gpio_chip *gc, + unsigned long *mask, + unsigned long *bits); int (*set_config)(struct gpio_chip *gc, unsigned int offset, unsigned long config); --=20 2.45.2 From nobody Thu Dec 18 01:48:52 2025 Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) (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 BA8E61F12EA for ; Thu, 20 Feb 2025 09:57:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740045445; cv=none; b=Jn+4+W837ZjToEt5CxaOfsE6E7ppGw+r+5b4wMrjhI2/bbCu2CvbHypvQo2pDq60dUtXha340DPYDNqKlzrwDnPn6vRZfxcH1OGRpR0Ma9wzyDZ2jVsdBrVYtB29h5bTQLf91/3JOARTe+aWWUX5WfrNuTlNdi9Ur3UPlDkhSp0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740045445; c=relaxed/simple; bh=83jrys1E92DqV2B4yqQk7gfJqXMuRsuKUY+FCZWmHyM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tRoxJJ3qruNk18I5c8v+uKbGSBdf6u4ORtdlvK+P7drPN3qdWs59DCyDrN/CvoPOF8GxJQO0Iv7cThmhkuZdnf/x81u2WzDwuVKUpY5WJIfYKrlmbUwg25F99Ikz5sZo75WYXXz9jzhBrIOs4K17A9wQCbNGNTiG5d5V6tvqNeM= 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=UQrlWcYs; arc=none smtp.client-ip=209.85.221.52 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="UQrlWcYs" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-38f2b7ce319so586283f8f.2 for ; Thu, 20 Feb 2025 01:57:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1740045441; x=1740650241; 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=2NO370y0/2ADG59Z7li535hI58C2lwDkCkUPq5uenvk=; b=UQrlWcYsI+ZytDoiIAyydO/4LhmfxWLAFldug1ohY4hgTQkU0oFjDOZDEMhkbzjLTP a6pusk1G7+G+n/eu1ZjrP7SAqIV90pif4vACZ5nKJgR+Tjx9LOPkW2Q2dSrlAgGS8A36 GYSHUv7OdmPNxDQeLDgEY3ydFeERnSR+h0R7ayYDM7lNHfE1fVg62iYdFtIX8ISx6rsi 7doC1sGNpRBj+wx0NU/gTJbg0utihCJ47rjuHjfUaWFLPfWWizwshvkzZd+mLOgOJ8Tc S/Cz7LqzmhvduwZwtHx4MXKVUYILfBf3Eh2S/05Q/4PJdnTUp6p6W3fCeTjnC3SS9uAI 7ukg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740045441; x=1740650241; 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=2NO370y0/2ADG59Z7li535hI58C2lwDkCkUPq5uenvk=; b=qKTG6Ve3l/SAO0oG0Qo7CcRe3CvaXL9LgL24E6GwzzxGgOrsKs8dcL3f8SZUgEzsZe KFJBOOPt+QN3eRgr+TLKSAIQr206ky4Sjmmrt9GVuce4hGY6eAnXMlZzUr3fwBzUZEkW 5EC/0D+ZD/bKMsjh3iw8qecMQ9hnGFayGKLaJbRpl+AW6vZulTNfDRr6zzc7Ev9QBzJ9 gGdtIPO9NIU0xQrx1BU+vlHM5pMbNqt+Eog6T5QIltc4zodcKnyR8irQIhz2UVVm6Qo0 JiPeEU//HfgQcWuCBXpyO7R16t3XBFQHgN/Z3Qy6xfyYUxZDbBU4HrD8SowN+tHLXJjc iybA== X-Forwarded-Encrypted: i=1; AJvYcCVeisD7P9aIjdPFPcSwjexhmYd1Jz7cYYq8+kA+cPi9FG2zXHqFnRP5tNdI2kRjqX//YlMSft//p7zOVjg=@vger.kernel.org X-Gm-Message-State: AOJu0YxqKh+cAz/YfA1kSjBBIycovXWTsrNyHENOLZP0MuTgKpXvXVnu 3gzmKB3xDsXCuxyzw/ji4yn7VDvXg2s6yx5G359U810P+DOLEJbXo46+jM6ydiM= X-Gm-Gg: ASbGnctSvobtpf9tjyZwKLd0hYzuhXBOlV49nJuyD3e2GFmwaicDzi416K1AmwrV1Do fpGZdjMWG46zxoPiB8ZZc+QAEZbNQ1Ily74EKKdm5gLF1gFrclbwchjLTR7q91Rja1PYcdFestl Fk8zTwz/7hz7yslJJlxpMWIm51jj2B7+0VGhtdbeNUExDQzXkgYy0WdTfST98q48WAGL689qFpF +nPNtMSNjWDz1ffEKVsPXNJWjjj0olazStaqrOrbIc8ErvhJmpNYfwfbZJgWFGjWhXhLzVLZjv5 QZCYZII= X-Google-Smtp-Source: AGHT+IEO825ZkHmQ8WbNulFejsXgznfD4+7SKpzDZn/YojbRukVDHPqQhfbjIfNIrmAwUbEE3pnONg== X-Received: by 2002:a5d:47a5:0:b0:38f:3914:c624 with SMTP id ffacd0b85a97d-38f58781f55mr5039562f8f.7.1740045440994; Thu, 20 Feb 2025 01:57:20 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:e2e4:418d:7462:9cf]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38f259d65dfsm20509174f8f.64.2025.02.20.01.57.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Feb 2025 01:57:20 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 20 Feb 2025 10:57:03 +0100 Subject: [PATCH v2 06/15] gpio: sim: use value returning setters Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250220-gpio-set-retval-v2-6-bc4cfd38dae3@linaro.org> References: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@linaro.org> In-Reply-To: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@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=2221; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=4rRdeo5YWk0LkDw22ljFe5PNudUuy3MdO7T7WRZ6ito=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBntvx3/w2vZ+VX+sZyEcAAzR8U8eEIF23h/R/rQ nJt8/qfdyqJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ7b8dwAKCRARpy6gFHHX cqNrD/42nR+ZlDZgK/qtK+xulfHuQlHn1AY74smk8hxOmlX3ZsoB4nZolvlRRMsX+P0DfqwCDbG J5JYBjhHwqDP/c+YfLhY9SCtWfkdJuA1UdDQaAr7cwZ01DC9hXiy38tBblCKv44f5LcLfH8RfqX QfyiWuMJY6Ie5hQ2gsf/p9x27Elo/eGrSY2OAiJ7gvfSxYvzKA2cMWOSO59zjay+MkKmGy2RZ5n +GDDHubZbGBEal/fHOdUk1Q7sp2XUB8HUbJeIey7XL94Ekjk9yIbgiRQ9NTgWqNK4Nc8Tz8k2jo M8tiBY7EIli7uc8aicwuSGvXenO9Sp2ZBPmsK287HhSg5/7ozvfPCpl0gnnZnUYuy88GliCQm22 ETOIZqCr1SzgL0yJ44v4XBQmjRIH3KO2DbU3RtVTzD3aXzamxhlG7uftHefUbf1Z96NJtVLEM3U HrBKivK9Pk/DEOBBFe5yekduG7/zoCqcdYvddme29mgGBY+tdcW1doJ5X87NIQSmkcpzLR9yaaX A4fa9f6AD+VzjzOf7wk0+UbWQaZr/KU1wcIpghAZYueP5aWVaYfJbZFOMXxQ+siycBX5RwFxjWd pFSS1n0y2aoncd0L48jawQGiNmh77JnoR2ZnQShBVJ7P6Ma7xNM2dNfXIXk/noTkAvoa6J1iNo7 gFZa1YKr/EtsdqQ== 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. Reviewed-by: Linus Walleij Signed-off-by: Bartosz Golaszewski Acked-by: Uwe Kleine-K=C3=B6nig --- drivers/gpio/gpio-sim.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/gpio/gpio-sim.c b/drivers/gpio/gpio-sim.c index b6c230fab840..b3baa7e872bd 100644 --- a/drivers/gpio/gpio-sim.c +++ b/drivers/gpio/gpio-sim.c @@ -119,12 +119,14 @@ static int gpio_sim_get(struct gpio_chip *gc, unsigne= d int offset) return !!test_bit(offset, chip->value_map); } =20 -static void gpio_sim_set(struct gpio_chip *gc, unsigned int offset, int va= lue) +static int gpio_sim_set(struct gpio_chip *gc, unsigned int offset, int val= ue) { struct gpio_sim_chip *chip =3D gpiochip_get_data(gc); =20 scoped_guard(mutex, &chip->lock) __assign_bit(offset, chip->value_map, value); + + return 0; } =20 static int gpio_sim_get_multiple(struct gpio_chip *gc, @@ -138,14 +140,16 @@ static int gpio_sim_get_multiple(struct gpio_chip *gc, return 0; } =20 -static void gpio_sim_set_multiple(struct gpio_chip *gc, - unsigned long *mask, unsigned long *bits) +static int gpio_sim_set_multiple(struct gpio_chip *gc, + unsigned long *mask, unsigned long *bits) { struct gpio_sim_chip *chip =3D gpiochip_get_data(gc); =20 scoped_guard(mutex, &chip->lock) bitmap_replace(chip->value_map, chip->value_map, bits, mask, gc->ngpio); + + return 0; } =20 static int gpio_sim_direction_output(struct gpio_chip *gc, @@ -481,9 +485,9 @@ static int gpio_sim_add_bank(struct fwnode_handle *swno= de, struct device *dev) gc->parent =3D dev; gc->fwnode =3D swnode; gc->get =3D gpio_sim_get; - gc->set =3D gpio_sim_set; + gc->set_rv =3D gpio_sim_set; gc->get_multiple =3D gpio_sim_get_multiple; - gc->set_multiple =3D gpio_sim_set_multiple; + gc->set_multiple_rv =3D gpio_sim_set_multiple; gc->direction_output =3D gpio_sim_direction_output; gc->direction_input =3D gpio_sim_direction_input; gc->get_direction =3D gpio_sim_get_direction; --=20 2.45.2 From nobody Thu Dec 18 01:48:52 2025 Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D699A1F131C for ; Thu, 20 Feb 2025 09:57:23 +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=1740045445; cv=none; b=W9gne6md9RrnENVeO1Ym4TwRBpFGDcv8mU2ty+5FN52WfCE5RGD3LBZ5rYmUfFoT08CPG6HBUjGzeSpZEyuW4ACBaaJcY9xROHTLrO7qQxVdlNPvxGCxGQsXTZ5wAke18SG5kc5B2u36hnE25ebRZ0oK0U2DCT/tjHelOGLKlV0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740045445; c=relaxed/simple; bh=1UjJdHNauFVk729dL8prbwqVaPRcft/vij4kOr5O0Us=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Q0GnEuTwLi/gAH7yDckft6THLiov4KXwkWRqqEryo+3IBny4nu10eM4qzrgb3pMAO5f6yFQcag2n2HwqkiApzHX4E698MZWVbZoUfDhHa0xfTxHzg9dKiI9HsXRMSuwgpYB6xVcHL2c7R2Hz3zExJvcZp7LK4Plmg2iEwj5i6DA= 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=haR/VqJx; 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="haR/VqJx" Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-38f3ee8a119so351054f8f.0 for ; Thu, 20 Feb 2025 01:57:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1740045442; x=1740650242; 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=t60BHMJdvNDDOtnPhpQoRS4maFib25qiqZp8WGeStdo=; b=haR/VqJxZlbQHpcvpZE45NXXDq9yD+ZSGzRg/ahCSlM13arO3BzJGmqALcLbfJ4LEa //OAP8ciPyqUtv8QlNAp/hU21BQ7FLD8OjHfq2cLDgnQXSp+IZqNbBqyIDJHAowmsM7l q0xNbvf1PrXRAO3XtPmQVw/zR0rR4TDhVDTpYo0Q6+fW67YHA9Ere6PSW/2hceOV1RPA hd8auheF9U9sJTLKmIxfawqidmg1ltYsNsMqt2V+egn+b9MPotRzRWOwCpR0fxaq11Ps bMnYqQUFk6CySNg1h0TwJviL+QbSO/L0DorPzGdF1npYzmRxmXYe78wszGLAlohtkBHd zNVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740045442; x=1740650242; 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=t60BHMJdvNDDOtnPhpQoRS4maFib25qiqZp8WGeStdo=; b=tchfzFBBe6x2C8FLU6IBMQGHFey+CQV++/uPRHJX0rU5SBmEwa7asMaRUBkcCPZ+me nsSChpVnNgoxIzC5rErhNEZgDeEh739nyD5YCtuvXshhXobSWqwBTCekJPxLZewWlO4J tY4q2AJX8T8R80bg4h2YUvWvft+5sr5JPxGQAszbIGxn32wyQIXOy50WzndvSXqAqnHy ba9HLaV4OXC7ajpQT4yggwZFZBNDTe/LtCHwcW0XNjOFsL57ffo1eoadSpqQOmsd9ohK L1Yqa6FHp8DcczNHfTbOZnxAGtvTY8kIiSWmvKFsr4riNKW82PkVwkg/Kna1z+bw7kVX Jwlw== X-Forwarded-Encrypted: i=1; AJvYcCWQQPkQ36bXCTotM0yCVBKzE5FfmXQlehozLNzcGaFz8an4yYzV3O4BGoqIXGqgdjx9Bf+DcXY19/PD230=@vger.kernel.org X-Gm-Message-State: AOJu0YwFvrRAPkV/m/4jS7p/ag3pc0TQRoQL1ICoTwURZK0Ol/u+m2l1 Bu4iIM4MRFIH3VeLq5PUO2AZaorFGP33D5LBKpcIw2SkuB6g5xrCeKVgMj0KJ60= X-Gm-Gg: ASbGncu1f+5Ek77ISToYMbuWybPZRGFiti9GKeY3tIf3KWX9u2TdXl02LFJ3ud/9fI1 c0pcIx9q0s6kvuNUmrTdx58HLFH4lJesFHlj/z7X6gm0vfGUZiDyWBF6iWkpkgGwuO6on9dDZ9G 4Y36A+mGsR76UntchTj0CR4pG8MMVr33g4y7VPgVL4uHD2nKbrp4DVxY2iEWm4PZqI9GP9tZacS xMtsJ8XrxMVa3DMeUHw9qfcKL1da/YSprZZ42jAbslfG4UxrZSa4ayKmz7pMyoCL6ZIKXCQuUc3 WdHAu28= X-Google-Smtp-Source: AGHT+IE5QNqdk+twDbNUhvP7+J2lq1T3+ma8ljzAbCQVNS0Hh2jrL74ho7WbRmWA2rdWE+z+Ft5e4Q== X-Received: by 2002:a05:6000:1568:b0:38f:3de0:d16 with SMTP id ffacd0b85a97d-38f3de00e0amr17797107f8f.52.1740045442100; Thu, 20 Feb 2025 01:57:22 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:e2e4:418d:7462:9cf]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38f259d65dfsm20509174f8f.64.2025.02.20.01.57.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Feb 2025 01:57:21 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 20 Feb 2025 10:57:04 +0100 Subject: [PATCH v2 07/15] gpio: regmap: use value returning setters Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250220-gpio-set-retval-v2-7-bc4cfd38dae3@linaro.org> References: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@linaro.org> In-Reply-To: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@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=2801; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=ajHrG1VX7C/nWZ29Fct+EqLq889nbEm3K33yBSsLTBo=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBntvx3jLBtB7CENnstPrIM2B6PKOnXqNRsn95+M +Ysn0UAcuCJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ7b8dwAKCRARpy6gFHHX cu3nEACkzb0x+z65N8v2cg/+XtzldFO8IMZ7sxqO+ofgpVuC2p3poQZkoXBQNSD3rRAJoAEaP2h fZj9B1uTFDXuaP3XWUVIeNg6Tb3BUVAJ5uwuO9JzLlZHtLJArF3Wx5/VhJVy0KQ97dDVr7ajL+4 S4Kr8EIM3L6yarxaB8c2hBCsXWY/8mVuAY6Jg39mGx+NRAhLhZB8KbuPvlK5p+DoZ3/YesI8dJf wjVFLk+2EFN9L2iUT9cNrUQU/j/fvkcg9aCk6HbV77JSe78PC2ed0j/ZFM43BBx8hC9t0vFW2jB DAyPfWd/aOpxeGJ5NVR3IeZdJEwtO/MYTqI0lMtR89T3FWv7akfxxjPEh92yqa6me291NlcvEbC eUHjJOYjp6T97xW4GdkPc4eVGnqquCjanHWTg7p3aXg+8FjvAGqQpFqRpfGrsaY4xDXzcSZ7tRD +ieRexxMnVl/mowKqnIxrf362PtJwoPsTU/syw2ZSNYZfR4JM3jS9P6rQ87DtyUqOMN11v2mGx3 9E+cEiG8fVhi0UF+IiYQSjXxx5hzkwf670DQbEwMUTXnzDob53slbA7m8xx+34n+PEV2kEzUR2y GRXCmfJ+yahems9vTdzDJXFAsa08Jdm4eK5g2WgkWiXWdd7i7k1IK6Dm22lrbjZnoYNNhh6Bzqx UFMz1oRfr/Mdr7w== 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. Reviewed-by: Linus Walleij Signed-off-by: Bartosz Golaszewski Acked-by: Uwe Kleine-K=C3=B6nig Reviewed-by: Michael Walle --- drivers/gpio/gpio-regmap.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/drivers/gpio/gpio-regmap.c b/drivers/gpio/gpio-regmap.c index 05f8781b5204..10d043596247 100644 --- a/drivers/gpio/gpio-regmap.c +++ b/drivers/gpio/gpio-regmap.c @@ -81,33 +81,43 @@ static int gpio_regmap_get(struct gpio_chip *chip, unsi= gned int offset) return !!(val & mask); } =20 -static void gpio_regmap_set(struct gpio_chip *chip, unsigned int offset, - int val) +static int gpio_regmap_set(struct gpio_chip *chip, unsigned int offset, + int val) { struct gpio_regmap *gpio =3D gpiochip_get_data(chip); unsigned int base =3D gpio_regmap_addr(gpio->reg_set_base); unsigned int reg, mask; + int ret; + + ret =3D gpio->reg_mask_xlate(gpio, base, offset, ®, &mask); + if (ret) + return ret; =20 - gpio->reg_mask_xlate(gpio, base, offset, ®, &mask); if (val) - regmap_update_bits(gpio->regmap, reg, mask, mask); + ret =3D regmap_update_bits(gpio->regmap, reg, mask, mask); else - regmap_update_bits(gpio->regmap, reg, mask, 0); + ret =3D regmap_update_bits(gpio->regmap, reg, mask, 0); + + return ret; } =20 -static void gpio_regmap_set_with_clear(struct gpio_chip *chip, - unsigned int offset, int val) +static int gpio_regmap_set_with_clear(struct gpio_chip *chip, + unsigned int offset, int val) { struct gpio_regmap *gpio =3D gpiochip_get_data(chip); unsigned int base, reg, mask; + int ret; =20 if (val) base =3D gpio_regmap_addr(gpio->reg_set_base); else base =3D gpio_regmap_addr(gpio->reg_clr_base); =20 - gpio->reg_mask_xlate(gpio, base, offset, ®, &mask); - regmap_write(gpio->regmap, reg, mask); + ret =3D gpio->reg_mask_xlate(gpio, base, offset, ®, &mask); + if (ret) + return ret; + + return regmap_write(gpio->regmap, reg, mask); } =20 static int gpio_regmap_get_direction(struct gpio_chip *chip, @@ -266,9 +276,9 @@ struct gpio_regmap *gpio_regmap_register(const struct g= pio_regmap_config *config chip->free =3D gpiochip_generic_free; chip->get =3D gpio_regmap_get; if (gpio->reg_set_base && gpio->reg_clr_base) - chip->set =3D gpio_regmap_set_with_clear; + chip->set_rv =3D gpio_regmap_set_with_clear; else if (gpio->reg_set_base) - chip->set =3D gpio_regmap_set; + chip->set_rv =3D gpio_regmap_set; =20 chip->get_direction =3D gpio_regmap_get_direction; if (gpio->reg_dir_in_base || gpio->reg_dir_out_base) { --=20 2.45.2 From nobody Thu Dec 18 01:48:52 2025 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.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 72E291F193C for ; Thu, 20 Feb 2025 09:57:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740045447; cv=none; b=gelWoWWEKd/NzwKTanvyO0TbEt3PbEkQCSIgddoBZ3/x+HBEhTcd3nyP0qYoZu6HjKa6wcJNE+Q2uBOisewIoVSbVUT/lWQHUZHXosae+aGw8Kf9c2iMpi+vUpfbI8fF7u4rZAxzz45T8ZJ/VKS50ukryv5ZXdg9dbYUav+dEPU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740045447; c=relaxed/simple; bh=Qr5pwyTIYbjk01m1nWcOh0U6ARWx1aMge7VsSHImj44=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qcpsUohAwdcnbTvIypn0DkkwsBWU6bNK4SkJbl9es/gPMEE4LKu8o50Yv2c+PO84Pv2WXl2BftPzM8kWk9RLrIIiQ4fzXiwq0jL/Pk5HGphmRaEr2016peF7q+qP/RIJHGqZopMIGf3HpR9T0B1eVaoKCAaXzRLrIAbxehobLmE= 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=nHhsFy4J; arc=none smtp.client-ip=209.85.221.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="nHhsFy4J" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-38f22fe889aso557581f8f.3 for ; Thu, 20 Feb 2025 01:57:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1740045443; x=1740650243; 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=DRQWT/40wRe1LtAoTuTfhDYRu3pa+ZoZ5Qsdiw8EHU0=; b=nHhsFy4JI79kmd4iL4AD7OBAsAkwW0aN5v2bH5E4XtuhwuKW8YKv5CMCbB2S5amq4N i77fqUm+UMOPwtE2BrO3//gnHZWIcIPSjVBRoVlPJJmydRH6bVGeKmy5Q2ApO7PSjRjq Bhk+EzqJzgauAeuDyP6ZP5gYZovVY2cpaFQEDIc8dhuLda02pmnvtvMhKzFEe9OFvlBf EVgm3blWi8d+GCK8L6KIgXHfJiGOqt2Jj8n+5wGaef8Lcby0U1boxW/gYCGBKFrITsfD Up3tNB7UEkGI0Q8vbeyHgCSPJ0UGSpeN5wbZCp0so1a0vtoX2DfXcrgYeeoylCs7V8Bz U+7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740045443; x=1740650243; 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=DRQWT/40wRe1LtAoTuTfhDYRu3pa+ZoZ5Qsdiw8EHU0=; b=Sx4RR/Jw6W+SjiYhRDLAKQgMfUvJR8VsBB0tJjSooRNp9Fm6TMgeltWQ0eT9dnSAjz RLFCpIr5ue+YCL8zATX5T+6p3Cy3SrjFtqiBH6FI3hoasxWQ3TxUQsSS0YMocFSxWmT7 7wY9DQSEJjh8rxudO2ne8QF/C8PTSFK0z/P0cn8nhRWNZVwynkOqDIEB/Ay51dGbX5HK 0xdP4s/dYRo11HkFvg9Tl3dV5GwLJs821TUW05VjaRrkrzc/ZA+xAcYsY4wi07HWAcRi 5TFtXVOOQo9FyqlvAOoogL/2lsgQUSJ8RnpU1Rxmpoh36No1q2vVZvlz3tD88d/aD3ud FckA== X-Forwarded-Encrypted: i=1; AJvYcCXVV9XaswR7oRqAoPbyagPJ39MRgUcjE5BsDGmgcdEYGLdbov+hU+vd0SO72S6siqFBbZrTf7PXEFiRBeE=@vger.kernel.org X-Gm-Message-State: AOJu0YyJ3++uFunyfutMmpkzeZPKwaA2xJiJ2Iu9O6onIl0KLaJ5i+Ys /um2T8+jATZ+NRtCLTFGACKTh7RV1Y2eAIxK/UXX3blHrZxA1RjUugNp7OQr3mse4zSKUvnJAIz lwq0= X-Gm-Gg: ASbGncvYmyBBicThGHfqaabLWcijpQGMfdqLM/ZBiGNkGtdbngcIf0U8EmUdqfeEC5h qYBgKvsY++qnHR7LhBC+gAZU6wRudEDJzfsBUZvCrBu709KFUA68iCkkd6Y3Alh8WP5Xs/0/lOF YT1FujdwyfHmy8+lxgLd1lsGQgITJlBJmcDyzpwTXSenYncVeskTq/UBowLRRXoojBB4+rlWYWg YeVo6MusoPoMMiMCuNs1eJ5+Erbc5SZdMrw6Lm1HfjWnhsW7gkkMHHc735LVQbgXy8toF7P/+9m H9eGpXg= X-Google-Smtp-Source: AGHT+IGMc8a6w4j0f9UkXAHVvmbrKOHEpblOMX6FMz7z4xWAnlIvmn6QVgRsrx0JWETrLFKa3k15Jg== X-Received: by 2002:a5d:6d01:0:b0:38f:4e30:6bbb with SMTP id ffacd0b85a97d-38f4e30bc4amr16083443f8f.25.1740045443567; Thu, 20 Feb 2025 01:57:23 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:e2e4:418d:7462:9cf]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38f259d65dfsm20509174f8f.64.2025.02.20.01.57.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Feb 2025 01:57:22 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 20 Feb 2025 10:57:05 +0100 Subject: [PATCH v2 08/15] gpio: pca953x: use value returning setters Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250220-gpio-set-retval-v2-8-bc4cfd38dae3@linaro.org> References: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@linaro.org> In-Reply-To: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@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=2868; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=PWWwH3jWRDV+J2gbtwA4aaIaSxrs8feWIIuZBq3fKwk=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBntvx3La0AzR0/zW3p7Qhs7aYoHGhxKh42MsNbm LsTtWxTEKyJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ7b8dwAKCRARpy6gFHHX ckOhEACN03Lw2yVsYZ1UNUGUueclAo4JL7Ybm0VydAuE6evO7Ddce1rWKs5G0KCpFo4YtWTZa8q jE27Z2CRomApbwE3pWb+6JJkpH6eIHffkCFSbc7dMxDDefWudTptxm0ao1ZCm7ciRaeEXZuhbfP BgYgy7NruPadKiG/Y2usyqAzK6fD6QNcQ4137+j1RS5K0nkar8MzWBcDN9r8kHw7+nSbel6ljTm cnSFpxmjOPIzCfLfIblUhx/n2gQqjQNmbeg6aDqNGvCPSu2wrT7VfXRF9/cRaYsnpESCcwIIng2 aqNCLmIoD3/ikP4F5FCdouk5xNN8Twoo27OzL9lvaQs/cGNpA3naXPbNXBAIBszz08Ly5Cq8/g8 kbgHXe80goK2hh3xrNLBz331GFiYppaUeJBvx4p4g+8BUMvcycxgNCG9ge+xSou+iwkDJ37HbWV oDMT/PGslPLJTPM1P0qiz0777fN/xePWI3oWjCEj0YLLZB4R5W3VsJrM08+/PO5dJahGyLDIfr9 jrxclJ+9VZQlew1hztiWhgdRE84sioe2hEU9Qe6NKiil1D6StJzW4JKR4korc/JTNUTWO9G6iDl I46IJR08nzAoIGq1azqdYk7TzC/s1ztVF5A+pNWzedZ20sTOsz6pArtNOeed/JcURlnRUsxTY5N MFiNwJUSmSKmn4w== 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. Reviewed-by: Linus Walleij Signed-off-by: Bartosz Golaszewski Acked-by: Uwe Kleine-K=C3=B6nig --- drivers/gpio/gpio-pca953x.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/drivers/gpio/gpio-pca953x.c b/drivers/gpio/gpio-pca953x.c index d63c1030e6ac..442435ded020 100644 --- a/drivers/gpio/gpio-pca953x.c +++ b/drivers/gpio/gpio-pca953x.c @@ -570,7 +570,8 @@ static int pca953x_gpio_get_value(struct gpio_chip *gc,= unsigned off) return !!(reg_val & bit); } =20 -static void pca953x_gpio_set_value(struct gpio_chip *gc, unsigned off, int= val) +static int pca953x_gpio_set_value(struct gpio_chip *gc, unsigned int off, + int val) { struct pca953x_chip *chip =3D gpiochip_get_data(gc); u8 outreg =3D chip->recalc_addr(chip, chip->regs->output, off); @@ -578,7 +579,7 @@ static void pca953x_gpio_set_value(struct gpio_chip *gc= , unsigned off, int val) =20 guard(mutex)(&chip->i2c_lock); =20 - regmap_write_bits(chip->regmap, outreg, bit, val ? bit : 0); + return regmap_write_bits(chip->regmap, outreg, bit, val ? bit : 0); } =20 static int pca953x_gpio_get_direction(struct gpio_chip *gc, unsigned off) @@ -616,8 +617,8 @@ static int pca953x_gpio_get_multiple(struct gpio_chip *= gc, return 0; } =20 -static void pca953x_gpio_set_multiple(struct gpio_chip *gc, - unsigned long *mask, unsigned long *bits) +static int pca953x_gpio_set_multiple(struct gpio_chip *gc, + unsigned long *mask, unsigned long *bits) { struct pca953x_chip *chip =3D gpiochip_get_data(gc); DECLARE_BITMAP(reg_val, MAX_LINE); @@ -627,11 +628,11 @@ static void pca953x_gpio_set_multiple(struct gpio_chi= p *gc, =20 ret =3D pca953x_read_regs(chip, chip->regs->output, reg_val); if (ret) - return; + return ret; =20 bitmap_replace(reg_val, reg_val, bits, mask, gc->ngpio); =20 - pca953x_write_regs(chip, chip->regs->output, reg_val); + return pca953x_write_regs(chip, chip->regs->output, reg_val); } =20 static int pca953x_gpio_set_pull_up_down(struct pca953x_chip *chip, @@ -693,10 +694,10 @@ static void pca953x_setup_gpio(struct pca953x_chip *c= hip, int gpios) gc->direction_input =3D pca953x_gpio_direction_input; gc->direction_output =3D pca953x_gpio_direction_output; gc->get =3D pca953x_gpio_get_value; - gc->set =3D pca953x_gpio_set_value; + gc->set_rv =3D pca953x_gpio_set_value; gc->get_direction =3D pca953x_gpio_get_direction; gc->get_multiple =3D pca953x_gpio_get_multiple; - gc->set_multiple =3D pca953x_gpio_set_multiple; + gc->set_multiple_rv =3D pca953x_gpio_set_multiple; gc->set_config =3D pca953x_gpio_set_config; gc->can_sleep =3D true; =20 --=20 2.45.2 From nobody Thu Dec 18 01:48:52 2025 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 3D34D1F03D9 for ; Thu, 20 Feb 2025 09:57:26 +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=1740045448; cv=none; b=BRmmnQooqrkDvZQ0wXfguGTiWmfBmrUmy7wbQiQ6PN/LQs0WPuWCBwd2WbTCyVJ8OurkfnWVezdLZYQKSgkq1TpSZuZEr8dFvmRai0+q/S21Jz9/aK9kS4eSXtK8MEVgUN4m/pydrVW+TrqbIg1cce+ccEgZb7/LbLyimZq0pp8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740045448; c=relaxed/simple; bh=/Ff+/OqEGQuwjPFFhcefFTdmHFXyIRq7IO5qzezURx8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=O+OigZcYAxgSV33m2/US93VwkWuePYmxBgJCw6hhkY60Gw+2eJS9/8RiGIWanXcRNA8n6laiJN5HnCanOAB+oeHGM8ovBN6X5NY+Fi/JWMem5VuEMwnjrLubhEyzFsWQ/kwiF3ecJYdWpoMmtmG7xnQiJyHFe/hBkFAbttnVOI4= 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=lF/40cZk; 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="lF/40cZk" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-4397e5d5d99so4073825e9.1 for ; Thu, 20 Feb 2025 01:57:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1740045444; x=1740650244; 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=z3oFs5X1gZZFfJwu6ZVPPpOgjFQqYIa51CiYnHWU6rw=; b=lF/40cZk23GWXGP+Ozm7DdTACO5J/ft2/P4LX0nIddVVufDipr72qxEghOIXKc/1VK u5udNGTkjsjU22Lj+39Br68HGUuXB3+ZhldVq/S3oBDqf0Cu0Ku80GC/XYER0IuWXXWM mH0PpzAPc/TWQWVFRz1QNHL2LJqxgb+JuTTFD2v7p7euURrSrMerRL3PXCDkGAJ8AG3J dpieCf4sj40qWKvOV2OMqKzTsJqO6cG4OQ3lsMm5S6d98nTO+v379wgcTEYrMWKupGQ5 rAIdx6du1fizEb9U8e8y3st6uCp0/eASfrVqUdpqBQNFgMyZCuptpi2kOnX75d6q9Jlo ZU3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740045444; x=1740650244; 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=z3oFs5X1gZZFfJwu6ZVPPpOgjFQqYIa51CiYnHWU6rw=; b=TvIP2KA2WXP9wORiK5/A5zc1gIas/EexMK2fEuRhePAA4C/sZ97r2wUumG7uxpAwKw lOwYJqmppWZQBEZHcixL+9DJ19u5+z8B737E5WAsv13/KthZ9/S1tzZa93qWoWII99hG s60g9kZ57xXLkSj8zjq+y/GjgzC9Eas7QSHLUAEeA45JF2wRvW5Pkt2+qRx07W452KP7 LLKzOS4hGWcuW281ykr6FCMfZwYA1keyo8oeI6z4L4JWNAbp9cC40XF0nMu4ifeSUoAG r06PvbHeGl1pqwstvNVw1JFHil1+dS9BwD2BfS3n0OcIZDCb4F6rRFWWnuugR43X10I7 LAFA== X-Forwarded-Encrypted: i=1; AJvYcCV9rJqjk3W5mR25xZhjGWjK1Q5iHUSqShiRdSw5RfZF/8vYPZKKEDMAx7uLgNQVczue7SpXmz287gc4hic=@vger.kernel.org X-Gm-Message-State: AOJu0Ywx1SeOV1J9cqEB8wUJLHi8Rq9KslpmcEsdm3hHGH9vXawbJFnO RJTIJQcxVmeEE+Iq9YUbAyHgDWyeUwXpz4a/9vaHQDHmurwj9OTGfni7SiyjnOE= X-Gm-Gg: ASbGncuGR0BR+iSXjh2U952kx513+9iYBy4qo/pQYeQ9lEBc8LQ9g1T/DXR4dSEM8ar j82V786OCaY9PRFCoaWpcNECz5mqE5Nbz0gjPYbcG1D0fQrHM68i3Ehi2naDSoPDEgjl/m2PgHk Liztbo5/Z3PPBbFh6Dul98N4k2wGbXdcqm9QzbH/9V/qBU7zHUrSpGyRjpMHF+sDpzhXnCRMTdI oL2vjngIJAS8KsHQkjLFQHoPDp/EGjH8T6i4efYkYYGtG8hQFY8o3ZIJV0h9HIw0wEr4Nyx5QG3 eohN38Q= X-Google-Smtp-Source: AGHT+IG4koPMq4d/kWM7jjnrpRi9hoQupFNWVEn+zQLxJivAibFsoAtG2ivLHXahXFe6K8N/OdF6Ww== X-Received: by 2002:a5d:6d81:0:b0:38d:d0ca:fbd5 with SMTP id ffacd0b85a97d-38f33f44dd0mr14690055f8f.22.1740045444507; Thu, 20 Feb 2025 01:57:24 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:e2e4:418d:7462:9cf]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38f259d65dfsm20509174f8f.64.2025.02.20.01.57.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Feb 2025 01:57:24 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 20 Feb 2025 10:57:06 +0100 Subject: [PATCH v2 09/15] gpio: mockup: use value returning setters Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250220-gpio-set-retval-v2-9-bc4cfd38dae3@linaro.org> References: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@linaro.org> In-Reply-To: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@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=2196; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=VSIrrAiqQMzfQ2RbViWZHWMw01hZZbPdlbrH76WUpQM=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBntvx4NBRhTZZI2IRa0wAEudNdvd8vSNspG+iH8 dtwq9oSmI2JAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ7b8eAAKCRARpy6gFHHX csvZEADWHatjtI8neovtNs1eGIVpjfWxIf7F+HiDhKB1vkA1LMogCSvwre1xJKttLVZslsCJP3F 8yOYbXQAj/aqKBGC13mJ3yrxSeCapTZfQv5nZpDJvIGH608V4sZfgCcOHpxpblSTKlTFa0GRpYc XxMyMzEoC3wrk1CsRHJ9QLCxJrbzy4XfnaIB2fE+nQcp7IRMwFJx2zAyYmgaHEkHYDMywCK/oh/ FnWJB08mBD4+33MsigaqIQooXsCqNGFOesCDbzgbXAL4TzTwThT/NduCRd/OiQDKFV8SWDxQkP8 Zb7fiGHyBKyvfzXXhiiQkBxRBeKu9eRMmbyz1hmMwWItepl4bHqnfdMo3aXyC7Cu5BbQKmKQMAC 9dYkrkiDmmfA4JIDPOl8PfXqCrjc0lAR0E1CbtfZxgO2tSvZO3Lumo5Sk68dq76dKim79LwG0GE 8PLrgUDZ6TGEutIvsWTpc2TyK5VOlB6b98cVNsIfKtD3DVjbiIaQzclhTOHz6SIQntXNrGyuC12 Bw7AfrGZSdOIfxEIRZVED3+StIZTF6cOE8t+9yhzmOYkEu0Yjv0/sMZRZ4JiIMqjLUxzjPoCKEt lGegrPH4EL6PrFla/7/Wx0WijYG5bG8Y7XbPiRGNuwDJYB//uXgd89WusYYRN/XzY/+aGBgKoge Im/j3WznzGNx+IA== 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. Reviewed-by: Linus Walleij Signed-off-by: Bartosz Golaszewski Acked-by: Uwe Kleine-K=C3=B6nig --- drivers/gpio/gpio-mockup.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/gpio/gpio-mockup.c b/drivers/gpio/gpio-mockup.c index d39c6618bade..266c0953d914 100644 --- a/drivers/gpio/gpio-mockup.c +++ b/drivers/gpio/gpio-mockup.c @@ -122,7 +122,7 @@ static void __gpio_mockup_set(struct gpio_mockup_chip *= chip, chip->lines[offset].value =3D !!value; } =20 -static void gpio_mockup_set(struct gpio_chip *gc, +static int gpio_mockup_set(struct gpio_chip *gc, unsigned int offset, int value) { struct gpio_mockup_chip *chip =3D gpiochip_get_data(gc); @@ -130,10 +130,12 @@ static void gpio_mockup_set(struct gpio_chip *gc, guard(mutex)(&chip->lock); =20 __gpio_mockup_set(chip, offset, value); + + return 0; } =20 -static void gpio_mockup_set_multiple(struct gpio_chip *gc, - unsigned long *mask, unsigned long *bits) +static int gpio_mockup_set_multiple(struct gpio_chip *gc, + unsigned long *mask, unsigned long *bits) { struct gpio_mockup_chip *chip =3D gpiochip_get_data(gc); unsigned int bit; @@ -142,6 +144,8 @@ static void gpio_mockup_set_multiple(struct gpio_chip *= gc, =20 for_each_set_bit(bit, mask, gc->ngpio) __gpio_mockup_set(chip, bit, test_bit(bit, bits)); + + return 0; } =20 static int gpio_mockup_apply_pull(struct gpio_mockup_chip *chip, @@ -445,9 +449,9 @@ static int gpio_mockup_probe(struct platform_device *pd= ev) gc->owner =3D THIS_MODULE; gc->parent =3D dev; gc->get =3D gpio_mockup_get; - gc->set =3D gpio_mockup_set; + gc->set_rv =3D gpio_mockup_set; gc->get_multiple =3D gpio_mockup_get_multiple; - gc->set_multiple =3D gpio_mockup_set_multiple; + gc->set_multiple_rv =3D gpio_mockup_set_multiple; gc->direction_output =3D gpio_mockup_dirout; gc->direction_input =3D gpio_mockup_dirin; gc->get_direction =3D gpio_mockup_get_direction; --=20 2.45.2 From nobody Thu Dec 18 01:48:52 2025 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (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 3565B1F3D59 for ; Thu, 20 Feb 2025 09:57:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740045450; cv=none; b=KdF/uTqusMl5iO6G4di3k2KiEF/x/240gvejIBpxLwipDNp+G0EC0rb+5KGXQPUqvtpLCMEPyJxo5FGatEDy96aefrPX/xQVxC8ncZN5ASOa+0KeNLClX/3EhxRBiGSfnaCfw2MgVsllsh1ubktx+5qOQgEl91C9Sv8Jh0hIQDU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740045450; c=relaxed/simple; bh=TmP0k5HPQCdqL389PpvIw7B7tK6qz9kZjvgEhu4fMyw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FEFHKJp/srtBuVQKtk9W20LeS0kDPDKpfIWsbt2IFJHXJu1sHx1wIWBGc6W7wcK16Uz3sappxDhwB1bCmkSY41JXGNWP5RcVtomY6r8eqZaoZrfTM5qeX4af9D9URImjwO+AfHk6VOITE3rKyNZe++itGPgnPj/5RF7ivFQzo7U= 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=yesm87V2; arc=none smtp.client-ip=209.85.128.51 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="yesm87V2" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-4394a0c65fcso6617435e9.1 for ; Thu, 20 Feb 2025 01:57:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1740045445; x=1740650245; 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=HuziGQJzOkugtw86e7xiCP6KsOvSbeOt4TTE+TF82Rk=; b=yesm87V2/4/5djCYvasUBC4tBdaf7+9aOGOOe9ik+Kzb29LD5AncW8kVsp+fubBRQK N1wPttEJ0r3vJ5OGMPn458b3VBlzIquFidfXVC4FbJ4oqtdrIiq47dwhrWZG0okLWCrD 2aVo3VtbGPlyz3+MCOw9TD2b2aim6hu2vQJ/Y/RlmrFtZoTgOaZ/HK+fHNLGOkPLpDpw qSO3gNiHuWkpXwkxoLyVdZu9umSfzlSykaA5lj2/su4nfrOfIpowXqooofdLnGNmzzi/ SGnl5vkcgbRec2Rd+4a4zfRJnCCuX64frf6gQxHaMq3G8QEFMHPcHTwxLw5cnE2u0sST aPFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740045445; x=1740650245; 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=HuziGQJzOkugtw86e7xiCP6KsOvSbeOt4TTE+TF82Rk=; b=E3gICnvcJyEicsesdHPEzYey9uXrxOx7J770il4Oy2+K98GP+TzdrsmiXl1ZmQv9O+ gjS3u99EvxftFRXi30hXRFO5EVi17wqZ3ir12jjOqCfvlKJMAfoA7oJNSgQ+3RVWmoW7 9vwqcom7p3RhdJDRWOyVMSQI/uMJFAGyAF3ugy4JlN0IP4Pub7Bm1EFHkmhvpjMdWN96 ZyWf6+H1FMDl/TjsFCA20eiGpAVbITdo5FvG9b2trVdbA4yGW4deMhFIuOqU1lHU6UzT ItXqfdvCZd0hUoq3PITvhC5sBrQf34lYu/M31XAigiWtuedV4WHhP9D3MBIKTEamRBU2 0EDw== X-Forwarded-Encrypted: i=1; AJvYcCVUNiFMJvZawLeDJfTnciIHYX4jPK9D1e/B8u3EBhZV0LtxrGhZe/ypEmlAKiKZPm2b8LOxFEWHmE+mR5k=@vger.kernel.org X-Gm-Message-State: AOJu0YxuXXL6W4toHB2a7v8CRWyQIaSeeE+qecJ27aV7EYX8jyRTjsOR Qg5/qM107ZNJMeVKocyUo3lc5wUk6iNoDZ7v3MTP/ThNCa1R6NGS8btFicwhC/4= X-Gm-Gg: ASbGncuUiiRI0UGShunwgQAIvaeuwooIroWMWRWJEk6EFKIDNUK81AUnx4z8jopB5Tp uP39icTqa1LFvWDGX2SIGMEGhhcaXsXVf2gxYxCOhAVRGQffI9CyV0/9Hj64U8tKkhENIcwc8eX TKzj4+UINxJocytuAycFiMAFAmpuw3nri0VNi19HasDVI/bnxHecQd0END2QT86WN4esrIjzwZz 3gR7bLBmLc8ZCIFcaPt04KbrHmXmS9bnY4PoGDsLbmy6ChBahQnUS4SqfwqpnL7AKmRaUdYadGW NpuPH0s= X-Google-Smtp-Source: AGHT+IFOrPsNvEbI/Noy1nmxNX4rgXj6wcOKeR3h7rQc3D1++qnkx4fkWCuudcUVv84PvYBRkH3+og== X-Received: by 2002:a5d:5f4a:0:b0:38f:4244:68cb with SMTP id ffacd0b85a97d-38f42446bfbmr15072009f8f.12.1740045445473; Thu, 20 Feb 2025 01:57:25 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:e2e4:418d:7462:9cf]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38f259d65dfsm20509174f8f.64.2025.02.20.01.57.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Feb 2025 01:57:25 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 20 Feb 2025 10:57:07 +0100 Subject: [PATCH v2 10/15] gpio: aggregator: use value returning setters Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250220-gpio-set-retval-v2-10-bc4cfd38dae3@linaro.org> References: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@linaro.org> In-Reply-To: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@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=3579; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=OqXkJ8DPtuYa+TTJfkSkhfgfLmb1fOijT4/aUsZYin4=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBntvx4lc+rIQA1AST2W7JzHn5CdLSLvvk/qQor8 PiwjxZXolmJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ7b8eAAKCRARpy6gFHHX cvNmD/9VdT4q1IFgjnloyALjT1AZSjG7reetkWWQFXORYbCj26z5DqIA29dlYo0PNWjXAz5SiH1 hfZV8gDBtup7shnRcgPu4aAXMJUjG12GsxjfM/NrnpPWzVlwABvlNptGgFjXrkGb1Y/bBED26fZ 0NRVY7xE1Wn+wXJMaLT/J6692rp3T164No03/2EgCT8jHCyUd83h66t3JirzUNTv1mdNpowdP83 zWaD751xUgfA4BE3g4fYZejxtTamrz2VyT845mHdZ6O3EAvJdBuKhaSOufxeI74zcN62faeRib6 qrqX2hft/gFtsZP3VFGf1V8DRnN6LTa3yioMTviOUTmJU5dSOUKsliuenttcxEXTc8+AyeMDe2Z RAYsZ1yEds5Q0t7dvgAbVn4uVpA+20FeelfxGzFFPbKwlP6ttvj3K0QhTxEynPAYWmSZVhFOFFA fPnHMyMEZtTqbrUF5wPAoXjFz989kvzggV7KFxARaPV8icz4vBzNv0tU7hPsXJsTdbGyMt1iJoO Rs0HWIGElzTfAEeUs7aRahlndrZvzwQzbo0tvN8RY9AfuJzl1lJd3h39bbj4+4BlF2jCfGc17qU /e3AIIT+8eqV3z6bhOdhN1PiA7N6y3r2aQI9ojjQXyRCiCqBS/aHMs/MTuT5is7jWBWfLGBIsR+ tw6uqZ0FKEqovwg== 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. Reviewed-by: Linus Walleij Signed-off-by: Bartosz Golaszewski Acked-by: Uwe Kleine-K=C3=B6nig --- drivers/gpio/gpio-aggregator.c | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/drivers/gpio/gpio-aggregator.c b/drivers/gpio/gpio-aggregator.c index 65f41cc3eafc..e799599a06a1 100644 --- a/drivers/gpio/gpio-aggregator.c +++ b/drivers/gpio/gpio-aggregator.c @@ -358,25 +358,30 @@ static void gpio_fwd_delay(struct gpio_chip *chip, un= signed int offset, int valu udelay(delay_us); } =20 -static void gpio_fwd_set(struct gpio_chip *chip, unsigned int offset, int = value) +static int gpio_fwd_set(struct gpio_chip *chip, unsigned int offset, int v= alue) { struct gpiochip_fwd *fwd =3D gpiochip_get_data(chip); + int ret; =20 if (chip->can_sleep) - gpiod_set_value_cansleep(fwd->descs[offset], value); + ret =3D gpiod_set_value_cansleep(fwd->descs[offset], value); else - gpiod_set_value(fwd->descs[offset], value); + ret =3D gpiod_set_value(fwd->descs[offset], value); + if (ret) + return ret; =20 if (fwd->delay_timings) gpio_fwd_delay(chip, offset, value); + + return ret; } =20 -static void gpio_fwd_set_multiple(struct gpiochip_fwd *fwd, unsigned long = *mask, - unsigned long *bits) +static int gpio_fwd_set_multiple(struct gpiochip_fwd *fwd, unsigned long *= mask, + unsigned long *bits) { struct gpio_desc **descs =3D fwd_tmp_descs(fwd); unsigned long *values =3D fwd_tmp_values(fwd); - unsigned int i, j =3D 0; + unsigned int i, j =3D 0, ret; =20 for_each_set_bit(i, mask, fwd->chip.ngpio) { __assign_bit(j, values, test_bit(i, bits)); @@ -384,26 +389,31 @@ static void gpio_fwd_set_multiple(struct gpiochip_fwd= *fwd, unsigned long *mask, } =20 if (fwd->chip.can_sleep) - gpiod_set_array_value_cansleep(j, descs, NULL, values); + ret =3D gpiod_set_array_value_cansleep(j, descs, NULL, values); else - gpiod_set_array_value(j, descs, NULL, values); + ret =3D gpiod_set_array_value(j, descs, NULL, values); + + return ret; } =20 -static void gpio_fwd_set_multiple_locked(struct gpio_chip *chip, - unsigned long *mask, unsigned long *bits) +static int gpio_fwd_set_multiple_locked(struct gpio_chip *chip, + unsigned long *mask, unsigned long *bits) { struct gpiochip_fwd *fwd =3D gpiochip_get_data(chip); unsigned long flags; + int ret; =20 if (chip->can_sleep) { mutex_lock(&fwd->mlock); - gpio_fwd_set_multiple(fwd, mask, bits); + ret =3D gpio_fwd_set_multiple(fwd, mask, bits); mutex_unlock(&fwd->mlock); } else { spin_lock_irqsave(&fwd->slock, flags); - gpio_fwd_set_multiple(fwd, mask, bits); + ret =3D gpio_fwd_set_multiple(fwd, mask, bits); spin_unlock_irqrestore(&fwd->slock, flags); } + + return ret; } =20 static int gpio_fwd_set_config(struct gpio_chip *chip, unsigned int offset, @@ -533,8 +543,8 @@ static struct gpiochip_fwd *gpiochip_fwd_create(struct = device *dev, chip->direction_output =3D gpio_fwd_direction_output; chip->get =3D gpio_fwd_get; chip->get_multiple =3D gpio_fwd_get_multiple_locked; - chip->set =3D gpio_fwd_set; - chip->set_multiple =3D gpio_fwd_set_multiple_locked; + chip->set_rv =3D gpio_fwd_set; + chip->set_multiple_rv =3D gpio_fwd_set_multiple_locked; chip->to_irq =3D gpio_fwd_to_irq; chip->base =3D -1; chip->ngpio =3D ngpios; --=20 2.45.2 From nobody Thu Dec 18 01:48:52 2025 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 22D541F4191 for ; Thu, 20 Feb 2025 09:57:27 +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=1740045450; cv=none; b=rstTh0fb4aE6JRGWRyjbev38kjCGQltEp3Tqv6z8qivp4c6L5OfmJ8EB9VEk2u8ShBCmsta4DX0qBLwvpgKgrrLMY31oZfbStcRXX+M7IblcWHnuBGzEcuKANdUlo4gR0eCx6u5loaHcW3eq3vOGHsFWeRqn/g+2TceR95pgpIM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740045450; c=relaxed/simple; bh=Enef4cJKJS09Gj6WI9qsS02j1I+VlFZmtf1bwlaQO2k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DPjedz68kwr9VIlnLq22/UJm/l1Xzu5mqWyBRRY8j/VuCzN4bon/C2NqL6qX/I1NQauqsrQ9o2q/7EHC46JmLQyQFVNqIcgelzv1XPDQ9w5nNxKyjOv1Vp/7mRAUTdKwr2px/v5YZsOMdR4UkOGcRppH0GtqrsgznocBNpZoTgo= 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=I47cAUjo; 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="I47cAUjo" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-38f2b7ce2e5so379951f8f.2 for ; Thu, 20 Feb 2025 01:57:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1740045446; x=1740650246; 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=kFj3TAoXlLf9as8kjepaZLFMmsnL8wmxW74MRLbaHG4=; b=I47cAUjod9XpoGxsStU9teiqtTdTY2/DAHu+Xud9TBbt0LbfN50XYWOINACsYNh4HN Iu92HaU7PuusVkXRpG1W/Nej17c5RNkln1I06saCEpKaUmbyM/ke3EQoM18kxMsK6470 C0eknDd6UyhwQKXV5YAsU/B57ztRXH+Rnk4kiQZVFBamcQe5vYkAAM/hq3wtZK7oZWt/ qHF+v2XpHVjz+m22cKgDLBlGQtdfXhRbESqaFt80n8eSejQF6xRY0qCl1CXicDPdm7fC qEhGHBIXa0S+6fWqKCV33rMqPkANwenjuKgWL19PLGl2RJFrPYlhGaWFTceRMn2Lv6sV B+kA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740045446; x=1740650246; 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=kFj3TAoXlLf9as8kjepaZLFMmsnL8wmxW74MRLbaHG4=; b=u+8t6Gfvagd4k4bWrqFLsC5VXN81erAQ82uDMveIZm0ofzE881hPs1wQ8Uorxvv0nu Y+MxIDpmPPgCyrFTAzfNt5yXnfAJBEDqVvFcVYGpD1woXh5xfkfpFt7go51Me5FPN63g JSSZ+aveuXzGVlPVxtVWGT0qC/XpJOBDY/nCE99wG7tOjZ5OFY2e/tCODWsqAkJRPY82 l8CYNMXlc7tbnpqZnDkVVXzSLLgBr8NvZGceBQPJNbRgH3aAbsZs50tpavdTbpoHMje0 EIuD25ae/X9sa2PTyJY8b6bWeznWUB959EidLK1mcOV8sYN4+mWslm0p+UNpa0flZjo1 FFrw== X-Forwarded-Encrypted: i=1; AJvYcCWgANLyd8ViyZvm9xcmbnquYFoicENY55ZM0q7mV5Rg99yRgBL4AWiNWTD7z9mFUXT/BKTbYjQsFYYpW6g=@vger.kernel.org X-Gm-Message-State: AOJu0YzHvdNGSsb1T9Nal/wZyg8CXwpjdMWj9fG34LNNb0gQ66M1dfxn Vywqo/YjlS8PvADz9OxJkJVSsbhDn+6b922jr+sa/8K9jcs6q+wMhMTgZexFH1c= X-Gm-Gg: ASbGncszuvqXJkXcAMCwFI5wC30x6Trk+EswS3t4bUIYXQRHqW6ck2JXGwnM/Hy1JQ1 1PJ5Lx/x6XkF1o5dvln9hVmUH8QDEm+nawmdXjQAPiho4q3WMeZgKAjkD0mPSwUill/k3IpAZjc GypHROobu2tVlFKCO877uJtRwmi1iseJ996Z5xXF1mV0baCFoZabyuEbbRzLzbndhuP2HxD/MnD ub6WUG4CbamnjDzrwnQOvotdtpaXR17nsboy4/Oc0VnfzUjigtkO0BCveDrSZQJ6/m6JEj9mENv KT2s4V4= X-Google-Smtp-Source: AGHT+IHZ/4ypng7/Mf7BbqmPLwdiwtlI2cnP9YvswrAy4gvWNgi3caTDM9umvq55d4WsrVVwRuSdaw== X-Received: by 2002:a5d:6484:0:b0:38f:4c30:7cdd with SMTP id ffacd0b85a97d-38f4c307ec0mr12116273f8f.37.1740045446427; Thu, 20 Feb 2025 01:57:26 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:e2e4:418d:7462:9cf]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38f259d65dfsm20509174f8f.64.2025.02.20.01.57.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Feb 2025 01:57:25 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 20 Feb 2025 10:57:08 +0100 Subject: [PATCH v2 11/15] gpio: max77650: use value returning setters Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250220-gpio-set-retval-v2-11-bc4cfd38dae3@linaro.org> References: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@linaro.org> In-Reply-To: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@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=1923; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=ud09vHY02XViXfaw2eD51Q7LQfSy2x8XEgnHffEdPlg=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBntvx43gFxRicC6+87AczX0jflaVhzn/pJ1X/Yl opHyNglcAuJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ7b8eAAKCRARpy6gFHHX cj33EADiL6KzJWR2xcC82uIKj9EZSjz7C8AjeaQwc2mKPIROG9GioV6OMq2j86QkRiJQnvkiD/i 2hWL8lgmpiZFmQETu5W3ai9InFTFYQQvFerXo0RRrQwqVU8lcMPiHik7AgnVhWVYwUCKCo6hYnT r4xoc2iyt4ntv6w5eGTuwSvYuJ2p1h7wFsD0YKH/Dm3kcPNpOnRdDBM5fRVCZYb4PYODF8AGPkp rYXGaubNMdHXC5fiMlF81+aNnsEi66/6gUwMbqHrk/yJxSGOxLHEGWouEYDZYG+ppPJpnYb380R QH+njw9t3PkK9BlAAMoKC1uyP3LyqupMURWDts/z9Ii9GxSq/FX9CUaFm5qqA6BrtNs+cISrDeg TFlwwLv5wmawBjv17Pl4OxD9zEptFilB/yWdq5iXQKL6tGkjesuafFaSViWT89OF9+ppi37Jm5d 76frI2dD+X9fkbxEf2FdJlu5e3Xi12HmU2cQpb7gQ1W7DY8TBg2j4muuHaTInEP1MCu6JpUGdCQ bXk1FIvPJfrtkx4AcnxPQ4+SPasoh9UFeG5JvOKxQuz2X3M2zX79BUY9EZO6JmZTot1XibuKlwn QzGEc8F3ACLDGoRk92hnWp5T2Gi0PocBr/lDatZ6iw7AOW2YJ123bh/+FA7zMs5tboXiN6xYbVc 3ivtZzaqOKWgH3w== 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. Reviewed-by: Linus Walleij Signed-off-by: Bartosz Golaszewski Acked-by: Uwe Kleine-K=C3=B6nig --- drivers/gpio/gpio-max77650.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/gpio/gpio-max77650.c b/drivers/gpio/gpio-max77650.c index 3075f2513c6f..a553e141059f 100644 --- a/drivers/gpio/gpio-max77650.c +++ b/drivers/gpio/gpio-max77650.c @@ -62,18 +62,16 @@ static int max77650_gpio_direction_output(struct gpio_c= hip *gc, MAX77650_REG_CNFG_GPIO, mask, regval); } =20 -static void max77650_gpio_set_value(struct gpio_chip *gc, - unsigned int offset, int value) +static int max77650_gpio_set_value(struct gpio_chip *gc, + unsigned int offset, int value) { struct max77650_gpio_chip *chip =3D gpiochip_get_data(gc); - int rv, regval; + int regval; =20 regval =3D value ? MAX77650_GPIO_OUT_HIGH : MAX77650_GPIO_OUT_LOW; =20 - rv =3D regmap_update_bits(chip->map, MAX77650_REG_CNFG_GPIO, - MAX77650_GPIO_OUTVAL_MASK, regval); - if (rv) - dev_err(gc->parent, "cannot set GPIO value: %d\n", rv); + return regmap_update_bits(chip->map, MAX77650_REG_CNFG_GPIO, + MAX77650_GPIO_OUTVAL_MASK, regval); } =20 static int max77650_gpio_get_value(struct gpio_chip *gc, @@ -168,7 +166,7 @@ static int max77650_gpio_probe(struct platform_device *= pdev) =20 chip->gc.direction_input =3D max77650_gpio_direction_input; chip->gc.direction_output =3D max77650_gpio_direction_output; - chip->gc.set =3D max77650_gpio_set_value; + chip->gc.set_rv =3D max77650_gpio_set_value; chip->gc.get =3D max77650_gpio_get_value; chip->gc.get_direction =3D max77650_gpio_get_direction; chip->gc.set_config =3D max77650_gpio_set_config; --=20 2.45.2 From nobody Thu Dec 18 01:48:52 2025 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 05BDE1F460E for ; Thu, 20 Feb 2025 09:57:28 +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=1740045451; cv=none; b=G0z39P3ZZ3/JeIW4+2yiG/wC5MEcBBAIpg8Nwc7Q3qgk2TvZy4kWUmp3sMZ8QNnFSrMGOgGytGj9R09ft1gWHD/l8lTR/4IJbqt4rcZLqoL+KwNoyFyBi3VjeQ4ro/4+mY7Yx+eGMUbEYMNMidTb4pFUTgBhXC759J+OGdi9+jI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740045451; c=relaxed/simple; bh=oNMBdRZqUQCqeYdhk0xPtgNTqSfkbaSpML+Q07cXQ+M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VVHyrCJcD9Xn8D96xEesQEezPtpdb+EjWqDyqrvdGn43HodwKkfVHSY9x2rwgpsyFD4O15ggGgK+a1NBpS/bbJBwTRMB9PxExDIUiuy8svw3JadDMysaC9IJsFd7IfeDqucZuV4ZWXNLLi13UH3XIixSbBWsFCNpHXntDXnKN1I= 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=HMbU8BGC; 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="HMbU8BGC" Received: by mail-wr1-f50.google.com with SMTP id ffacd0b85a97d-38f286b5281so354790f8f.1 for ; Thu, 20 Feb 2025 01:57:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1740045447; x=1740650247; 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=qfqQhzIbPAlLlEplcRJK9DNV0YYD2STndi/P+xKMNHo=; b=HMbU8BGChMxsHNWcb6TRKA9VYOrIbgG8+3iOQ2mIL0UXswWshpJMpyNPbykVDQubEJ /sZkIUV41pd5vsC6WTkBViYc9ozXm6mT+RJMFSIgK39XMc2asyA0Uk2XZsWt1dDHEQdE EvRmk/x/jtaFGSH1NFQoiK/ZHezwVhIwWAFYPokKqLpIjw5CqPXUxQlXmNpmq1XmxtEI v9S2DKINCSwVKr0vcqKWvSlPnUY/hiKyU8PDp5K2HICiUes+KLOLYHIXjIMgrtQZLnY2 cD4IsKiyt+cVTI5Z0a5VQlNyp2LY/443zcGZqgF6LDt7i1ZgTcBcIM3R25R6dJL1G+EM fkRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740045447; x=1740650247; 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=qfqQhzIbPAlLlEplcRJK9DNV0YYD2STndi/P+xKMNHo=; b=FfvddZLRfcHQJdS9DoTXSpSs694twaa8/BU/M6tP+m/67eQ7QW8nkqGNxN6HEIdu42 AExGtz52mg2ZuYfuVkFP93xoY/LW9CO8M2mw3a+nPiYhzd7SX5EhalNTp+w+Xa/LFOMt gIVNVFdNJ6jMoHci9TD3qMP9mhsBoTMf+kjiLpeQQ/btLOJLKLE83ct28XzK/IfpgxND MxIN9tp45STBxebyLes6GteY+SU+PI9pYf2CAhc/EwXGulUs+9HdpoYKx+89ySE/cdom HlhzV1BQ8XuYQFAVlXsfF8gA1DJwCXqCx/SYelHmrI4W/JpnJHmrCimu+1H1nXe7YLu/ lzTg== X-Forwarded-Encrypted: i=1; AJvYcCUbTWQSmeSivq5dNkrtnPX4PMNa7CMs9hYvJO+WfQ5nIbpuQQ7ePbNl32Ndx6En7dFDum5/KFx+bl1+0gQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yy0r0F4mEcOykmx868bBSYexGMf8s0foL82oBFk6DbUswqFTT17 VV99y12igSxvYhGqAMxwpj4Ji7sF7yekDurDl/51pTnFxqpNiIQafdpSkmGy8Gg= X-Gm-Gg: ASbGncvm4MyWjqm8cH7un7bBdrks05AsJrsiViodRgmRjnoMSTM9XF/c9qyzt7nekod sV9c64JUjCltOjDfKnn8pYhsaGYbmPndMQSRyqQv0SEouK6+SbTMQTwOsa4atMp3pJgwIDn8N3i IQeCKdM+h7YNj+jdW+v/ianOxAxsvoT+v9S3UHZOeJgBT8yv22MjKsO4RH7Yj7eJ54iGx2wNxJT jS0VmpfnBhGTwiTwxhq5HgRg/QhGD7RjhXM1iW0UeM/MM9dhWIq5+UwPC2ECso1ryFzpXExHBmL AJ8pVJc= X-Google-Smtp-Source: AGHT+IEesjZmZYobgjhT/KsvHGhJ4/uJ96MmYOnkUp8TEDV29vEvKyBue0fV4qqalBxAWQRNOOTd1Q== X-Received: by 2002:a05:6000:1cf:b0:38d:e6f4:5a88 with SMTP id ffacd0b85a97d-38f33f1b5bemr12896873f8f.12.1740045447286; Thu, 20 Feb 2025 01:57:27 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:e2e4:418d:7462:9cf]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38f259d65dfsm20509174f8f.64.2025.02.20.01.57.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Feb 2025 01:57:26 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 20 Feb 2025 10:57:09 +0100 Subject: [PATCH v2 12/15] gpio: latch: use lock guards Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250220-gpio-set-retval-v2-12-bc4cfd38dae3@linaro.org> References: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@linaro.org> In-Reply-To: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@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=1738; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=GmNqVVnBfzS1ierDztOpK5GOdKITHuunFEXdWyqcpSA=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBntvx4XkZq/c6JUz5aMuMrXDx9YfeWhQw7bw089 7pXZO8o7LKJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ7b8eAAKCRARpy6gFHHX cuYnD/kBzNfzsHamKa/Gd1E9IV807ikL7snAjFvcGlR5Fpu6zV4Z/tVOtkCEkLy9BQGuLOKfr45 r8GzkZxvFSKPn47eDyxDaO6lVGhKsfeD+O+wTpnaevueqRyPcFlkp2mDoTjKfpq5bFc7W0lxhr3 Fzp6dr9ktW2FtwTwfwE9A/DyrDQT7Wiw75gapDVOiGlFad7x8pohK07RCsjWtPbqAsfMC2K4m7W Hl26bwR/JQkixA14VLJzr1l2udnwmRiILOn1K6CNRntIx3nO95r1hR5sygIt+c2/Z7PYlL5zTZ2 /sT6bVf11YoyJ9S7dx+bXeZPNUys37FoEq8YvQ7ytv5K/EzDSCcUxSPqFEDMKucsUL/Weq7Zgxv BJVCJDJTNlTPgymJNlh+wUDe6r4RA3h0lDANZEAt9Y2rUbR/rk0V7+2wdhMxP09TeeW3zhsDswd 851NTRV/XUSf8O6TaOlQXzLpm6/OqPLs3+k103mBZUrwj6yjmUSiVbOCLZJsu3dXrVzFc0qi++n EzkyVwBTMyPO/5f9hxkimzhZXKLGvctXrnhDpjH5Hp7EYOUN9i0gOtUGA5cqOf14kVjTTkIMpoF Oq2Ywv21u8ELAXkkyMYLAZ/d0/TPEwNFwnMBEUPIK4OQzrKQ25QU89ub6S1Ok8JN0mBuVCHJgYh O+Z8hE7aBdYSXEg== 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. Reviewed-by: Linus Walleij Signed-off-by: Bartosz Golaszewski Acked-by: Uwe Kleine-K=C3=B6nig --- 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 64174ea7d008..f227966c50d5 100644 --- a/drivers/gpio/gpio-latch.c +++ b/drivers/gpio/gpio-latch.c @@ -38,6 +38,7 @@ * in the corresponding device tree properties. */ =20 +#include #include #include #include @@ -94,24 +95,19 @@ static void gpio_latch_set_unlocked(struct gpio_latch_p= riv *priv, static void gpio_latch_set(struct gpio_chip *gc, unsigned int offset, int = val) { struct gpio_latch_priv *priv =3D gpiochip_get_data(gc); - unsigned long flags; =20 - spin_lock_irqsave(&priv->spinlock, flags); + guard(spinlock_irqsave)(&priv->spinlock); =20 gpio_latch_set_unlocked(priv, gpiod_set_value, offset, val); - - spin_unlock_irqrestore(&priv->spinlock, flags); } =20 static void gpio_latch_set_can_sleep(struct gpio_chip *gc, unsigned int of= fset, int val) { struct gpio_latch_priv *priv =3D gpiochip_get_data(gc); =20 - mutex_lock(&priv->mutex); + guard(mutex)(&priv->mutex); =20 gpio_latch_set_unlocked(priv, gpiod_set_value_cansleep, offset, val); - - mutex_unlock(&priv->mutex); } =20 static bool gpio_latch_can_sleep(struct gpio_latch_priv *priv, unsigned in= t n_latches) --=20 2.45.2 From nobody Thu Dec 18 01:48:52 2025 Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) (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 7C4201F584D for ; Thu, 20 Feb 2025 09:57:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740045454; cv=none; b=s+vWDaCVbB2wLfaKlVV5wom9FmB9ONWBKuuWyuCDB7H/ur8ItCuDXdEVnkHTwMAnAPcL6csKT7v9wnQFj4ylsD9bfhVxa4aMZ7wIBcD+Dnm0sk1CmFPsscI4CuSDUpWP6Ky6KuzBawnnsIZ/BEI+ZlqtwFCqQyW1HZKpB8tnKQE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740045454; c=relaxed/simple; bh=NnBp0w2M0mG/BKyGhs8L3ZC35EcY3EHpBmbW/9My7kE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rowSd+/58oCDeM1ofg4Lkk2NWrxIflmkh64WQ+XYWhfpXr/EA7SQNfOt5EMWc+tcNhHxXCWwRYtEZCn/+80t4S1nTxP92tbml3pClhq7km+IvGJR8x/Iun/USZst9tlaASAU+ftEMzdTJF9lBO+Tk6H38wRZpmbR5/zuF8G8qTA= 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=hJS9EAFo; arc=none smtp.client-ip=209.85.221.43 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="hJS9EAFo" Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-38f2f391864so376825f8f.3 for ; Thu, 20 Feb 2025 01:57:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1740045450; x=1740650250; 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=AFP3BWLRoarTDuzkFu54gj+7G/B3xWzwQYpBIvwtezE=; b=hJS9EAFob9UDnPWThgmkDIfZnqARjfWWBFh94AoyjaLz8gn8JFJRcggneWvvNpn+Vq cAhtfGKb+xSdnB2RJDB+Y07es7K7opJZDVmBQyrt1hN9VbZnZFyqd+xGLCRM13+8nHgQ MlKId7iSomwPILzJ4L/pJC57j7P6idogtHf20FEbAbSEZ1A/AXs63BCUot3MDitfJP4y pAE749gMTvz0yC1hPcQn2Z02Pcp+8reIDAh6Wn8LeFZYEqJDBOMpNZ89+37gAk0Pg06z b6RUme4MkN0TREOmGwuTvB4M/0Y1DBRGKNeLEhIMvO3WPi1s92w33hjv41yA5sIIzDpu zFqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740045450; x=1740650250; 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=AFP3BWLRoarTDuzkFu54gj+7G/B3xWzwQYpBIvwtezE=; b=UwtYmzxbO4O3iAup40baevXyCG30Fm284JdBNmo2wZ9oTG3SHSWjqB9+FYIb+bGqQZ Wa2tNgVtjDhCBu7K8senSlAsDS0soSy1NJgBHT5unOoYgweChf/sAbKbQbB/by7vlfXS D4FXndrXn6vvmTJ6TGl0PY3iyNF8Lrj3mQsdX9eGB52VZaLyYLhwmEPpajtlj/9NOOUW UJScVwuszbDEjsVUKTPidrY6Y0WJ6xFRlQjFxcTXxtdaDgZm7uU1ols15taRmk3wySW8 +oODr9b9vI5Z4/VKxhXEqaOve1zhqBT7NYlT8dwyMSQ8pjSfBimHrt9ObdIB0XTG1D30 MbBw== X-Forwarded-Encrypted: i=1; AJvYcCWUbs5YnVA5rJ25hdKlAYSqJ84iacV4+OciuZmbNlm53dhVSFqWWUXRJikGULWbezfnr2E/m/yMp2WJuss=@vger.kernel.org X-Gm-Message-State: AOJu0YzeWECFP0msEBQ4iaBZYxV2wrbds8yuS60STiHwV5hkKcKGKyMM +o81YIP3CRp/lfL8DFxmLSLA9rmx1mLf7DOUdxV+0NGXKZ2PMc+xKNt2EYkzv+c= X-Gm-Gg: ASbGncu8WagAPYvI9l2Bn7zE24v9Y5ieGJvVvUFL0SOoj0BSEluSK+q6ooC2/B13zBI A6ndzwAuUA8iBziaFROssiUS77wgdeDB1OUnew7+q/roK/eQehpPp8Mrho3CqqFhohUH4ZgerVf wiwoKG11YOZCuyhDNdbo+ApxBF/XMiGkbG/GRvz97ydsgMa5kVpX2JXL51YzKQWftx85OPn6JqO pEO3bQLxflcauDdednkTQTgDMzGE7oXYJw2xSWZ/TYVYNJphUwiEh308qNI5SNP30fIUj8QxX8x +otH/5U= X-Google-Smtp-Source: AGHT+IE7LTypG/R5CN/TOyG8sAm7zEA+o+H1HuE4eBAXwnbyVrvVBKMEJ+Ek6z9WOj0N2K/PYrT7oQ== X-Received: by 2002:a05:6000:1888:b0:38f:2403:8e98 with SMTP id ffacd0b85a97d-38f5878e43amr6319178f8f.20.1740045448193; Thu, 20 Feb 2025 01:57:28 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:e2e4:418d:7462:9cf]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38f259d65dfsm20509174f8f.64.2025.02.20.01.57.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Feb 2025 01:57:27 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 20 Feb 2025 10:57:10 +0100 Subject: [PATCH v2 13/15] gpio: latch: use value returning setters Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250220-gpio-set-retval-v2-13-bc4cfd38dae3@linaro.org> References: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@linaro.org> In-Reply-To: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@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=3181; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=ukn05BqACGwwwWlKrdsOqwNXe7CEYNGDC4sytyH/SQg=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBntvx5ueiRKxKTIQAcW2Tr6mLrD6qXtYhcR1u5k XFRSkPV7HaJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ7b8eQAKCRARpy6gFHHX cpCuEACVbwS5t2klGPSt1+JkfEwzGorD77BmVXhLCWRBp2jHj3eaLTOwFnRFJ+nbhOlo8EMbUF4 CzMeo8IyJLaRY+286RSh84pQRfc/uHyL5O4Ne7gWw3m0Dl2jz25DHX3N/+ZhUkiBCt5YX6AptY1 0z22+ObBU2GJ+7Z18U3Sa2oi76gvU6isDvkS2L3NXWEi+iCpMt9a18Geutk9bDLaGQ9q55IRuAN 590AhgySSkN72x2Iv8+AahcNOy+rgbrdDMAquN/ULZRTe+cquDy3tyvFm9xtUyp3/oMQRB4fMz5 i0pwWDi++4OhV1wWxisQiHqd6e/vNj4ceCGixC20sR+CbHdiRZckFTVD3dh/ynEO9vRcd/w16za SmNdmEgheWuWg2uNaHj/tPnftRGx3oBXAZ7AAxO9GBePUkobbTUuoRoDIxECpLMZW/Irb1eJA14 FlFe1zkaLtuWMTEzdOlBG+mDC0oSTSFLe+/PhLKhiWyZYEDlbPP2UsosD4MI0ZdfZcdKF4eElQr AM+hPmcCMXFCy0R4A+vhGjDQoNnoYhvr6+hCZGQO8TmLFdMinTMiipJh5OHCL88Ei4hewO1RRp9 QqqY01vdjNpbQHaEoAAoVZ9sjAezt2ktsN09+0jvBiCTxMXZR6LGYA3tM6gOlqei0uhs4sy7Erf gGhtXGADDS8VSOg== 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. Reviewed-by: Linus Walleij Signed-off-by: Bartosz Golaszewski Acked-by: Uwe Kleine-K=C3=B6nig --- 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 f227966c50d5..3d0ff09284fb 100644 --- a/drivers/gpio/gpio-latch.c +++ b/drivers/gpio/gpio-latch.c @@ -73,41 +73,46 @@ static int gpio_latch_get_direction(struct gpio_chip *g= c, unsigned int offset) return GPIO_LINE_DIRECTION_OUT; } =20 -static void gpio_latch_set_unlocked(struct gpio_latch_priv *priv, - int (*set)(struct gpio_desc *desc, int value), - unsigned int offset, bool val) +static int gpio_latch_set_unlocked(struct gpio_latch_priv *priv, + int (*set)(struct gpio_desc *desc, int value), + unsigned int offset, bool val) { - int latch =3D offset / priv->n_latched_gpios; - int i; + int latch =3D offset / priv->n_latched_gpios, i, ret; =20 assign_bit(offset, priv->shadow, val); =20 - for (i =3D 0; i < priv->n_latched_gpios; i++) - set(priv->latched_gpios->desc[i], - test_bit(latch * priv->n_latched_gpios + i, priv->shadow)); + for (i =3D 0; i < priv->n_latched_gpios; i++) { + ret =3D set(priv->latched_gpios->desc[i], + test_bit(latch * priv->n_latched_gpios + i, + priv->shadow)); + if (ret) + return ret; + } =20 ndelay(priv->setup_duration_ns); set(priv->clk_gpios->desc[latch], 1); ndelay(priv->clock_duration_ns); set(priv->clk_gpios->desc[latch], 0); + + return 0; } =20 -static void gpio_latch_set(struct gpio_chip *gc, unsigned int offset, int = val) +static int gpio_latch_set(struct gpio_chip *gc, unsigned int offset, int v= al) { struct gpio_latch_priv *priv =3D gpiochip_get_data(gc); =20 guard(spinlock_irqsave)(&priv->spinlock); =20 - gpio_latch_set_unlocked(priv, gpiod_set_value, offset, val); + return gpio_latch_set_unlocked(priv, gpiod_set_value, offset, val); } =20 -static void gpio_latch_set_can_sleep(struct gpio_chip *gc, unsigned int of= fset, int val) +static int gpio_latch_set_can_sleep(struct gpio_chip *gc, unsigned int off= set, int val) { struct gpio_latch_priv *priv =3D gpiochip_get_data(gc); =20 guard(mutex)(&priv->mutex); =20 - gpio_latch_set_unlocked(priv, gpiod_set_value_cansleep, offset, val); + return gpio_latch_set_unlocked(priv, gpiod_set_value_cansleep, offset, va= l); } =20 static bool gpio_latch_can_sleep(struct gpio_latch_priv *priv, unsigned in= t n_latches) @@ -161,11 +166,11 @@ static int gpio_latch_probe(struct platform_device *p= dev) =20 if (gpio_latch_can_sleep(priv, n_latches)) { priv->gc.can_sleep =3D true; - priv->gc.set =3D gpio_latch_set_can_sleep; + priv->gc.set_rv =3D gpio_latch_set_can_sleep; mutex_init(&priv->mutex); } else { priv->gc.can_sleep =3D false; - priv->gc.set =3D gpio_latch_set; + priv->gc.set_rv =3D gpio_latch_set; spin_lock_init(&priv->spinlock); } =20 --=20 2.45.2 From nobody Thu Dec 18 01:48:52 2025 Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A930C1F4E3B for ; Thu, 20 Feb 2025 09:57:30 +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=1740045452; cv=none; b=La5nMjCCDk+GFprrFURFvpWJOlzmL6RllTWpbBtRCc7yfVCbgP6tV542WjXttY0zHZ0OefcY6zDNrAXQKADzrkauJz3xxVwrCK/jzSEVRUuBkKq+UCHToXWHrcOq0JmFKxFohd8qpteVlR566wxgcbXWbBQD2jtbOn0MUPXmeH0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740045452; c=relaxed/simple; bh=n+TH3QwIs/9uPj1mmf+rdGvSnjCoYaYnZgclWP17JjQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pD0oJ4dgG3KMmK947TMoIR1XaMpNDmF6Xe9tdZ9c7+E9unH/gQzJrfaDWldsNXO7jXnIFZ0LakaiSh7amW1GfM86cKqatWb9GxjBrUSyjXhsb8sxxwAnm7BWYfHU6r3JIt8nbpBy+xrjLV5d89dY8IjBPt8jP88zpAe7tGD4fHI= 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=boAPdFx5; 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="boAPdFx5" Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-38a25d4b9d4so381566f8f.0 for ; Thu, 20 Feb 2025 01:57:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1740045449; x=1740650249; 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=Y8LEMZmaY/K0DBylYOJocGAOmkHBXVSwsNvkehZ97EY=; b=boAPdFx5FiQ/CeolI9NaZVB2l+eOi+rXhnIUwkDQB3B3LPwYXDwOpFQ7A1ewX5N99M t9dorhYdxhxgESEIjkTwr/+1pU0NIFIP08CW26ISdyMjTceebPgRJID5PJW2Yge6iHPe tvm295RVtHY197O+790OO+nOaOPeq3KiCRtUli45pUc1smA4IIZl4NBhkmjshV43r+vc MONOWDuoL0tSqcJ/5kBbeK1GHv36likb55aY3BDohpn5YKP2bwUrMGvn8Xo4dCLJmqvE sfXU1Y3kGXdCHSkf+kDQg8Nmgr7km9RW/Sgsj1fjJj7J5peM+uWyIVz9/kSrvnQHwxEy iu4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740045449; x=1740650249; 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=Y8LEMZmaY/K0DBylYOJocGAOmkHBXVSwsNvkehZ97EY=; b=koRml3UE5FmF752qPXZ6qa7bUAQ4qy5D7bEp9bB4mdK9pe3sili0CLCCWMnT7/Mdqs F3ca+1Mpi6O1nlbT0nqYPpI3tuetC1/q9JcVTVaX01otwCLzmtEH4Bubf4xZ9i9UPrSd 3O9YubPt46KcQhMKd2hssGse9YoQeCjcNceD8rMaTu+PB/SnFrPFmIE7jrKwb/SmUOgC KalQ3cF5J0x5zNMbmkBSweN6+o9CFDpg94puwAYUfdE2VYkrixiGhPFgo9oE1iR7HkEs A/1Q7qEa1HILTDJVVU9eNxHlXEhA3mo/nliBowFP4fQLanNPDN4e8u5SrcZebSGYpzoz M4SQ== X-Forwarded-Encrypted: i=1; AJvYcCV1w0fYsA/qWb3fnUVTxm4oRlxsS/gYHpFuS+3JmEPqJZmB3DjBHAY0XDLzD4I9BPkPvz/e64R9KtUtjI4=@vger.kernel.org X-Gm-Message-State: AOJu0YwTh5E+rqCmkDJ+CYaCrWqaqhE4dWDUx9BUcIewX/Ncu4l0F0sV SXp7hrwkSo+fBcUbgECek7FPR80BkJ7m+alC6AhOdEsvnmQ2TL6mvAG4mAyfIIs= X-Gm-Gg: ASbGncuIV6zdjDQT3APytPFtvKPTQCoJNxMRW2GEpYvOZUuIZVoPMHv59m9TIMpbte0 f1BMyBdcOhCphyjX7dQR9Hc35AQ/0e0ls6mtKx4FpD/s75vf/Z+RmaSimJHAhQp4/cx2ZligZdL M/xYKoWcofsm0LHStZ/PuXpQb/GsSsVwmdZrPIrBXNIDEHnSOHC7l80MaZfaYc9wEhpyipnl/k0 9aANmWgdVa1gDSGLActBLUdqqXsXRYqzg7NoApiffgXahqRzLl1N1lYHsyOjh5dUuKU6X64CAFp sbrgCAo= X-Google-Smtp-Source: AGHT+IF1/LvA44pROgzHToT0t6L3xZPubpp60IAA/AjC9drm7MYOoChVBC/SyvcP70lIVZCQLh9C7g== X-Received: by 2002:a5d:64ed:0:b0:38f:2a84:7542 with SMTP id ffacd0b85a97d-38f33f5234emr19078647f8f.28.1740045448918; Thu, 20 Feb 2025 01:57:28 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:e2e4:418d:7462:9cf]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38f259d65dfsm20509174f8f.64.2025.02.20.01.57.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Feb 2025 01:57:28 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 20 Feb 2025 10:57:11 +0100 Subject: [PATCH v2 14/15] gpio: davinci: use value returning setters Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250220-gpio-set-retval-v2-14-bc4cfd38dae3@linaro.org> References: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@linaro.org> In-Reply-To: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@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=1574; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=P7oRD3XbMGXwz0WyRLRGqXdeOYh1TFkveSpKDzByQn0=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBntvx5OEt1zYeiNgNWPNOyoX25Kx6V0aJbfCm0G GbhS8zbr8yJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ7b8eQAKCRARpy6gFHHX cvIbEACq8bSoC8gkgeXxg0dW/ASqLdn/spq/rhUMVbwUrcsdzH5nk8F2NEwYv6LmgMgMEIM8DOd 4wWz8kx/y4mHMLaZKGaHsns6oqD1j+BTOZlPpGkaLXImu1q8BMoLM0micdESHDOPCV8aQgTstTa HcQhGXJwooDXTPwgJI5hFxwzZYuTR/qCbYgFbOpiWn+pVkafXXZfADijv20ftPmEe/lFnU9wuE6 ozgSzqTC2FvWnSnXuPCfNwEr+Z7DWgPMR3hVE7eaVe3ebdcaA2KedRlhZrxN2NdTrMFwTwUHYp7 EXwH2nEvKdiOiu9T1yDL111Q3qaPueWLGGGCnI5yUu5ljU+InNHselUBSS7vTHTrIzhClJJW8zA Dwln0+jWJH1ixy06por4FLKSEJcyH5TTe2y2JZcY+IaUL93Eok+bEZ059Q3/K7Qv+fAOu/fWTzG +ODYTzaFGqjel+TnWuP/c+vDYI7v4pWEQgM7f0TLDL5Q+B7HfFxvP4lyFKwryn+3IeFnK1VqucU Oequ52gXiNvr5EyU6DCEdsVBEvQomfYpyM1XUyDsYibQTSMZRmRaMx6YD+T69fx2+iilFoSyWjL r2SCxAhZZE2qGsDNzLdJfLU/cNYlD6C2CSwNb+9Hhb27K6784sRnLFHtpdDFG+MYVD1t84VD0AL 6zIhUgL656jrm/A== 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. Reviewed-by: Linus Walleij Signed-off-by: Bartosz Golaszewski Acked-by: Uwe Kleine-K=C3=B6nig --- drivers/gpio/gpio-davinci.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c index 8c033e8cf3c9..63fc7888c1d4 100644 --- a/drivers/gpio/gpio-davinci.c +++ b/drivers/gpio/gpio-davinci.c @@ -139,7 +139,7 @@ static int davinci_gpio_get(struct gpio_chip *chip, uns= igned offset) /* * Assuming the pin is muxed as a gpio output, set its output value. */ -static void +static int davinci_gpio_set(struct gpio_chip *chip, unsigned offset, int value) { struct davinci_gpio_controller *d =3D gpiochip_get_data(chip); @@ -150,6 +150,8 @@ davinci_gpio_set(struct gpio_chip *chip, unsigned offse= t, int value) =20 writel_relaxed(__gpio_mask(offset), value ? &g->set_data : &g->clr_data); + + return 0; } =20 static int davinci_gpio_probe(struct platform_device *pdev) @@ -209,7 +211,7 @@ static int davinci_gpio_probe(struct platform_device *p= dev) chips->chip.direction_input =3D davinci_direction_in; chips->chip.get =3D davinci_gpio_get; chips->chip.direction_output =3D davinci_direction_out; - chips->chip.set =3D davinci_gpio_set; + chips->chip.set_rv =3D davinci_gpio_set; =20 chips->chip.ngpio =3D ngpio; chips->chip.base =3D -1; --=20 2.45.2 From nobody Thu Dec 18 01:48:52 2025 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 176661F7069 for ; Thu, 20 Feb 2025 09:57:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740045454; cv=none; b=OEiqC9aYrQ1EMOZlNnYHV6aclCyGKM4LMN8F4j3JoWg8H6Fw8wt1LYiKUYeVlc5Fa4xjrpnRzIRx/p0bPoZc7YBgZ/jsIxoKPMo1Ss/0DTuHZ5x7O01ZegGFIX696TKYxZzXMBcEC0F0SsX5QRcBdLSjSXjF3O6JplpCzNIVvAM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740045454; c=relaxed/simple; bh=5q+ozCGvBlVKS0bQz6pJVL03Ts8jJDfVfcDaV/932UI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=scUaqBPGC78I8SUsaTiW+++CgU/Oiv4rNW+OFHaUeLhbeIEHs+pvWgVxnh4xc5BOdliSE7x0dMrCL0YQPeGPmUlsj47ZH6xpqmDM0Z4hv9bJqxDAcfui5EL3eF+zabrqp/Vxsndm/l3ASvcK5wgW2FBZM2Z1WVDRjgQhaccHpFI= 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=3VjTw9Dj; arc=none smtp.client-ip=209.85.221.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="3VjTw9Dj" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-38f2b7ce2e5so379980f8f.2 for ; Thu, 20 Feb 2025 01:57:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1740045451; x=1740650251; 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=6Lu5UW1vhx5BjNJKHUqstOFRRMZJhr1Zsm1iPcXqqQ0=; b=3VjTw9Dj1KCllwIcUdImXroqnN0VmcNiRUcAxwE9UCCfWpuFpvNDMnh4Co46E/kAS/ wdfljYB5Balf4WfHyWEGIGY40TRr0nrFuvwsWfwzK53MEkaA5lPY3jet/7Du9zA8KnYo +Q4/WS3iJ3kQfrqUyNyOEd57VEHcIhM1+kXV1qGe06XlycsJfmYO1Ah6kty2cf3W20EL xpRABssOBIjxY/0S7JCXjYZIf5Nm1sKNrh9/qgIYxzLO5xs6vw+3jOVjP8OmLZFzBpj6 4cjeuG0i9fCm6rbQQiSQISqCbiFBdR1UUb5jJH7qVK4ANrQiy7LmzhoZQqpC2xZBOkYS e6fQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740045451; x=1740650251; 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=6Lu5UW1vhx5BjNJKHUqstOFRRMZJhr1Zsm1iPcXqqQ0=; b=LOypQ0jaTKgRiyPGLHLN80brX47EuEPqtldZS3s/5beBRAsSxRdqbj4VxkTbEsJVnC Vc9ErV995FbqbVJfg568/OxE0QZJXLAD8FuuyF57dTWYleEFIVEb9vKkw4Ws7uAW8o6O wRDRj1c/N+WPVvYJ+DFeGrQAHNhSFj12a4PN213TjaP9me6X2vvguonNqEGVIu8mpK7Y yjMWQd3+eGSr1ElXTIeF334cHT3YK3fkaDI3C061lBXXJsh/o7vcE+CJkdhBupO2rAwZ Y9mDMZuMJcbJSsrpxME/MR6fraCTUTiCOfIpkx4OBwkNDt9NLjn2qBsTz/Yfa05h7Esl utFw== X-Forwarded-Encrypted: i=1; AJvYcCUPYNZBCiJWbZcXDZBb3+v6sjU/8T4GjV/YdEC5xBy8O43Lz+F1bQCiNFmGlZa2uldr7mHWcb+132zNVAw=@vger.kernel.org X-Gm-Message-State: AOJu0YwlnBIzAWcTPdok+jEFQpqjb5XsMflM2AyyC9oYNIJPj9XqyoVa qQ3DTCuINjVTEibgE2hQtOJx3ngophiwchjmwOxWkyHlE9LBPlNw52arKpTWQd26XBwmtwQtYuy 4etw= X-Gm-Gg: ASbGnctvZ30lwF6xCbMsDCh+WcIj0d+BOUSrXuCpdoc0BUCOoq4wK+RTt/EI3VAq0Qu 5d8T+2VSGjIBah0K15+v3RmlSo4E1SkXvq0BEQOuG1z7SpWaauwFLqVL5gCXJ0Qoc8RnaV+aW22 p+S9GLsu5RwOnHgokro01i+v9IRHwsfXWmYGBwGvQdDJBNReeKIx+MEy0LVce8SG6Bm2YTbGLvp Rq8i/P/i6B9PWOPm6n8LCnoFKnooDh/BAugsS97JDaHootM/oFK6VVyuz9fIwxSE7OyZ3HAjJHr qIO6bjQ= X-Google-Smtp-Source: AGHT+IHb1/ED6JU7/ktNUR0J94Bg2Zy3TWE3fvNC/JsHAq0gU0pnKj87k9wLwuouk1T7gFwq11Eipg== X-Received: by 2002:a5d:4f0d:0:b0:38a:615b:9ec0 with SMTP id ffacd0b85a97d-38f3417149emr17792955f8f.54.1740045449816; Thu, 20 Feb 2025 01:57:29 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:e2e4:418d:7462:9cf]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38f259d65dfsm20509174f8f.64.2025.02.20.01.57.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Feb 2025 01:57:29 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 20 Feb 2025 10:57:12 +0100 Subject: [PATCH v2 15/15] gpio: mvebu: use value returning setters Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250220-gpio-set-retval-v2-15-bc4cfd38dae3@linaro.org> References: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@linaro.org> In-Reply-To: <20250220-gpio-set-retval-v2-0-bc4cfd38dae3@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=1722; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=YB2ETZzeSuK+oO9OalIOyMZ8Kn0vhHKwlZK7hmcN1ck=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBntvx50Z/qtp4HVTkNMOwSdS2Uq1in7tcnTkFkZ SFXTXNCsOCJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCZ7b8eQAKCRARpy6gFHHX chpKD/9PfUAL5jRXD8svFFPSWC3ozmUvcSqjB921UX/5orReLzAcrYLgy0gExzwMVJocX42+nxV 1x2PcEcjWOnT7lOO9qyDHyq62rHVgKcqsbJbDV9AQf6D5G7MsfZGLmMmt4nD99hT0p77+V6Ki1B iKkruCcOxQZLKyPUpLNDILH1sKdsDDTvYUDh+11sLyDcrM0xfB3+2OOxbIqNBMijpY/3qdEokX4 tG6XWTsyzF5H3RCno4GFkBBy/LS9vcx2AFpNo2+uFs8c+Avy6aiu/MSmVf3gyKkZyKwuGVFQl+5 1drSIMnr3xbuR+JnVZfjvXQySqV8XAJJHB1LjN0hoP5cFO6Xz8unPMR8U/Xi/xIEcKuPLD2eGYg H3OMzO+6ik5Ze049zDV+728tT6AV7o8khI+Lxhk9ITtDIzoFf8mFVCaEimdUxVx4dLlI3YIXVBo PXyh3/+npyr3+FS4FLFGODM9xfvUmTxWXRyvMvmX7i4H08tVB3oLYJmXD7GCfYs2fpQy64USE8/ h/wVyQZ5gypJI0AdkBMA29Od7rU/XAis5kuJIHmz61c+OtlM64kJA58MwHJFHdwci7+7jBX90FR gGhWMq4eFgYZFCoDYV1uteqpLBQEHtRgb/h6E2NARirlPF9RkNlaKP+43kIC4LopEXdOn+HVG/R larCpF3f0JX8QKg== 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. Reviewed-by: Linus Walleij Signed-off-by: Bartosz Golaszewski Acked-by: Uwe Kleine-K=C3=B6nig --- drivers/gpio/gpio-mvebu.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c index 363bad286c32..3604abcb6fec 100644 --- a/drivers/gpio/gpio-mvebu.c +++ b/drivers/gpio/gpio-mvebu.c @@ -298,12 +298,12 @@ static unsigned int mvebu_pwmreg_blink_off_duration(s= truct mvebu_pwm *mvpwm) /* * Functions implementing the gpio_chip methods */ -static void mvebu_gpio_set(struct gpio_chip *chip, unsigned int pin, int v= alue) +static int mvebu_gpio_set(struct gpio_chip *chip, unsigned int pin, int va= lue) { struct mvebu_gpio_chip *mvchip =3D gpiochip_get_data(chip); =20 - regmap_update_bits(mvchip->regs, GPIO_OUT_OFF + mvchip->offset, - BIT(pin), value ? BIT(pin) : 0); + return regmap_update_bits(mvchip->regs, GPIO_OUT_OFF + mvchip->offset, + BIT(pin), value ? BIT(pin) : 0); } =20 static int mvebu_gpio_get(struct gpio_chip *chip, unsigned int pin) @@ -1173,7 +1173,7 @@ static int mvebu_gpio_probe(struct platform_device *p= dev) mvchip->chip.direction_input =3D mvebu_gpio_direction_input; mvchip->chip.get =3D mvebu_gpio_get; mvchip->chip.direction_output =3D mvebu_gpio_direction_output; - mvchip->chip.set =3D mvebu_gpio_set; + mvchip->chip.set_rv =3D mvebu_gpio_set; if (have_irqs) mvchip->chip.to_irq =3D mvebu_gpio_to_irq; mvchip->chip.base =3D id * MVEBU_MAX_GPIO_PER_BANK; --=20 2.45.2