From nobody Fri Oct 3 20:57:36 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 879331DDA09 for ; Mon, 25 Aug 2025 09:48:52 +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=1756115334; cv=none; b=VU01hU1LzSvVr9F2k35FT0ggDTfmoqcWV1s7Xw30r5yJkueuL32C0k6BSrXL6GYdiRn+WgZqCqW72u65AVbBHeYMWmwSCs7htxK2QyVqcDU0q0dRb38EkGgGYR+ZiUIEJJcCfpjtxEdBeb8YaTfiGKPEd8lQ17igDKcj4vY8qQ0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756115334; c=relaxed/simple; bh=weXYtvOJal0gfVKqkBOQyBy266M+SxjHRozHrgmLGEQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ddDOGzHWIV6I/fkeQhF+xf6iEH+9gJn2/yD5xJ3DOX/RHnUXHA+6g+OXSVazrkbnWZJ26B3Bw5O0xO/Ea++d2IKMvkbPKx3ikyLuI+PqP2sYPCQ+Dlgax+1x7yVOmhKrKBnFDwdcdHkDrqcDbUO4v5Y5Ll79Yi9qrW0ng3DZnUg= 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=w+VgnMj3; 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="w+VgnMj3" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-3c51f015a1cso1948861f8f.1 for ; Mon, 25 Aug 2025 02:48:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1756115331; x=1756720131; 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=tpowzIaT1cDZkW3EQqK0abqv+liy/Ny1FTTw1g5xEZ4=; b=w+VgnMj3fcxH/OnWntMR+y5kK96i2FeCGoHda3nR3gZOe3mzaeLbCdxOFHBqAy7HtB U/+GHw13rUJw2Bo/Mx0llCdEq/Fp0NaumM0JustMcVH1HyWder9AchQVwMTpwJ3EW8qI +Bndk+LSxmryJkkOmX4og+M11bq7JqqOcVDg/4Bs33pO1/aZnrxmNNZvm6byj03VR9bP hBdnTqvMGC/Fx7NJNUH18XjbdrS+w8zxNeaDi1VYwNkO3pWL9UTtkAipA3c1ZEmEL8gW shiq81qkbzM32SDilgr5aGxOEKaXzFURYhLGeX1o6bPZPnYc3o/nqoPvr3LJKve5byK/ x07g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756115331; x=1756720131; 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=tpowzIaT1cDZkW3EQqK0abqv+liy/Ny1FTTw1g5xEZ4=; b=V5mL7AxtD0Sg6HMrwYxWUB9fMKqC8kOfIw2pCgvaVPcStuQP9Ch/W8fgwjtJoVaHRc k1OfAasDrU9Xoo7yvy/YqxdMH8OT/3Dx3Ep8SMGowWyv1Z9GsCNRhvTmqTmQ0255N9OI u9DUJg9yeLr2Ys6nfm+n4IJxnrlsZpzBTsCjPFHlF+BOj2z3HpdjNI0mMcAXIK88zCu3 y7T0WL6X9RhhqrN9YHGrVWzCpZRwVFHFheyhHIEGurR3gijOxdx2dhFe8USVFYhqxF/i zAF8F4FeObsu8cSg6UM2verperkcMnC/8STDSTbktphLC3GFyikr8IbY3wS2NIXiU7hD NNUA== X-Forwarded-Encrypted: i=1; AJvYcCU6T+n6XwRyev/eWQzgL6jmSD+OAhl4CbJhW+mnyobjkVw5O0bMKSKw1YSzFBF0IpwvOu3tZm2T2Dz21IM=@vger.kernel.org X-Gm-Message-State: AOJu0Yzq3X2CR3XhLR7UqQp48PKb0QUym2wG1ly2MN/B/eh8mVQLiuf4 RHgSDGPGCojXY7jaNvtT/CIgvHM52TxIFR1fr4gD0jZx8gQiR7ID+loOkQzoc3w6b2E= X-Gm-Gg: ASbGncvb+8CGMFRXJSHNGuIH63ync5u24tPmOIIj6GCUDAXMTSOTDL1pcAUdrYKDePA Tj5QK/f+62bJkxvZpa02eeHDcMYtMwY9+QiJTlMgIVKw6Y9AwkjvUzIyhLLgOu8+SCM+a8PPWt+ nmNz/Zrkr0KkJl2yk7bCJrnLhgKNd2+w60AG2l68J2SJiDlZ5ZrloyVgDAiBMWf8a1tSmYG3gLJ bnW5vRWBpT4DlLU43jlzlIGMxD6XNZzHpVIYfLaNn63IBczaUvTfmgjIyNYbMv91Ojx8yqIxDL0 UTO2PeWnrfzei2OnjC04zz51WpXsqWZBySG1C52xLPTKYEtvuFNPRwsNGYvr7bSrl8bMv5wdNpu KkLGeS6b79EtZn0N0p7PuCGQQIQzG X-Google-Smtp-Source: AGHT+IHWTHIcMhEQ5HQdM6YoOeolJohMogAZDIPB52mBaKmxTUaFs5nkdQ77PxRV7ddsa+Y2+klbLw== X-Received: by 2002:a05:6000:2b05:b0:3c9:9ec0:2057 with SMTP id ffacd0b85a97d-3c99ec03013mr1335028f8f.24.1756115330763; Mon, 25 Aug 2025 02:48:50 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:ef52:fc8d:34ad:9bfe]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3c711bb1e3asm10877449f8f.57.2025.08.25.02.48.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Aug 2025 02:48:50 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 25 Aug 2025 11:48:42 +0200 Subject: [PATCH RESEND 01/14] gpio: generic: provide to_gpio_generic_chip() 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: <20250825-gpio-mmio-gpio-conv-v1-1-356b4b1d5110@linaro.org> References: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> In-Reply-To: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Yinbo Zhu , Hoan Tran , Manivannan Sadhasivam , Yang Shen Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-unisoc@lists.infradead.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=872; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=q7IZHV9NOU3n+seY+p1AeQbkCwKHTjI/3z6Qnen62yA=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBorDF9StIdV+XMb86jGojQYOxVC3O+FG2OF+hdT i78Cbu5/oCJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaKwxfQAKCRARpy6gFHHX crWhEACncvMwkOcPwHAi9aj2OHDq7X5SHxv8s8KrRap+M2V0ErklcQNs1GLob7iWSimgg2QnjeB qtJybnFa0IOrpakdguy2J/Rxhl3L3bRl+U2GAabp/gyfdRTE3wV1D4LkuAD37BAfjJ81R8pgHXC XUFfK1yQRSp+7Rf1NANuInvx4GYMPqcTWz7Ju8wI1BJdh3R6oTSbcMb6F8+WsQ2QzwUCFYCU+0+ 5XUpZSuNCZ4VHHgLWO58F0hglpj1zAyoPi3lW5c84DCfxfcXRgjbZf68zuXrfIZxNaoE1PXDTK0 n+nqj2mmgKePqI1V+75Gbv8zLR28FTK/0/EXyERUgxRGJbmHBceAXX2fzFJpvmxYN5Zks/a/8XJ g8g5QzjfPG+UnFnGrNSfTEX4gcmuqSCmNITY+3PkFxd3AlVL0NnR0y8ZGf2EEzOJbUZ/exvWBhK UM6ox13XeBAuBlYx7ru6QTnvaJNiuLG/6enWBUZusa9cNfbnFNMSEyRIa6o5c5Bfbu3btwMHdmg NtiwGbECS+2PceI3NfqmGBIo02UcLUakC3+B+ACRcFZY+Y12U0OK5vAwkEVEChYTsSypiSvxEJw cc3WaWYVAUWxYNcIIomXMJtQYPKiUDDGsW37GBu5UPlonio/jlUxf1/ZS2zK43DeordcubSJzBX lDY8PScKDVMc3LA== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Provide a helper allowing to convert a struct gpio_chip address to the struct gpio_generic_chip that wraps it. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- include/linux/gpio/generic.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/include/linux/gpio/generic.h b/include/linux/gpio/generic.h index f3a8db4598bb59f1dba4fbebace24dc10be44ae4..5a85ecbef8d234d9cf0c2f1db7a= 97f5f3781b2e4 100644 --- a/include/linux/gpio/generic.h +++ b/include/linux/gpio/generic.h @@ -55,6 +55,12 @@ struct gpio_generic_chip { struct gpio_chip gc; }; =20 +static inline struct gpio_generic_chip * +to_gpio_generic_chip(struct gpio_chip *gc) +{ + return container_of(gc, struct gpio_generic_chip, gc); +} + /** * gpio_generic_chip_init() - Initialize a generic GPIO chip. * @chip: Generic GPIO chip to set up. --=20 2.48.1 From nobody Fri Oct 3 20:57:37 2025 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B6A372D0626 for ; Mon, 25 Aug 2025 09:48:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756115335; cv=none; b=Sf3OqgvUj1KTe04FBqtEWyD9gs8f/8a+IiFWljqZcNMKVwwnqzdkG/d1IfOiYKpQ2RUpS3U2MO+I29Q4oaQe7BimQ7vDjPbnmsd2SkH6qZEfV6BwGaQT/WxXtn+VwkRQtnMoDNt9VJV9VfnzJFu+CL9ubZXuM/hM1DeYA0nn1Z8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756115335; c=relaxed/simple; bh=vkpZBLTpaIui+7bJpSkDPzFmEy+B6nYwKDayQOON0kA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dJgGIrftjmha6v+PqkhTgJMeIlY6O91q5fRK8t1/r17epVqpwz1N0Q2zO/cJ9zBAtQGlOYkbVa0QqbKzw+1aBV9L/qvHJiiDb3Ubt2wgi4An8pR4vzAILghNQQgntaPOkZta+uh9CO8x2vYspt/Db2vCOVwys3dtAT971kEtpg8= 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=nJU+lUk6; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="nJU+lUk6" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-45a1b066b5eso21203975e9.1 for ; Mon, 25 Aug 2025 02:48:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1756115332; x=1756720132; 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=knHQSjIWdfCUEPeYoPW7hFKkqoSdgZ12PWpZI20C2uk=; b=nJU+lUk6WynTiAulmF0P5MIfRSrg51Uurd6gjMc0DBe0rH2q0SDJny7taMVHdJ/gFI AEw6q2GvqvqwvsA55JFCP758dTLBLJRyeqTVYj9zZntYwy9zCWkzM3f3llbqiKm/zR1T eN2nbQFuVFfEPSvwOcZSJZwG3NW9uvJJhc0Ce29wdjORcHwguKycvhx62Ygq4Z7xFNm9 6VMzP4dGu3TxIQrMSpuVNa9eVPf6MOLAXxpvW7I3N6o9stpVWkjsYDE6tgLZMxvQvYql oV5MIjJU6iziTNyDz9Eb7kEZeUpvdWyrTVVasmmnJmTkS25SYy1INNTsHvBOeVkSRPPF Ssug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756115332; x=1756720132; 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=knHQSjIWdfCUEPeYoPW7hFKkqoSdgZ12PWpZI20C2uk=; b=qbS78HqR6x90HveAnFUjNzCb6A3zDLaPEkukxv4Tl35hD/wsehl/MPWtGWn7iEEbC/ S77tnlaCLEorHmWscUZOd7lt92nQxa9w6aNGZ8+rDOXmlmKD173v5By7tjIIM7XfFKD7 xiwielmYXnr9GtXm0aAIgVcJO3SvffTV6UcgZko+RGH7SduJ/h1Y/YEV83SmGUf+TLnR 8cf1WN0AX4K2yomzRlG6Kh9zI28jKHSFw0LM8UoOfAbV/HcJ1z7M0/FHz0TpwY6O3a82 cbXEVPkWoWib0s3RJ+K5y8jrY1ZYx20q1nUPf425WGprsQEJvzqabpvPp1ZWyrzL3CDE 3mGQ== X-Forwarded-Encrypted: i=1; AJvYcCW0juT6/dbIzCFxdtMCkRvqzj1ofIyFqrVf+kn8JVJqiuUst1qhjye618zljpboXX3JWX1aQgbTektCgFA=@vger.kernel.org X-Gm-Message-State: AOJu0YyBKQNc42XQgDFbCmqLWXe2dIinsSeeSMQyHMG5/7AALccpfAhU 4OOBHINbwFQFXnV/qUtwgKMSopp4oWX1l7OwV2gOFRvGOhl/IvM5iagg23tC+IS73yo= X-Gm-Gg: ASbGncutECSEqa2wpnNrvQln3h6HQTyPLQwfKO5/OYHc1xteTI3A3H9gVMvbzm/xf2d UeT6pb0IN2o+3dFkPY5geOSInOvmEin4l98LsooApH9UUl1rn/KjdDCNj42dPNfVGxCPCZ6j2hM XxwMGR4H1DT9JCvh4193UwSFJiJTQnKIPiMHQE6HFdip3FEJwFBXuPVk/jL4LtwjFiF9e20Zg5X ukYTXehra+E0AauBHoq6xjDEJK8J+cQMOOSIjkxU5/UnR2JXlX/kw+cmSPH1MiRNfK0tORshQVW HtQSZkf9LmmGEALfEWBAwkOIc4Gg4mQO8btTkadjXOJ/NFi2w7ALxjRmRyQnJY154jNLCPIoAO+ +rcwg7DBb9jLbUwX0fA== X-Google-Smtp-Source: AGHT+IErwpn4wYmB5jWccKig8AZtnAMXECNBpK7ppyejcQJbbvls81o2Gjjr0DQ/5R6ReudO+l7A1g== X-Received: by 2002:a05:600c:8b55:b0:450:d386:1afb with SMTP id 5b1f17b1804b1-45b54b21175mr93803705e9.9.1756115331853; Mon, 25 Aug 2025 02:48:51 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:ef52:fc8d:34ad:9bfe]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3c711bb1e3asm10877449f8f.57.2025.08.25.02.48.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Aug 2025 02:48:51 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 25 Aug 2025 11:48:43 +0200 Subject: [PATCH RESEND 02/14] gpio: generic: provide helpers for reading and writing registers 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: <20250825-gpio-mmio-gpio-conv-v1-2-356b4b1d5110@linaro.org> References: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> In-Reply-To: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Yinbo Zhu , Hoan Tran , Manivannan Sadhasivam , Yang Shen Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-unisoc@lists.infradead.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1736; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=OZyZWSGy8uPs2UaDZUWXQTJ09CV/XrDYoRGt1dr0Y80=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBorDF9HIhZW6BvlmVuXoPopEENCwXIxMLWctX64 fTuynaHZbCJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaKwxfQAKCRARpy6gFHHX cp6zEADBIpzlbLlGa3I1SdfKLKbDta+9JyIZmdQVLH2mg/LNCF3YbcK7N0mgsnw43q1025et3av XaqJK6ibXMqtva6QKx/z75U+yaEpyhwnaux/B8j5HHpRyLw48PQJttWNqRcyP71qcfJ2FhDphQh 4cnxQ9aGm8RkciEgxizFghS1f5BTqXruI6MSTByi4cwe4KhbwKsGAbC4G860vkkiPmIWc2PxaIm HGYdALZjgUCHAsoyF1+1eh+4mZJhYgKlLI2Xkt4lv4BSLhEKphBquzql77PjRVAs14euy9DvPJ2 Ax71OechHRIFXG6y9b0oJCpurOwo0qT5/VG78lOFbB9L0scZtAYlzqqF3mjNyU3+BDHqKhN/Hla ttWDVJ40ELpeFmo1oWpTm/Aq3j3VBw0ZDH+WCPwfu+J5tpVV3QPXjGweYxfrKFjhn9qQPZHhOmx zdTi+vMitZGd0nwY0Ar8ra36TepQFKD1sT7U20KG1YlXc4rENwZfow0x35suq+TUsUYr+vB4M7t dMGCWuAFqyBah+9PO8x3qZJfFNDe3YIwOzbFf1rHZmQPp/UohxtdxkHIQxGE6DcuJs6VH28B7EL brDe1BxthAdC6j2rcK8o8b5Grf2aLJWcEPQLqn9hC7w/Mpj8noMauYy3lFNHDLZy53gYjJzdFES fjcFitr2B/rR2nw== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Provide helpers wrapping the read_reg() and write_reg() callbacks of the generic GPIO API that are called directly by many users. This is done to hide their implementation ahead of moving them into the separate generic GPIO struct. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- include/linux/gpio/generic.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/include/linux/gpio/generic.h b/include/linux/gpio/generic.h index 5a85ecbef8d234d9cf0c2f1db7a97f5f3781b2e4..4c0626b53ec90388a034bc7797e= efa53e7ea064e 100644 --- a/include/linux/gpio/generic.h +++ b/include/linux/gpio/generic.h @@ -100,6 +100,37 @@ gpio_generic_chip_set(struct gpio_generic_chip *chip, = unsigned int offset, return chip->gc.set(&chip->gc, offset, value); } =20 +/** + * gpio_generic_read_reg() - Read a register using the underlying callback. + * @chip: Generic GPIO chip to use. + * @reg: Register to read. + * + * Returns: value read from register. + */ +static inline unsigned long +gpio_generic_read_reg(struct gpio_generic_chip *chip, void __iomem *reg) +{ + if (WARN_ON(!chip->gc.read_reg)) + return 0; + + return chip->gc.read_reg(reg); +} + +/** + * gpio_generic_write_reg() - Write a register using the underlying callba= ck. + * @chip: Generic GPIO chip to use. + * @reg: Register to write to. + * @val: New value to write. + */ +static inline void gpio_generic_write_reg(struct gpio_generic_chip *chip, + void __iomem *reg, unsigned long val) +{ + if (WARN_ON(!chip->gc.write_reg)) + return; + + chip->gc.write_reg(reg, val); +} + #define gpio_generic_chip_lock(gen_gc) \ raw_spin_lock(&(gen_gc)->gc.bgpio_lock) =20 --=20 2.48.1 From nobody Fri Oct 3 20:57:37 2025 Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.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 0D9EB2D0C95 for ; Mon, 25 Aug 2025 09:48:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756115336; cv=none; b=df6JHeTwFSyvUDyzw2Gwss1cOSwod+6BcuR/fFs6MoclI9o3CvOFxP9FBhvPCd+4+Ao45fLRpWuslIOpji37IrT2NVjdQPVmpNZnLXxFRJn1CFETfBoSNaoHcd6PnIh+Ckb7AhN7uoM7OBpJkv4i2q6G9SLInm8sUxNg/abmGh8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756115336; c=relaxed/simple; bh=gsmPjfJ2QmHUYm2T6GbsR3/AGbz0mExN80EXjsadE2I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RlOKPx+KY3pER751BBLr25ewM8iYcLEw0LwjLIQ8Cik7sCsrQyflMHzWEY9sQi0CxSx3dyEp0noXaFlcSFKR3IYtAkln3DZZ2cVjRNyov4cuvYNsWxhXne9GXRwF9ZreQ1djwR67IZkFKwldJ2n284PNROsSVVuQPOfsU7hbS4A= 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=1gq8ooi8; arc=none smtp.client-ip=209.85.221.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="1gq8ooi8" Received: by mail-wr1-f51.google.com with SMTP id ffacd0b85a97d-3c68ac7e238so1274393f8f.1 for ; Mon, 25 Aug 2025 02:48:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1756115333; x=1756720133; 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=X1M2z9RjV0ZuXBRlE0vMWSKVCPkQUD2amGo6k0F1OlA=; b=1gq8ooi8d/eYqlMHVdifNqmt0133hfexOz/d5aiksX+etxbqfIpM3bdTMR5f39wiV5 pgvhEbMKL/smgBYF2mOcgSsB8a8DXp9ZSdpFVPqKP+GIw/jtuVkhP0lJkwi97zGG4CSp 4eAIapRIJCFrvxHhDNrmbyvD7mX7qn8watEwpn3P9ZS6H/dIUikVs11oXDusK9ib3S9Y nIDvA+9hc29SMyQLHhwiOUvwHzpgUXXKVKf5LtkfOhxtAvLtD9lAHhnei+mLPx0XX5ZF O9cpNg14SsyzJf+akfXAB69YJFnLbpRnDWXKynN+VocVSJAIG/NNRKRTpBMTT4csCYhS 4PLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756115333; x=1756720133; 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=X1M2z9RjV0ZuXBRlE0vMWSKVCPkQUD2amGo6k0F1OlA=; b=mHbkx+d8jd7oewMYdK//tvbpoCZVHLxJOAQhn1JIJXZ359XkifNqtetFX1zG6/ptZo Ix29VE3U7G9g46aGmFQjTdcZMIQwvZPNOU+avjxkcXlYS/qhoBsH9tDW6us+bJl8k+F6 VA28zuVO8LG6yBTYrMAJOtjw2AZhq9IBBg4TS0nHL3puZi7g50XZgSmmQJSO4r7ujkWg M7FuYiRySLWzCoKZtbfLBuEKa0uej79+DPadOEwnE8jfcyXwlFCe8s/+u16u3TL/zwUE XUoYEh+MjhQqP9QAR5L+9yfyLsrYtSM2YAtQUXaeqF4+XLYkA6aPj+LVR6wZ+0v8V+52 xo2g== X-Forwarded-Encrypted: i=1; AJvYcCVh54kCN0V0Gm/fmWkRWj+DHHWNHHhI0rkNwJFQog1VyVCxws0nMkc0743Xde3e4gw6AEZJHfsc5m7R8rU=@vger.kernel.org X-Gm-Message-State: AOJu0Yy2R6CNoOt0HROQ8deQ3/2822laiW87Jjc1nOVe4mLTUn/0O8R+ bnji9uFP/1MrLA+pX/E8F0fW9oXNaApaaB5eWGiqPPEIoKof6MywBnyA00Q4WfbZNw0= X-Gm-Gg: ASbGncsWthe3w2YzN+oDheF+c9mpRMkJttUuOxbAVwHn+tV1pRrFnD6CRxgbmaR+xCI VZNLrKNvgvdwZhenKC3szFP/o0HB7KaiN/hI+Cdrviplo5xZD0LvohzlRelz38UD9Q3Px9AGbG3 ntWsTP6VcJYECC8nhKdoOcC4ipflCTDU9GGOG4JBvHcswXFzokmIOfjdlwk1+2zgsvFyo3MrFK+ tZzxXjJq4D3U28UiLMzjgZwU0Pb2HJweQnYZI05gEXIj73WaS4iU/BcpmqN6O2AKv6rzpbnHCg4 pjFWGh2lm/tvd0hX1ueTHRzHuQcxUnQfxNYEVASOJgUP5UtQ/oDFi722oqy/ODhu3nJkvd1jmjy fQ8Lb98Dq9OSXplUlUTh0LIOvztqV X-Google-Smtp-Source: AGHT+IEzPBRol6ngRIiwBwafEdbjwrW6XPSWfLq8zxY1VDXJdLBaFNn9Mck8nqFBhHeSS6beuJE3Yg== X-Received: by 2002:a5d:5f96:0:b0:3ca:10aa:ea82 with SMTP id ffacd0b85a97d-3ca10aaf4c9mr1072885f8f.13.1756115333081; Mon, 25 Aug 2025 02:48:53 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:ef52:fc8d:34ad:9bfe]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3c711bb1e3asm10877449f8f.57.2025.08.25.02.48.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Aug 2025 02:48:52 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 25 Aug 2025 11:48:44 +0200 Subject: [PATCH RESEND 03/14] gpio: hisi: use the BGPIOF_UNREADABLE_REG_DIR flag 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: <20250825-gpio-mmio-gpio-conv-v1-3-356b4b1d5110@linaro.org> References: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> In-Reply-To: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Yinbo Zhu , Hoan Tran , Manivannan Sadhasivam , Yang Shen Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-unisoc@lists.infradead.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1294; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=LGZlUs6AQDs8ng5Nn7ommqnFHh3w6/vhUJqzq5JniBE=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBorDF++jCG//VSmX9rtXyjEtDWZYRz4QSoScANu IK+WVARy/SJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaKwxfgAKCRARpy6gFHHX cnBED/4wgp55EodYkNBwqOjqiRN9M99fAcanaozgJqRlQ6HPSTZm65M8r55yUsHnL3eaalhzCkY q5x5HujE/m+jFPnJh62GmPp+Efs62oOw9MJvF04gW+M9yKCEPBZjOUOnQXpVrlSm1GslyqhpAj5 Jt9k8/5wWjYUbKIwt343yCHgNbYwm9UCGp9oWeH3faWThhxe3KDZtRi9iU+BLmFtqz5h1CEY/4M tUFXNsPpwioCRKDCAu+nsnaeIP3tIt+Ez07yyDerqF74fK0TIB6cjn+Tv+8KCz9Byf1bzTZcbEg ZUNPrmRJtfkv9q5DBkSB7Cfj6o7EhjvuTG7hEzcxx0zTJ13CEF/yD+VpxnI6V7T1gRrK0xRy0um zjiudnsQRpqzkvjQ9pbBSAmR7GbieSo7K8Hq01YZij2Hc0UleRJxWq5Bcvt78abclVn9Mh26hJ9 T/Ykt3NKI4F1IcfLrTJHlAhkYO4wHmVw2g78JF/BPXhMzHR6rgn76f+tERkHRUSPLPVSsNG4efs qOSYjv/xO39rLGb4UKDJei9qCw7ssl2tez4WYUWOORldfzUShAw+dkbUwjsWXd4PXSpO3P1BeQd SeeCebsxhkQlIFAQk8aJODB3ZgOmvWZ1SsCAdOCPDXHhn9fs9Vb2sGIYPRGsc8STeDPjLIXgPE/ yyaad6906fNYAww== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski There's no reason for this driver to touch the gpio-mmio internals, we have a dedicated flag passed to bgpio_init() indicating to the module that the DIR register is unreadable. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpio-hisi.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/gpio/gpio-hisi.c b/drivers/gpio/gpio-hisi.c index ef5cc654a24e2327510b872563e68fb0b9aaef71..6016e6f0ed0fb80ea670ebb5754= 52d9ec23976fa 100644 --- a/drivers/gpio/gpio-hisi.c +++ b/drivers/gpio/gpio-hisi.c @@ -295,7 +295,7 @@ static int hisi_gpio_probe(struct platform_device *pdev) hisi_gpio->reg_base + HISI_GPIO_SWPORT_DR_CLR_WX, hisi_gpio->reg_base + HISI_GPIO_SWPORT_DDR_SET_WX, hisi_gpio->reg_base + HISI_GPIO_SWPORT_DDR_CLR_WX, - BGPIOF_NO_SET_ON_INPUT); + BGPIOF_NO_SET_ON_INPUT | BGPIOF_UNREADABLE_REG_DIR); if (ret) { dev_err(dev, "failed to init, ret =3D %d\n", ret); return ret; @@ -303,7 +303,6 @@ static int hisi_gpio_probe(struct platform_device *pdev) =20 hisi_gpio->chip.set_config =3D hisi_gpio_set_config; hisi_gpio->chip.ngpio =3D hisi_gpio->line_num; - hisi_gpio->chip.bgpio_dir_unreadable =3D 1; hisi_gpio->chip.base =3D -1; =20 if (hisi_gpio->irq > 0) --=20 2.48.1 From nobody Fri Oct 3 20:57:37 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 D782B2D12F5 for ; Mon, 25 Aug 2025 09:48:55 +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=1756115337; cv=none; b=irnFLtnKGHrgbhkggXnqd4Xfh19sFwWPzYK4YpCam4W1Gp1o5J2czcTWJcYHk1SgsIBllaljQUyW/61WPHuhwlI1Z6b9M7Y5Tflb8HO+u7w/4Qpl+MQqScZsM1i+ubCIy8dDp/Je2pN+iieHYkgI5w8gVfup8bTM/nNuzhBxhdc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756115337; c=relaxed/simple; bh=CjOqg/tMVuGjCBjMfchIIOcWxbiHZ10GFFMMWZMqLdg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RGHD7eOo2Pv/XB6UNl47i0EOYLuxOaVO0tNt/u0wB9r/hVFXnkMk/YqYFlckZjCkVvrEUi7aAGKJYLJAmzWZRT2xUaMFkvXu6y/5fX81UXwfKiTouTIZPCp78qTlDVfX4Xt6WN0LyOsyxzfVTj2uAqHMOozDnUmtXTgo5o8nutY= 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=sQuRLIXm; 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="sQuRLIXm" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-3c8b0f1b699so814988f8f.0 for ; Mon, 25 Aug 2025 02:48:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1756115334; x=1756720134; 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=pEezOkT0DMYtBQNI+88wui4CFNSwtPL8noFajy31AHM=; b=sQuRLIXmWt3x+TJ8B0ldiG92yIBCc4kCCNVwRIjJ5hhGOcmcL21fNh097ZihPDWh9L y+pvhYMhanywRvQv/1Kwj7a1jrS79XVxKC4BEgWbzsddEm5IMIu/GFZzGUu6sFSr3IsQ sjB4UiTfCwztu4zOFcR62Ul4iiQJ3E1IQb4XDoaqoSNewT651JfGmP4lJBFkkBlCiWgr 2gigDprCev7rt4r0Hjvvv1o/nDbi3Xsfh/2FJxw6tdnvUM8BOBThGtcb7rz9f6NsQPDG Ss2WT7BK8PG1y3jJcwE9LWNxELweQcO0m+V3DAgE1i+w764QR2m+xtGBKuv+GNUt8LDD JCrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756115334; x=1756720134; 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=pEezOkT0DMYtBQNI+88wui4CFNSwtPL8noFajy31AHM=; b=lqsvYZKo4O/PpSsHaZXfRzQSiKg39u/DVDH5Pmd7lH+BGif4/o4Hw4QTxuj3tG9Lne UPAENub4C/ZBnhTUZ/oUvFxiBbLWXb6V7a1f2TN3hhsnBtlUFejlyQ4x16XbNx1aY2Zi mnrVb6wbaIP6EWoeeLOuH8s5J8zYACr+jUaeBj2y2UR9bBys/GC/xsGcIodZ0ob/73ZT nNWlq2trDyN/g+YsPGRZuAexNY0PSn6eLtaRWx0tguxYz7qPrdbS2a0Jhrbh6J29JdQa DQ3DJWUHZCPBiNrq0cC2BBljOpUlJ57lQ9QIEWs4y/TIPrNOKJAcwfkW7/iKJJcRYYFZ Vmxw== X-Forwarded-Encrypted: i=1; AJvYcCW6NRwv3+rZlgB/cjA+jSsfs97Z7yhRdlxx0dA0pX4hvqdFu2O9drBQIM8ChJIma2EWtbTm3KVAOJTH0uQ=@vger.kernel.org X-Gm-Message-State: AOJu0YxoftjW0KVdxAAoeXs64Z6ACwsMHtzrAueS6N7xT4kqrdC8lTaO ps6dDEyIqpkXZP0J/Dc3BN8Nru6944KO2X9ElTA11H9cu09nRr+afDy3ClyUpFOvwzLRNZMJkEl w/iaS X-Gm-Gg: ASbGncsMXijjNCEf4ESeq/1iBm7mczEjbYulLCiVx9VhaFnFApyw9PJHSJ74K8/ZbHq G7Q574E4OFru4T4qVrSG9HwG6wX2s+qS6tl8Ui761ajEkbOYsBJugRgQFpn2ncIm0SUrFaZywRt Hm7rgGhwRbxKGbRwIEkvlu4+JBAuispRno+LhjmDTm8GQz5HC55WigVKqvzvQiiA+bBdxge234+ lQEbyDX1BffmcPlkgXZ+tke6hKtRv4mc1Td3Fll9Vag0j2wGrFVDxoDGgvsE2ln77sYj2jba6vk Qb0ArVkYuL/lIsy++TDdV8dU1dpdvpy4eZrcM8Vz0uQZbDU16+KrZlMFu+aZaYXCiP4Q8adU972 Z9vub7iVURZ9B6Plz3A== X-Google-Smtp-Source: AGHT+IG0krJTq4Jgt1IPZ/cibP+uYVb/N3x1kVGXAllB8t7somMdG/PDXIbNNQwFp+zoe9Zmdf1r8w== X-Received: by 2002:a05:6000:420c:b0:3c9:59f7:ae7c with SMTP id ffacd0b85a97d-3c959f7b103mr2545040f8f.20.1756115334197; Mon, 25 Aug 2025 02:48:54 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:ef52:fc8d:34ad:9bfe]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3c711bb1e3asm10877449f8f.57.2025.08.25.02.48.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Aug 2025 02:48:53 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 25 Aug 2025 11:48:45 +0200 Subject: [PATCH RESEND 04/14] gpio: ts4800: remove the unnecessary call to platform_set_drvdata() 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: <20250825-gpio-mmio-gpio-conv-v1-4-356b4b1d5110@linaro.org> References: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> In-Reply-To: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Yinbo Zhu , Hoan Tran , Manivannan Sadhasivam , Yang Shen Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-unisoc@lists.infradead.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=749; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=l19XxlCMzrhQb7segGk57h4S+g8U8d8cxgGqBJH6nF0=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBorDF+dmaB6cWzgm2SX91hFFwqfh18cFEuENOte nL8RUAd71KJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaKwxfgAKCRARpy6gFHHX cv1LD/92kRpIMtl2PZLTNmSBg/nbx4JFs5adi1jle8Ro6PoiveSkeouWOncXl7ZGS5367YmHXsm sVVjoeuol0qV685ZewLBky/Uh8Wc/i3mrR3YunQhN3fWnq3ZypbuHN+QSasKrtXzo5bKCJIubBX /arpVNk+o5r4co0IaZU5ZOBcNNzhkOkJ6KizZ2uYbA0zacx1D8765JmUpbPbVqyXTf3WmmDTz+r bNCSXq2TEgn37Bn2Qlg5K1UvtWeGl/Lhgw2DBezQboSRVARFq+2VHti/r/gzyoze2PXjOFFci2W U/PZQfbfow13027M7jD5UlSkWcdznjt1egU8aZtQwtYJFGxHa11FA1ozAeR2DAvPftb2WN1/4R7 rzMIBUHtxstYWt6rbgdijl8YVgvPMmc6m7dxFyZkB5qMB8mNGhD4L/xGpC4LAP+P5N6wIdR+u7E 0r8SoqCWuHo8D/kJPEz4UCXxXoLOlTLmx4LpZLUk7vGHRT/8RRvVJbaP1u34HdG103Q1k4xHFlW oyGIWH9nGCkrPeRSSIcelEJKZ9vMPO/pwzEBBlETXmG9K5DJRLHoxMj2gvxK8NTcFQ/9Ujz/vXu uwFVjwosz8GWkmTdng/1tY1TScUvLSBkhao3qKSnl7wpRttlC3GrAtnqGLd+0up1Vl9fWZiIQAT X4Zx4skN4CDLNxw== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski There's no corresponding call to platform_get_drvdata() or dev_get_drvdata(). Remove the call to platform_set_drvdata() from .probe(). Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpio-ts4800.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/gpio/gpio-ts4800.c b/drivers/gpio/gpio-ts4800.c index 4748e3d47106cd2db6a994928b20f76921540a60..86f7947ca9b2d23292c1e6660fe= 93c611e0cb837 100644 --- a/drivers/gpio/gpio-ts4800.c +++ b/drivers/gpio/gpio-ts4800.c @@ -51,8 +51,6 @@ static int ts4800_gpio_probe(struct platform_device *pdev) =20 chip->ngpio =3D ngpios; =20 - platform_set_drvdata(pdev, chip); - return devm_gpiochip_add_data(&pdev->dev, chip, NULL); } =20 --=20 2.48.1 From nobody Fri Oct 3 20:57:37 2025 Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 531822D238D for ; Mon, 25 Aug 2025 09:48:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756115339; cv=none; b=YFMpIQbMYVjqyiS2KQcr+P5zws2+qyk+tsHMVjoJ4HZL51ZHDjyfyJrXW5eso/yhLhrYl47MNzsH2z3jmMQicJhSi0czosWbRiqyIIjrxNrt77GW6XaFoC9UZ+3jAzpbIruTk0EcHbgisEIt1Z7c2jSCmvjDhhTzTl3v8iQrBE0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756115339; c=relaxed/simple; bh=1thbdLmTFudV7ob9RYvrVsAtyDB0jUXy5XVU1fSzbt8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aM6sz9xi/sL8+HwRfzuair8jKMd8fogazuXIdwMCWHietPcPnC9lmT7+6K6wGSSb97xgvYOq1b9hNWPp39zodSIUcAbinXOiR3wRmOrWOnQ0TL2g+C/pagW0inTrbEB8h5bKAiblaxRLwqGQ8cPKN7HD4Q/Cubjp9mkl8SxChXg= 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=k6dW6CjB; arc=none smtp.client-ip=209.85.221.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="k6dW6CjB" Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-3c7aa4ce823so921076f8f.0 for ; Mon, 25 Aug 2025 02:48:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1756115335; x=1756720135; 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=leTFdfCJ6+RyienTiSwh2q3pg0tznaooZOPdYThkYBU=; b=k6dW6CjBSNb2ZL0QVpBAspnd360AMN7hY3DlInKyOkaQY2Yft+jiznAEchdStvOLgS CPSF+veT3GXLjdWfVwjZfWGAPmJTITqZU+ms9g2ocZHkdnMd+wzc1S461MUxrlza+UFG FBH9OoaKEH5TPcJpaaWcwThBHt22nbNYvJEEPM6LsM0VqEl9HRLVyiUcADCQYXNqydF6 +XU5i8rA1yYovcb1D2ZI0fb1F3nPevcs/nP1vIwGs5TLoTetYKFlgLUEJ0/m5yfKKaR9 /qjSWYWWflfjVPKC5FNmtqUS58G4vRC4g6ABVPAYvJSugrQT27NwH1uPJTXZXyx3kBoc 52DQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756115335; x=1756720135; 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=leTFdfCJ6+RyienTiSwh2q3pg0tznaooZOPdYThkYBU=; b=BItb/QqGqkfop8hkUxc06W/2pdCGZJArnZE9za1RtPPId4iKU2HPPqjJYkSSQa/Z8r obBHz6UcSuvhDmetrV9UjodS4Zl/pDMEPwUJo0LcJwnRJPNr1ktdcYvmQWZrHglrkL5I Vl2wRb1UaKc72zDF5ORr2KuRIf4PZAZcOv4UH43+Kis1jW4GTqq5bRIsaspdsRf6Nc8F tXEr1OBo4Q8RQ6tLIJwQYcxkZfPKy/PmVYPCYmLnt28lpcyovE7GLbxvVrVSvxs4vQql vVmupaD9ZCnVmMa71KptZHMU257XcOd3I/BsGbpg3pwaI5fhXyR/Xl5Q3+QKAElNQXPj yqSQ== X-Forwarded-Encrypted: i=1; AJvYcCU/+CzzjZhlCiK6FAm/yvHEkb6UAQF7swEfFmAv3Vn0j9+DTH5P3uIdXPrX3bAwRUiX7AWgtJLg+yNAkuM=@vger.kernel.org X-Gm-Message-State: AOJu0Yz4z5vmaXDhBfZBT7lxya51AZPXTavqR8N2DyV2zkmf2RQRJMcO qHkUFfIUk+mNZMp7hvlzVay10Rwco60FrfngpLOPJq7WWYyYb4XJUtu1LVRVg8kMnic= X-Gm-Gg: ASbGncu0f+dfylku0ye49JYHdXjqrYBgFxcpHRbp3JJcMnNt3zF0tKtkWTMj3Tpck5+ Eu3UbR3/rGtCcn3JitoTygs9LbtlDzcp035gKMK4pOMcfHHbUspNKzhbUspw+4JnwOLen30Q7DC vV6WHrqYyAiTwgWbD5sIByAzgR1fiaSmkY4MZgKVtbxLbNfvDh+rlwowYr5HUWjMH1RF2ukOlww /EYdkJ98PMRgr8E0ulY2lDgbQaHiH0ZOB+VVyKMyii8LMHC8C1jJYKHnXfdS3/nHcacrsdznKK+ 6rrcg8ag3v41bwQUtafhk5m4pvSL4xmfRedDs1fLBhfOrMVV8RokiypautJoOYy/zkhi+YCbIna sufEeM1l5yZsitnJ2Kfi2smYUG+Dv X-Google-Smtp-Source: AGHT+IFbF1QkRyFdeFIpemljyVtx1j4nGrxdAWd7UTjvbIZ/NucsIqQcYHn9FKmS3KUU/3Oc/4PNpg== X-Received: by 2002:a5d:5f44:0:b0:3a5:3a03:79c1 with SMTP id ffacd0b85a97d-3c5dcdfabccmr8075233f8f.48.1756115335456; Mon, 25 Aug 2025 02:48:55 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:ef52:fc8d:34ad:9bfe]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3c711bb1e3asm10877449f8f.57.2025.08.25.02.48.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Aug 2025 02:48:54 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 25 Aug 2025 11:48:46 +0200 Subject: [PATCH RESEND 05/14] gpio: ts4800: use generic device properties 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: <20250825-gpio-mmio-gpio-conv-v1-5-356b4b1d5110@linaro.org> References: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> In-Reply-To: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Yinbo Zhu , Hoan Tran , Manivannan Sadhasivam , Yang Shen Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-unisoc@lists.infradead.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1370; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=nK9pJAlcVqEpACXDhaB9m0pP1KYR56NEQPbKtHUMK9c=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBorDF+zSvsNgnA4MkSV214FMk4hgTfqPRZk/vzh JSKtylhcNCJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaKwxfgAKCRARpy6gFHHX chIpD/wODQ6RNrQ10R5exK6P3KwuVo4VF97VRbQIzI1f+A3TIWDad/BmeS36AyNp4PwuRlJMngB 6mJjEWXcBfghlW9QAkHy9WMA/4Q8SaJ4KiDclJ5MzJUcJlzmtwiIHBlD0/MZWneUYbuHYFL//vk 5n/yTd52sg3WX/EN6FM8eQ3quntJ3iWRcm86AXUTkEQDu1StFteUN9bbgC4AooFBvf9W/tyUhmy AxBDLI8N2GVwrTXbzuSyQHK+lgpFd5eAOUAu/8nzM81wIYyhYl+dc14rbs/GrN6Y0MEsdVfqPlD MUIsrMEkb4zEyOwFPouMX0fsxJzDxAjZMRH9+D88u6O3s3xGckD7++1W2RvQQmiLGxSBjn2hArD Rok/kMi0DZmgIbzMACspy6cYCLVvuyROJdWWmqtiCwzG8xnk76qjUq6xacuWbrF/aetGfDsi/8y XsBLHSxCWYkct+BjW0f7s7whUn5jLdMlFvZ2vrkjX5I/6HtSJPL5G5IqooATzbdiEG7VcF49VvN 2iExbHcR5HkWTn02XrtoxBNBhIGnYSGT2q/K5f22PoLADna2Nt8r7FvJVJWICNfFF+RuHqSdj/q rzspBevqVhg8+l5TIY46YAe9YJ3UZ9fJpQcGu9smfxNXqeZwdLIg/U78tuOh9PuPro8joDK9ddk GSMH+QtpLGoLslQ== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Avoid pulling in linux/of.h by using the generic device properties. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpio-ts4800.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/drivers/gpio/gpio-ts4800.c b/drivers/gpio/gpio-ts4800.c index 86f7947ca9b2d23292c1e6660fe93c611e0cb837..f4ae87325393c909c66eda3bb7b= 2f849e645b7a4 100644 --- a/drivers/gpio/gpio-ts4800.c +++ b/drivers/gpio/gpio-ts4800.c @@ -7,8 +7,8 @@ =20 #include #include -#include #include +#include =20 #define DEFAULT_PIN_NUMBER 16 #define INPUT_REG_OFFSET 0x00 @@ -17,7 +17,7 @@ =20 static int ts4800_gpio_probe(struct platform_device *pdev) { - struct device_node *node; + struct device *dev =3D &pdev->dev; struct gpio_chip *chip; void __iomem *base_addr; int retval; @@ -31,11 +31,7 @@ static int ts4800_gpio_probe(struct platform_device *pde= v) if (IS_ERR(base_addr)) return PTR_ERR(base_addr); =20 - node =3D pdev->dev.of_node; - if (!node) - return -EINVAL; - - retval =3D of_property_read_u32(node, "ngpios", &ngpios); + retval =3D device_property_read_u32(dev, "ngpios", &ngpios); if (retval =3D=3D -EINVAL) ngpios =3D DEFAULT_PIN_NUMBER; else if (retval) --=20 2.48.1 From nobody Fri Oct 3 20:57:37 2025 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2D7F82D3209 for ; Mon, 25 Aug 2025 09:48:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756115339; cv=none; b=WxTlaE5ujalicZp6/JHlb/OYa/6GiWlCtpBz/yvb6ZdbOnRDVwOWRG7yENjV5PInbHZ03ptrc38JM+WJfNUmpN9uDUh1cPBZL4VcmYXXmYfhLa2h16ZJH1Xz0J7Q4KTEl3jixxOTPF51zH93aCAWDJBh356Whp3uzSnEB2B+CrI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756115339; c=relaxed/simple; bh=S+8urmUItItM/xWiVUTCqmdfALzfBJBt4ua9Tu1wW+U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=THSGbaaFAaaldDC/4x2OzlsqOsnuiODHEnn8TiAIj2Qndpk2X063hssmGXgGy5hBqbyxDusolx5RYOeZ8Q09G/Q/WfcbugjdVqWNCe9hsaYhl1tM87GRI9FVMf6K1T8wiSj1VudBptCFjsvNlTid5/C1TBvB1+uja72nMsHRz5w= 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=tyCgKaY1; arc=none smtp.client-ip=209.85.128.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="tyCgKaY1" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-45b629c8035so2368985e9.3 for ; Mon, 25 Aug 2025 02:48:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1756115336; x=1756720136; 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=9kI37g+TGqamMTbBje/mg9IaGEYmRq4naVS4/zTf0zA=; b=tyCgKaY1s6eTO0y53n61fGn1xyYaUh1jSnaiQbOotK8MNIvZno8jM6JToTfORSLrkN C9xltPdJwmPo/TDg4aTVIEO8/z2c2Jl3o2tTn0bh0ErYnywukbyGwvRRzep/IBmeXP6F V0iTjxQy8NBHH9C7RXCUY8DqwAvtg4Z7khybj/HTaDASFGP82Qnp7ajTJNG7yM3Oi1a7 vyC1Yi9JrVOog6QMN8B5wTs2f4kcay18E1hWp/No+9tTxifPyLfnly/VQPmnrHB9X4bm wm5BfkM7MiaVuSeTlTLBxIuqC7BgL/Zyc3m890gg7lnPGR/mWuqHxoPy6AgCYbu70Ya4 pcEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756115336; x=1756720136; 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=9kI37g+TGqamMTbBje/mg9IaGEYmRq4naVS4/zTf0zA=; b=hELhmN64nZ3655bUNoc05USAoYVTEARwUBrW+jCqzYfG9H9XT88G6gukCfysjBG+b0 iJIravoVZpvHa58BAfNywvYfKrKmRVMXTHAgMwYWXbx/X6hsjEA0EKd0XlchUtKkAcCA H6M7DUiTBMx7D8ZP73DtHwbDs/iGQktsNvn+Skp5q02Cg9tOtdUpetILUzXzQMOLSjBQ lVUHmsYdybFsIDJYWpsS07Xf4LwBL2dOhkgrcCPx6/IRHcfPuXBFbznEk9yAK2q76rUy hzE1yxJcc6XDl7ypch2P7FwHOWpCUgkdDu3eWUa87UAnQ+2bUxXGqoKkxIicFMUzGuJQ FFdA== X-Forwarded-Encrypted: i=1; AJvYcCUW4I7GhpPrXvJ1eGXVIEeo/Y+jcZxXhj3yxRV7mPOYvmDZONRGB9mw0y1MlUPmn49bihOCyCJaAa9X/ig=@vger.kernel.org X-Gm-Message-State: AOJu0YzEJSnedYxXI8l12X+aZ963pO9uWvOwFpoZtTwvGsyb3YImfw+e EdjFOY4L2cDBO8wb49aezRjXchdPkuI4bqm3UjXfeFgtTyqZ/EFNlSWzdD921M0OvIkEZMWrSWa isPBl X-Gm-Gg: ASbGncu9HKEzHL5+6R8nRYIHlME35a90RoKZxA9ajxerQn0wQLLgZvIFPLXEW+gAp5V LVv6XUVHsweOMS3HOzxftgpQSd8jAAvnzeLe7WbC2mpJ9Ex+9YkS8uLsEALqQakdlgSDYs56KAl uzaVbIXHCR6nyv5CY0DD+Cwnx6BEyv8Y7RPy7WjhaAKA00PIPhftH5xoZk96ScGi/nUztFJJ3eE dZwnE4Epf8RzKTgmNIDqnh9V5YpZ9PEkl4OIlc3MKPT45uk8s8lkI5x6qoYJ0FS0pLkTEFJ8sMM q9rBHqFgJUC5MxZNs+muvb5P3J4+mUvB4mMRYXw4Sz1C9PGm89C8qmK//i42fucmxeajfBS/nBQ Z1BtkeNzf3TjFdtjpXdea7mwLyL6D X-Google-Smtp-Source: AGHT+IFBJgx4FrBDAeV7RwKnXB4SffTSOqBH1vBajjyVNmLRVpOgheodFv/ptAil6rsqIWLKje7MnA== X-Received: by 2002:a05:600c:45ce:b0:459:dba8:bb7b with SMTP id 5b1f17b1804b1-45b517ad7ebmr96898065e9.13.1756115336507; Mon, 25 Aug 2025 02:48:56 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:ef52:fc8d:34ad:9bfe]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3c711bb1e3asm10877449f8f.57.2025.08.25.02.48.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Aug 2025 02:48:55 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 25 Aug 2025 11:48:47 +0200 Subject: [PATCH RESEND 06/14] gpio: ts4800: use dev_err_probe() 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: <20250825-gpio-mmio-gpio-conv-v1-6-356b4b1d5110@linaro.org> References: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> In-Reply-To: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Yinbo Zhu , Hoan Tran , Manivannan Sadhasivam , Yang Shen Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-unisoc@lists.infradead.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=906; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=JVVbThM9xH2PXWbYe03tJE2jElHw1ibdCVrW+ltAkLs=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBorDF+8MVnWu62SojaCwPXpE2o9XMFUOy/ngGTn 33rOc9+sWOJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaKwxfgAKCRARpy6gFHHX csMwD/9OBeg8LCNmIrMJvqordPa+1PIQrwXU7oe7UmmAIOXFub+iDU4uYpvKPNSwH9F4ei69RM4 fqo39MKqN1YL/FIXHPkGIu47yS1arMAJeQdeio/KF2NDBbfJXNzY5GvsZ21PIvVDjcvCNKVuS/V nrADfS5P1szrVWjrwR/Nn/W4NMyj+r7ioTNEipaa3d7giZ1pDEoTy2zlcyXfs2zEEcNwArwMgJM f/dGdlxFI1MJN5AOwwIyB/nKLg8vMHxNkmiYwXY6k75S4Q4kATCltDdBYXz9/cNOW/bycc2WpGd 0nfudGpSYFUYvsOiWNTyz3A+7o9duScuKQtF6WhEUgqySYrs3OaSBJQFhUg/M0lchiI8kkAZ/Uq uxkAEyMy9AlSUaGAL2WHpNpWyHSYcrsqT+ycAE/rDTcv8lhhMf58QxpEmLHTGe+u+AV4xiINPHX Z3hUafIqsO6ee+MXUQJOAAy9Y5D0+9doWoayYT5264DnK/tVHdZ3HOfkuXEsbue/d2wL94fpoBK AzG3FivhUAd8v39Zh8GszWBQUfCba1xaG00nvPF6u7Hi6o/IgdgN6VE4ZHcYz88GooWrBUjFhLx leN0gQmcH95+fMEK0Mk+Wv6B5poKD1WV81lVAscPIdkY0nrtxGESK+DWY22kRFp8H1F7b/lV2yb 6Yxh0NqHcK+jjug== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Use dev_err_probe() where applicable. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpio-ts4800.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/gpio/gpio-ts4800.c b/drivers/gpio/gpio-ts4800.c index f4ae87325393c909c66eda3bb7b2f849e645b7a4..cb3eeeb1e9df9aa687e880b16f8= d0a31b04a3b07 100644 --- a/drivers/gpio/gpio-ts4800.c +++ b/drivers/gpio/gpio-ts4800.c @@ -40,10 +40,8 @@ static int ts4800_gpio_probe(struct platform_device *pde= v) retval =3D bgpio_init(chip, &pdev->dev, 2, base_addr + INPUT_REG_OFFSET, base_addr + OUTPUT_REG_OFFSET, NULL, base_addr + DIRECTION_REG_OFFSET, NULL, 0); - if (retval) { - dev_err(&pdev->dev, "bgpio_init failed\n"); - return retval; - } + if (retval) + return dev_err_probe(dev, retval, "bgpio_init failed\n"); =20 chip->ngpio =3D ngpios; =20 --=20 2.48.1 From nobody Fri Oct 3 20:57:37 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 603972D372E for ; Mon, 25 Aug 2025 09:48:59 +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=1756115341; cv=none; b=GPNu3SRjYJWLtTkfr3C30C1GNDk3ZJwYiNM79UbWRzrZhNT35BHVSHLTM29Hbq7P0FsbV+82sdOK/lDjLC4/8G4xxeY5TO4ZTzRL5d7qre9iTBzCJwlpHczX9GXZDB/3TmsnPJ1SbvUc2h/UHMqfEBLtHIQIwS69K1aUG5oSQPY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756115341; c=relaxed/simple; bh=SYiQSK9Yx+cBGLCJfpD8TWgHeSTe3Ypi2zryPKR/RRQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ui3XtVoCYhHrho4pHmwr8Qk00EvJXgt9/dPdPQmHxM98WOzUoVHfsv7Xez/FmWoSRqtW5KlGLSN5DcSE3tP1NQAQaweWXiy52rw5Uy1dL/nfgUz2Apy3BIvIwfPhLBsYshK4rjIedcEAD/SgX6J5F2CuvltBJaa7W/L1//R2Nkk= 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=zwMW1qVF; 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="zwMW1qVF" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-45b4d8921f2so29531865e9.2 for ; Mon, 25 Aug 2025 02:48:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1756115338; x=1756720138; 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=n2pDGvu2eB22QFjf1je4Uit6bFjIzrUYVwBKgpkRJ98=; b=zwMW1qVFjKkgAp3jYbUGSAkV1dShcv8AN6HbAtanTQL4Bah7C//Imu7DalhgF4TMUl 9KcJRnAo0Ja6JbXUXOuOm3QPtwssvELGRXDqiNj3kjOI9mWxlL7SoeLjrNXRWg8jSNJ0 HXhj6r3XVeetDn4SVda9HvCuzPUbZROyV4i1w4Fv0hseN4ewrwV4Gy1hAU0IL6Fj663C hTIummAkEqGw4CzYf0OO0rXRZaoOjXMmHCOFCpUqFc636+QqJuLsB83Cjy2+al+TzjqC wXNWBjEALHFgq1l2WIDqmFTawtyFwbhLGdZ50S4n/S8wfCMQRUyO0Q1pskrh6HtTlTK9 kGdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756115338; x=1756720138; 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=n2pDGvu2eB22QFjf1je4Uit6bFjIzrUYVwBKgpkRJ98=; b=DYsr99qknPI0jqy4u76cbhYJKLYA6TwcGEz8Xh5agVAAzta960aQJ2wCr6o5bQ9T3n cJdpuKJBMOf7LKefl6wmu02l7B1K1P2xQwwn0Y6/SyCo9NdixkVrano9UHa5t5kxpeHR ndVhyTQFY+3xNpUWJycUPB/Zau1ie37IGG+uSsNVQ4+Ch8qwaXwf62Ls+DL4u5qoPWCE p1GAn24PQDDBHtBKLy633YbWANMXvzNkGcX5YPFhy1rq6X/MoSvvKr6ZVGiQE5FGJyMR fBiPPb6to1+DNYV+i74sLW6tlfxIvPoCx1vlkSUD2QDtarWW6FpVw+o7e7HAd2+7upHb Rbpg== X-Forwarded-Encrypted: i=1; AJvYcCXZaVm8rlajyMPwBEMVs0V31Elza4T1rUmuvfh1iMFDhzR5pT7YAM/kRsqkeEaOwmCqWRnTWDY2Kx50Fn8=@vger.kernel.org X-Gm-Message-State: AOJu0Yzjbb3jr6KIP0LbXesr2Hjywz2Qt227MfNZ4xkv110iGwbnhhs5 sSXvn5vhhKGEv7Oi+59TVt9m/zwmJFoz+BzkwUAuTCJT51Bn9VQ7IGM2KiSX4dgKc+o= X-Gm-Gg: ASbGncsTXJACa3h3SliY2IifrgEUC4rNSbHNeyZGQaj4EJG4NQHNPY3iizrsvd7Bl7k ksLLRAzbHAZtWTkdkZ5xrgT3dzIyes0p8p8s/cn41xrPbE4OneO7iCHG1O01XN1XgaP7o7tddmN o2fSS9E/ZQ9VIXheby25F9iDFpwoDdotJiqWAbjctDsrrzczX4sitmz4cChVL81hwiVYMl9hHz8 bor4tXFt0CVnnILxILpv3ntgrQTtfj7CkIs+MA4/P5uFgP1Dq/l4PlSG+oSLutbi9kfSAutHsy3 mYCUgVWDvzWZIFGxbDVtMjuxPUmm04RFtAB+iPrR/VKLuU55p8MNupk7DqoqJFfIUCW9AGBlPux GOUeyDztmub344SSRENoqdlXHQPB7 X-Google-Smtp-Source: AGHT+IFYJoaiYNhbtO6y78gQmvYykaingiZAuZhD/t0MWXbkvRMK3wLcbpn1m/B1NP197mhw7oFTRw== X-Received: by 2002:a05:600c:3b95:b0:456:1d93:4365 with SMTP id 5b1f17b1804b1-45b5179f29cmr95803915e9.5.1756115337600; Mon, 25 Aug 2025 02:48:57 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:ef52:fc8d:34ad:9bfe]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3c711bb1e3asm10877449f8f.57.2025.08.25.02.48.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Aug 2025 02:48:56 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 25 Aug 2025 11:48:48 +0200 Subject: [PATCH RESEND 07/14] gpio: ts4800: use new generic GPIO chip API 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: <20250825-gpio-mmio-gpio-conv-v1-7-356b4b1d5110@linaro.org> References: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> In-Reply-To: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Yinbo Zhu , Hoan Tran , Manivannan Sadhasivam , Yang Shen Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-unisoc@lists.infradead.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2141; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=zakPacry7z23T70PXyuXPcLNJS53LcxlBowKWXzkU5o=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBorDF+ExP6IhLOXMDPJawqEBFW9tKJ6dklXZLv6 cu2Zbe9FoeJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaKwxfgAKCRARpy6gFHHX ch3CD/90F4v0Q6F/uhejHJ1+b0K1bJg4j7+1Tcd4v/iFvHZLr6mGNfTQH1PHn5Z8P1jIqd3phc4 /UIz1Z+Ah3EA8xKtwC2EgOLftASv0a3vfm8iduaZbnE2Cuo3V5ZCxMHKUJZm8lFAJeJBiOQbopu VDQHeX/KeJCLdrxfAzWjkGWNxUYIhdBTWimdYJZHDB4Jh0/AQebrakt6W95euQBn7RZUVydrWDr kEjcSWmDN8mqOFvEAD63+8nTe9dNL7KYFb8I2fPOb30w54jSmsaWnvjenNH6T2QyygioJtlYoa+ zjDadKTpvOQxZ7g3Qlynab/3Oz0xn7tjbCgBigbcrKpV8sxNb94jSY/v5sqWh8q7KzY3MQHIjoT zcu6aamlj7SiqZol3sbS5lkPDDJCsLbheNx1/WGVCJbWm/IqfGhCnuAQlyYkGKlSmWzOiRwAT4x R8yCMC5M5yDN18uSIkf8X/JWGGNYXdG4m9FOlgBRSY5UBEMUOPAXna7v5kzUI6ka3sQtVfsOuyh CxiYTwhFYSLqPMiAhL62V3C8goiwjgQHeotliIuqHI26I0aY21xH361tbM7oPZz3D2OGhuC0MvU Px08jtlpsCcSxAtXP911LqBRRej+2smyRWbkrgB7eSZlKKJJFYwCquII9576lMq7bPE/NOFis6o +jC3TdEyLqFO1HA== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Convert the driver to using the new generic GPIO chip interfaces from linux/gpio/generic.h. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpio-ts4800.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/drivers/gpio/gpio-ts4800.c b/drivers/gpio/gpio-ts4800.c index cb3eeeb1e9df9aa687e880b16f8d0a31b04a3b07..844347945e8e71fa0f456be0ba8= de7217f6760a3 100644 --- a/drivers/gpio/gpio-ts4800.c +++ b/drivers/gpio/gpio-ts4800.c @@ -6,6 +6,7 @@ */ =20 #include +#include #include #include #include @@ -17,13 +18,14 @@ =20 static int ts4800_gpio_probe(struct platform_device *pdev) { + struct gpio_generic_chip_config config; struct device *dev =3D &pdev->dev; - struct gpio_chip *chip; + struct gpio_generic_chip *chip; void __iomem *base_addr; int retval; u32 ngpios; =20 - chip =3D devm_kzalloc(&pdev->dev, sizeof(struct gpio_chip), GFP_KERNEL); + chip =3D devm_kzalloc(dev, sizeof(*chip), GFP_KERNEL); if (!chip) return -ENOMEM; =20 @@ -37,15 +39,22 @@ static int ts4800_gpio_probe(struct platform_device *pd= ev) else if (retval) return retval; =20 - retval =3D bgpio_init(chip, &pdev->dev, 2, base_addr + INPUT_REG_OFFSET, - base_addr + OUTPUT_REG_OFFSET, NULL, - base_addr + DIRECTION_REG_OFFSET, NULL, 0); + config =3D (typeof(config)){ + .dev =3D dev, + .sz =3D 2, + .dat =3D base_addr + INPUT_REG_OFFSET, + .set =3D base_addr + OUTPUT_REG_OFFSET, + .dirout =3D base_addr + DIRECTION_REG_OFFSET, + }; + + retval =3D gpio_generic_chip_init(chip, &config); if (retval) - return dev_err_probe(dev, retval, "bgpio_init failed\n"); + return dev_err_probe(dev, retval, + "failed to initialize the generic GPIO chip\n"); =20 - chip->ngpio =3D ngpios; + chip->gc.ngpio =3D ngpios; =20 - return devm_gpiochip_add_data(&pdev->dev, chip, NULL); + return devm_gpiochip_add_data(dev, &chip->gc, NULL); } =20 static const struct of_device_id ts4800_gpio_of_match[] =3D { --=20 2.48.1 From nobody Fri Oct 3 20:57:37 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 083C72D46A7 for ; Mon, 25 Aug 2025 09:49:00 +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=1756115343; cv=none; b=cDV4YKZkF8C6LYuufDsf4LFB7+eaJIn3Uf/30EvRviA607qCrtQil6GdOvstOA9qtjdBlC9JGZlpIz5JS3KjZwCY3ZnFMI9oJ5duJPaPR163d24gHopJq/+595dWOsDwjPmT7MEQnY8g4Rc9s02hhJek0/UkeTWtOLovfc71y10= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756115343; c=relaxed/simple; bh=Kt7kTlN8Qa7Pl4SqU30Df8uHnhys/xXdAQiFzxd+SRY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cAHnOxnxeHozzTENsl/1Z35PQ2F+u0ATUa3dbMXXnK2gdYNyxj6lE622g6BaOMSfOddR7tMnMBCRByhn0LKxIauHcuIWkMNukQbQ2qJCHO56uEN/mf4XqnEBVaGohNbWvUvvlk1AvRuUYCmKkHdGP7cRwCFa00djoBxnnf7tYgo= 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=lkwXmo2F; 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="lkwXmo2F" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-45b49f7aaf5so24494255e9.2 for ; Mon, 25 Aug 2025 02:49:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1756115339; x=1756720139; 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=3XL7geZnhEu2GHgbcJnrbk4PK9+gLE9ZfzKbGFcoVdE=; b=lkwXmo2F6QcZMA/K2sMetobqQ8NWtXTKkEJlWcOUOGC8RxH5/3MwZrGYdnpQb9ducy umAax4uoc/1luMHIbviHIs4xvU5QTjd3DM+PMY6o+41o+vBykAuLxZWRPjU5WqJ2Qy+w RHewi8KH6xlR1zFwLp7FA9Lh0MS8a8rvW7DbGPkCKIBQs1MD6FNgnsbuUQubpLRHs9Vh XU8+++dTaEuqje4h7B9PUUkRHllQ630mngJ2z/Wc6gN+lm/5Fpoa1iDmvwph4E02QohD p5sBvut2lskmDsBeGB2CUh+cX4ooKzioqPZLq1MKXZUrrvYQUFnBbodTrfisqOIoOFfd UKbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756115339; x=1756720139; 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=3XL7geZnhEu2GHgbcJnrbk4PK9+gLE9ZfzKbGFcoVdE=; b=sl58Fs9PT/cG60r83RcyhIxaT9ZUAtLBqZSSOrESh/xWMe9jiDaSU5DNbrJ9sYoEVv jobjsci7N2a2MoiT7asGvrIXUdhkCuM+3iJNFDLQGc7KDsJ2SYn7gJ7TBW0H0SvB2CIR p4t5Bnd6HQWME20JP9BHL944HGN3fMV8OR3KKxd3piwPv2A3XwRkvox7rjiuR5msOOfv qAewCgy4DZyld4GWg1W5l3O8qnO1QjRHEI3uaGnFV58hzk//JjRNkVMNI+h2Wes4nbNa vFyDHDoiEQk8eNoUnWaVxaP3hCx6H1VCUEHV0F88gyINpC3tfp3GbXqS2jSwCj18yMX/ mKvQ== X-Forwarded-Encrypted: i=1; AJvYcCXLAlBz70x78Dqb9qAfLt5vDle6Elp8A3STqSWRuUti2ue/8oP4KHeRrb5bFGmL9oGs0E5j5exw3fbxBA4=@vger.kernel.org X-Gm-Message-State: AOJu0YwJP+MTz5OZG/WKWlvnC3dzNKlcag3k10icwCMJe0GHo7LjtIbI AIpx3bZyjLImbdCUZImsHUNdgGLKg+4BFSiPzWei8jka/WXXUpLCIqH0IZjCxuYT8ZU= X-Gm-Gg: ASbGncsferaXc1Ju9hrPh+1wmwS3a1PY90ll9eZbWEXH+Pe22omAXs32xd62Z+moS49 GFTc2m9hzigUKNnxKqvcodJi8l5nlXSVT2+LWEbCEzgXg1Mn1A2NZer/fR4jnYskMz3dat6LO1k dXDukDMYMDcVYoaKGFdEEiSQsQmGJNxRF1RUAsjFJn5ALgN8KNDoVIXrK/V2iXH0+2EmycPlbaS zDj7OMw61T0uIZ3DYmyual79LRM3eswbbM9Ea4EGKmZp/NZTs2tR90Sk7SOWSct88qPLzZ7uhum Tyo/L6slOmupGQNkPfGDLIzSsqvK+l5XlQq6ii2ZyZuY30xmxwMy6sNdJpgnDqrObxq3GzgDz3Y 1xVhSvQdK3NHYb5IL3g== X-Google-Smtp-Source: AGHT+IEegOIMU9MY8ViLpXUpgmi0qzunmqMgdKsRZ/R1rOCcGUkKbBKLGa79Jl9AtpUG8cW2p0LW0A== X-Received: by 2002:a05:6000:3105:b0:3ba:cff3:2e9 with SMTP id ffacd0b85a97d-3c5daa27683mr7362068f8f.1.1756115338987; Mon, 25 Aug 2025 02:48:58 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:ef52:fc8d:34ad:9bfe]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3c711bb1e3asm10877449f8f.57.2025.08.25.02.48.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Aug 2025 02:48:58 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 25 Aug 2025 11:48:49 +0200 Subject: [PATCH RESEND 08/14] gpio: loongson-64bit: use new generic GPIO chip API 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: <20250825-gpio-mmio-gpio-conv-v1-8-356b4b1d5110@linaro.org> References: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> In-Reply-To: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Yinbo Zhu , Hoan Tran , Manivannan Sadhasivam , Yang Shen Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-unisoc@lists.infradead.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3657; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=q0nDOolzmEolL80kYOdLVFVSG8jdJDB+vSKLox1kAgw=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBorDF/z4zF1+EzbSX44wW9kp5C98zyXeFWHMG99 qM5rdbUe8eJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaKwxfwAKCRARpy6gFHHX cgkAEADb79ImSyrjWksRjQwnS5++P92g47dudBXPy9h3Q0D8aRDzB4vpmH49EUY9gzVQP23hHEs hZngF6HTmH6JBuL0DT5v453QiPforXrkouXp7V3AvUMrZP+Di/tSXxwNDFz9N+dEHgx0Y8//3eS aacgJ8wdtl+k+y9VAwkQ8Gw0jOspifdoMpiP7PCs2W8wE+J2SuPR+hHGwBdmykLlLmjeBWFsVkm g85RWVYDwM4xVEYUyaRb844JrOxkEfXvL4IbQcdve3kCL7JJqujpSxwNeS6eUfKnoH2PbnN5LiW ZrsBdVU+Sp6Y1EtS4lgX5MpnRYtdh9eacHK3m/Uw7x80+2rV0uEZGP5zo0zRpdwt0nBHRncgkNz w8ZWYThFpX4J6vchCC8vrRPIszWRXmVm1Gv/APHMPSSysfaeeTBLR2f4C++5RzpkwOe1dwWLZgv UJ/Gs9uqXy0Dml0IUrBcCoKOBUqgKn+Ut3YFwwbuw+fPOlothO9+MbySYEv2godYhJ3woXtd6Ef tKNGmZfVUEseCIGCdSDoBVCrzytkAZ8e1hlLySQipfHjW5pFNswyBgMvqFE6s2q47zjo0eDe6nS KNP/jh4kjpCU/Xdmftn/ElIAHKxVghpEIs+oNhQWsV0nIicqVpvt1fp1VVuFsYOg7K+Zu8hIG14 zOPbKvV5wIPoaEw== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Convert the driver to using the new generic GPIO chip interfaces from linux/gpio/generic.h. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpio-loongson-64bit.c | 42 ++++++++++++++++++++++------------= ---- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/drivers/gpio/gpio-loongson-64bit.c b/drivers/gpio/gpio-loongso= n-64bit.c index 818c606fbc5149b2e4274f0776e558332700d916..482e64ba9b4209443c2f64ae742= 6b8fa9034011a 100644 --- a/drivers/gpio/gpio-loongson-64bit.c +++ b/drivers/gpio/gpio-loongson-64bit.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -30,7 +31,7 @@ struct loongson_gpio_chip_data { }; =20 struct loongson_gpio_chip { - struct gpio_chip chip; + struct gpio_generic_chip chip; spinlock_t lock; void __iomem *reg_base; const struct loongson_gpio_chip_data *chip_data; @@ -38,7 +39,8 @@ struct loongson_gpio_chip { =20 static inline struct loongson_gpio_chip *to_loongson_gpio_chip(struct gpio= _chip *chip) { - return container_of(chip, struct loongson_gpio_chip, chip); + return container_of(to_gpio_generic_chip(chip), + struct loongson_gpio_chip, chip); } =20 static inline void loongson_commit_direction(struct loongson_gpio_chip *lg= pio, unsigned int pin, @@ -138,36 +140,40 @@ static int loongson_gpio_to_irq(struct gpio_chip *chi= p, unsigned int offset) static int loongson_gpio_init(struct device *dev, struct loongson_gpio_chi= p *lgpio, void __iomem *reg_base) { + struct gpio_generic_chip_config config; int ret; =20 lgpio->reg_base =3D reg_base; if (lgpio->chip_data->mode =3D=3D BIT_CTRL_MODE) { - ret =3D bgpio_init(&lgpio->chip, dev, 8, - lgpio->reg_base + lgpio->chip_data->in_offset, - lgpio->reg_base + lgpio->chip_data->out_offset, - NULL, NULL, - lgpio->reg_base + lgpio->chip_data->conf_offset, - 0); + config =3D (typeof(config)){ + .dev =3D dev, + .sz =3D 8, + .dat =3D lgpio->reg_base + lgpio->chip_data->in_offset, + .set =3D lgpio->reg_base + lgpio->chip_data->out_offset, + .dirin =3D lgpio->reg_base + lgpio->chip_data->conf_offset, + }; + + ret =3D gpio_generic_chip_init(&lgpio->chip, &config); if (ret) { dev_err(dev, "unable to init generic GPIO\n"); return ret; } } else { - lgpio->chip.direction_input =3D loongson_gpio_direction_input; - lgpio->chip.get =3D loongson_gpio_get; - lgpio->chip.get_direction =3D loongson_gpio_get_direction; - lgpio->chip.direction_output =3D loongson_gpio_direction_output; - lgpio->chip.set =3D loongson_gpio_set; - lgpio->chip.parent =3D dev; + lgpio->chip.gc.direction_input =3D loongson_gpio_direction_input; + lgpio->chip.gc.get =3D loongson_gpio_get; + lgpio->chip.gc.get_direction =3D loongson_gpio_get_direction; + lgpio->chip.gc.direction_output =3D loongson_gpio_direction_output; + lgpio->chip.gc.set =3D loongson_gpio_set; + lgpio->chip.gc.parent =3D dev; spin_lock_init(&lgpio->lock); } =20 - lgpio->chip.label =3D lgpio->chip_data->label; - lgpio->chip.can_sleep =3D false; + lgpio->chip.gc.label =3D lgpio->chip_data->label; + lgpio->chip.gc.can_sleep =3D false; if (lgpio->chip_data->inten_offset) - lgpio->chip.to_irq =3D loongson_gpio_to_irq; + lgpio->chip.gc.to_irq =3D loongson_gpio_to_irq; =20 - return devm_gpiochip_add_data(dev, &lgpio->chip, lgpio); + return devm_gpiochip_add_data(dev, &lgpio->chip.gc, lgpio); } =20 static int loongson_gpio_probe(struct platform_device *pdev) --=20 2.48.1 From nobody Fri Oct 3 20:57:37 2025 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EF34D2D47E8 for ; Mon, 25 Aug 2025 09:49:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756115344; cv=none; b=iWLHflO6SSDANOwkJVfts2kdteQgacrNoY2wAq3InIAcOSV2Qa9pZdNJHnPH2DBVw31RBNQPfwC2ihMcTSqz82walrpXaZg5w1YS2qp2bCPkvwjwEG1BrggwiARXZgIlG+xBe+y/XDifSqlgbk5jg5lC/dQ6f2pcBrtW0H/f+Qk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756115344; c=relaxed/simple; bh=Lbx82MpdObcs8DWdhpfUiOwmKXRpNixx0jGeIxOjyxE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jCmMFKX/XCI0LmumArVGs3840y+y5AydYI7J6AGdP6PoJsiuFsb1wBYGg9e5qesIdWXuIinFDLkIxBx3C6m9pvgeGIk1oWtNsOH4ovWBJ+5yOpMIyDltdJicD9/FKtydoZDmeioWyxYx6T207AuJchkWO48sSEdvifoGKuoCiQ0= 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=qQK9zNXa; arc=none smtp.client-ip=209.85.128.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="qQK9zNXa" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-45a1b0c52f3so24915335e9.3 for ; Mon, 25 Aug 2025 02:49:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1756115340; x=1756720140; 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=W8AGdT/nih1iqZ1qXrp+c0t2R6GBFKDYWuJsRpdsd7o=; b=qQK9zNXatiFqMczfPHNiuDSZjcncFtqqw/xoCWctyIGIgLt4LvMDM54xW4sKIDPukX 0lsq0HQuNq+HjVVnm9obX+Q6jfQEOIa/B3JPY9fOZarkC2dgYjvLlbHmmrxNULf2OBZf QSYEVJmTvKTIXV8OLtnu4biKphCgROyL1dpMvk5+SBv9R6PNjNcyZGYQOpDoKVpVnhzb Vg4M+kjWaKwqj3/nWtKDaBwCdqiRSMn565unt/HBeOLOmGu0deFc2UWPOjyy8QoY4xKD t/tmtHvFV+1Yc83/2dkh2zi7s4uIUwOElpAV3x0yVNR0nDhlCQSkuGW9m8OOGZYyOKU4 xumg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756115340; x=1756720140; 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=W8AGdT/nih1iqZ1qXrp+c0t2R6GBFKDYWuJsRpdsd7o=; b=Ei6ZH4lgfdGT/ZOneOHr4SnDkK2gfGOskSQ2g0L5gfkEmQ1ox1qcNjA4SdWemQiM0F aUDQ121mZC7UbDsHgty6MRuqPaTFKhw63169nhSRBZcTKeJm4Xb+iaGavhgT+Jx7A34r SffxZRJ8IGROLjx7dOO95L1/sDoA+eqxLpflPwamTY+TU7HEwovZjHH9cTmRHjNl5ZxZ pkDYteOSSViBPe3mxQrtGetR0undxT9f6cQF6EraLNZVBndnGXXLORqWojG7ePS7TTTv gIXVBwLPdNLh0h+G/h47CzGDnv2UmXUuC+ud7TxYjveP4HGVvfY5/TGG7Nvuvz7oN66T vubQ== X-Forwarded-Encrypted: i=1; AJvYcCWgff16ciTBY6vsR1gXD1BOKgxrxjp26PTFPHuSacUR8sFI0WTyuY3pzkvqsH66Eu4pbSjZYIuOL4v/zdU=@vger.kernel.org X-Gm-Message-State: AOJu0YzNi0jIfZo6uI/VAP60uoB03kAiapIUiru5EgEfZ0kAg0M/CCs/ iMNEtGwr+0Ih/t6XPb0ci6aTF1QJJV7VkXUw3KaqhPYgu6882fh9wOnPd1qGosgMtIJSZwrwFf+ L5DLs X-Gm-Gg: ASbGncvMx8Vgd/EiZxBEfjKMIb9H6x0aaFbESz9ZWbilbzafbsBuQey/qRJsJrFO6/b 901aZwhB4DazV+huc+om5scQSNEqjwjbiHwBThjLjWOiK5rhc1ljW9P7ZBtBqW3l2cd2ae3hYXO OExgeM78hSRxB2nwgEb2oSgreZO4HQnIPWsTCiKKMV7lrVeFq+s1XwRHsDpWX0OdUQk0nCWq/pm V/HSsPdwbrP7mIRpCIUnrfoTe4g1TkKllArnG/ubg8iTrLFYc7n8y+VJeLXWEQ5rXoDs2TprMMK ps2Oz5f0x5q1kBH3gfpcFgrvuo2sB5i3HU0MQS5jBeWj/yy2iVHzlvOdFioEYQig0MgZsaEvpEo mf6XPs3HHZNwxvQhGkJ/01zcPSpOc X-Google-Smtp-Source: AGHT+IHWW6bKtKAx/d5aZk6j4o6ODo4SBX9rVF1UwyD5/QakOtfhQoIdXdawwVTazHvmZAvaeEuooQ== X-Received: by 2002:a05:600c:8b35:b0:458:bfe1:4a8a with SMTP id 5b1f17b1804b1-45b5179f915mr69269935e9.14.1756115340110; Mon, 25 Aug 2025 02:49:00 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:ef52:fc8d:34ad:9bfe]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3c711bb1e3asm10877449f8f.57.2025.08.25.02.48.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Aug 2025 02:48:59 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 25 Aug 2025 11:48:50 +0200 Subject: [PATCH RESEND 09/14] gpio: dwapb: use new generic GPIO chip API 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: <20250825-gpio-mmio-gpio-conv-v1-9-356b4b1d5110@linaro.org> References: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> In-Reply-To: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Yinbo Zhu , Hoan Tran , Manivannan Sadhasivam , Yang Shen Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-unisoc@lists.infradead.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=13939; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=bJtZHBh+83sX2WnxophXL3lqiaxB1fbZNtH20byx7Cc=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBorDF/nLSt37oG6Yt370yyxR2YCwJEobsgh7ew+ qYrjzQVcI2JAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaKwxfwAKCRARpy6gFHHX cgxMEADPB0eCiUwCHXNh/gx5ggF3WpxGY4SQJKyw1gsu4nVAN1pOAin5BEL4lW4i1otfoJwDH6E Bdkvzi2oYih9XQ7bkbJEeZ0XRAIvVXY0lCdKa3pNhdvlT9XnoNrUg4/exFprtM1nVi0JBnlxP68 5XEWm101WZUjhOCsh2Mc7pwAl5Gx3RLbMRuCsEO3lHtWXzt968MXrqPFSKT1LRieKhjXOqnWVbD TzcxzleZwuJ9jAeNzfu533vdUtNBIhaeWpU0PgfuegZ79Ju8AXGWyMeMB3I7N1lgVRvR6KIsnpC D9cP1twztqYASNDVqvGVxNcDImQrRFFTM/nf5rmv9Y8CeniHy3GQbmkH7hwNbzcvoHzP6NiF2pa auSZF+wfemuIY+ylqoX1gqhZDk+kgEJJbaPafrbdNfpIfxj/YXxAl9KjP3XSKJyohIllWDCCzc8 tgYcOZThhl0MxRqDJqtA6uhnj69cVlnLsuzVUls5dGNsUGSi+IbsfTllFH8LJThg62kZoKvbO7w DMoE7KRWIdcXDCP4L1JvHOvWaaI/q2mmYgvsfMBSTl4yYk4jCrDAPH206TONmYMa4I474Yqnc0S kzzzGOB7DYnbvXb8/OfpunAy7UTvRWo7iH+9BcOOouF+sSw78HHHBJBGql05JT8F81wgj0/aLiJ oU6sbTuOafh30nQ== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Convert the driver to using the new generic GPIO chip interfaces from linux/gpio/generic.h. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpio-dwapb.c | 160 +++++++++++++++++++++++++-----------------= ---- 1 file changed, 86 insertions(+), 74 deletions(-) diff --git a/drivers/gpio/gpio-dwapb.c b/drivers/gpio/gpio-dwapb.c index 43b667b41f5dce4a1a971af4506146e4ffb59b25..0fb781ca9da29545dce23ddbdf3= bd5927c714b4c 100644 --- a/drivers/gpio/gpio-dwapb.c +++ b/drivers/gpio/gpio-dwapb.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -99,7 +100,7 @@ struct dwapb_gpio_port_irqchip { }; =20 struct dwapb_gpio_port { - struct gpio_chip gc; + struct gpio_generic_chip chip; struct dwapb_gpio_port_irqchip *pirq; struct dwapb_gpio *gpio; #ifdef CONFIG_PM_SLEEP @@ -107,8 +108,12 @@ struct dwapb_gpio_port { #endif unsigned int idx; }; -#define to_dwapb_gpio(_gc) \ - (container_of(_gc, struct dwapb_gpio_port, gc)->gpio) + +static inline struct dwapb_gpio *to_dwapb_gpio(struct gpio_chip *gc) +{ + return container_of(to_gpio_generic_chip(gc), + struct dwapb_gpio_port, chip)->gpio; +} =20 struct dwapb_gpio { struct device *dev; @@ -148,19 +153,19 @@ static inline u32 gpio_reg_convert(struct dwapb_gpio = *gpio, unsigned int offset) =20 static inline u32 dwapb_read(struct dwapb_gpio *gpio, unsigned int offset) { - struct gpio_chip *gc =3D &gpio->ports[0].gc; - void __iomem *reg_base =3D gpio->regs; + struct gpio_generic_chip *chip =3D &gpio->ports[0].chip; + void __iomem *reg_base =3D gpio->regs; =20 - return gc->read_reg(reg_base + gpio_reg_convert(gpio, offset)); + return gpio_generic_read_reg(chip, reg_base + gpio_reg_convert(gpio, offs= et)); } =20 static inline void dwapb_write(struct dwapb_gpio *gpio, unsigned int offse= t, u32 val) { - struct gpio_chip *gc =3D &gpio->ports[0].gc; - void __iomem *reg_base =3D gpio->regs; + struct gpio_generic_chip *chip =3D &gpio->ports[0].chip; + void __iomem *reg_base =3D gpio->regs; =20 - gc->write_reg(reg_base + gpio_reg_convert(gpio, offset), val); + gpio_generic_write_reg(chip, reg_base + gpio_reg_convert(gpio, offset), v= al); } =20 static struct dwapb_gpio_port *dwapb_offs_to_port(struct dwapb_gpio *gpio,= unsigned int offs) @@ -186,7 +191,7 @@ static void dwapb_toggle_trigger(struct dwapb_gpio *gpi= o, unsigned int offs) =20 if (!port) return; - gc =3D &port->gc; + gc =3D &port->chip.gc; =20 pol =3D dwapb_read(gpio, GPIO_INT_POLARITY); /* Just read the current value right out of the data register */ @@ -201,13 +206,13 @@ static void dwapb_toggle_trigger(struct dwapb_gpio *g= pio, unsigned int offs) =20 static u32 dwapb_do_irq(struct dwapb_gpio *gpio) { - struct gpio_chip *gc =3D &gpio->ports[0].gc; + struct gpio_generic_chip *gen_gc =3D &gpio->ports[0].chip; unsigned long irq_status; irq_hw_number_t hwirq; =20 irq_status =3D dwapb_read(gpio, GPIO_INTSTATUS); for_each_set_bit(hwirq, &irq_status, DWAPB_MAX_GPIOS) { - int gpio_irq =3D irq_find_mapping(gc->irq.domain, hwirq); + int gpio_irq =3D irq_find_mapping(gen_gc->gc.irq.domain, hwirq); u32 irq_type =3D irq_get_trigger_type(gpio_irq); =20 generic_handle_irq(gpio_irq); @@ -237,27 +242,27 @@ static irqreturn_t dwapb_irq_handler_mfd(int irq, voi= d *dev_id) static void dwapb_irq_ack(struct irq_data *d) { struct gpio_chip *gc =3D irq_data_get_irq_chip_data(d); + struct gpio_generic_chip *gen_gc =3D to_gpio_generic_chip(gc); struct dwapb_gpio *gpio =3D to_dwapb_gpio(gc); u32 val =3D BIT(irqd_to_hwirq(d)); - unsigned long flags; =20 - raw_spin_lock_irqsave(&gc->bgpio_lock, flags); + guard(gpio_generic_lock_irqsave)(gen_gc); + dwapb_write(gpio, GPIO_PORTA_EOI, val); - raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags); } =20 static void dwapb_irq_mask(struct irq_data *d) { struct gpio_chip *gc =3D irq_data_get_irq_chip_data(d); + struct gpio_generic_chip *gen_gc =3D to_gpio_generic_chip(gc); struct dwapb_gpio *gpio =3D to_dwapb_gpio(gc); irq_hw_number_t hwirq =3D irqd_to_hwirq(d); - unsigned long flags; u32 val; =20 - raw_spin_lock_irqsave(&gc->bgpio_lock, flags); - val =3D dwapb_read(gpio, GPIO_INTMASK) | BIT(hwirq); - dwapb_write(gpio, GPIO_INTMASK, val); - raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags); + scoped_guard(gpio_generic_lock_irqsave, gen_gc) { + val =3D dwapb_read(gpio, GPIO_INTMASK) | BIT(hwirq); + dwapb_write(gpio, GPIO_INTMASK, val); + } =20 gpiochip_disable_irq(gc, hwirq); } @@ -265,59 +270,61 @@ static void dwapb_irq_mask(struct irq_data *d) static void dwapb_irq_unmask(struct irq_data *d) { struct gpio_chip *gc =3D irq_data_get_irq_chip_data(d); + struct gpio_generic_chip *gen_gc =3D to_gpio_generic_chip(gc); struct dwapb_gpio *gpio =3D to_dwapb_gpio(gc); irq_hw_number_t hwirq =3D irqd_to_hwirq(d); - unsigned long flags; u32 val; =20 gpiochip_enable_irq(gc, hwirq); =20 - raw_spin_lock_irqsave(&gc->bgpio_lock, flags); + guard(gpio_generic_lock_irqsave)(gen_gc); + val =3D dwapb_read(gpio, GPIO_INTMASK) & ~BIT(hwirq); dwapb_write(gpio, GPIO_INTMASK, val); - raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags); } =20 static void dwapb_irq_enable(struct irq_data *d) { struct gpio_chip *gc =3D irq_data_get_irq_chip_data(d); + struct gpio_generic_chip *gen_gc =3D to_gpio_generic_chip(gc); struct dwapb_gpio *gpio =3D to_dwapb_gpio(gc); irq_hw_number_t hwirq =3D irqd_to_hwirq(d); - unsigned long flags; u32 val; =20 - raw_spin_lock_irqsave(&gc->bgpio_lock, flags); + guard(gpio_generic_lock_irqsave)(gen_gc); + val =3D dwapb_read(gpio, GPIO_INTEN) | BIT(hwirq); dwapb_write(gpio, GPIO_INTEN, val); val =3D dwapb_read(gpio, GPIO_INTMASK) & ~BIT(hwirq); dwapb_write(gpio, GPIO_INTMASK, val); - raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags); } =20 static void dwapb_irq_disable(struct irq_data *d) { struct gpio_chip *gc =3D irq_data_get_irq_chip_data(d); + struct gpio_generic_chip *gen_gc =3D to_gpio_generic_chip(gc); struct dwapb_gpio *gpio =3D to_dwapb_gpio(gc); irq_hw_number_t hwirq =3D irqd_to_hwirq(d); - unsigned long flags; u32 val; =20 - raw_spin_lock_irqsave(&gc->bgpio_lock, flags); + guard(gpio_generic_lock_irqsave)(gen_gc); + val =3D dwapb_read(gpio, GPIO_INTMASK) | BIT(hwirq); dwapb_write(gpio, GPIO_INTMASK, val); val =3D dwapb_read(gpio, GPIO_INTEN) & ~BIT(hwirq); dwapb_write(gpio, GPIO_INTEN, val); - raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags); } =20 static int dwapb_irq_set_type(struct irq_data *d, u32 type) { struct gpio_chip *gc =3D irq_data_get_irq_chip_data(d); + struct gpio_generic_chip *gen_gc =3D to_gpio_generic_chip(gc); struct dwapb_gpio *gpio =3D to_dwapb_gpio(gc); irq_hw_number_t bit =3D irqd_to_hwirq(d); - unsigned long level, polarity, flags; + unsigned long level, polarity; + + guard(gpio_generic_lock_irqsave)(gen_gc); =20 - raw_spin_lock_irqsave(&gc->bgpio_lock, flags); level =3D dwapb_read(gpio, GPIO_INTTYPE_LEVEL); polarity =3D dwapb_read(gpio, GPIO_INT_POLARITY); =20 @@ -352,7 +359,6 @@ static int dwapb_irq_set_type(struct irq_data *d, u32 t= ype) dwapb_write(gpio, GPIO_INTTYPE_LEVEL, level); if (type !=3D IRQ_TYPE_EDGE_BOTH) dwapb_write(gpio, GPIO_INT_POLARITY, polarity); - raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags); =20 return 0; } @@ -393,11 +399,12 @@ static int dwapb_gpio_set_debounce(struct gpio_chip *= gc, unsigned offset, unsigned debounce) { struct dwapb_gpio_port *port =3D gpiochip_get_data(gc); + struct gpio_generic_chip *gen_gc =3D to_gpio_generic_chip(gc); struct dwapb_gpio *gpio =3D port->gpio; - unsigned long flags, val_deb; + unsigned long val_deb; unsigned long mask =3D BIT(offset); =20 - raw_spin_lock_irqsave(&gc->bgpio_lock, flags); + guard(gpio_generic_lock_irqsave)(gen_gc); =20 val_deb =3D dwapb_read(gpio, GPIO_PORTA_DEBOUNCE); if (debounce) @@ -406,8 +413,6 @@ static int dwapb_gpio_set_debounce(struct gpio_chip *gc, val_deb &=3D ~mask; dwapb_write(gpio, GPIO_PORTA_DEBOUNCE, val_deb); =20 - raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags); - return 0; } =20 @@ -445,7 +450,7 @@ static void dwapb_configure_irqs(struct dwapb_gpio *gpi= o, struct dwapb_port_property *pp) { struct dwapb_gpio_port_irqchip *pirq; - struct gpio_chip *gc =3D &port->gc; + struct gpio_chip *gc =3D &port->chip.gc; struct gpio_irq_chip *girq; int err; =20 @@ -501,6 +506,7 @@ static int dwapb_gpio_add_port(struct dwapb_gpio *gpio, struct dwapb_port_property *pp, unsigned int offs) { + struct gpio_generic_chip_config config; struct dwapb_gpio_port *port; void __iomem *dat, *set, *dirout; int err; @@ -519,32 +525,39 @@ static int dwapb_gpio_add_port(struct dwapb_gpio *gpi= o, set =3D gpio->regs + GPIO_SWPORTA_DR + pp->idx * GPIO_SWPORT_DR_STRIDE; dirout =3D gpio->regs + GPIO_SWPORTA_DDR + pp->idx * GPIO_SWPORT_DDR_STRI= DE; =20 + config =3D (typeof(config)){ + .dev =3D gpio->dev, + .sz =3D 4, + .dat =3D dat, + .set =3D set, + .dirout =3D dirout, + }; + /* This registers 32 GPIO lines per port */ - err =3D bgpio_init(&port->gc, gpio->dev, 4, dat, set, NULL, dirout, - NULL, 0); + err =3D gpio_generic_chip_init(&port->chip, &config); if (err) { dev_err(gpio->dev, "failed to init gpio chip for port%d\n", port->idx); return err; } =20 - port->gc.fwnode =3D pp->fwnode; - port->gc.ngpio =3D pp->ngpio; - port->gc.base =3D pp->gpio_base; - port->gc.request =3D gpiochip_generic_request; - port->gc.free =3D gpiochip_generic_free; + port->chip.gc.fwnode =3D pp->fwnode; + port->chip.gc.ngpio =3D pp->ngpio; + port->chip.gc.base =3D pp->gpio_base; + port->chip.gc.request =3D gpiochip_generic_request; + port->chip.gc.free =3D gpiochip_generic_free; =20 /* Only port A support debounce */ if (pp->idx =3D=3D 0) - port->gc.set_config =3D dwapb_gpio_set_config; + port->chip.gc.set_config =3D dwapb_gpio_set_config; else - port->gc.set_config =3D gpiochip_generic_config; + port->chip.gc.set_config =3D gpiochip_generic_config; =20 /* Only port A can provide interrupts in all configurations of the IP */ if (pp->idx =3D=3D 0) dwapb_configure_irqs(gpio, port, pp); =20 - err =3D devm_gpiochip_add_data(gpio->dev, &port->gc, port); + err =3D devm_gpiochip_add_data(gpio->dev, &port->chip.gc, port); if (err) { dev_err(gpio->dev, "failed to register gpiochip for port%d\n", port->idx); @@ -750,38 +763,37 @@ static int dwapb_gpio_probe(struct platform_device *p= dev) static int dwapb_gpio_suspend(struct device *dev) { struct dwapb_gpio *gpio =3D dev_get_drvdata(dev); - struct gpio_chip *gc =3D &gpio->ports[0].gc; - unsigned long flags; + struct gpio_generic_chip *gen_gc =3D &gpio->ports[0].chip; int i; =20 - raw_spin_lock_irqsave(&gc->bgpio_lock, flags); - for (i =3D 0; i < gpio->nr_ports; i++) { - unsigned int offset; - unsigned int idx =3D gpio->ports[i].idx; - struct dwapb_context *ctx =3D gpio->ports[i].ctx; + scoped_guard(gpio_generic_lock_irqsave, gen_gc) { + for (i =3D 0; i < gpio->nr_ports; i++) { + unsigned int offset; + unsigned int idx =3D gpio->ports[i].idx; + struct dwapb_context *ctx =3D gpio->ports[i].ctx; =20 - offset =3D GPIO_SWPORTA_DDR + idx * GPIO_SWPORT_DDR_STRIDE; - ctx->dir =3D dwapb_read(gpio, offset); + offset =3D GPIO_SWPORTA_DDR + idx * GPIO_SWPORT_DDR_STRIDE; + ctx->dir =3D dwapb_read(gpio, offset); =20 - offset =3D GPIO_SWPORTA_DR + idx * GPIO_SWPORT_DR_STRIDE; - ctx->data =3D dwapb_read(gpio, offset); + offset =3D GPIO_SWPORTA_DR + idx * GPIO_SWPORT_DR_STRIDE; + ctx->data =3D dwapb_read(gpio, offset); =20 - offset =3D GPIO_EXT_PORTA + idx * GPIO_EXT_PORT_STRIDE; - ctx->ext =3D dwapb_read(gpio, offset); + offset =3D GPIO_EXT_PORTA + idx * GPIO_EXT_PORT_STRIDE; + ctx->ext =3D dwapb_read(gpio, offset); =20 - /* Only port A can provide interrupts */ - if (idx =3D=3D 0) { - ctx->int_mask =3D dwapb_read(gpio, GPIO_INTMASK); - ctx->int_en =3D dwapb_read(gpio, GPIO_INTEN); - ctx->int_pol =3D dwapb_read(gpio, GPIO_INT_POLARITY); - ctx->int_type =3D dwapb_read(gpio, GPIO_INTTYPE_LEVEL); - ctx->int_deb =3D dwapb_read(gpio, GPIO_PORTA_DEBOUNCE); + /* Only port A can provide interrupts */ + if (idx =3D=3D 0) { + ctx->int_mask =3D dwapb_read(gpio, GPIO_INTMASK); + ctx->int_en =3D dwapb_read(gpio, GPIO_INTEN); + ctx->int_pol =3D dwapb_read(gpio, GPIO_INT_POLARITY); + ctx->int_type =3D dwapb_read(gpio, GPIO_INTTYPE_LEVEL); + ctx->int_deb =3D dwapb_read(gpio, GPIO_PORTA_DEBOUNCE); =20 - /* Mask out interrupts */ - dwapb_write(gpio, GPIO_INTMASK, ~ctx->wake_en); + /* Mask out interrupts */ + dwapb_write(gpio, GPIO_INTMASK, ~ctx->wake_en); + } } } - raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags); =20 clk_bulk_disable_unprepare(DWAPB_NR_CLOCKS, gpio->clks); =20 @@ -791,8 +803,8 @@ static int dwapb_gpio_suspend(struct device *dev) static int dwapb_gpio_resume(struct device *dev) { struct dwapb_gpio *gpio =3D dev_get_drvdata(dev); - struct gpio_chip *gc =3D &gpio->ports[0].gc; - unsigned long flags; + struct gpio_chip *gc =3D &gpio->ports[0].chip.gc; + struct gpio_generic_chip *gen_gc =3D to_gpio_generic_chip(gc); int i, err; =20 err =3D clk_bulk_prepare_enable(DWAPB_NR_CLOCKS, gpio->clks); @@ -801,7 +813,8 @@ static int dwapb_gpio_resume(struct device *dev) return err; } =20 - raw_spin_lock_irqsave(&gc->bgpio_lock, flags); + guard(gpio_generic_lock_irqsave)(gen_gc); + for (i =3D 0; i < gpio->nr_ports; i++) { unsigned int offset; unsigned int idx =3D gpio->ports[i].idx; @@ -828,7 +841,6 @@ static int dwapb_gpio_resume(struct device *dev) dwapb_write(gpio, GPIO_PORTA_EOI, 0xffffffff); } } - raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags); =20 return 0; } --=20 2.48.1 From nobody Fri Oct 3 20:57:37 2025 Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.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 CD29B2D4817 for ; Mon, 25 Aug 2025 09:49:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756115345; cv=none; b=gLL5O+wgenMMAWAQgj9ukGw38CUp0+Ddbw4LhawwF6BKcHTd+mK7TSEsfN5VDdxD/BVBmLJQfVDA2pHVyUL5xZA1W30V1sEis/1Fn33utn3eeOt4hYZ7xX/6FvT5BEOzdzF/flVe9aQjImhvzimrP5uHgDbMSeutozntcEqnR0U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756115345; c=relaxed/simple; bh=JoATGmb5B+qG9j8i++GOB88ySA0sb3+2w5K/6Uoihrw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sIMufAZ9NXUnjCbVe1d/iFAmfavPah+ywMZ/+KdH/2tNo4QZuOSDcqZZQ1wayOPnwuDXZoYpPEbAVC74UVYjTjG0pm7LdRwfq/K0cG6HPcSYl66OASVwG01bwQBIBp4cAUMAYfKgaaMVoEDjBaumTIPP3g2+CfLoDG86fCVG8Cg= 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=ZpaxidKH; arc=none smtp.client-ip=209.85.221.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="ZpaxidKH" Received: by mail-wr1-f51.google.com with SMTP id ffacd0b85a97d-3c68ac7e1c4so1096556f8f.2 for ; Mon, 25 Aug 2025 02:49:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1756115341; x=1756720141; 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=/JXqL63qeFVdF/I9mGFbork5TN+ZaQ7aCD37gp/UqF0=; b=ZpaxidKHuSljwbQkaoS4rxy/mPLpAmHZQ4KCdlyh+vtgGKVNapHPnRl/dFeyRXs/8e v4+p3x7jo4lz/ji38hC7ijCBkMX7gisMy2gKJl1X+aSyvUwfpsO4OVmeyI93FGcOSQnK NJuyD4k+gecKgLlBis6Zg408BoWKA5FMD9n4gQQRnG6xBTeT5/OYXfoVQOglGbL9Nc7m /h19R9snABqTWxM0nIskE86ZNN8lFEKHohA439EMv43JXqYYWtIE3zS+VQWjboY2RPbr c1qdzl2dFrbgaUQvmUfAveH+if1sTQQy0GMn3OYHi8AiVXzGHWFExrzfinsBKrX7aY8S 89mw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756115341; x=1756720141; 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=/JXqL63qeFVdF/I9mGFbork5TN+ZaQ7aCD37gp/UqF0=; b=LlyVD2lGEZmWYEkahp4u/e5O+fY9p4rluCc1Xlcozyu4b+gr/8GVpcjVTSkh6k2HWL XbS9tSBscUwoLdC94813AwI8P/903fJSi0dXtvQxJx1XrT0Cq02c+Bfo9w/6eG/PTU8J lWBff04G1oTB8YGwymVOWRDfb/cTsm00VPUjDo9JZDcI69mG7XpIQBoJiiiMndBVGwKT x7QvS5ZXWxlUX92R0YNtmti28VjTup6v4Zaku5rRObB5tDtFHK/jX0oh1yTQWSxeavAt 2VsbuX1cnQzyEldHzj+T9MNVTZnbDzSuSr1B4muMAYZttHI1PkbT4UnSzdd78h5/xki2 QUCA== X-Forwarded-Encrypted: i=1; AJvYcCWVxmZvvNJ5dW4c/O4PK/GydRDeShcs3CzTu//uf0f98COVUl4r4DB5WIetfYGv2jdA9wIPtt0k/FWKAsw=@vger.kernel.org X-Gm-Message-State: AOJu0YzkNqXIMSLx4SDXlSyfolzMX8js01zBUwLvCRqE4oE3bMgXyxis AhjZDjn2QizFPPOJeknjaG8JDIoQEgM6Yz8A1Ex5w+468MiiwuKxYwvIO9Y7OEh5dyQ= X-Gm-Gg: ASbGncsVC8X+lW2EYB1TKvn/DKMSj1yMMEFN/SdV4Eu+u2qxYrUDlYvdxV7ReNbD5mj m/T7nU6IJMNApwfp32AUu8dB2WIKymyWcWm2OoDISuVwcxV5HSXTdj289ungC/GPryI8on43ID3 D08PhhgS5+vHqynlN//Z9NZQfR0ZQeN1dZvOh+VShtwt2rK/x5JCVVGh9dx5VCslaFX4Vh7o+G8 KVAAvuegL4Xbo3YQVL6mK9SQ7A+9ln+NCNIsJeFTRPr5KqCGqh/dxO+vZzjCx/8e9KfBBY21qT2 XZIhfgb3k1ehk5sTKR07azHN3ks9VGrvDzSk0mzmL/E6wI+a/dvMfBwrnCt2FbYxpsZjCMF0ad3 P8cruYWBHqxoxRTEoBtAK6sQ/+rJx X-Google-Smtp-Source: AGHT+IGqQFUyVzUhWNvcRXp/aqVwDzPVihVhyMJEm+AleXvTWHTL72e7MVyfwP+PUw30TkIPXUveHg== X-Received: by 2002:a05:6000:4308:b0:3c8:443:4053 with SMTP id ffacd0b85a97d-3c804434626mr3718081f8f.1.1756115341323; Mon, 25 Aug 2025 02:49:01 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:ef52:fc8d:34ad:9bfe]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3c711bb1e3asm10877449f8f.57.2025.08.25.02.49.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Aug 2025 02:49:00 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 25 Aug 2025 11:48:51 +0200 Subject: [PATCH RESEND 10/14] gpio: amdpt: use new generic GPIO chip API 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: <20250825-gpio-mmio-gpio-conv-v1-10-356b4b1d5110@linaro.org> References: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> In-Reply-To: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Yinbo Zhu , Hoan Tran , Manivannan Sadhasivam , Yang Shen Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-unisoc@lists.infradead.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4007; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=J+TT9XjbJJKbjE77nqgtMEqiO3qZwqcbYA98JKh3zw8=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBorDF/x4Ui4aJKIzDH0rV5RTC964M761/7Rc/Gu oO2Vd9gFnOJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaKwxfwAKCRARpy6gFHHX cjssEAC2/HEP7ClxN+Z8FxBVvzsXbdSfTrHqx8ubSZGhwCLUqGKdylAim9rPEKUHQQJB/fTrtSk egIV2DUIsexkGXJ1mJCvGuBNj/pfGF0RgghPgpVvghNihgUq3kyktUSiakewhKE+/wB9xY/zY5s 7ejYlAKn3+KSQCUx+QM52LHaAVqmyS+Mh8zKZMniaYendSd22YsR5+8kFl6z/Q7jIV328Cx5k7V Jk+CdFJYezEdAqt+VK12+7oekT2rST3kwH+l4Ya3XVwf2KXKayHfYa8iVO336uUAAYVTEkxvOu1 gaJfg7h9eN4sj8WdyPzUF6aKNsfpConZVaana8Qp8CFJwmm64Gz3H1pVbv9ypJCKAYzbL7MxeTo /lx2ztvw/OHEW9W9Gg3nKBJaPKKGLwujx49JiyIspjJkmzRFLpe9YwL3ZKWdXyj6/F2aCtKwzzj ySE/0nZ08eBBBWzTv8kmu1NZYGivXV1s+df1EAdJ6W/fYdfNGeV0mdle2jq9/MvVeHT6GhSx601 IRTeESGbheUdw46N2E6VehPM3kfoz76g0ZJt8CfIBTzqmPCIMSmWi45ihLiWXhbqZsr9UXxWJKs mEvYxOpXORIGUWGbrA8P5KTcOQPCdV9rMn5CbM60cbPNHuruPDjzZ6M3AGpet3TGnIWBgKFxvAt J1c3T3Q9aDoUaRA== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Convert the driver to using the new generic GPIO chip interfaces from linux/gpio/generic.h. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpio-amdpt.c | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/drivers/gpio/gpio-amdpt.c b/drivers/gpio/gpio-amdpt.c index b70036587d9c3f64bb73ed3b94e1c14f249c9e21..0a9b870705b90bdc9bdab93ce5a= 4a33ebdafccc6 100644 --- a/drivers/gpio/gpio-amdpt.c +++ b/drivers/gpio/gpio-amdpt.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -24,54 +25,50 @@ #define PT_SYNC_REG 0x28 =20 struct pt_gpio_chip { - struct gpio_chip gc; + struct gpio_generic_chip chip; void __iomem *reg_base; }; =20 static int pt_gpio_request(struct gpio_chip *gc, unsigned offset) { + struct gpio_generic_chip *gen_gc =3D to_gpio_generic_chip(gc); struct pt_gpio_chip *pt_gpio =3D gpiochip_get_data(gc); - unsigned long flags; u32 using_pins; =20 dev_dbg(gc->parent, "pt_gpio_request offset=3D%x\n", offset); =20 - raw_spin_lock_irqsave(&gc->bgpio_lock, flags); + guard(gpio_generic_lock_irqsave)(gen_gc); =20 using_pins =3D readl(pt_gpio->reg_base + PT_SYNC_REG); if (using_pins & BIT(offset)) { dev_warn(gc->parent, "PT GPIO pin %x reconfigured\n", offset); - raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags); return -EINVAL; } =20 writel(using_pins | BIT(offset), pt_gpio->reg_base + PT_SYNC_REG); =20 - raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags); - return 0; } =20 static void pt_gpio_free(struct gpio_chip *gc, unsigned offset) { + struct gpio_generic_chip *gen_gc =3D to_gpio_generic_chip(gc); struct pt_gpio_chip *pt_gpio =3D gpiochip_get_data(gc); - unsigned long flags; u32 using_pins; =20 - raw_spin_lock_irqsave(&gc->bgpio_lock, flags); + guard(gpio_generic_lock_irqsave)(gen_gc); =20 using_pins =3D readl(pt_gpio->reg_base + PT_SYNC_REG); using_pins &=3D ~BIT(offset); writel(using_pins, pt_gpio->reg_base + PT_SYNC_REG); =20 - raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags); - dev_dbg(gc->parent, "pt_gpio_free offset=3D%x\n", offset); } =20 static int pt_gpio_probe(struct platform_device *pdev) { + struct gpio_generic_chip_config config; struct device *dev =3D &pdev->dev; struct pt_gpio_chip *pt_gpio; int ret =3D 0; @@ -91,22 +88,27 @@ static int pt_gpio_probe(struct platform_device *pdev) return PTR_ERR(pt_gpio->reg_base); } =20 - ret =3D bgpio_init(&pt_gpio->gc, dev, 4, - pt_gpio->reg_base + PT_INPUTDATA_REG, - pt_gpio->reg_base + PT_OUTPUTDATA_REG, NULL, - pt_gpio->reg_base + PT_DIRECTION_REG, NULL, - BGPIOF_READ_OUTPUT_REG_SET); + config =3D (typeof(config)){ + .dev =3D dev, + .sz =3D 4, + .dat =3D pt_gpio->reg_base + PT_INPUTDATA_REG, + .set =3D pt_gpio->reg_base + PT_OUTPUTDATA_REG, + .dirout =3D pt_gpio->reg_base + PT_DIRECTION_REG, + .flags =3D BGPIOF_READ_OUTPUT_REG_SET, + }; + + ret =3D gpio_generic_chip_init(&pt_gpio->chip, &config); if (ret) { - dev_err(dev, "bgpio_init failed\n"); + dev_err(dev, "failed to initialize the generic GPIO chip\n"); return ret; } =20 - pt_gpio->gc.owner =3D THIS_MODULE; - pt_gpio->gc.request =3D pt_gpio_request; - pt_gpio->gc.free =3D pt_gpio_free; - pt_gpio->gc.ngpio =3D (uintptr_t)device_get_match_data(dev); + pt_gpio->chip.gc.owner =3D THIS_MODULE; + pt_gpio->chip.gc.request =3D pt_gpio_request; + pt_gpio->chip.gc.free =3D pt_gpio_free; + pt_gpio->chip.gc.ngpio =3D (uintptr_t)device_get_match_data(dev); =20 - ret =3D devm_gpiochip_add_data(dev, &pt_gpio->gc, pt_gpio); + ret =3D devm_gpiochip_add_data(dev, &pt_gpio->chip.gc, pt_gpio); if (ret) { dev_err(dev, "Failed to register GPIO lib\n"); return ret; --=20 2.48.1 From nobody Fri Oct 3 20:57:37 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 303552D1303 for ; Mon, 25 Aug 2025 09:49:04 +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=1756115346; cv=none; b=C6rB5qo2qa2pf2Wts89lHuanRnha9vBNR4wKKRoyEjVrGvogM21VP7WGwZEjs+P/Q5oYYYWX4WKKp5EQs+JjTjZNFy9mfBnvh9mPYWBkZm4aCbkOX6zFaEJwNxjmTmwHp4KEtSvS4NBgixESYvVHV44SLbvvz6+6aEhDEF5Vndw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756115346; c=relaxed/simple; bh=VZmT1mzJTnKz0ta2wfMvmpvQ/Njol7qiw7Xdu0aEovM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=A2stMrjF/XBqQchcybiXHhRSUImIWSvtDekiiausgBrchfvytizP0bMVSVA4dTsS0KxFCD+ZDnm4q26ulCbH5c8AjLPTG/1oK/OjdZTdoS2MKgvdmh4YxknDUXpaL/48dx9gkB8uQPpSSuNp8H/0dvhWK8KOPDDHdkhWXuPGqmI= 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=uSoeqAPF; 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="uSoeqAPF" Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-3c380aa1ad0so2025646f8f.3 for ; Mon, 25 Aug 2025 02:49:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1756115342; x=1756720142; 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=wPrnuMVElbf0OVxOMvlRbagakQrZQomsS4SPCky3lf8=; b=uSoeqAPFWM1xx9+2xp8yPyV6oLVjrAddw/JW7fR9gHsJ4wRtu2vEJwWRNFB1KsEDRT WRZYxn77bAyk7VCSGCoWo2AsGxZwjupnoQQPjWZSKqjQZNiEVKvLVKHtnDluwQOoXx38 LAp8Fajm0pIGnBj7DW/n+/vVvPHx4qXbUHR9MZu8BiEc+jNaZRg2p/gNuZDy8Udnq4D8 6Thnt4k84QqJsTeFsjlzS2RBGI8881A+rlCeMOZneOWm3OAVAF6pyCQ5BauAciyOiJLN Bi7p0PnnJeh9NM5svfNrZxJDGuXd5vhvce653hsIFxI7t7z6EyfbafxSa/i8bUAxW0RG GjXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756115342; x=1756720142; 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=wPrnuMVElbf0OVxOMvlRbagakQrZQomsS4SPCky3lf8=; b=hq0pnPBq9cNnwpm2SbNYV++KuV5uPmxNBGV44ZY9IzEk2jbVZ2g7OqkFHpdRCW0Q9J J+eKEHUIHP+8YT5By7AdEIy4Ehv2lX9fodb5nVfB7L+9Km9+aDePA+siF7rtEf9psF5+ 6scsHKx5SAoHF+kGuvjipAgsVUx7XbrfCyc4v9kttCFJ2u4f8kj/xcdGmDwmumcRVFYc uQyNkJPc7xQpEGdvHOSJ2N0DOGVPb3qLMCi/ceaUCefHKgqlRag6ppzn0PuShxgYyTUL L8gIqepwkWPnFLlt9kFvhacCDDMkvxoSnHaAg9YdLvlp/L+85h8f4lV6uGojcjv4hQ70 dj4w== X-Forwarded-Encrypted: i=1; AJvYcCWVgKN305D2LIH8zBmEwS2VtNQjbZZkY5ueC/eXbowAgphQymvoyHpzySnBqegxxgpTbWIuGR+ZdfRiOHs=@vger.kernel.org X-Gm-Message-State: AOJu0Yx/6ep6ZwErVo+SyfiPZE8LyWRLqhxoKWOkNASilBuN0sAxAtM2 E7mLilu+0nS0J+gnh0IJexbUyrQ0coNrIRSbeb/Tpst1yP26GkDW0fgzcELTi+UmPgw= X-Gm-Gg: ASbGncuQTd6aQE76AwFxQNOMIGd6hU7cELxSz/EyaMovpc3Dvp54ULcnm8lXTjkm0Vl dpHUPeeJehBhHSg4jLlnmIE4B8R7rBU61oFNkDvPj0JeFybxAWzxG4UpfE7L2BK+uzMTWvzLs1x dMhJaqnlBY652ZqZP/KEuZXOCYuw6MCWmwiCbOzxGdKFSyGhYRl0yeqtl0HUBcEGnPIWC4lPCwj Wqj95xHf+7oYV3j2d67UBpXvYT/VlLpEAbyNwmOAWc8AGsooLUVu+UnXqiIS5jTyGiWN14JLp/f CfaRKj2YP0w4s66O3eJC97ZfYV/COtvWc5f9Ypn4EYHZKQCaauH3+1jU4zz2cVaINsffo/NEhWN N8hX5zbX/w8NhQqw6q1Tl5DzzGyu6 X-Google-Smtp-Source: AGHT+IFjgey1nCIviQTiPa1PzQ/EHonjOfKoB/cv7f8o1CADReniSO0YUmXyqIETzZ5nTpWlT0Jdcw== X-Received: by 2002:a5d:5f81:0:b0:3b8:f2f2:e417 with SMTP id ffacd0b85a97d-3c5dcdfc643mr8781837f8f.51.1756115342395; Mon, 25 Aug 2025 02:49:02 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:ef52:fc8d:34ad:9bfe]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3c711bb1e3asm10877449f8f.57.2025.08.25.02.49.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Aug 2025 02:49:01 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 25 Aug 2025 11:48:52 +0200 Subject: [PATCH RESEND 11/14] gpio: rda: use new generic GPIO chip API 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: <20250825-gpio-mmio-gpio-conv-v1-11-356b4b1d5110@linaro.org> References: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> In-Reply-To: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Yinbo Zhu , Hoan Tran , Manivannan Sadhasivam , Yang Shen Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-unisoc@lists.infradead.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2916; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=VEKDyVTn7CdAc/qOsHjVELR8QjmrXUmK9abPLIIpync=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBorDF/jKamudiWZeik6VJ09Xx/iCNsa+hN9IVns kkGZw2lPySJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaKwxfwAKCRARpy6gFHHX ck5ZEADI5Vf5PU/5cpxG04FkHdFGw+RZmg5X8m+J/hOxMzbMW/iLAflxzkvfGG99nUmCRaXb3/K s4Lh95pT29u2GXQmTtbBDEe+GLI/8kYLPkP/M7ihXlIMl/sck1TYC2+zeiaxLCDr8knUZoqJJcA CAmwq/244Fm2XAPjxTfScQo8FAqc0kH9x+/KQKxcXx9JO4i03ttbT6PTpf9QI4BQi3neUvE1A20 dxGk37C11FbihhBm5+9lLY12x0zIvZut+nMLEpuz5V3gYlPKda+Vd36VGvh8Gl/mw2JpqDfBJB+ GC2vYqAoTeDyBlN3DpgO64GzmL/f5lVIZbspk3xFXDeo27d9SDDPVdcnN+kVACVhGAxkKM8FIqi r+pFSNqqPrCnsgmKlksdOW0y4iLuEGT+ELXLry3dB+Bx8dxz7BXlTXx7CvZO8YRRnOpL7EFYSZP 5iBVm+Esr1+4ArdG/VB1Sx3MXoJXYCyg0lyEZVNGNhvJooLqhQNbLkNT8CF3XhJwoXVQ73fPsoI Kzm5ddFBOvovxO4DHfn2JQfL7no0OZU/wP6FGS6/7XEszAI7j73VXwvvV0ob1iyhv1lYzzZR7+7 xlpxZLbmzIFqlfkwBigT0D8RYQ8SsIiVXyO/dSzJHEKeEW8YxCVyU3eYmKYGnMMP3eooLetpb49 NCUph8Bx1R7VpNg== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Convert the driver to using the new generic GPIO chip interfaces from linux/gpio/generic.h. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpio-rda.c | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/drivers/gpio/gpio-rda.c b/drivers/gpio/gpio-rda.c index cb2f63eee2aa10a2708ec91dfd610ed1ea76917d..bcd85a2237a532b875df9470d97= 2ac88b95a91cc 100644 --- a/drivers/gpio/gpio-rda.c +++ b/drivers/gpio/gpio-rda.c @@ -8,6 +8,7 @@ =20 #include #include +#include #include #include #include @@ -35,7 +36,7 @@ #define RDA_GPIO_BANK_NR 32 =20 struct rda_gpio { - struct gpio_chip chip; + struct gpio_generic_chip chip; void __iomem *base; spinlock_t lock; int irq; @@ -208,6 +209,7 @@ static const struct irq_chip rda_gpio_irq_chip =3D { =20 static int rda_gpio_probe(struct platform_device *pdev) { + struct gpio_generic_chip_config config; struct device *dev =3D &pdev->dev; struct gpio_irq_chip *girq; struct rda_gpio *rda_gpio; @@ -235,24 +237,29 @@ static int rda_gpio_probe(struct platform_device *pde= v) =20 spin_lock_init(&rda_gpio->lock); =20 - ret =3D bgpio_init(&rda_gpio->chip, dev, 4, - rda_gpio->base + RDA_GPIO_VAL, - rda_gpio->base + RDA_GPIO_SET, - rda_gpio->base + RDA_GPIO_CLR, - rda_gpio->base + RDA_GPIO_OEN_SET_OUT, - rda_gpio->base + RDA_GPIO_OEN_SET_IN, - BGPIOF_READ_OUTPUT_REG_SET); + config =3D (typeof(config)){ + .dev =3D dev, + .sz =3D 4, + .dat =3D rda_gpio->base + RDA_GPIO_VAL, + .set =3D rda_gpio->base + RDA_GPIO_SET, + .clr =3D rda_gpio->base + RDA_GPIO_CLR, + .dirout =3D rda_gpio->base + RDA_GPIO_OEN_SET_OUT, + .dirin =3D rda_gpio->base + RDA_GPIO_OEN_SET_IN, + .flags =3D BGPIOF_READ_OUTPUT_REG_SET, + }; + + ret =3D gpio_generic_chip_init(&rda_gpio->chip, &config); if (ret) { - dev_err(dev, "bgpio_init failed\n"); + dev_err(dev, "failed to initialize the generic GPIO chip\n"); return ret; } =20 - rda_gpio->chip.label =3D dev_name(dev); - rda_gpio->chip.ngpio =3D ngpios; - rda_gpio->chip.base =3D -1; + rda_gpio->chip.gc.label =3D dev_name(dev); + rda_gpio->chip.gc.ngpio =3D ngpios; + rda_gpio->chip.gc.base =3D -1; =20 if (rda_gpio->irq >=3D 0) { - girq =3D &rda_gpio->chip.irq; + girq =3D &rda_gpio->chip.gc.irq; gpio_irq_chip_set_chip(girq, &rda_gpio_irq_chip); girq->handler =3D handle_bad_irq; girq->default_type =3D IRQ_TYPE_NONE; @@ -269,7 +276,7 @@ static int rda_gpio_probe(struct platform_device *pdev) =20 platform_set_drvdata(pdev, rda_gpio); =20 - return devm_gpiochip_add_data(dev, &rda_gpio->chip, rda_gpio); + return devm_gpiochip_add_data(dev, &rda_gpio->chip.gc, rda_gpio); } =20 static const struct of_device_id rda_gpio_of_match[] =3D { --=20 2.48.1 From nobody Fri Oct 3 20:57:37 2025 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 37F2D2D5C6F for ; Mon, 25 Aug 2025 09:49:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756115347; cv=none; b=tWVZvTxOI8e/tbexGgo0uMkDOphdc+jhx/HrVets7HeUUkzk9GyVRGBlE5iLh4mmGGAvWYIJWPG7p+Ae+bHUjVbsDskC/uvmTchdZl8KvGK+mKzorCmUNP4ebSfe1VGqROlcvrZsM47/H8GVrtThIxhPEW9rF/ImLB89waYGIDg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756115347; c=relaxed/simple; bh=XQaqdc0ktGejmmosFBqHjv8XgXq7TD5YtWkDbZc/RV0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iexHKudj82+wS6BVkTW/v8ST7V6TIZz9apBC88kIjRH1zUOZN5/P/paVUKNALdK5CYdN7cvlkqw/vQWFmMgRu6J1OZqXCyCfKXltQEtXaDuWCuPjOIdLMrre2Umcy02pktOlQTu4/WpLlu8jWEllM6HlfVp+8oPPiLEeGlY8FJo= 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=CoUc3fsV; arc=none smtp.client-ip=209.85.128.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="CoUc3fsV" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-45a1b05a59fso32869245e9.1 for ; Mon, 25 Aug 2025 02:49:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1756115343; x=1756720143; 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=r3Pd+f1W3JQ+RXDpdyFAaWwHwzHpzCLOKtOb/pgFbgs=; b=CoUc3fsVJsoMVguFJarG3Jaba92ON72FGn2QcxLN9SbJ7eWSYDOuGkuxFM6vbECjhX +K4HLwjBWJiDu6HaY658a7Kze2p09kKYA0xmxodQlhjRZOKAPTse4jgjxFEzXe65nEV2 6S6PNvmE2WfyPL+uokTFWewNBnukNnDelDRIO2uA3OKtpXm5raR584CsunUUD0TuMM6/ Yj/KMeB5kdWihZkLgn6eT9sy2Xhv28VDKGz8nxT+P5RshZx8A+VlOlkagcvCYgatD3zD te5WUpJcD3xaFtmGu4jKY279VJFzkUrZYtWte3saFv96L2IYbROhUHsaYvHpU7Co500I khnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756115343; x=1756720143; 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=r3Pd+f1W3JQ+RXDpdyFAaWwHwzHpzCLOKtOb/pgFbgs=; b=d1XFOIXhgbTQwdv134cbaWw7QUsopqvGEETL7lZYLCmbEx/E/lzRc2sRY05lMI/tpm mKCnAnWrQQWhGqa3SvozOxXPjpDK9ibjQttEAfVfXqes/cUvJVSXh3nWRqAjSfJnWtOG af+nopHIQ+Qgj1UqAnnzJCOUltj0l/jiOmrvPn/bq34WZyhVpCi6P7HIPZizW8iypWc4 OzZOLOg8MF+O+LIjKZ0eKwJLVPNOlYW1QFrGjRAcUzqMCq0m2F9eoH2Z/EBYXPdwWN26 Q3wNl9ZZ+Koy45EQ3WpR6mi2XDCt60OcJrFMoQV2lbjgB5wXYV1VMnjAJ+LRlTg/dtot 2Dzg== X-Forwarded-Encrypted: i=1; AJvYcCUQ9gOh/7paIJ1QMWrwJAiNjrCEszkKZinqi6j+gvsA8WydZ98bS5Bmfq8D3oFMKdLuVQFwYErlftFPBKY=@vger.kernel.org X-Gm-Message-State: AOJu0Yz6TZArrpvuXMvmsaNK6fZ0rHTumqRH45+DTK1nhLhfJcOX9ox5 zzUtjmF8bMSAPiCKkO5nL6dv2IDE5KFOzWBg5JxfddCqupTdhHKWFFyDl4MFFoU6Wko= X-Gm-Gg: ASbGncv9+SIVuBB/a4MgKkTJT2yEDqm6y8H1vXPr+OZMaOgHasXCcBu1OOIEWV10514 vcrVR5oaTDqQX8fzzYW1i2LKQWBhIKG39/V48M7823SJCc2O1QPDeUx2DjIH3EllLNDYu70MDI5 xYRQ/FXMMqmq55OEKDQr/iwyX8H0xj+F6TEOmysMq29r1qCiwlPvcy1v6PZcmdzPJFGjfr0t6/Z XgvDyMW5bcQxdxwb6OBcC97s+CdQ7mTx3GxHx/gStxHnSTuzMUCrDH/8p2w2eoxGleIPC9Muzfz kM7WIH/rB+zMxNGnREVNap3RPQyZaGFcpAWyZUFc28jLcZID4SyAj/QP5usJ5uNiYnvggwsSEtH 3/1r4YJZER5qoz5hPEg== X-Google-Smtp-Source: AGHT+IF+DGK7ah98d14Q5J3T1B+5aP3g73ZZMrERf7ASzZkA8tqeaNAu5LBRINhnoLPrv7wp1bRzuw== X-Received: by 2002:a05:6000:24c3:b0:3b8:d901:fa33 with SMTP id ffacd0b85a97d-3c5dcc0777amr10149165f8f.42.1756115343472; Mon, 25 Aug 2025 02:49:03 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:ef52:fc8d:34ad:9bfe]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3c711bb1e3asm10877449f8f.57.2025.08.25.02.49.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Aug 2025 02:49:02 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 25 Aug 2025 11:48:53 +0200 Subject: [PATCH RESEND 12/14] gpio: grgpio: use new generic GPIO chip API 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: <20250825-gpio-mmio-gpio-conv-v1-12-356b4b1d5110@linaro.org> References: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> In-Reply-To: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Yinbo Zhu , Hoan Tran , Manivannan Sadhasivam , Yang Shen Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-unisoc@lists.infradead.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=7995; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=AGhvI8vG5SGj9cxXM06eRQt9v1ofBIcmVl22/TTQOT4=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBorDGA9kgZKs4xdDRJcuUH/c6fDnvRy2++EFeeH BLsDoydZRSJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaKwxgAAKCRARpy6gFHHX cl0wEACkbnVrJ7x5Ll/WAAt1ahr6Mj8tuq5YzD7ax3FC6HC4CvaZ6WH/SO/ryTLaakUgwKh3j7N fO6l5uFW/wcVU6prgm1r2D2E1oqitoecvCXLhZC0VAfh4ObP+4w1Fhxdb9A9I7LbFoG4C664OJV cyCTS+m0GQJBdbplb5e6OYlaXR8sR+2avVJUCud8fyGapgpX4V/aCMEg5zZGS4W1l7F0HSD3dYz T15xIr4wwVOlPY0nJea7yuf+Z1iV0Wa3gc1KwcYr9jsZzxCl8pLeHK3WV8zZ+EQvLMjzxcX1MLU Nvu0n5R7PgGbDoGLaA61I/ZMO/+CU1HCFOin34RQRAByZ4hlEJt0W2d8WIAqU7oBbixLJnj+wwV k2CiHst9w3fOMQ5itLFjIbXQn4cSKshlOY7N5MmkqN+PVSuouHdeZlOenr7aUBlGxTUbd765l5a IEfCnuVl2zEqwji8aeb2IUIe89qR5amnHDCgcYcIA1Xs2lZInlSgI14GOBT9PouQsvcmrAGM/rG ctVqqUrYD3L+Els1XqQiXtdYGmnZkjPN94CjBQosv449aDZxGgVSrjb7+Y1yTZeIxhV4R7Nu8OD puAoBZX9YhLg8JhZRoR2ubcndD5V8tlFRtHjHYfi/NjnTF3GKI46+u4zFCBkdfw/aJgfY9lrMxA EkZE+UGaqA8mVBw== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Convert the driver to using the new generic GPIO chip interfaces from linux/gpio/generic.h. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpio-grgpio.c | 87 +++++++++++++++++++++++-------------------= ---- 1 file changed, 44 insertions(+), 43 deletions(-) diff --git a/drivers/gpio/gpio-grgpio.c b/drivers/gpio/gpio-grgpio.c index f3f8bab62f94cefb69d31d76b961ab2d346df49e..3b77fad00749cd5218268b267b5= 848515c6a26fc 100644 --- a/drivers/gpio/gpio-grgpio.c +++ b/drivers/gpio/gpio-grgpio.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -59,7 +60,7 @@ struct grgpio_lirq { }; =20 struct grgpio_priv { - struct gpio_chip gc; + struct gpio_generic_chip chip; void __iomem *regs; struct device *dev; =20 @@ -91,13 +92,12 @@ struct grgpio_priv { static void grgpio_set_imask(struct grgpio_priv *priv, unsigned int offset, int val) { - struct gpio_chip *gc =3D &priv->gc; - if (val) priv->imask |=3D BIT(offset); else priv->imask &=3D ~BIT(offset); - gc->write_reg(priv->regs + GRGPIO_IMASK, priv->imask); + + gpio_generic_write_reg(&priv->chip, priv->regs + GRGPIO_IMASK, priv->imas= k); } =20 static int grgpio_to_irq(struct gpio_chip *gc, unsigned offset) @@ -118,7 +118,6 @@ static int grgpio_to_irq(struct gpio_chip *gc, unsigned= offset) static int grgpio_irq_set_type(struct irq_data *d, unsigned int type) { struct grgpio_priv *priv =3D irq_data_get_irq_chip_data(d); - unsigned long flags; u32 mask =3D BIT(d->hwirq); u32 ipol; u32 iedge; @@ -146,15 +145,13 @@ static int grgpio_irq_set_type(struct irq_data *d, un= signed int type) return -EINVAL; } =20 - raw_spin_lock_irqsave(&priv->gc.bgpio_lock, flags); + guard(gpio_generic_lock_irqsave)(&priv->chip); =20 - ipol =3D priv->gc.read_reg(priv->regs + GRGPIO_IPOL) & ~mask; - iedge =3D priv->gc.read_reg(priv->regs + GRGPIO_IEDGE) & ~mask; + ipol =3D gpio_generic_read_reg(&priv->chip, priv->regs + GRGPIO_IPOL) & ~= mask; + iedge =3D gpio_generic_read_reg(&priv->chip, priv->regs + GRGPIO_IEDGE) &= ~mask; =20 - priv->gc.write_reg(priv->regs + GRGPIO_IPOL, ipol | pol); - priv->gc.write_reg(priv->regs + GRGPIO_IEDGE, iedge | edge); - - raw_spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags); + gpio_generic_write_reg(&priv->chip, priv->regs + GRGPIO_IPOL, ipol | pol); + gpio_generic_write_reg(&priv->chip, priv->regs + GRGPIO_IEDGE, iedge | ed= ge); =20 return 0; } @@ -163,29 +160,23 @@ static void grgpio_irq_mask(struct irq_data *d) { struct grgpio_priv *priv =3D irq_data_get_irq_chip_data(d); int offset =3D d->hwirq; - unsigned long flags; =20 - raw_spin_lock_irqsave(&priv->gc.bgpio_lock, flags); + scoped_guard(gpio_generic_lock_irqsave, &priv->chip) + grgpio_set_imask(priv, offset, 0); =20 - grgpio_set_imask(priv, offset, 0); - - raw_spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags); - - gpiochip_disable_irq(&priv->gc, d->hwirq); + gpiochip_disable_irq(&priv->chip.gc, d->hwirq); } =20 static void grgpio_irq_unmask(struct irq_data *d) { struct grgpio_priv *priv =3D irq_data_get_irq_chip_data(d); int offset =3D d->hwirq; - unsigned long flags; =20 - gpiochip_enable_irq(&priv->gc, d->hwirq); - raw_spin_lock_irqsave(&priv->gc.bgpio_lock, flags); + gpiochip_enable_irq(&priv->chip.gc, d->hwirq); + + guard(gpio_generic_lock_irqsave)(&priv->chip); =20 grgpio_set_imask(priv, offset, 1); - - raw_spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags); } =20 static const struct irq_chip grgpio_irq_chip =3D { @@ -200,12 +191,11 @@ static const struct irq_chip grgpio_irq_chip =3D { static irqreturn_t grgpio_irq_handler(int irq, void *dev) { struct grgpio_priv *priv =3D dev; - int ngpio =3D priv->gc.ngpio; - unsigned long flags; + int ngpio =3D priv->chip.gc.ngpio; int i; int match =3D 0; =20 - raw_spin_lock_irqsave(&priv->gc.bgpio_lock, flags); + guard(gpio_generic_lock_irqsave)(&priv->chip); =20 /* * For each gpio line, call its interrupt handler if it its underlying @@ -221,8 +211,6 @@ static irqreturn_t grgpio_irq_handler(int irq, void *de= v) } } =20 - raw_spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags); - if (!match) dev_warn(priv->dev, "No gpio line matched irq %d\n", irq); =20 @@ -253,13 +241,18 @@ static int grgpio_irq_map(struct irq_domain *d, unsig= ned int irq, dev_dbg(priv->dev, "Mapping irq %d for gpio line %d\n", irq, offset); =20 - raw_spin_lock_irqsave(&priv->gc.bgpio_lock, flags); + gpio_generic_chip_lock_irqsave(&priv->chip, flags); =20 /* Request underlying irq if not already requested */ lirq->irq =3D irq; uirq =3D &priv->uirqs[lirq->index]; if (uirq->refcnt =3D=3D 0) { - raw_spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags); + /* + * FIXME: This is not how locking works at all, you can't just + * release the lock for a moment to do something that can't + * sleep... + */ + gpio_generic_chip_unlock_irqrestore(&priv->chip, flags); ret =3D request_irq(uirq->uirq, grgpio_irq_handler, 0, dev_name(priv->dev), priv); if (ret) { @@ -268,11 +261,11 @@ static int grgpio_irq_map(struct irq_domain *d, unsig= ned int irq, uirq->uirq); return ret; } - raw_spin_lock_irqsave(&priv->gc.bgpio_lock, flags); + gpio_generic_chip_lock_irqsave(&priv->chip, flags); } uirq->refcnt++; =20 - raw_spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags); + gpio_generic_chip_unlock_irqrestore(&priv->chip, flags); =20 /* Setup irq */ irq_set_chip_data(irq, priv); @@ -290,13 +283,13 @@ static void grgpio_irq_unmap(struct irq_domain *d, un= signed int irq) struct grgpio_lirq *lirq; struct grgpio_uirq *uirq; unsigned long flags; - int ngpio =3D priv->gc.ngpio; + int ngpio =3D priv->chip.gc.ngpio; int i; =20 irq_set_chip_and_handler(irq, NULL, NULL); irq_set_chip_data(irq, NULL); =20 - raw_spin_lock_irqsave(&priv->gc.bgpio_lock, flags); + gpio_generic_chip_lock_irqsave(&priv->chip, flags); =20 /* Free underlying irq if last user unmapped */ index =3D -1; @@ -315,13 +308,13 @@ static void grgpio_irq_unmap(struct irq_domain *d, un= signed int irq) uirq =3D &priv->uirqs[lirq->index]; uirq->refcnt--; if (uirq->refcnt =3D=3D 0) { - raw_spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags); + gpio_generic_chip_unlock_irqrestore(&priv->chip, flags); free_irq(uirq->uirq, priv); return; } } =20 - raw_spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags); + gpio_generic_chip_unlock_irqrestore(&priv->chip, flags); } =20 static void grgpio_irq_domain_remove(void *data) @@ -341,6 +334,7 @@ static const struct irq_domain_ops grgpio_irq_domain_op= s =3D { static int grgpio_probe(struct platform_device *ofdev) { struct device_node *np =3D ofdev->dev.of_node; + struct gpio_generic_chip_config config; struct device *dev =3D &ofdev->dev; void __iomem *regs; struct gpio_chip *gc; @@ -359,17 +353,24 @@ static int grgpio_probe(struct platform_device *ofdev) if (IS_ERR(regs)) return PTR_ERR(regs); =20 - gc =3D &priv->gc; - err =3D bgpio_init(gc, dev, 4, regs + GRGPIO_DATA, - regs + GRGPIO_OUTPUT, NULL, regs + GRGPIO_DIR, NULL, - BGPIOF_BIG_ENDIAN_BYTE_ORDER); + config =3D (typeof(config)){ + .dev =3D dev, + .sz =3D 4, + .dat =3D regs + GRGPIO_DATA, + .set =3D regs + GRGPIO_OUTPUT, + .dirout =3D regs + GRGPIO_DIR, + .flags =3D BGPIOF_BIG_ENDIAN_BYTE_ORDER, + }; + + gc =3D &priv->chip.gc; + err =3D gpio_generic_chip_init(&priv->chip, &config); if (err) { - dev_err(dev, "bgpio_init() failed\n"); + dev_err(dev, "failed to initialize the generic GPIO chip\n"); return err; } =20 priv->regs =3D regs; - priv->imask =3D gc->read_reg(regs + GRGPIO_IMASK); + priv->imask =3D gpio_generic_read_reg(&priv->chip, regs + GRGPIO_IMASK); priv->dev =3D dev; =20 gc->owner =3D THIS_MODULE; --=20 2.48.1 From nobody Fri Oct 3 20:57:37 2025 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.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 8083D2D6625 for ; Mon, 25 Aug 2025 09:49:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756115348; cv=none; b=CEhExQ50CdI4pUWeEPWyjxcrqpYRdwIp4vgelpfAMXlsb88cAbEh354UqWfZekamwDMpL7oOQbkin61IQSwP+lzq2G32ozoQX8Y1ZvjleF4X1v6RBCff5GH/qZT61Zk8HyQG6Mu/BjPwiq57Tr1zbBqlb7P5WcuqE7unloLmu2o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756115348; c=relaxed/simple; bh=hum5I1GPDuLqOSB9j4Zgav5iBNyPswfyro5xC1hpoVo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KDoLMKRsF/TRnmWNpsRJLhzDfxpEd3atFMTRDdK8Phdu69vT0oGSpphO7pN7pT1XgbijPDYV+N2OLH0iAwPTYGb43BwgHNdiJ/Vue/1RS+QKSReCEwBao44UQDtSaRWBOGthWCBKUQBIEara+Obl0PMToJ44hLbXWLCS495RwfE= 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=HocPE5J5; arc=none smtp.client-ip=209.85.128.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="HocPE5J5" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-45b4d8921f2so29532955e9.2 for ; Mon, 25 Aug 2025 02:49:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1756115345; x=1756720145; 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=BnIvSpX6XaNR1KpnyS1XpJFUwit84iSFYji6KHBKLOk=; b=HocPE5J5Lu6D/A/Iw5Wn83CNwazFQYgd5fnkv+g6oQ5VJobrVFgBbf7NDpNhFCcOt2 BUc0gElCrkihfC77rms6Dx1jYzZXq0gzHtwFXudsSIiHS/JP+8XaPR/6wjtSXyYmU4GB dTT4A4gq94aH9ulofrTjQ3Q6n2YdjfZvm80OK4trPrEZhieB5RD7WMn5LMX/pGPMCTL3 Nd35LAyYdGNYQFU6AsfYLXLMiOLq07mxetwhR6k9kL4qZCc7tHnsBFGEA5O69lumJ5cp W/G2P8y/7ZYU62a10ruS3ZOSlbAlmDRG9mIqPXEsI2hYwUvpHFZvo9mZBSbIMvE2Ivgw I6YA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756115345; x=1756720145; 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=BnIvSpX6XaNR1KpnyS1XpJFUwit84iSFYji6KHBKLOk=; b=re/NQYlsjOec5l+337RefQZl31U/fbVVeeurPS0bu4oEG7C1IGwtP04/P4VOTlCZdM NlSgzI/53uBcrxYD3BkNCfQYI80m/9Ic1bR+JolEdnSYZ2Uo0f+E2IvvibYthtRrnRIQ 97fPxuhoVcdviY3w8P3t4ITfIeKb/48Kxbb46rU7wfDN8jYeSun7tGmQGQ53WyHtpVnJ xCivaGj7HxVtoBrL9nzG6u0/B9dy9Bh/btTc0CrfX7z77emERAT7cLsZHv3Q3Owhs145 ZGrPLBlqRJWocgGJtPPyWax2nCTMLKrkE6UIodiUqMMRVHBI8Bdb9RM+bWDAgQhlaYma h8eg== X-Forwarded-Encrypted: i=1; AJvYcCXc0qlSDDLTjIjDuQzyQhKW7ufd1XZKh9vAr07o6ffr0ws9sWxtNzXc1/4RqWQ/VabTqtyFnBesOf2HzzY=@vger.kernel.org X-Gm-Message-State: AOJu0YyvvkHcOxV9w1ztNrTmn8sCbH6yBKUMYF8qux+7vQp5v53IKJ4F LC5LuSCwJW80XbgrdN99xy1OE5Yb3Xmuu6DbHRu9c+agw4QfWOuz8BvzVkVtbO6V88s= X-Gm-Gg: ASbGncsrL5mPuoLrltXF6fj/SFDWmVCtZQzh1TEyN1r6g/dOw6bJ424BsTYTrqK4gab driPFwzcgK6FL3yEEawdEVl1pZlUtEmvdSPky/3KglS92qRM0KW8J9r1EP8BHg534PJhGP2iIlr d4Sja3bEvUi4hSUXBVBW0Qf1yD9l+5QcqF9+FE/TzCG4VacbpTNI3KivM7OOdNOsg0YawKcPsxM EsC3+wTbL/2EWEXFJxqhJVChoQ6h85RpXaQWPwGhJzwEUoK0u7T1z1pbJYInJn0D7MjFV/H1HF1 pOk7A2yO9sZK37tjud/SqwDM3URUBLFPpUbeThgbY7jI2eC6IXLBBzUCUdyubzpw6/3stCJwwAS HwoS/0kjV6Cs9osanQQ== X-Google-Smtp-Source: AGHT+IG16Vk1oAADcf2tKKMlQW20YxVITJDeKRUq+CWLvo6Qa5c/sMUP4UJmgZHpEofTALTKNOQBfA== X-Received: by 2002:a05:6000:1881:b0:3c9:24f5:470c with SMTP id ffacd0b85a97d-3c924f54bfemr2819993f8f.42.1756115344648; Mon, 25 Aug 2025 02:49:04 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:ef52:fc8d:34ad:9bfe]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3c711bb1e3asm10877449f8f.57.2025.08.25.02.49.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Aug 2025 02:49:03 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 25 Aug 2025 11:48:54 +0200 Subject: [PATCH RESEND 13/14] gpio: mpc8xxx: use new generic GPIO chip API 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: <20250825-gpio-mmio-gpio-conv-v1-13-356b4b1d5110@linaro.org> References: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> In-Reply-To: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Yinbo Zhu , Hoan Tran , Manivannan Sadhasivam , Yang Shen Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-unisoc@lists.infradead.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=10008; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=8xlnAhAzfwO4+HhxnfhDkoiDZ7pkFtIamWGlMtDqlhM=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBorDGAf7tPAAs+l1JeaG+mB0PRgBMQttnEOo/AN +lu29h0TJOJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaKwxgAAKCRARpy6gFHHX ckhAD/93TqSAaRskVVoK3MfNfb4UbXffJdI73/IvgWbXLS9h972jdGVx8f8sOYaaD7OFy6blc8L 3yPGdSKtokC922c3mzsplBLSI5NNKk+2lCGubHU39muVBKmW3Pm8udEnebzAYzYFpapzqZpm83z z2xt6Jz42VGiOQ3cxrWg6TWDLqmLvn+lxU6ZRYFfJyunaj1+bkWaBR1ZDWBuIyhTiQ2wa7JwcQe OWjB1ncUqBUzuMYrczGWYKoS6Hd+VI+MgpLV5gLbtqL5MS4QKkAjXgwTrLtFZUdnYNgMNxoIk6i vydOKmmioVLskgqJ/FBZJMC+qxdR5O0YnA7AcuyvPLCZcQW2us3SQepQJyu7++ILB+qQEWBOZG8 2WfeaOIPMCFYeDpYNzhAu2dTGJo96ncuCel47uatnXeidoBUvRwcSidwL1l0gki7k0Q/MSUHokR GiMa7MPimmzMkJcE0weWAoCggKxxKELqDfWO7PPQEkrpoHcamAaAJTH+hc3WfmwA9xeW5R8j32N bv4tXZs2zExOmA7R7dV9kvHxtThR9hc8qdy2bUNlHkT1/0byYPoVNGm+sr9Joc42CCEPNPlp1lo FBb3JcJiindPn79p0V39AjyxN8dP5/Tcic1VqguAqACaBfqVFz11mBmntFVBXOsCs5GDGcsbGJG dJPotEspK3Pn6ow== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Convert the driver to using the new generic GPIO chip interfaces from linux/gpio/generic.h. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpio-mpc8xxx.c | 102 +++++++++++++++++++++++++++-------------= ---- 1 file changed, 62 insertions(+), 40 deletions(-) diff --git a/drivers/gpio/gpio-mpc8xxx.c b/drivers/gpio/gpio-mpc8xxx.c index 121efdd71e451d4f992fa195b0d56d7146a6f3dd..38643fb813c562957076aab48d8= 04f8048cee5e4 100644 --- a/drivers/gpio/gpio-mpc8xxx.c +++ b/drivers/gpio/gpio-mpc8xxx.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -34,7 +35,7 @@ #define GPIO_IBE 0x18 =20 struct mpc8xxx_gpio_chip { - struct gpio_chip gc; + struct gpio_generic_chip chip; void __iomem *regs; raw_spinlock_t lock; =20 @@ -66,8 +67,10 @@ static int mpc8572_gpio_get(struct gpio_chip *gc, unsign= ed int gpio) struct mpc8xxx_gpio_chip *mpc8xxx_gc =3D gpiochip_get_data(gc); u32 out_mask, out_shadow; =20 - out_mask =3D gc->read_reg(mpc8xxx_gc->regs + GPIO_DIR); - val =3D gc->read_reg(mpc8xxx_gc->regs + GPIO_DAT) & ~out_mask; + out_mask =3D gpio_generic_read_reg(&mpc8xxx_gc->chip, + mpc8xxx_gc->regs + GPIO_DIR); + val =3D gpio_generic_read_reg(&mpc8xxx_gc->chip, + mpc8xxx_gc->regs + GPIO_DAT) & ~out_mask; out_shadow =3D gc->bgpio_data & out_mask; =20 return !!((val | out_shadow) & mpc_pin2mask(gpio)); @@ -108,12 +111,13 @@ static int mpc8xxx_gpio_to_irq(struct gpio_chip *gc, = unsigned offset) static irqreturn_t mpc8xxx_gpio_irq_cascade(int irq, void *data) { struct mpc8xxx_gpio_chip *mpc8xxx_gc =3D data; - struct gpio_chip *gc =3D &mpc8xxx_gc->gc; unsigned long mask; int i; =20 - mask =3D gc->read_reg(mpc8xxx_gc->regs + GPIO_IER) - & gc->read_reg(mpc8xxx_gc->regs + GPIO_IMR); + mask =3D gpio_generic_read_reg(&mpc8xxx_gc->chip, + mpc8xxx_gc->regs + GPIO_IER) & + gpio_generic_read_reg(&mpc8xxx_gc->chip, + mpc8xxx_gc->regs + GPIO_IMR); for_each_set_bit(i, &mask, 32) generic_handle_domain_irq(mpc8xxx_gc->irq, 31 - i); =20 @@ -124,15 +128,17 @@ static void mpc8xxx_irq_unmask(struct irq_data *d) { struct mpc8xxx_gpio_chip *mpc8xxx_gc =3D irq_data_get_irq_chip_data(d); irq_hw_number_t hwirq =3D irqd_to_hwirq(d); - struct gpio_chip *gc =3D &mpc8xxx_gc->gc; + struct gpio_chip *gc =3D &mpc8xxx_gc->chip.gc; unsigned long flags; =20 gpiochip_enable_irq(gc, hwirq); =20 raw_spin_lock_irqsave(&mpc8xxx_gc->lock, flags); =20 - gc->write_reg(mpc8xxx_gc->regs + GPIO_IMR, - gc->read_reg(mpc8xxx_gc->regs + GPIO_IMR) + gpio_generic_write_reg(&mpc8xxx_gc->chip, + mpc8xxx_gc->regs + GPIO_IMR, + gpio_generic_read_reg(&mpc8xxx_gc->chip, + mpc8xxx_gc->regs + GPIO_IMR) | mpc_pin2mask(irqd_to_hwirq(d))); =20 raw_spin_unlock_irqrestore(&mpc8xxx_gc->lock, flags); @@ -142,13 +148,14 @@ static void mpc8xxx_irq_mask(struct irq_data *d) { struct mpc8xxx_gpio_chip *mpc8xxx_gc =3D irq_data_get_irq_chip_data(d); irq_hw_number_t hwirq =3D irqd_to_hwirq(d); - struct gpio_chip *gc =3D &mpc8xxx_gc->gc; + struct gpio_chip *gc =3D &mpc8xxx_gc->chip.gc; unsigned long flags; =20 raw_spin_lock_irqsave(&mpc8xxx_gc->lock, flags); =20 - gc->write_reg(mpc8xxx_gc->regs + GPIO_IMR, - gc->read_reg(mpc8xxx_gc->regs + GPIO_IMR) + gpio_generic_write_reg(&mpc8xxx_gc->chip, mpc8xxx_gc->regs + GPIO_IMR, + gpio_generic_read_reg(&mpc8xxx_gc->chip, + mpc8xxx_gc->regs + GPIO_IMR) & ~mpc_pin2mask(irqd_to_hwirq(d))); =20 raw_spin_unlock_irqrestore(&mpc8xxx_gc->lock, flags); @@ -159,32 +166,34 @@ static void mpc8xxx_irq_mask(struct irq_data *d) static void mpc8xxx_irq_ack(struct irq_data *d) { struct mpc8xxx_gpio_chip *mpc8xxx_gc =3D irq_data_get_irq_chip_data(d); - struct gpio_chip *gc =3D &mpc8xxx_gc->gc; =20 - gc->write_reg(mpc8xxx_gc->regs + GPIO_IER, + gpio_generic_write_reg(&mpc8xxx_gc->chip, mpc8xxx_gc->regs + GPIO_IER, mpc_pin2mask(irqd_to_hwirq(d))); } =20 static int mpc8xxx_irq_set_type(struct irq_data *d, unsigned int flow_type) { struct mpc8xxx_gpio_chip *mpc8xxx_gc =3D irq_data_get_irq_chip_data(d); - struct gpio_chip *gc =3D &mpc8xxx_gc->gc; unsigned long flags; =20 switch (flow_type) { case IRQ_TYPE_EDGE_FALLING: case IRQ_TYPE_LEVEL_LOW: raw_spin_lock_irqsave(&mpc8xxx_gc->lock, flags); - gc->write_reg(mpc8xxx_gc->regs + GPIO_ICR, - gc->read_reg(mpc8xxx_gc->regs + GPIO_ICR) + gpio_generic_write_reg(&mpc8xxx_gc->chip, + mpc8xxx_gc->regs + GPIO_ICR, + gpio_generic_read_reg(&mpc8xxx_gc->chip, + mpc8xxx_gc->regs + GPIO_ICR) | mpc_pin2mask(irqd_to_hwirq(d))); raw_spin_unlock_irqrestore(&mpc8xxx_gc->lock, flags); break; =20 case IRQ_TYPE_EDGE_BOTH: raw_spin_lock_irqsave(&mpc8xxx_gc->lock, flags); - gc->write_reg(mpc8xxx_gc->regs + GPIO_ICR, - gc->read_reg(mpc8xxx_gc->regs + GPIO_ICR) + gpio_generic_write_reg(&mpc8xxx_gc->chip, + mpc8xxx_gc->regs + GPIO_ICR, + gpio_generic_read_reg(&mpc8xxx_gc->chip, + mpc8xxx_gc->regs + GPIO_ICR) & ~mpc_pin2mask(irqd_to_hwirq(d))); raw_spin_unlock_irqrestore(&mpc8xxx_gc->lock, flags); break; @@ -199,7 +208,6 @@ static int mpc8xxx_irq_set_type(struct irq_data *d, uns= igned int flow_type) static int mpc512x_irq_set_type(struct irq_data *d, unsigned int flow_type) { struct mpc8xxx_gpio_chip *mpc8xxx_gc =3D irq_data_get_irq_chip_data(d); - struct gpio_chip *gc =3D &mpc8xxx_gc->gc; unsigned long gpio =3D irqd_to_hwirq(d); void __iomem *reg; unsigned int shift; @@ -217,7 +225,9 @@ static int mpc512x_irq_set_type(struct irq_data *d, uns= igned int flow_type) case IRQ_TYPE_EDGE_FALLING: case IRQ_TYPE_LEVEL_LOW: raw_spin_lock_irqsave(&mpc8xxx_gc->lock, flags); - gc->write_reg(reg, (gc->read_reg(reg) & ~(3 << shift)) + gpio_generic_write_reg(&mpc8xxx_gc->chip, reg, + (gpio_generic_read_reg(&mpc8xxx_gc->chip, + reg) & ~(3 << shift)) | (2 << shift)); raw_spin_unlock_irqrestore(&mpc8xxx_gc->lock, flags); break; @@ -225,14 +235,18 @@ static int mpc512x_irq_set_type(struct irq_data *d, u= nsigned int flow_type) case IRQ_TYPE_EDGE_RISING: case IRQ_TYPE_LEVEL_HIGH: raw_spin_lock_irqsave(&mpc8xxx_gc->lock, flags); - gc->write_reg(reg, (gc->read_reg(reg) & ~(3 << shift)) + gpio_generic_write_reg(&mpc8xxx_gc->chip, reg, + (gpio_generic_read_reg(&mpc8xxx_gc->chip, + reg) & ~(3 << shift)) | (1 << shift)); raw_spin_unlock_irqrestore(&mpc8xxx_gc->lock, flags); break; =20 case IRQ_TYPE_EDGE_BOTH: raw_spin_lock_irqsave(&mpc8xxx_gc->lock, flags); - gc->write_reg(reg, (gc->read_reg(reg) & ~(3 << shift))); + gpio_generic_write_reg(&mpc8xxx_gc->chip, reg, + (gpio_generic_read_reg(&mpc8xxx_gc->chip, + reg) & ~(3 << shift))); raw_spin_unlock_irqrestore(&mpc8xxx_gc->lock, flags); break; =20 @@ -309,6 +323,7 @@ static const struct of_device_id mpc8xxx_gpio_ids[] =3D= { static int mpc8xxx_probe(struct platform_device *pdev) { const struct mpc8xxx_gpio_devtype *devtype =3D NULL; + struct gpio_generic_chip_config config; struct mpc8xxx_gpio_chip *mpc8xxx_gc; struct device *dev =3D &pdev->dev; struct fwnode_handle *fwnode; @@ -327,26 +342,28 @@ static int mpc8xxx_probe(struct platform_device *pdev) if (IS_ERR(mpc8xxx_gc->regs)) return PTR_ERR(mpc8xxx_gc->regs); =20 - gc =3D &mpc8xxx_gc->gc; + gc =3D &mpc8xxx_gc->chip.gc; gc->parent =3D dev; =20 + config =3D (typeof(config)){ + .dev =3D dev, + .sz =3D 4, + .dat =3D mpc8xxx_gc->regs + GPIO_DAT, + .dirout =3D mpc8xxx_gc->regs + GPIO_DIR, + .flags =3D BGPIOF_BIG_ENDIAN + }; + if (device_property_read_bool(dev, "little-endian")) { - ret =3D bgpio_init(gc, dev, 4, mpc8xxx_gc->regs + GPIO_DAT, - NULL, NULL, mpc8xxx_gc->regs + GPIO_DIR, - NULL, BGPIOF_BIG_ENDIAN); - if (ret) - return ret; dev_dbg(dev, "GPIO registers are LITTLE endian\n"); } else { - ret =3D bgpio_init(gc, dev, 4, mpc8xxx_gc->regs + GPIO_DAT, - NULL, NULL, mpc8xxx_gc->regs + GPIO_DIR, - NULL, BGPIOF_BIG_ENDIAN - | BGPIOF_BIG_ENDIAN_BYTE_ORDER); - if (ret) - return ret; + config.flags |=3D BGPIOF_BIG_ENDIAN_BYTE_ORDER; dev_dbg(dev, "GPIO registers are BIG endian\n"); } =20 + ret =3D gpio_generic_chip_init(&mpc8xxx_gc->chip, &config); + if (ret) + return ret; + mpc8xxx_gc->direction_output =3D gc->direction_output; =20 devtype =3D device_get_match_data(dev); @@ -379,10 +396,13 @@ static int mpc8xxx_probe(struct platform_device *pdev) device_is_compatible(dev, "fsl,ls1028a-gpio") || device_is_compatible(dev, "fsl,ls1088a-gpio") || is_acpi_node(fwnode)) { - gc->write_reg(mpc8xxx_gc->regs + GPIO_IBE, 0xffffffff); + gpio_generic_write_reg(&mpc8xxx_gc->chip, + mpc8xxx_gc->regs + GPIO_IBE, 0xffffffff); /* Also, latch state of GPIOs configured as output by bootloader. */ - gc->bgpio_data =3D gc->read_reg(mpc8xxx_gc->regs + GPIO_DAT) & - gc->read_reg(mpc8xxx_gc->regs + GPIO_DIR); + gc->bgpio_data =3D gpio_generic_read_reg(&mpc8xxx_gc->chip, + mpc8xxx_gc->regs + GPIO_DAT) & + gpio_generic_read_reg(&mpc8xxx_gc->chip, + mpc8xxx_gc->regs + GPIO_DIR); } =20 ret =3D devm_gpiochip_add_data(dev, gc, mpc8xxx_gc); @@ -405,8 +425,10 @@ static int mpc8xxx_probe(struct platform_device *pdev) return 0; =20 /* ack and mask all irqs */ - gc->write_reg(mpc8xxx_gc->regs + GPIO_IER, 0xffffffff); - gc->write_reg(mpc8xxx_gc->regs + GPIO_IMR, 0); + gpio_generic_write_reg(&mpc8xxx_gc->chip, + mpc8xxx_gc->regs + GPIO_IER, 0xffffffff); + gpio_generic_write_reg(&mpc8xxx_gc->chip, + mpc8xxx_gc->regs + GPIO_IMR, 0); =20 ret =3D devm_request_irq(dev, mpc8xxx_gc->irqn, mpc8xxx_gpio_irq_cascade, --=20 2.48.1 From nobody Fri Oct 3 20:57:37 2025 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.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 7736F2D6E67 for ; Mon, 25 Aug 2025 09:49:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756115349; cv=none; b=hhYUbwysIa0F5YWTsjpSBOY1sR2ZT8b4UvAdbUk/P7NrkELSCngYD2mJsy5va78b7datWczribgGa872ZASjURd8gcfhmmQAiMJn0zcETuGqb665M7kpQF7Yuqno8Y+929JROaYtC9JhKhOQQ/vOL7mvT3zzvJpgfC96PpxEQnw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756115349; c=relaxed/simple; bh=f3XDHr8xYS2BjL20qDCCzhyytv+tnz4ZBdR/dqLusIs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=W6n/I2JqeHtkGsGmpP27QdPb9c0xl6e5ihHmJ5pwAeajEfvcVjB58Cn8fzPknhlwdlmLmIYkd4w1vBxWOPStlT0Ua/tLH0mhXUd5Ka92UzLvNkSQn5i9DC9hAAZG5oHWaXOLBptpo7huNi+S97p4izIcoGt+aUiZVm3EgzvvC0g= 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=NreOSR1M; arc=none smtp.client-ip=209.85.128.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="NreOSR1M" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-45a20c51c40so33228145e9.3 for ; Mon, 25 Aug 2025 02:49:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1756115346; x=1756720146; 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=cm9l30Z/3e08iuv7sMN2PFeVixoBoGdwhV2fpocwB1E=; b=NreOSR1MvCumoI9seAAtLQhqncz7PaefjVpqshNgfajKjYNOEP2NM93dM+Q0TCTGD0 Rssac7sBxfrG3MNujdwSi7l82Lzx3vHU+AmhYbXv42VOTyONJPT3p9/wSI8rxHxFwTJa e9UvM1J5HcC8/33qF6XycYBSJoBZLQyt3mDxpSQ4Cd9x+9f4xN06bqmYN2DP4h952hWz 9nUCu8//sVMiQtSxsq/e7Y1Qx/K2LPbQqQhldxgAD7fETf4gt9lB/ABl1G6U9GPzZ6IW 9Dme+0xN+aMLYgnvmnVaJzlGf5aq6BGGGkJHg2Hv/VGqrLlxZoYzVM9M9N5uMgXWxQyx oZkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756115346; x=1756720146; 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=cm9l30Z/3e08iuv7sMN2PFeVixoBoGdwhV2fpocwB1E=; b=qFw/SKxg3CPfp+PYCsJPJmXM5EP4xSIg4xcu6ioBA2qjyu4oOjdsFyIfjJcotgkg2D DB4Vcz3ki4Zi8WvPDXJO1HFauQP2RqCmw5RwEyl6M1VALf1hygkx8CxtKzHi8Nr2NC0x D4HkpRSZz/5yt9tKiYel60XS8ikGPutuUbB2BQuy8rGDDyi3h/VUl7XPkA9zkET5KtDB vwS9JvLSX3iSem6xNc3PJbt1iFgvvZ82pv/PYgtYOFUrxfwLZ7rMpFd/aVtIUgjmbXhv OLxYfaF3GoVYW5HEB9eDkZqo/6yYrIYdGYMTkG/D0CLdAXh5dsyjUcnTkIG2p5Q28DAM sN5g== X-Forwarded-Encrypted: i=1; AJvYcCWXefF6BphjOqapMFOXdy0FPERv2jqy/dqfen1OzkVSphU7Mdi4AS54GfU/YgRjyRncFRQM4MFwkD+W8HY=@vger.kernel.org X-Gm-Message-State: AOJu0Ywyld08H55TWmARSNRi7MMFop9gul5+IbnWB0Fo7TyDfAHXaGEz F2jgU+F0UBmy7nmZqhttdtPMUbWG8ONx0cBH4dw7+RNvxqxp9X6LfZJiBDxw32s0/yA= X-Gm-Gg: ASbGncta+E3h9AVj2wpRq9di4Up3MCeQHUEelhzmWEysgC8H6P6u1apZwH0kCAQBVGs rmLiWG07zriZNNUNQSX2QWYjVdJm8VfIQkdbzsSEj+uW1fTyh72pjeh5eDTkTqwe/KV9ajIGZ0L sT9KAQLhbJwbiJzelXqqsOfa1q86kJ10CK+tA30mx0Jd4JiPachvBMBCY7/TnQ3SYnHA2iX//B0 B/H3ushD3h543FiDJ9+BAxYGnFNFapMVC5Phir32mHSXo2U1Xlqwr4XuxDr0ucyTP9SxE1qyNiE 6QmDNUXGTxvdFj2pmxsUUg4Ecfue4yXrPGugAnrqvUu50derHw/mNyST/bzuwtZ0H9B/1Xx6trT 4wOneA4gZTvaoONzzEuW29ysC5Y46 X-Google-Smtp-Source: AGHT+IFWEVlMhLNcEIGyB39ruCt7EDG55/hLvszV7xQZAZ9yaGfkwJ1sUtcqfCZfVdrByX/HCQU1Vw== X-Received: by 2002:a5d:5f86:0:b0:3c7:516c:f664 with SMTP id ffacd0b85a97d-3c7516cfafcmr4616609f8f.50.1756115345785; Mon, 25 Aug 2025 02:49:05 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:ef52:fc8d:34ad:9bfe]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3c711bb1e3asm10877449f8f.57.2025.08.25.02.49.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Aug 2025 02:49:05 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 25 Aug 2025 11:48:55 +0200 Subject: [PATCH RESEND 14/14] gpio: ge: use new generic GPIO chip API 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: <20250825-gpio-mmio-gpio-conv-v1-14-356b4b1d5110@linaro.org> References: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> In-Reply-To: <20250825-gpio-mmio-gpio-conv-v1-0-356b4b1d5110@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Yinbo Zhu , Hoan Tran , Manivannan Sadhasivam , Yang Shen Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-unisoc@lists.infradead.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1981; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=TSWl5L0uf8C7UyiKKr/acYMJZJe4qvP633C/saVULBE=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBorDGAR+XtNETwaYSD9Bj1SsL1CyCwdMGTcUo+r Gl8ilVub9WJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaKwxgAAKCRARpy6gFHHX cg02D/4xg2B8QQcN1cwN9dgslHRAMpaEu+qCGhNJm82Ol63GnzHaQBFZae3SePQrdg8jYkQ0RLs MDJ8coRcYKBvHBalthxtliGkZdcytUG7G///Qf9/FkFmxVYAPrHT0dex0sN8KYBNUrNJvImTT6+ aZsPlZ4SWR2ktM2OROyeHSy1VYQNrIOZ5LigVY/kvAjSp3zOrRA4suznme36ySfKC+l0jW6YwVl 9Y8vgF6/cmWh8BF13RQVCwMzcY12XCzrR5I6zwOjDYaqjmX8tnyskFCgc5UKAKTf9sLmogL+bT1 2d0XnMLobR3N3/opIY425A/jwYxVN+AbuWDboqJPupMNGnMtPStPxeriKVx4a7O9gvlcriI6p/w eFjwcVlHCWtDi56fGI5PcmsFkmvzMqzkLNiW3JUu8oYT/AytHWDCSZd+sv8ILlAfV7YaOTzZQi0 EFwDXoKis3dUzMC2+xfgYUb8Fmac7qioq3C8nl75XFu2k4pnxGGMefuVLy75kIXbvekr50+hep9 0gdDWfVE11cRVtxUYjU/XQN77swSKuUE5PHvrnBkURRrEkmR5Qes+1EAV1hjRfLtOpxgCBV6n6b 2ZD3ftR9eBPrrGKMa3Yo+YLaFTwgfPM4zjAyZinTrc4pO9IKy3vWS5h5S3IuDJl/jdTbj5bqKmm JisKextEJ3Eix6A== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Convert the driver to using the new generic GPIO chip interfaces from linux/gpio/generic.h. Signed-off-by: Bartosz Golaszewski Reviewed-by: Linus Walleij --- drivers/gpio/gpio-ge.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/drivers/gpio/gpio-ge.c b/drivers/gpio/gpio-ge.c index 5dc49648d8e378e9741213f9c2de05b4c75b347f..a02dd322e0d4cecd4564a71a550= 204983df33568 100644 --- a/drivers/gpio/gpio-ge.c +++ b/drivers/gpio/gpio-ge.c @@ -16,6 +16,7 @@ */ =20 #include +#include #include #include #include @@ -51,24 +52,36 @@ MODULE_DEVICE_TABLE(of, gef_gpio_ids); =20 static int __init gef_gpio_probe(struct platform_device *pdev) { + struct gpio_generic_chip_config config; struct device *dev =3D &pdev->dev; + struct gpio_generic_chip *chip; struct gpio_chip *gc; void __iomem *regs; int ret; =20 - gc =3D devm_kzalloc(dev, sizeof(*gc), GFP_KERNEL); - if (!gc) + chip =3D devm_kzalloc(dev, sizeof(*chip), GFP_KERNEL); + if (!chip) return -ENOMEM; =20 regs =3D devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(regs)) return PTR_ERR(regs); =20 - ret =3D bgpio_init(gc, dev, 4, regs + GEF_GPIO_IN, regs + GEF_GPIO_OUT, - NULL, NULL, regs + GEF_GPIO_DIRECT, - BGPIOF_BIG_ENDIAN_BYTE_ORDER); + config =3D (typeof(config)){ + .dev =3D dev, + .sz =3D 4, + .dat =3D regs + GEF_GPIO_IN, + .set =3D regs + GEF_GPIO_OUT, + .dirin =3D regs + GEF_GPIO_DIRECT, + .flags =3D BGPIOF_BIG_ENDIAN_BYTE_ORDER, + }; + + ret =3D gpio_generic_chip_init(chip, &config); if (ret) - return dev_err_probe(dev, ret, "bgpio_init failed\n"); + return dev_err_probe(dev, ret, + "failed to initialize the generic GPIO chip\n"); + + gc =3D &chip->gc; =20 /* Setup pointers to chip functions */ gc->label =3D devm_kasprintf(dev, GFP_KERNEL, "%pfw", dev_fwnode(dev)); --=20 2.48.1