From nobody Sun Feb 8 18:24:26 2026 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AEC4D326D61 for ; Thu, 6 Nov 2025 14:32:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762439568; cv=none; b=QctVCtalbZxL7SjAsUSv9mqWl9ksTwIsd6xysSoH9B9ZD5vL6LtDD8ZduhYmLowdEi+4uux3NVdVo9a5FfNMLeoSY2AqSf/wSSDBdnqS962ohP86ar/FdUbUxpWxt5d0DQe4WgNj0xE4PVZsTgi8/M1WFWBfy9wt19eWAP3/A54= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762439568; c=relaxed/simple; bh=r9cDw/aJYsPjA+g3Iqusl0ZJO5kkF5Y1AkYeG2Ln6YI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cI+6zjP04I0vGYDx2InadkHGfn7AxDD3+0O+qrUXOyM7Kp7Ie+aqrI0eedEr5Rb+/SRntt9SU0eu/TUomS5m0ogS2ekvFDczUpJM6yueDhBMsaa8QxmIADxZGmLMvVVzJKB9bSxzb1nEOaacpEvMGRZrTyWRfJMQ8RftbWSroOw= 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=wEbv9Sss; arc=none smtp.client-ip=209.85.128.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="wEbv9Sss" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-47112edf9f7so6193505e9.0 for ; Thu, 06 Nov 2025 06:32:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1762439565; x=1763044365; 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=fTmt0EBBpoH00wEC41/FLfqCbZ/Fh2wyVTiBtA0d/dY=; b=wEbv9Ssswvtm30UpHS53z7KetLOWSduDCzPXV2JSFKqNukJeY8HTmwneNHAOx7hmCr GixilcmNIVwQ34Vd3n69+hXax6f3aDbEi2NuAAkfOmg0WrixDMRwDJ/TRO+eU4sdJxxb VgI8Nqe7w76Dzp/smAloa4fD4gP9LaBef0aC/5iN11YonjgxRqmMtq9zw0KcbnVOM7yt +wYyXhHlgWKjheSzn/KQajBsX3VUg9iGSUcviMKmLshiLW0jQGYx+km0OW+AS2JHqmIM jLSl/fwC3kW5arEUS5ceEGNcEDVreCiRdHqdrv6NhKYmkXq81t2nxDqWPtGQXqdwSz70 0ONA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762439565; x=1763044365; 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=fTmt0EBBpoH00wEC41/FLfqCbZ/Fh2wyVTiBtA0d/dY=; b=CekAU33X4qgXlr2K0S5pTeWyNMSMYouG9R3knZnfs0ev/eK+nZ8/rm6S2d1UIu9kJO GgdkV12drnl979OHEegicH6i72sT8NuEp19T+uOveCcf8BVnjXcoYq7GN01C13wkRClu AhYcTnQrG8ALn9LkQVDtO2NZMkwbrFYpSxBlZrDsSBRhsP6Pyp61XUtQkDYGEOWLn84N 4OWFwbSS0VMaW0KBLhgXPmYUScuEdcQ3RGCjbeMI17yjAil9avRHQSD2c+/sUivuD5nD Kya00++SJquTP/Fy94oFzTkRV+LR8iWdGV7DrrO5hCaFVguxsU6Ywv0bm7LDDecvZ8eI G8Zg== X-Forwarded-Encrypted: i=1; AJvYcCXx9OyZj8UxBGhMtrvc+xsiJys0Gjx0wvycwN7IOFdWpRcor/jyv42VvV8GvNDIGqt4S7vzbe/lUCoEQE0=@vger.kernel.org X-Gm-Message-State: AOJu0YwAR7btkY3yUOlYk6v2P6lPOez4RhATzdAeVXi1N1yr1osMe2QQ X4KUg+N/rL7r8AGWbfIFs5SzGlhQ2+A21aAFbU1II8iieTTM/Wi7a/KozTpUApeyL/k= X-Gm-Gg: ASbGncsk3lgFcghgZuy44VHZxo5qZE6KgDwU4XvryyuA6NT/6i7My8i5xtlCoQmMU04 gZu2OS+kO9D4NaxlC4U2RKyPOgIgoeeU1zIPH09FB4l9cMYT2m+sAuORJey7Paibpqb73GKfW2K fWrN+cw76Xj5gI/ajXCQo5JxAkOE4nVRY+Sa6ahfl68eSBjNxMKCzn3n2UnbOiITXZ1rEnh8laz +YoPhU/dQIkO9G7/E6yiR4xHUU/WHNVDkG7KvqXmVk9nYW2k+zAOJbYBkzmhKE7kSXBKLq8bmEv Z4CiHX4XBQXRpsHcnsvqOT0Arf7vCK/1ALCV6ACUK33ONLdvizgerAfoAb1Jn5WlFlYEqb5tsQA Ssoos64fp/oIRmSv8fvEt7ZdFaNnXyJPL5Gck8ICD7PEuoJfsbqm+TeGkZt1iGajQfwbSYE1AxC /VjDo= X-Google-Smtp-Source: AGHT+IFhkWZTruVv1KVnkMn6Da0iRScGHxJI2FkysYx9T/xa/YLkWepHynbGqxvTul+SYZGDVHSdqg== X-Received: by 2002:a05:600c:528d:b0:46f:b32e:5094 with SMTP id 5b1f17b1804b1-4775ce15009mr86580575e9.32.1762439563549; Thu, 06 Nov 2025 06:32:43 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:d9de:4038:a78:acab]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47763de4fb5sm18871515e9.2.2025.11.06.06.32.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Nov 2025 06:32:43 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 06 Nov 2025 15:32:30 +0100 Subject: [PATCH v6 1/8] software node: read the reference args via the fwnode 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: <20251106-reset-gpios-swnodes-v6-1-69aa852de9e4@linaro.org> References: <20251106-reset-gpios-swnodes-v6-0-69aa852de9e4@linaro.org> In-Reply-To: <20251106-reset-gpios-swnodes-v6-0-69aa852de9e4@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Philipp Zabel , Krzysztof Kozlowski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1086; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=URxmTnl0JV1lV+vabMO/0fnz/R+E+W6aKsco0eYVKD8=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBpDLGHHrzJIusI4JXnxY86OBpevmi97a7q3/R4I Umf7gMWwwGJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaQyxhwAKCRARpy6gFHHX cl+XD/93nrVvksz9PnWr70SbhGfmgwHvJcgFbahMtNX8oKqiuvbH0qAXkO+xYV1xh9IoMZ4KL8H mvxJCSXdD5JNI8C1dm5i6r0a/axUKXfKcEllT8+c0UGUlT35eYKBJLMcLbheYjgXg1PPrpCQa97 G0D2xZdabvf63tZYnAAF6ZyNJgj9NGw8Pzw5EdjyuC+WlkUd3nGaUaDRzvUDqxlRetUDxb15BIi x+6EQ9f83hQiCQyh6ncnfI+sovqPGh95CsqAjqh7JogOLDxmZL9NZ1LvQOYoZQR2r3vVqJMYNdJ F0ZHQssIGCk4bsMuTTWsxwC6qPApfN5fTtiWIVVRlSdPnngrNxDKxmcLZ6mSbSMLBMoAEGsg9ux 4c1cvlYSH//FESEp+uPH4D/FQvEEvA+x+3eJVm1+t1tYQvTnYBVpKsOOFWCn4FwI4HdixLKNOTR sn/NjPEReJx2nWxkOkmCLr4SRasxW5cN/IgceNZyTSxb5f2y2CGxVVuZTMtSvaeVBuVKTW7jepg wQM+cLOOxWsc6e8LkUCErcndyd8huuy9udHr7vn3hTAHttej+RQn07Q8uxdpb9ak8RGNwaFDjOF 235qrtmZoQqsj/7j4b0rsAiWKC3SCcqCGTZ70Zd6GI1phbcKeKbKcYh5tzmcCx49rdBZOv6fSsn JX7Wk07CWN3FZ3g== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Once we allow software nodes to reference all kinds of firmware nodes, the refnode here will no longer necessarily be a software node so read its proprties going through its fwnode implementation. Acked-by: Linus Walleij Reviewed-by: Sakari Ailus Signed-off-by: Bartosz Golaszewski Acked-by: Greg Kroah-Hartman --- drivers/base/swnode.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/base/swnode.c b/drivers/base/swnode.c index be1e9e61a7bf4d1301a3e109628517cfd9214704..016a6fd12864f2c81d4dfb02195= 7f0c4efce4011 100644 --- a/drivers/base/swnode.c +++ b/drivers/base/swnode.c @@ -540,9 +540,7 @@ software_node_get_reference_args(const struct fwnode_ha= ndle *fwnode, return -ENOENT; =20 if (nargs_prop) { - error =3D property_entry_read_int_array(ref->node->properties, - nargs_prop, sizeof(u32), - &nargs_prop_val, 1); + error =3D fwnode_property_read_u32(refnode, nargs_prop, &nargs_prop_val); if (error) return error; =20 --=20 2.51.0 From nobody Sun Feb 8 18:24:26 2026 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2BE7D33DEDC for ; Thu, 6 Nov 2025 14:32:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762439569; cv=none; b=Uvh+hNLDwrEn1hSPkRha/4J0EExKIfHhj7icbZ/RsbCaoiUDf4b2WKEtvyj6WIRTjFdWjqlk7tMOwNgLBe0TNksZPN1vdb7EGy9ShgAtBJP/ETSPqWQ8TyolFJyRhDOZEX79OhJDxnk2HjdZCQdCdZKECbKQM2YDiSDfnlaLsXQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762439569; c=relaxed/simple; bh=KzXWYFedYyI8UG+nwQx/rQYPGeNs0qKtqKI3x4qG4cI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cnOzSZOPy34SGgpkYOBvRUEIPFFgck0KZOCq3KaqTXLbrw6AUV7KL5CqCh/7euWz1PflC3XyEgGNFpSNI2uvjiHQ7KxdFyXhntT3L2dxYtzMCLGyeFN3UsovN19l2mMRWy5iA72zJA5pY0dSCXu+DBec9ihKkiYvhn8sQEzvjUQ= 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=UrRof6Ut; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="UrRof6Ut" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-47109187c32so4891105e9.2 for ; Thu, 06 Nov 2025 06:32:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1762439566; x=1763044366; 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=XMbjX960Vd0zTJ6ycxKDpuXM+QwZlwVzJthScjlDZlY=; b=UrRof6UtD9JtNnQqf52UYqjSQxOeSkhLQP5Hkg251nc/qsXujvw01VnhlDGFDXNzb0 Pd8aSnGHocqzsv6KCAdigpRi01l2j+e/ahws/WVJK1Nci4bhVTeP1B1BAc7jm7k3SFZO eoID3/2dzReZ8SPQhnO0jxPP1LJw9kS8pUGH30fjq0csXkl0on5SG37bo18+b6uncLFK xI8AXlvVsFydbfAKEL4CDdgnJdU+AuWry7WZLlZ5jp+jKCudfxC3kgPoETVjTMfhCgb9 sWLoSHi93CSoEkE3es8nT0xXAMvsEQBjR3m4Ttg8jj0sAo3KSlcht6aCzeJpYnjz8eSK SL8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762439566; x=1763044366; 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=XMbjX960Vd0zTJ6ycxKDpuXM+QwZlwVzJthScjlDZlY=; b=T9aKdJ5IlGvu/L98ZjEX2xu+3LL7sJ9oojSfQX3UFBAUQSFCf8cQU0DYd26mdxclw7 /xRtrtX/7dVvq6SKpIc2ESKx1Wr5sENBJZU0qwHfqdZHHlhtQF1Bgl+ddfWh9fTd7Nx9 kCHkVybOw/s7yf2cNC9f5M7QWlmrrm+TTeV7yXRwC0UucRFoyKRDzY+PlvB6ZmtcwRZz 2z9NfLnxWqWuCp5mKGuouSD5NkSyrgUuMpYG61rWssrSlnBzWm5bymcYpYD4tA+XRGyH 1BvTWt8HEZ73JmHrAkyGDzrjmjmMA/iY3K1kEzu9QdrPkXc1SojV7y9hwWAsw3rc/TOF LSEg== X-Forwarded-Encrypted: i=1; AJvYcCXZyn/O+SCIqfZL3aUSfA1/e9dSzc/liGbl3N6AiSkaY3JxlVmGrhUgvcn+8gsmD5dk+tlPTzVQvcZYv+g=@vger.kernel.org X-Gm-Message-State: AOJu0YzVZDketPrjRH2EewDIizyGlVHC/i2Z4eTj/EAnty2TzkEvcLcr q9EorZfZiuJAh5/Nr5P+Rwge4YeurZ/zSgfsPqa4it8JRYFgml9FViYFaHB8gAr9UwE= X-Gm-Gg: ASbGnctvX5a6fuARrMapM7qfcSxfyIF76iynZ5kAi8oLXhE+GZp8ENStN0N02vAoMd7 CgAYhdpxGMpOZ+4Ti3kWarIeu8MK4U05+/RoWPjhBghiWmgBcTTgzOp/5Wqs7hgVipcBzyK6I7/ LjVdrDUAi+Mra8ub4hFHzB1CStxAlJn019gGoMWwX5OCmsM0a/m7OOOiVitg4eYVUxoBtQOu5yZ 16RNEtNIz4bdLRy0YSoKQQPPfmerTQiRFTisK82NFVbIjTy5LHIP073S3IJz9TjdEKMGAMvdAdO eUIhajq1+v8SMv9rEWFXJaTnnWahBMc7sD+5pqKp+reKDECEd7uvIwkSVRQxocYiv6gyLYT3Bcx tcWWPdWTUEhREQk/mpWhsaQIVxNr2oxngZLgd48VjfzJbR1bC5I0haBA/ueTD/56TmRU4 X-Google-Smtp-Source: AGHT+IHXzHeV24TgPJiAXmdB1YalBGdrS6x2Psqj5D7JQbkY7NZBgxck0p46HAgXC0mlI3CMiLVKhw== X-Received: by 2002:a05:600c:620f:b0:475:dcbb:7903 with SMTP id 5b1f17b1804b1-4775cdc56fdmr56344625e9.9.1762439566449; Thu, 06 Nov 2025 06:32:46 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:d9de:4038:a78:acab]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47763de4fb5sm18871515e9.2.2025.11.06.06.32.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Nov 2025 06:32:44 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 06 Nov 2025 15:32:31 +0100 Subject: [PATCH v6 2/8] software node: increase the reference of the swnode by its fwnode 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: <20251106-reset-gpios-swnodes-v6-2-69aa852de9e4@linaro.org> References: <20251106-reset-gpios-swnodes-v6-0-69aa852de9e4@linaro.org> In-Reply-To: <20251106-reset-gpios-swnodes-v6-0-69aa852de9e4@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Philipp Zabel , Krzysztof Kozlowski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=963; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=HX7JTQgb7mODwXNdQkxhPlBcCXEZwyahgSTpWNcaNnE=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBpDLGH6TeXNVOn90Zh0qIgRIRU64BenuPrkJnAG /JoBwdw/n6JAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaQyxhwAKCRARpy6gFHHX crbZEACGK75SMAGQxr5kK2dyn1zEjJWAM5PkanDBYBV8+ApZMT8wOERUyFBh+uKPye5lPR29ko7 SRU2F6uTXdyN6j3jyf257r/WTnLpBhSRpwy32bbSqtjAQ9AXeznN9vv7u2SI5NCa5ACD5gbpg4n xPPkowjOZI4qq6wr5WTWHq6V/jIEGfctNnMKi+VIn/UnLi56wNNQho9TXYk8T4OzUwdfwPP+6su 2lXxwiFAeQY8L+PMOgtmD1q1QgB1m7b50t3fXntkAacfUV2+bn0LIxXXWW0MTNNUxZtYori51bT yS6hr4StvGnj2vNBrmmSict1sMYO80n68tkbALBQaFEC9vOWZUKdgeCh8IwUXAz3OAX7fwELamH CkZyq+4p+RbZNim1rnKm3x0wFlN6h1dIF9gJO1DZc0uwMU3hdTLCScVK8WJ4uUTi7FtpCXoCk1u GOqas36H50h+p/jbjSx4V7utx2j4kHKq5lmXlFm6GyLGucDG+pePLzyrqIJtcAmcuSfcuJw9biC 6o/vKd5Fe2BDLP4VFKuxpEuMrqYcruIcArh7Zo/9l+u0dAz5ZmKS+/l+Iw4RqovVbzh2+Fo26Kb 6XxXcI284pVt3/QvbfLoMV/o83ulIQhVcuoSlcMIyMVf6u+ENX6tD2llB11bnpD+Obmfui+w/PJ HDdC0y5lvt4TRPw== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Once we allow software nodes to reference other kinds of firmware nodes, the node in args will no longer necessarily be a software node so bump its reference count using its fwnode interface. Acked-by: Linus Walleij Reviewed-by: Sakari Ailus Signed-off-by: Bartosz Golaszewski Acked-by: Greg Kroah-Hartman --- drivers/base/swnode.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/base/swnode.c b/drivers/base/swnode.c index 016a6fd12864f2c81d4dfb021957f0c4efce4011..6b1ee75a908fbf272f29dbe6552= 9ce69ce03a021 100644 --- a/drivers/base/swnode.c +++ b/drivers/base/swnode.c @@ -553,7 +553,7 @@ software_node_get_reference_args(const struct fwnode_ha= ndle *fwnode, if (!args) return 0; =20 - args->fwnode =3D software_node_get(refnode); + args->fwnode =3D fwnode_handle_get(refnode); args->nargs =3D nargs; =20 for (i =3D 0; i < nargs; i++) --=20 2.51.0 From nobody Sun Feb 8 18:24:26 2026 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 E520A33CEB1 for ; Thu, 6 Nov 2025 14:32:49 +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=1762439571; cv=none; b=QtKNbRT7opVtneAvDvY9MktsFHyMqWxm/STQqlGZhr1BYCxHeiBEDRUvAl2zI7O8EfbF+tdn6O22ugv68i1bdMsC5O3ixz4hKEavxXEKTQ7vZeMPQA6ooUioCiIiaN7z6E0jVEXjN2TpdZHdArVj9wQ+/k9vTepY4UrJYRdVoRk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762439571; c=relaxed/simple; bh=ogys2EZhfFSnh9TKbDolepyjerxXO8VxWq72k0lyQGE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rclHoqSOL2qXLy5WcLBK37SuH8iQncNXEiEdKosXXKyDRtX4unAS2fZpYfMGeBGmJToXl/QkX3Gppx+/F8Ql17t1bVPYZV3cHqCEGrmQNgNUOuni0CO1ba2049hhyKdEJ2FTvAj6NLP64jRNFrB1Byy9H6/W0+crTudj9UUkqRY= 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=03BxHOI3; 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="03BxHOI3" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-47114a40161so10527865e9.3 for ; Thu, 06 Nov 2025 06:32:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1762439568; x=1763044368; 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=ImGcemsFvXDjNWCPFtBPW0d7o3wRSDm6gKdcQwQP5/M=; b=03BxHOI3BN60VwT45As+Ah6FpKi5H0t+nNRc7l0t5f3gd9aY0gcFnYCqsUPn8EPxMo RoYHrPyKerdN4Y/SXelrAVVVkBQUbqEqdmIOipjak9171/AoSF3M5sXK1eR+AgOHcteg nwE837ty/C1DdT88WilHyC+bsl652QEHEpAihnwkjQyoAQ1OgF2Jeq9ofrNYbXpGm5ui 2VFGnKrLne+C63jG3n7WBsjR04/TyyP46Q68VYhKMqioJz6y+kosflnRO+TQdSysrZgT HKhE0hfc059pa2o3mLC8gkx9oPm+deEGNcDfhIgOhNMXaIF96duUvg/UHrHiEJaam8ED Hyjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762439568; x=1763044368; 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=ImGcemsFvXDjNWCPFtBPW0d7o3wRSDm6gKdcQwQP5/M=; b=V0GeN/slqQbHRPncLEg7mi76Xl2VpHRJF0d/r/VTSsv7UW7+WoFu2/FIrNQplhhaG1 ZfKKzrlvRQ9CzeR7i+3IgoMHv+4g8vJzbJ5IEO1KG9jdh15sBgk5skgO2NhNiNIl1wx/ MQmv8mJcw3XoBlKV1d1/dDzlThAxVIF8Re/jo5XkUrMcbUSXWM+Rt1kX+o+8wuh1YFql B01FBqPFBJ+kxBflclLQm3+ruXWY8keFUKzwwZow7EOAGF7n7veo5F+I8ho53hyudRO3 0VuPGo/fhFStxYRSOE6PbUJW1QM+OWiJxF34XWuUmNSISBocbKd7W1KX60D7B54CyYNY n3Pw== X-Forwarded-Encrypted: i=1; AJvYcCVTvaltcYGgQnudLxX5o9EC4uphpfrY1dz3aG25voQQ8Q3Uvdr7TsN1khMjGhkfn+ZYzIWxkAbq1kyw8tA=@vger.kernel.org X-Gm-Message-State: AOJu0YwEEbp9hrS3t3MoLkEk0qDVrE++kI+VzFZfRYhOuEyCFDcgJYvJ DlzIiYsj7pm34fGoWcnc1u4SnEZmWqfH9dW3yku+bdpy9KaSsc040T7ug6eFCUOIgqo= X-Gm-Gg: ASbGncvvOs/pXllLHHyxggj3CmVN8mmoP5zwbmiPIL68CLPUsBWVudecyNxePlxlF+k WX8w0oenNvz2esXjBXTxuQGEmWjtKpF+B1GX1mpKo58oqgUTCAonqGqTRWekI8vB79ys9DehSL/ NNTACFxgfcRxnNpRKzYKERK/QC1st/taiPDj+CITwLGwp/puajCtwGuOHo7PBY8xGizr6TEUy2c WeXb9ijki6Yyg2UM847oI8ca4rM5fsC1esovNYWjiK6XyVXC29UsIpmNqhxeGXRRFQ7j0cPsh4+ +MM4i4LONJ/Xi5aMUTZ1QdDduN4YuMwpLN2CrpZwKJY9X3TahvldtMyUhOnurewMRBYqE9MW3dp Sb6+L8tCKFk+xR+5kxbacSufj66tuhDR54vmZ71NL6rYdHsLiaJVNnqIIpbEKIYOHKi2zgopX9D 7xR0g= X-Google-Smtp-Source: AGHT+IFCdm6f1PqAwQZCefwuN5Ba+GuMsPPYnzn4FUIGeoArk2eJIorYQiEN4nUrGo8VvRcbFXORbg== X-Received: by 2002:a05:600c:8216:b0:477:3e07:217a with SMTP id 5b1f17b1804b1-4775ce211b8mr75203125e9.36.1762439568104; Thu, 06 Nov 2025 06:32:48 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:d9de:4038:a78:acab]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47763de4fb5sm18871515e9.2.2025.11.06.06.32.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Nov 2025 06:32:47 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 06 Nov 2025 15:32:32 +0100 Subject: [PATCH v6 3/8] software node: allow referencing firmware nodes 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: <20251106-reset-gpios-swnodes-v6-3-69aa852de9e4@linaro.org> References: <20251106-reset-gpios-swnodes-v6-0-69aa852de9e4@linaro.org> In-Reply-To: <20251106-reset-gpios-swnodes-v6-0-69aa852de9e4@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Philipp Zabel , Krzysztof Kozlowski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3881; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=HpU6/kofClihOZLaRH1MDHt2R8t6/Ip5QySfB23CsUM=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBpDLGHwEikvsoeb9jagwVVc9pM4AhbQuq+ekwJc haYtxnuhxaJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaQyxhwAKCRARpy6gFHHX ckRJEADFED31WNfI5lyOtIRU/+69mQA47s6BhhAoyJT3rgmTi+xR6J6SYX7UEPKClkl8QBKySuK EzoTSSub4t5nIioNOq6/Eh3lPQerwcYNkG3Ss4cHUEKqyO3YdIN6RHqBXghJLWFali1D3JzD1D3 YhE6mrggGCJePbPB1bLl3MLwnooDoEXPE0WsJ/uLWvaAZ/UoYIWnEYdOpmAVKZU8onnHuYfQOJa J2pxr3aUbl0Cb4kD1w8T7O8sBZFKyRHGWIzceIiRRU1NhPWjuZUaz392xhkUqteLwvTezt4tHqS 7eAyFyUGMJCT4F2sbHgP5Am/WIcN7gqb8Mw9LaR19Ssv7H09Rut6QDn3X5cGCC2vKZOX10lRDCb YUpWmoAHT9PxtLKy4N+MRvvi/cU4XOJYe+tRBRWTNJYBBaCbfPwG5YVih93FlkVvtCAge9kWPm6 /lVoVBLt02Po759Tx1LicpW04gw0rDNi03FKxAm0uC4xcmePmOs8WtYnPhwCY5qylyvHUSP1PIS YRHGG4yF5MrnkE4rcMuB0KjsNSvuc6mEONM99XUC6/VtRGRf9UeDEoNArl3pgzk57EISMEW2PXL XmKyv5Qgg3ihungUakZh84sp+SO9WXOhIaplRudJNf1EsiCeAEsSalA3S87+JG23LnrCjdbCJIB cXdPC8E+824DlXQ== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski At the moment software nodes can only reference other software nodes. This is a limitation for devices created, for instance, on the auxiliary bus with a dynamic software node attached which cannot reference devices the firmware node of which is "real" (as an OF node or otherwise). Make it possible for a software node to reference all firmware nodes in addition to static software nodes. To that end: add a second pointer to struct software_node_ref_args of type struct fwnode_handle. The core swnode code will first check the swnode pointer and if it's NULL, it will assume the fwnode pointer should be set. Software node graphs remain the same, as in: the remote endpoints still have to be software nodes. Acked-by: Linus Walleij Reviewed-by: Sakari Ailus Reviewed-by: Andy Shevchenko Signed-off-by: Bartosz Golaszewski Acked-by: Greg Kroah-Hartman --- drivers/base/swnode.c | 24 ++++++++++++++++++++++-- include/linux/property.h | 13 ++++++++++--- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/drivers/base/swnode.c b/drivers/base/swnode.c index 6b1ee75a908fbf272f29dbe65529ce69ce03a021..16a8301c25d6390ba304c66411d= 1a261345184f3 100644 --- a/drivers/base/swnode.c +++ b/drivers/base/swnode.c @@ -535,7 +535,24 @@ software_node_get_reference_args(const struct fwnode_h= andle *fwnode, ref_array =3D prop->pointer; ref =3D &ref_array[index]; =20 - refnode =3D software_node_fwnode(ref->node); + /* + * A software node can reference other software nodes or firmware + * nodes (which are the abstraction layer sitting on top of them). + * This is done to ensure we can create references to static software + * nodes before they're registered with the firmware node framework. + * At the time the reference is being resolved, we expect the swnodes + * in question to already have been registered and to be backed by + * a firmware node. This is why we use the fwnode API below to read the + * relevant properties and bump the reference count. + */ + + if (ref->swnode) + refnode =3D software_node_fwnode(ref->swnode); + else if (ref->fwnode) + refnode =3D ref->fwnode; + else + return -EINVAL; + if (!refnode) return -ENOENT; =20 @@ -633,7 +650,10 @@ software_node_graph_get_remote_endpoint(const struct f= wnode_handle *fwnode) =20 ref =3D prop->pointer; =20 - return software_node_get(software_node_fwnode(ref[0].node)); + if (!ref->swnode) + return NULL; + + return software_node_get(software_node_fwnode(ref->swnode)); } =20 static struct fwnode_handle * diff --git a/include/linux/property.h b/include/linux/property.h index 50b26589dd70d1756f3b8644255c24a011e2617c..272bfbdea7bf4ab1143159fa49f= c29dcdde0ef9d 100644 --- a/include/linux/property.h +++ b/include/linux/property.h @@ -355,19 +355,26 @@ struct software_node; =20 /** * struct software_node_ref_args - Reference property with additional argu= ments - * @node: Reference to a software node + * @swnode: Reference to a software node + * @fwnode: Alternative reference to a firmware node handle * @nargs: Number of elements in @args array * @args: Integer arguments */ struct software_node_ref_args { - const struct software_node *node; + const struct software_node *swnode; + struct fwnode_handle *fwnode; unsigned int nargs; u64 args[NR_FWNODE_REFERENCE_ARGS]; }; =20 #define SOFTWARE_NODE_REFERENCE(_ref_, ...) \ (const struct software_node_ref_args) { \ - .node =3D _ref_, \ + .swnode =3D _Generic(_ref_, \ + const struct software_node *: _ref_, \ + default: NULL), \ + .fwnode =3D _Generic(_ref_, \ + struct fwnode_handle *: _ref_, \ + default: NULL), \ .nargs =3D COUNT_ARGS(__VA_ARGS__), \ .args =3D { __VA_ARGS__ }, \ } --=20 2.51.0 From nobody Sun Feb 8 18:24:26 2026 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 92E9032BF33 for ; Thu, 6 Nov 2025 14:32:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762439574; cv=none; b=QnHMtIX7a0xCPh+cNnMBlhJq/8+zn4u+4yL5xwgbTV0xrdyxa8/egfIvZvqE8yD7LaWQaIrP95ilE84tsIFecM8uxIVQmgGywsGJriwrXH1yjr6ja82c1VoSTHgmEU7PZq5YNqBy3394st3LhOE6kTnG0EnD+8ZZRVTteVxayps= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762439574; c=relaxed/simple; bh=ZU3J3KxzMLZiq+JBf+y24I7tWoIUO98cBpv1QovMR+w=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Y2CKWsyPlBOLWb3U0mTxMaxHfuif1zLiGaZOdEQ+ETFQFRTc0dDvm++cWrhiCB1eslgJHljeN53fCHS/fW/Q56Qg0TCfedmXylp23KVHVF7h91bwauMX/Tv7TVLBg7n+9M2Q2WeGb0YG8jVWOOM2sfPDJ6G9TVuNHEz+iv/u8Og= 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=NQksQhbw; arc=none smtp.client-ip=209.85.128.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="NQksQhbw" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-47118259fd8so7979285e9.3 for ; Thu, 06 Nov 2025 06:32:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1762439570; x=1763044370; 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=i1lJuE5lPEDINt9CtnczujlD4ivugkfdO9IHyIZSbEs=; b=NQksQhbwtSt7PW4gcNe6H+3op45fN45nmq5F6i1o7dv2469qEbwto2s2bF0i908Vv0 Pq44ph3/Le7kBfaEjGVOTIx1XMXudjXJSqwLND9bULv8NCJIwuy5zwHPKU9K5CESyZGe N1xRS2IfNd0HI86kPC7LfehkZL2cQC8TeAkMwNBRn4RZt56oTy1pVUDp55SOJgzi1YUJ RnGDBIB1lsmWpYRS4bEdK3SsO7xb/L4B5d47y3bLEh89IZXeVNMDZFO0tmZYjZ2PX0Uh 2GeptiUxNLHFkaencYHHUp1z5Ubh5cP1k3h52R/z4yhve4f30dOHZr07NpVljxyXXQJk uWLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762439570; x=1763044370; 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=i1lJuE5lPEDINt9CtnczujlD4ivugkfdO9IHyIZSbEs=; b=W5iudVTZYFsb0bueLunNWfRDo2OzsUrV0dm4g4QzZ/WAX9X90BaN3CopKAJPOCRrTr Dw0yvtbSSU10zivBjJTZ99RA6j0xtdUWil6P53KUQktrymz0WZPyfZewRxszHmn6Pl80 7nqheKSK4zbAOoy/a52xpvPTxD0AkPOg9VKKc5ZKhAQU5WmXciRRjgKdO0i+FkzZ0dzx 78ex4Gcak6LYqovQ76hBYf6A8QL3oWgSfz0w8lJB53NTEfi7mGjdVAJ4sOQ3wtkrNoeZ KvtaBqHtA3wS2qX+w72TWuOltiE2Bnq8XtwDWxXBT8ZjErwQ30feralTnuoKCBpYo743 0QZg== X-Forwarded-Encrypted: i=1; AJvYcCXHUM2AH8Tf1AzgoBuGUfzJ2C70DA5iL8p9RU6ujSPpT4npKTu5f1t/Vyeg+gLyc1IYOam2RA6x4AANgwI=@vger.kernel.org X-Gm-Message-State: AOJu0YyLpMxllN6/7V7lqZKCE6fnGlurJE3DxcOMaQO2RDDTo40jy9hU mCVj7i7FbsdF3LvEjh32tprdhkemHSU7F31rebTMFcAiDxTx3yjYCx/mtEalkC+gymw= X-Gm-Gg: ASbGncu3cFAJ81rGkWTOmx6QKT//mipi5qvxtacOjvGN/XVZR9mH3i5VZNEtk3qNcXu W/YKJS88QlYntC5T7ub+wjyZbZp3xIwmW65Q96iO3uuwB1WygHTXizPtCbvDESj4YqNho4icMCX 1PAWbSb1aCnLGw4QZHpD1hicVSCYME7PY3KI5ow7GVHs6G4lJeLE2iAkBCpyZaob5Q7MahJJgZ6 X2JWuaq0p5iR29OpgR2hsb5eL3jG6VgE5w5rRsU381Z2uprnzoVxXWGGAvvgf64qG4Lp5YdM7JF Qb4vqv9t8+ifL+/iKs+P0B9Fm484vED5kQ4aEXh4IUqlB3yoHiTrEoOmE9v57GrzsjOPNfr0kR1 CKJNtOV1oDfEdx+v7mWzYVcr8W4IHFPTL5hfBNv2Hd3rNQVdFmVhTZ/wkRfl/ezqYWehhbvPwHx KAgsg= X-Google-Smtp-Source: AGHT+IGxz8HU0EQJ6lzgZfLnl4y0iO0y66L/WFnuoZS3+YKjCUq4xce9jG0/f5EnqerSWAKG1YBT8A== X-Received: by 2002:a05:600c:c4a5:b0:46e:4be1:a423 with SMTP id 5b1f17b1804b1-4775cdbe35fmr60368505e9.1.1762439569790; Thu, 06 Nov 2025 06:32:49 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:d9de:4038:a78:acab]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47763de4fb5sm18871515e9.2.2025.11.06.06.32.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Nov 2025 06:32:48 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 06 Nov 2025 15:32:33 +0100 Subject: [PATCH v6 4/8] gpio: swnode: allow referencing GPIO chips by firmware nodes 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: <20251106-reset-gpios-swnodes-v6-4-69aa852de9e4@linaro.org> References: <20251106-reset-gpios-swnodes-v6-0-69aa852de9e4@linaro.org> In-Reply-To: <20251106-reset-gpios-swnodes-v6-0-69aa852de9e4@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Philipp Zabel , Krzysztof Kozlowski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1627; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=bF3wV9wbD6pmGsN2CkYQyBuuy+4OPBgK3BDMknryXaY=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBpDLGHkMfnlMeJvDLDFgQISqM70FyVPXG0oYqVr ozO5siLcyyJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaQyxhwAKCRARpy6gFHHX cmxjD/40ARdSnLEx5bZU0Kd+ZVOlnO8HvoeOr/9ZgXnEuVudfUpnoU0K5MuiiJwmKyNZK3FmcZD xZgwvQn//mjc6oLvdGV1jaFuKkd6eVE+S80R7Z81v8/YEhqg3GLZkRQGpSaEBnlxA3QMUxB+1Wu ds0DTrZXyic7PMOvgyOb7bFDyKZfLzV1DJVrd9NiSv3N386oGJVnVO4LWSlISWE7HPRZrMQt/9B d5CvYKpBmYscl3ejCyXoBPJVqERunv+cxTWc94GW1adD6iU02LS0J1AXL++YPEbuLCbAQY5tk/Y s7D6NUsngwmBxOLxUhb3XomkspBhB9gqWbifnbt3PBqwTw6apRTzTUsz2fXLf4Ku3E/jasJvqcb oGHlqjxST/cHERC0kw0E0IL9SoKExYntFRF9H5rxtFRBvYhRFzjaDnSX284841PCyjNoaxppUaI R46tm384emT6hILW8PiAuQ7O4XwtBkVxES4SpNIvvmdyFmwi1R+jFRy6vM1wnGOouuxZ05Gp6nH b4Pv8DMOCrkBOOvdv+pbLDpNk8WBpWd/qPg0sCoySYG4a3BIVGJ/YrJ1bKobNR54p3bj9Z8l2rs 01LmAGs7joXkGxet+3hqhXKYA7ciOfn+I0pn3UE3mPB08Zl8T/lxwAYk1cP3uUq/EPDwbYlLCYl V5nFhz9etb3r4Cw== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski When doing a software node lookup, we require both the fwnode that references a GPIO chip as well as the node associated with that chip to be software nodes. However, we now allow referencing generic firmware nodes from software nodes in driver core so we should allow the same in GPIO core. Make the software node name check optional and dependent on whether the referenced firmware node is a software node. If it's not, just continue with the lookup. Acked-by: Linus Walleij Reviewed-by: Andy Shevchenko Signed-off-by: Bartosz Golaszewski Acked-by: Greg Kroah-Hartman --- drivers/gpio/gpiolib-swnode.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpio/gpiolib-swnode.c b/drivers/gpio/gpiolib-swnode.c index e3806db1c0e077d76fcc71a50ca40bbf6872ca40..b44f35d68459095a14b48056fca= 2c58e04b0a2ed 100644 --- a/drivers/gpio/gpiolib-swnode.c +++ b/drivers/gpio/gpiolib-swnode.c @@ -31,7 +31,7 @@ static struct gpio_device *swnode_get_gpio_device(struct = fwnode_handle *fwnode) =20 gdev_node =3D to_software_node(fwnode); if (!gdev_node || !gdev_node->name) - return ERR_PTR(-EINVAL); + goto fwnode_lookup; =20 /* * Check for a special node that identifies undefined GPIOs, this is @@ -41,6 +41,7 @@ static struct gpio_device *swnode_get_gpio_device(struct = fwnode_handle *fwnode) !strcmp(gdev_node->name, GPIOLIB_SWNODE_UNDEFINED_NAME)) return ERR_PTR(-ENOENT); =20 +fwnode_lookup: gdev =3D gpio_device_find_by_fwnode(fwnode); return gdev ?: ERR_PTR(-EPROBE_DEFER); } --=20 2.51.0 From nobody Sun Feb 8 18:24:26 2026 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 98E04341641 for ; Thu, 6 Nov 2025 14:32:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762439575; cv=none; b=frDL6wfoCzbU40jmTRsrwA5TLMvSjiQK2sQ7Jy7wPp4tHKM3iJRsgcvE7mQTZxU+nGLMM/iHQpylAm25GQvxy23ttsh19QfMmSrHW/zretYzDIwxLI4rhWEcDRH4bKu9bG//9vcTJGhbeU95Ph1N41GxG22WtVLM14NFs5wN2MU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762439575; c=relaxed/simple; bh=prOzLUskI3PtjEuq+S+mvPZ3SDfrHdF8TE64VQAItOo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SnF2TMIKpBjYNBS4ljmlzekobDODw3kdmPbE2ok/bxvFU5rTxT1vJ64/aGMEMT8i1Wf+R/N0dLg426AiVkViDnE+lkdLfKTcorrGt/9lpwhWOMDC5wXUKZp0eUMiylJsyewELZJlTk+1DDqAqtrnDdIPkxSUlj38OHfSE5nJgl0= 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=BiXVPn4U; arc=none smtp.client-ip=209.85.128.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="BiXVPn4U" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-47721743fd0so5104245e9.2 for ; Thu, 06 Nov 2025 06:32:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1762439572; x=1763044372; 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=CXbANkDDGqW1qZVHqJN18AuedowNrhBaz5PtTHNJFho=; b=BiXVPn4UKJHRHydRe+QS/nea5VipPlgKuyK4wS0cujydq+Fx9v3gIUTbtp9aAYIH19 7TrC+YTwBvEa7/1YfZs6V8lAXkrqy9qi7arrWzxdzV7DcRFDV6EIpCveduKKufBTWtIl x1U83YrdD6u6hQuxpuydeWztRh470kIRZmlBLR75ykBsuDsXeqxBXdyxnJ0SDNlxZaZm zWDhbHX0J5QRlcMAT2g99a2UsMxRfKEtc+kjhD7w2aPwlZfMqqzJEUpckHReTWgeCJXm tlwNXM+W5LdG6Ce5Es1FvvybGJUkvWCIZu9R6w7TD/e7QU6sDfPO+JW4HKiLUuKnXfeq /GrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762439572; x=1763044372; 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=CXbANkDDGqW1qZVHqJN18AuedowNrhBaz5PtTHNJFho=; b=Kgt+DN+pZUrpKxfZ3vxbTfpV7CRQp39u1TIYJEN6IXkVexf2JCgn7guzO4fSSoKCUg j43pan8jImMyr/APc/rbZ5aT08Z+klMhEehGIiKK02KhZLRHA78FiS2+zsZRvnjoXfjs AYk8uvOplxWwp8HIWf9VxGXhN9kOxE3U0YngxfdVtvla895HVoO7LmaK+W3insQVDflP DdkwEl0+4NiBxT3QjkYsnMbS9jyGFCH+jl74saIB5i1SzBFPuRc3OX/C6uc7OVlCRlkt KgNsGTA2H+9aYHBaK1Lyl7DFFTUbSCRIlzwWaWyxSfASN7ore3QLmzpA+L1fzyimidwv pwzQ== X-Forwarded-Encrypted: i=1; AJvYcCXjgvOp7DLNP1WMo88jFGQAz/P3/OthT2mPEF1sqrsfO9RtnMKBUBor/3k3zkNc9Mwd1v8Vtu71sAMhZBI=@vger.kernel.org X-Gm-Message-State: AOJu0YziyPFvsu8t/nqUD4BJz91Thxl1BCy0Nwi0XKfkScPWYeOdSvXD jFaP+nw54SEcdTZliOFaY0A9hFg1xOtWerQuZqX2r/pE+iQQ/lC531JQeaVrTnxSaUY= X-Gm-Gg: ASbGncvrohonfgK6qiZB/6b60LQooCd/s524JHEg/jP3ESEI62m16LndurO3lMdw8dg JciFFsGw4M8zb1Yc4C2c993h0OvKQVH6JjEwyU9/dtQspYg/K/a/ECzMeDqD74J5YB+BBtGWxKp 56zk8XzOo4x5yevn48rsw6Rsl73ssfPrwfDuzy8gP2zEEdCq0LT6pWhLreahENo/XxYz86/nVHD d1ZK5ouHWn4yVWvzxcW7CLAinZfnA+jL5jZy8usYcDItwBAHHygUd8+/SdjS5n5tR48lkQr6XtB omfRjmBClSZtajPXZEc1Tc1pOxoHMkU9RYJYdvAMVNl3RQNPELgfPv5hhn+qbbftZJsjE4rCfq7 Bu9+1MjBfyKr98ItJwOcKmG9/JEe8N8H3ETar2LXDJlUFgSHzCBcMh6kSjweDRPC6xiQX X-Google-Smtp-Source: AGHT+IEKvp+BIJ0daCleG1INxfZXzLgRjtg5y5XO69kXN1oQCc4zvQugkLEg7GhIyNZUXJw76aoYNg== X-Received: by 2002:a05:600c:1e1d:b0:477:a9e:859a with SMTP id 5b1f17b1804b1-4775cdf54e7mr65676825e9.22.1762439571877; Thu, 06 Nov 2025 06:32:51 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:d9de:4038:a78:acab]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47763de4fb5sm18871515e9.2.2025.11.06.06.32.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Nov 2025 06:32:50 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 06 Nov 2025 15:32:34 +0100 Subject: [PATCH v6 5/8] reset: order includes alphabetically in reset/core.c 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: <20251106-reset-gpios-swnodes-v6-5-69aa852de9e4@linaro.org> References: <20251106-reset-gpios-swnodes-v6-0-69aa852de9e4@linaro.org> In-Reply-To: <20251106-reset-gpios-swnodes-v6-0-69aa852de9e4@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Philipp Zabel , Krzysztof Kozlowski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1201; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=8oIX3m45+ImirvUyTg/cHTcxG9CmXJIQMyBw8kaRMMM=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBpDLGHVAwT2gAgl00/ARCEZyN+s0BLhNENeoGBU 4FGVo1RBjWJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaQyxhwAKCRARpy6gFHHX cs95EADibjmdv0jqZaqgoZLQzjAQV4g2A3CwkEUI7/RNyfm5llcRpu8xHNGK3JXHEEdThJK/lzt 64S9CqcGUXLLmcBeMdI4m3J69tQOwlq+N18gnrrOXviwRWjgTiLx4eE2WWDGRF5fbTbktOFHPzC axOoLv8DPlBuuZNj7PQyv+tnb7Go5ICqiicCBEzDF/tntogipQcZSWfDUjFruHAiFCjRCUUIoMz UmoijGwLoTJoI+AnQqBbqFmSbj9q5Jb431ugXl+YMr0976dibEOsr2S02SUGUvVyyapIFUEumW6 ejs88pyzVsogHT5ghoSuG4KtC8rmW0UCrmUySw2M2qdbUbAzggCTcY/ZsbdiWJAomTnEGj4PjsY X6M76GFpuWILWJy1j/b7191JNzwCbkAzU+HCGHu/5k33KNEtSL9zFBjmdUktggDuZOBgwpoPxN9 EsDzwKayyOJPQhnVR5o5U9wVL6Kd/l9Eccfus34k3UAZfFiXYLhFtQdVP9ODqNyEuiZjXsciZ7m ofY5jkxcwmPVuTm4mzDxCvY3Z0ZdPD7KOugOATTx/GpOCX6BuU18s+D6THXd/XxPU70lQKeg84p Zc3X/vvDokgHt+D5BNONofXtW/dmj04xpQvpmT1EqSG+RhA3gnJNWK/5dcojwoskXPjMDUrCgtp x5w+AGJr4RFeVqg== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski For better readability and easier maintenance order the includes alphabetically. Reviewed-by: Philipp Zabel Acked-by: Linus Walleij Signed-off-by: Bartosz Golaszewski Acked-by: Greg Kroah-Hartman --- drivers/reset/core.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/reset/core.c b/drivers/reset/core.c index 8029e547e3db90ddb85c717dfd735bc8a314dd44..b3d3339dd6d30495b498b3f650d= 18fdd96a6bca7 100644 --- a/drivers/reset/core.c +++ b/drivers/reset/core.c @@ -4,19 +4,20 @@ * * Copyright 2013 Philipp Zabel, Pengutronix */ + +#include #include #include #include #include #include -#include -#include #include #include #include +#include +#include #include #include -#include #include #include #include --=20 2.51.0 From nobody Sun Feb 8 18:24:26 2026 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 58A7F341ADE for ; Thu, 6 Nov 2025 14:32:55 +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=1762439577; cv=none; b=A9UtHGIA91FVYBmms3pUPA/nT6GqIW/gftkxIyJs0vUjkCk5974kN9HmXMd59cRk3r8FLmQn3ToGT4C1nzbSlLm8NR+Fg1k8VmcfcY4KEVY0GXlmLeHOlk/zAU5yRq8WEriLZzuG55zHz4OVswR60aj3cQqSP5yn5pIoro04QfA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762439577; c=relaxed/simple; bh=WYtsFizQbM4aE384TZ7sPETgegiBGiPMgwHuc6DOszI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tJc2AxAIkEvrZxdFdNzjm2jwwoR6TvFbw3CXY04Bh4vt7EihK/1SBmAuNKSSm+pVZsAhXrkRQJuLrTnJXxX+huEuunzEncYrmOtZ0jkfQXSm3FJxLQmBBP+S4x4G4FQ3nxwaBBUMBi1wUjiFttOEZU6BLU29U94JHtcKJ6jyZIc= 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=YF5neq0L; 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="YF5neq0L" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-477563bcaacso7778025e9.1 for ; Thu, 06 Nov 2025 06:32:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1762439574; x=1763044374; 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=Q7IcwkvxZCoeChL6F0/utOZdZpB2dEpp7MA1q4biiOc=; b=YF5neq0LuZSHmReuqY3tsUucWbfhNm1STm0BAeH4xA3Q6/5j3PC2PZiVuVGToooGeg UX5ICkKqIR5Vsm2M1THtGDM3jiOv2sZIiDdsLoz7UriH4wHywsUIgdtxeCcdVTrtX3sU d5NwXVGcJLKpA/jnhfqAHg6daID1upjNqAcjrmJrM4bMGs6JvKUKWFlYpdxjo9bsY8O0 gN6/UkiDE0fBDFgIkBVG8N7FN94k/LeNqJToHoSCxDwbbcuG0xKa26DL8XjdtAqcz2hE 6QhuKLVhZOLsIq+uCW3IZggqfoZw/0AajJma7t9q1st7HahuRNCvJr5dRN5IAlM3qrpD SSVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762439574; x=1763044374; 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=Q7IcwkvxZCoeChL6F0/utOZdZpB2dEpp7MA1q4biiOc=; b=J28m/1qWtBalkKdL6rfJxQ6OukDCAt2EoBl7uRiRp437iL+312jkZvMSI/APB10sLy 83nzl5394ddF/XjRuXIlBIABAJN0QWxqxgsPKvx3HnO4xkryYw6awFVPRXckeDFSV7jb 5KWH6cKUPCH4vOckvrBO34+6m1NsfiVFJnPKdIjZA7HxMjxMj3XozBI6HJVPev3mZeFC lCQTab/ScOb4wWiwWjEPMrdE8ZEWve+S3+13WSiKiLTdV0Uu5NtXVYn4WDyt1G/+seBO 7PF6CENXMIuAVu9rr9lhc8xKl+XQEyU9Z09Z9wWbJejoZ6lwIfcoRzUlH8d7NA8eyJzv NEiQ== X-Forwarded-Encrypted: i=1; AJvYcCWJpaxBHQLAa5fTwLu2hxarBLPZ0sogxX9BdKPIJBRtUgvJI8+Q9WP1de/2uu5nJzOFSlZaoH8yGwPk3b8=@vger.kernel.org X-Gm-Message-State: AOJu0Yy7C3E64C8v72ACtAXYaiIEYGoETj0hDKRiECzhfZox5OcZ1GBG rda0fm72S/CNNi4niGylzJKvyl4nBtQ72Iq6AdsoxBkcZiNWPdz/7eYNP9eCzznin3k= X-Gm-Gg: ASbGncuB/MEnXuOGcd6/XLf4Jy8Dc8A+fBS71hpqdnEuuVZpox0ld7Qzf0Ek/v8F3YO gGiU/FJ+5WwUUsTatdGeCISqiLYXIII/SJse3GAjOQPURlbWwHRrLB2IRPaiuNMEzLD/XXH/Z6x lCssLbyvBUi8ecgIbB5+s3I7xhuJ3dHFd2oJnPvVXNPpbctmt3UO8LPArApOHBZIEect4yIrVYS mjmfyEkzGLtvCWypUUEHYfZJjsa5Bx6kXtqsADiFOiktOPT/7FK2VPxEFYVi/rMHHi5pFDl3uaF iIt91E4gWEX3NCN3JlzWC73szv8c7IwS/DCA103N80QJJ8McQcpmeFtv+gS7n29BPrgEK5gxAs0 PgxzxQsAwiJ7mwSs2qRPq3voulii9Y7HdyZI9VYYRbLc3s9Q1ZYMjOgGOc+A+Cnd4ksRO X-Google-Smtp-Source: AGHT+IHJdCKOGEmHwglYreXy5Bse1Ht9Zj2E+rvSJcOa7E6LW1TY2KvZ//8CiDhbRc9P4HFHJuuwfA== X-Received: by 2002:a05:600c:1c94:b0:477:fcb:2256 with SMTP id 5b1f17b1804b1-4775ce23efemr74189185e9.17.1762439573533; Thu, 06 Nov 2025 06:32:53 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:d9de:4038:a78:acab]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47763de4fb5sm18871515e9.2.2025.11.06.06.32.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Nov 2025 06:32:52 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 06 Nov 2025 15:32:35 +0100 Subject: [PATCH v6 6/8] reset: make the provider of reset-gpios the parent of the reset device 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: <20251106-reset-gpios-swnodes-v6-6-69aa852de9e4@linaro.org> References: <20251106-reset-gpios-swnodes-v6-0-69aa852de9e4@linaro.org> In-Reply-To: <20251106-reset-gpios-swnodes-v6-0-69aa852de9e4@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Philipp Zabel , Krzysztof Kozlowski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3056; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=Ii5gmVXHOWj2TYAgDLdwPMX22jyvG1TmKArdiO0SOxI=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBpDLGI5l3FF3L3dsFEJ/gvixZtSLWIepU2+Aso+ YY1e1LkzYOJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaQyxiAAKCRARpy6gFHHX cpZ5EADbU7IR5S1TwL7Fd99QpM8Zu7t+FI68IXzt5a8gczcc8DHYtzF814Z4g+uLAosB9HysHM9 bgQ9kJ6RptXNasK4DBVpPBWZUoJqh1FrO3P6ZEn05eNRjC1hGK5wbUXUK6QuVgt8cv+4GsffJgc yD0YY344Q2MNZoACpGMXk+Wol+46SpvC0S7nZyvZjQaDgce9OdKegYKZraO/T9P1/Z2dc7WRek9 ntSAx6+BPc1pJfBNwXye4Xgh2YMR+sYiooRo0at3VsAkz9dtl/8ZyiPpHdNnwjOXpHGysZx0DwR FmZfcDuxMLURmQ7Oz5aQmHxTcTrPQ6tZoZr5/8vGVuKzMcAI1/KlgNoRmJ8Ub6nz/WSkrOKedX4 kNZSMoQUjUWdbZyu7Cl4uFbydqL7czxfFHc2z3l+KS3iGiCKAJkm4yL9RDRFBK/bUARKg7Np6Vf TM0gw19HFDXWiU84ITZdYMEWk4rIJcsPxKQtEg1I5ARjdNISOAn0xNPFIi29R7oGfPqsCC08RMG SKGkYxNtPy6wlm1CAfVld627EufBBupmHoOoqYlJwskfKwmVqH1So4/DqnDAU1fd3gZCJQ/SbmZ iBjnmE3YKQCLrpeEDrtMy5eH+8F6K7FJ7GYZVv/ytQoGCtHnZeO5SZBuAkVoaZabjg94L+t4Pwb PGgwI84FvtIuyzg== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Auxiliary devices really do need a parent so ahead of converting the reset-gpios driver to registering on the auxiliary bus, make the GPIO device that provides the reset GPIO the parent of the reset-gpio device. To that end move the lookup of the GPIO device by fwnode to the beginning of __reset_add_reset_gpio_device() which has the added benefit of bailing out earlier, before allocating resources for the virtual device, if the chip is not up yet. Reviewed-by: Philipp Zabel Acked-by: Linus Walleij Signed-off-by: Bartosz Golaszewski Acked-by: Greg Kroah-Hartman --- drivers/reset/core.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/drivers/reset/core.c b/drivers/reset/core.c index b3d3339dd6d30495b498b3f650d18fdd96a6bca7..31dcd25b465d795dda275f751ed= 6ce28d4dc27ee 100644 --- a/drivers/reset/core.c +++ b/drivers/reset/core.c @@ -822,11 +822,11 @@ static void __reset_control_put_internal(struct reset= _control *rstc) kref_put(&rstc->refcnt, __reset_control_release); } =20 -static int __reset_add_reset_gpio_lookup(int id, struct device_node *np, +static int __reset_add_reset_gpio_lookup(struct gpio_device *gdev, int id, + struct device_node *np, unsigned int gpio, unsigned int of_flags) { - const struct fwnode_handle *fwnode =3D of_fwnode_handle(np); unsigned int lookup_flags; const char *label_tmp; =20 @@ -841,10 +841,6 @@ static int __reset_add_reset_gpio_lookup(int id, struc= t device_node *np, return -EINVAL; } =20 - struct gpio_device *gdev __free(gpio_device_put) =3D gpio_device_find_by_= fwnode(fwnode); - if (!gdev) - return -EPROBE_DEFER; - label_tmp =3D gpio_device_get_label(gdev); if (!label_tmp) return -EINVAL; @@ -899,6 +895,11 @@ static int __reset_add_reset_gpio_device(const struct = of_phandle_args *args) */ lockdep_assert_not_held(&reset_list_mutex); =20 + struct gpio_device *gdev __free(gpio_device_put) =3D + gpio_device_find_by_fwnode(of_fwnode_handle(args->np)); + if (!gdev) + return -EPROBE_DEFER; + guard(mutex)(&reset_gpio_lookup_mutex); =20 list_for_each_entry(rgpio_dev, &reset_gpio_lookup_list, list) { @@ -919,7 +920,7 @@ static int __reset_add_reset_gpio_device(const struct o= f_phandle_args *args) goto err_ida_free; } =20 - ret =3D __reset_add_reset_gpio_lookup(id, args->np, args->args[0], + ret =3D __reset_add_reset_gpio_lookup(gdev, id, args->np, args->args[0], args->args[1]); if (ret < 0) goto err_kfree; @@ -931,7 +932,8 @@ static int __reset_add_reset_gpio_device(const struct o= f_phandle_args *args) * Hold reference as long as rgpio_dev memory is valid. */ of_node_get(rgpio_dev->of_args.np); - pdev =3D platform_device_register_data(NULL, "reset-gpio", id, + pdev =3D platform_device_register_data(gpio_device_to_device(gdev), + "reset-gpio", id, &rgpio_dev->of_args, sizeof(rgpio_dev->of_args)); ret =3D PTR_ERR_OR_ZERO(pdev); --=20 2.51.0 From nobody Sun Feb 8 18:24:26 2026 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C6069342C8E for ; Thu, 6 Nov 2025 14:32:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762439578; cv=none; b=pyST6A3L84l7CDq6XWu4p2kdT8gTJqQyNPIMwcNc3v46zpdgeiM/OFhWSjhoSNBQ5vXpC45k852/Qk7WU3iPXcGSproSVR19IEwoCBlG//ksQ0E/9BOjusq8Tzol/pSJ6JfoOEEjS06Ek4Ws2lnDMkJjaGBDEele/oxV0dseF34= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762439578; c=relaxed/simple; bh=j86BUtaxmEhUJ/SWoFQBLDXy07v3EnQwuu18RQ828kY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sufCljMTiwkw6LxExDuDXJtNs4Xmpjc0+/c59u2et7yU0hcEoORgoHmuZAzx3U6ChQksLv9Ym2RQ8sr537nKyiu7ZZA/hfu319WvQOV5jpkyB50MLB8Ac3Is73DA30QUcLN+n+wZO+3WZPDL3/hvx15YtqYvX/nEFJb2f1FYjYc= 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=YfKmtJ5g; arc=none smtp.client-ip=209.85.221.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="YfKmtJ5g" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-429b7ba208eso654318f8f.1 for ; Thu, 06 Nov 2025 06:32:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1762439575; x=1763044375; 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=KIaRc46XZMQqhsVHYY0qTS7geNIzPALSU+F0TjMM2vo=; b=YfKmtJ5gKUWuz0nc//LfvyzYH8ePqMjGEJdwvrofSxg2yRw9+pFzu/4218IoX1Lhzv XJEsGtOu+Cuz8Eh7XCGeVDnZjoqaOp5la9LcuYo3lVtGFZKLxJbqJ0FJKQeWOY1OBMuh QTsOk216wjffjeGy0MTpCP48uBrRqSWjx3Tnx3NrmRA7l4GFAxas0vgAkeNARSghHnLi s3Sh9s4+APbNDJzzN/IdlBbuGv3fc+1GxcrGZ8QWwDplKARP7d/qVraXLKBxoEUdKt8z OK/NDqsbyVUOdH/xGzvWUijPdmpcYV40HiuXoKbGs1Fc6RZ8wKj18VYJJ52l9yFf6MvW qncw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762439575; x=1763044375; 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=KIaRc46XZMQqhsVHYY0qTS7geNIzPALSU+F0TjMM2vo=; b=oPn6c9JiUcF+pNbUTk0/xPrBo2xBy/90r0ppoItP+1dJySmFIc2st6Yz7VMnkNDS4z tqIWe8slBxY9tZVPGr3kF5HA9MQRDoyrSqB5U/Wu+Y+1dTXxA06+WxHJApC5TqqPG7ma i9EiC6ID2kkwIl2cMbmqN5j5UeWz88sLMdWOnnmVQyIJ1y1kF7v9dGbCFKW5aXVGKO9u cMFD3GaH7tMuxaqUOUNvh6x6gEYIDwDkeSzHG2IQpI/xp+VcFwRDd0zov5oIdVMRcmdB 7KgU7jJf/5K0z6snmUrSgH6ojLuq242duRdbkm8F3be8hjaoc0yvWujkebqz+bsWhTBg WLtA== X-Forwarded-Encrypted: i=1; AJvYcCVZ4RW/hcN9MjWPOJNVotw+5TptF5663Q/cOm+DKJV0+X2T5hII/AEM+wp9B8aYBat4sQa+m21ilatK6Uo=@vger.kernel.org X-Gm-Message-State: AOJu0YyijCBkY0bNvfJt+K838WTi+uDqIUHH7uuxHHPMBabC8jLiT3Oa n9BigIX5CKJZfOwsnJhNtOgM5huhOThb5yJcBN0/veJOkLsyXRR6k2FMDVTPRvk4wps= X-Gm-Gg: ASbGnctbymtgqeJtmCh3uC6YFqq5wZaZvqeotDcv+xmJJ6BQP6/UmTfySiitCi2grPD tFZdhxhNqKnKZKe/49RjAFxM7HlW/sgQLUIj8y0Hbk0WamqUGdm0Jt54zLt/Ec9QQsur+UEc87O Q1MahlJ/RP48mdY3m3i3b+Ao+lfb8a4JWHn41upma19YupbEk8JEYz7WDgQA5p+JcREEe46B/kU U43V0TdzHlgKXmZlKy/2Iy/e33fL/UpSDKdHU7MmrU01mjHKEF6Osf0Mvh+qbmiaQCn8/g8P3hq CrrFWl6O8B0ffL1C7DmR4YR3yx0dJnNhyWFFKNzkHySi8N5LxTQtghUqBloCIK9q6qwd3fePodK b2i7ytWyq/ekx0z7zZqQatfibN/Y3Ro76Us3/NLMSTn/Z4Ot9SuUcAhSP3MvqJELNk0lu/bRbb/ +xgdY= X-Google-Smtp-Source: AGHT+IHJ4x9Bsl7kc+pDxzziXipVXKzJ3UgPnkzFZteqICbtQCoOVD3/jSqMOxMxegdwEiqeIeb++Q== X-Received: by 2002:a05:600c:b8a:b0:46e:53cb:9e7f with SMTP id 5b1f17b1804b1-4775cdd134bmr65869745e9.18.1762439575123; Thu, 06 Nov 2025 06:32:55 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:d9de:4038:a78:acab]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47763de4fb5sm18871515e9.2.2025.11.06.06.32.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Nov 2025 06:32:54 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 06 Nov 2025 15:32:36 +0100 Subject: [PATCH v6 7/8] reset: gpio: convert the driver to using the auxiliary bus 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: <20251106-reset-gpios-swnodes-v6-7-69aa852de9e4@linaro.org> References: <20251106-reset-gpios-swnodes-v6-0-69aa852de9e4@linaro.org> In-Reply-To: <20251106-reset-gpios-swnodes-v6-0-69aa852de9e4@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Philipp Zabel , Krzysztof Kozlowski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5084; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=TXv3pC6YgBdtVXMo+3iiNRgG6BJGBuMpbYpJAy7f2Qg=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBpDLGI1zTyEAtJoMpIZn2+x83g1eHe5OzVTFyTJ NIJ2e4K0BaJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaQyxiAAKCRARpy6gFHHX cqJaD/9b9ZvzmqxOgnvTe1+SCjl+C402PBz+X+k4e6V885WskRkEoKT932SVY3jnPXPuC2lh5Ha Qzw17O8yf/tpJBfZOPLXZYbN/SWx29yxy0BFnCCYBlTOtxQ4PXwpQPZqlZi+RluHUCpHrCIpbNp 8W/n6cm40RZ3NoxTme6Gwz/KDZ7oqrMzsox42nKv5i5uakFqNhkQxeNpthxhlkOBL8QPb49NHJ1 Gfq5u2DCgWyulKvATt1ibmv91ioi/UUa9wfGxTrSHfn6XtzHFei3z/ZW2rEL0t4jC/3YCqrBNCI OvVsXx542REYF6zqhgRDwHuA4he+HJfC+OvsVnqkvcJAkqomIPb9bX+H3uej8MPWHY1viL9WjAe EZfOTPZI/dFJ+1r3r9BwRKTMrZABS2lrUyuP7d7eEoDUykYNM2mGuIqwoP4AML872CMMM2x6owR fzHGFUOWAqvwv6MajA09Ml6O+L5bN9sVpZ610D/BsEG7S5QN4KeFxwvS8k37uCW+ICUva6rLc+C bH0CVPR3rwkwu7UOAojtBhsJZTxC+5cK9PTpSIMjI+z2psRxiVuEugzbvpSp/8GxlSEjei0IZ/G xqcr/I6/fSllaYcW7gZvpNIpoDXqYMf1J+xHLY4h6QvWV/KAi7kqpHjYmo7fCafgOw1ksMkr0Bj fzgTYUKzAb0Z5UA== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski As the reset-gpio devices are purely virtual and never instantiated from real firmware nodes, let's convert the driver to using the - more fitting - auxiliary bus. Reviewed-by: Philipp Zabel Acked-by: Linus Walleij Signed-off-by: Bartosz Golaszewski Acked-by: Greg Kroah-Hartman --- drivers/reset/Kconfig | 1 + drivers/reset/core.c | 14 ++++++-------- drivers/reset/reset-gpio.c | 19 ++++++++++--------- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/drivers/reset/Kconfig b/drivers/reset/Kconfig index 67ca87c9a86ecdbd41cbd3397d2a0c9921227eef..26c8efce0394b238691e87b0408= 7b3d705bfadb0 100644 --- a/drivers/reset/Kconfig +++ b/drivers/reset/Kconfig @@ -99,6 +99,7 @@ config RESET_EYEQ config RESET_GPIO tristate "GPIO reset controller" depends on GPIOLIB + select AUXILIARY_BUS help This enables a generic reset controller for resets attached via GPIOs. Typically for OF platforms this driver expects "reset-gpios" diff --git a/drivers/reset/core.c b/drivers/reset/core.c index 31dcd25b465d795dda275f751ed6ce28d4dc27ee..cefeff10f6c82f5aef269a6d3a5= 8d9d204ed6b7e 100644 --- a/drivers/reset/core.c +++ b/drivers/reset/core.c @@ -7,6 +7,7 @@ =20 #include #include +#include #include #include #include @@ -18,7 +19,6 @@ #include #include #include -#include #include #include #include @@ -855,7 +855,7 @@ static int __reset_add_reset_gpio_lookup(struct gpio_de= vice *gdev, int id, if (!lookup) return -ENOMEM; =20 - lookup->dev_id =3D kasprintf(GFP_KERNEL, "reset-gpio.%d", id); + lookup->dev_id =3D kasprintf(GFP_KERNEL, "reset.gpio.%d", id); if (!lookup->dev_id) return -ENOMEM; =20 @@ -876,7 +876,7 @@ static int __reset_add_reset_gpio_lookup(struct gpio_de= vice *gdev, int id, static int __reset_add_reset_gpio_device(const struct of_phandle_args *arg= s) { struct reset_gpio_lookup *rgpio_dev; - struct platform_device *pdev; + struct auxiliary_device *adev; int id, ret; =20 /* @@ -932,11 +932,9 @@ static int __reset_add_reset_gpio_device(const struct = of_phandle_args *args) * Hold reference as long as rgpio_dev memory is valid. */ of_node_get(rgpio_dev->of_args.np); - pdev =3D platform_device_register_data(gpio_device_to_device(gdev), - "reset-gpio", id, - &rgpio_dev->of_args, - sizeof(rgpio_dev->of_args)); - ret =3D PTR_ERR_OR_ZERO(pdev); + adev =3D auxiliary_device_create(gpio_device_to_device(gdev), "reset", + "gpio", &rgpio_dev->of_args, id); + ret =3D PTR_ERR_OR_ZERO(adev); if (ret) goto err_put; =20 diff --git a/drivers/reset/reset-gpio.c b/drivers/reset/reset-gpio.c index 2290b25b6703536f2245f15cab870bd7092d3453..e5512b3b596b5290af20e5fdd99= a38f81e670d2b 100644 --- a/drivers/reset/reset-gpio.c +++ b/drivers/reset/reset-gpio.c @@ -1,10 +1,10 @@ // SPDX-License-Identifier: GPL-2.0 =20 +#include #include #include #include #include -#include #include =20 struct reset_gpio_priv { @@ -61,9 +61,10 @@ static void reset_gpio_of_node_put(void *data) of_node_put(data); } =20 -static int reset_gpio_probe(struct platform_device *pdev) +static int reset_gpio_probe(struct auxiliary_device *adev, + const struct auxiliary_device_id *id) { - struct device *dev =3D &pdev->dev; + struct device *dev =3D &adev->dev; struct of_phandle_args *platdata =3D dev_get_platdata(dev); struct reset_gpio_priv *priv; int ret; @@ -75,7 +76,7 @@ static int reset_gpio_probe(struct platform_device *pdev) if (!priv) return -ENOMEM; =20 - platform_set_drvdata(pdev, &priv->rc); + auxiliary_set_drvdata(adev, &priv->rc); =20 priv->reset =3D devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH); if (IS_ERR(priv->reset)) @@ -99,20 +100,20 @@ static int reset_gpio_probe(struct platform_device *pd= ev) return devm_reset_controller_register(dev, &priv->rc); } =20 -static const struct platform_device_id reset_gpio_ids[] =3D { - { .name =3D "reset-gpio", }, +static const struct auxiliary_device_id reset_gpio_ids[] =3D { + { .name =3D "reset.gpio" }, {} }; -MODULE_DEVICE_TABLE(platform, reset_gpio_ids); +MODULE_DEVICE_TABLE(auxiliary, reset_gpio_ids); =20 -static struct platform_driver reset_gpio_driver =3D { +static struct auxiliary_driver reset_gpio_driver =3D { .probe =3D reset_gpio_probe, .id_table =3D reset_gpio_ids, .driver =3D { .name =3D "reset-gpio", }, }; -module_platform_driver(reset_gpio_driver); +module_auxiliary_driver(reset_gpio_driver); =20 MODULE_AUTHOR("Krzysztof Kozlowski "); MODULE_DESCRIPTION("Generic GPIO reset driver"); --=20 2.51.0 From nobody Sun Feb 8 18:24:26 2026 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 8C49D343209 for ; Thu, 6 Nov 2025 14:32:58 +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=1762439580; cv=none; b=qTuElaV/WxNDWCYaS1yS20LnKMnpQCQV7mCAjc0GgWCBdli1yZftK/IHRSz/5SFb4HJCp6K07EJxaM654MWtIJziywEIVtbGmzikaeB0vo0Y+JGs0wh966pzcDVW4yaFWdqHINyEF+r55OhZG1vyAV1uavOat84oyMaQfEZ2zS8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762439580; c=relaxed/simple; bh=EkDE/RRl4qMOJOD0OLRUX9GMdTma2ZJklCXyTifECNk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RTaxt4RYUhXh11BtEUImIXSR6k5egDEr9/uSBJsitEDaF3H4qLAo8z3GHbTeCknMQNEJbAiYu3Fbq5B5JOOo0B8n997y3MthiOoWGPZrHSMbq7EUQhh7f7ekmJePYfU2LsM3FkfSgV0qULgUGySyNiANcwlMF9YciA9jg01N9Jw= 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=nkvlScTR; 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="nkvlScTR" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-4775638d819so5355165e9.1 for ; Thu, 06 Nov 2025 06:32:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1762439577; x=1763044377; 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=CBRf3veqjGbG6h9bzDEg53CibEdBQaqM7ZKj7lD8TRM=; b=nkvlScTRD+gKTlpPAdn/0OCmXug29C7ilQgcG9KXvAPpC8wf0dBthdneI44yy2K+fk pbaYKPMzl1nELw39e3wjx2DOIcOGZeT64hFfAedyVASzYU0KxAbz0YEqa0q8+LJhRhs6 Yc5fN9BO+8VU+M0hMQEvS0pheYnxrlMkQu0XdR+SHB9HgTOSOtPpV+KbuSqBnZKV0D4+ P2TbVxvuLxRbk1N+LrI54yyePhaFmw3Mt5IDWoMfOCVhd70II/nfXNDFNbEhiDTlGwjv uit2F7rpz5yTUvdsXOJTNQ/vFwMw/Vvi/ICOZUg26eSZKjfOlx3Desgy/f1OAlnbT6+x qxbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762439577; x=1763044377; 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=CBRf3veqjGbG6h9bzDEg53CibEdBQaqM7ZKj7lD8TRM=; b=FfO5RbXeECDsatJsIkWl5yj3gfjkN/z9GSikFy6BbOQezU/cyb0/8iI667zQnayWr9 QdazVBUb8vusLS+aQHNhdey6rwigFM+72hCaTXEAVo0EKs5MpkrOEVUYx2omIDKhlaon 6e6n9aYzYYjMP5q/LXwDb57aKGxg48FgDL4cEd9Zk75IvN2GjfBOdhpS2GPiiUZwOOl2 hDr0I80iGqBJmAm75mCvEbXHw7m4spoWKg2hJYiBMJl74hOcuoFvGvyX7vt+bubhqzYy nfH3V0INejsEH+mqpd6w0ZsFAhTdLdguZFR+6eTZJJgVOkfJqrt1WCOXW03OiOUWQOGE 5RSA== X-Forwarded-Encrypted: i=1; AJvYcCXMicYE+mEL3bhu3t5HuDuVZkdy+kzd1R0PNNoYfpAanP4kgPu/3WKvOa9Hm7rgMls55MbXuZTiNCSPpT0=@vger.kernel.org X-Gm-Message-State: AOJu0Yx/dqqtkcJLj82eoXa1DJsdrVcxhRQEE1WPmU9Lr6mlxyZbdRcT CZAIlFG114iB8ncRLxWQvKiIRPIcXl6GTLVm9J5PKwPMkeqilyDEkbtfiJ8QQNQZ65k= X-Gm-Gg: ASbGncsGft5qv3ebd9LeF4Tld5GWKGK4sWQuOe3KKz10UgC/WpMoDlSBH0DdSXaIQO7 hglxXVScag7WuxldPnPSeH6sGDt5tMhKd3KIB0n9YBuPXOMIGNXyMmSCarK962JbTgSC7DUjMI+ wObc4MlKr2or9OleD1Gx9tcBQ0Hod0/L2lQPD/RO10M2BCA/Gmzjwm6ZTwjEuUw0YcDIw6jzRDa ppWHBScSgX9iK7O8X341QL+WbZUDP2xEVT8kPP+QjBty2IXy8j2hIGdvK4xvn5HADNP0UtbPXOb P/n1Gja6jBDz6L6vEHCm2vgu1Iax/a1sUZ7FSoAGYPcnLwgHHM0tYvYng1tiehMyL8GcZoJ+B6d HdV2AgKoEzOyuIzQIwbPHxYwrcuE9YtJPPAV9t35eA3PN8D5ooWe9fu+dkbisZjGawbvHFm/BzA P5kU2u5+NCb1QB3g== X-Google-Smtp-Source: AGHT+IHO3UylNl2KGxiz9gPrA6WTwUQSCel+a1JiWOuL3mx9boSALuIzdlOj9fKcjI5KOqgGUztaRQ== X-Received: by 2002:a05:600c:348d:b0:46e:5100:326e with SMTP id 5b1f17b1804b1-4775cdf54b9mr51652505e9.23.1762439576626; Thu, 06 Nov 2025 06:32:56 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:d9de:4038:a78:acab]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47763de4fb5sm18871515e9.2.2025.11.06.06.32.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Nov 2025 06:32:55 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 06 Nov 2025 15:32:37 +0100 Subject: [PATCH v6 8/8] reset: gpio: use software nodes to setup the GPIO lookup 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: <20251106-reset-gpios-swnodes-v6-8-69aa852de9e4@linaro.org> References: <20251106-reset-gpios-swnodes-v6-0-69aa852de9e4@linaro.org> In-Reply-To: <20251106-reset-gpios-swnodes-v6-0-69aa852de9e4@linaro.org> To: Linus Walleij , Bartosz Golaszewski , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Philipp Zabel , Krzysztof Kozlowski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=7011; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=Ao31mIgVUzpFpWDEWy5gl0RAjMbjdGgDZiop4RFld+8=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBpDLGISK9diTWRcRc155/yr0n9uTHC0fqEsEKj1 hLZNW8R8OOJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaQyxiAAKCRARpy6gFHHX ctBqEACEOpOe4DMcGGg/2LAjcBGy/1ZSWig3u5pjB1TpSklhF9Zv7sfHAg7t6MTffVdoBkKP+TU UY4lJUvRlngckYoFB0WwZU4toQTLZato+0DR4jWeaNkBIyLMFabaNyxHU55zEyc0OJFE2ucQjvs Pe0Ce/IRMl8vMev7Ge1dtcrPXfc6OV5xMfg3U6EuTmeaBQ9QL5yld5QyFRMw7i7jnHU6cu/Bgpb 6VY6X2G/f32vDv8xYVQimAWQZlcy+5lGAN+7GVI8a2EWcy6vF9yXp+bvnOhNnlDwZwy7F+PMkx1 v2FQ7morG3A1o4wVaoU1U4D8Kf8ueh5j0Vu7vzc5g8o0dY2pDDtdqZwKjbZ19OjfOndnNTEkPqJ 1FAQE0VP29lV9uu3oowVF2q4qCmAb8refNErjiJmsroLnV8JltEzUv6QXIPBgpe1UJCOAiLFNgI cENbRETaGRt2V7PMNNNg6S5kEyYnJnLy0EECi958hPJVK1mwC/IoX2x0IAgaXuthGJUqxdb7oMV 9VqAqahRCPWqbr2V+Ntm3gNgAN+dLWwj/ffR/uu7Ynn2v6TjCphxUOSIzKbD4lIIdN4aY5xswy4 0DAMqamXrZSn27IxbouxToz+mZKNcuzdX8BRiJlGBXWF5+CeULMDis6x4hX27uF4HZXqNiA6f41 vpkjJP6iU7XChJw== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski GPIO machine lookup is a nice mechanism for associating GPIOs with consumers if we don't know what kind of device the GPIO provider is or when it will become available. However in the case of the reset-gpio, we are already holding a reference to the device and so can reference its firmware node. Let's setup a software node that references the relevant GPIO and attach it to the auxiliary device we're creating. Reviewed-by: Philipp Zabel Acked-by: Linus Walleij Signed-off-by: Bartosz Golaszewski Acked-by: Greg Kroah-Hartman --- drivers/reset/core.c | 126 +++++++++++++++++++++++++++++------------------= ---- 1 file changed, 73 insertions(+), 53 deletions(-) diff --git a/drivers/reset/core.c b/drivers/reset/core.c index cefeff10f6c82f5aef269a6d3a58d9d204ed6b7e..8262879e3f0d9ce67683c6baa00= d9eea9e3c3ca3 100644 --- a/drivers/reset/core.c +++ b/drivers/reset/core.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -77,10 +78,12 @@ struct reset_control_array { /** * struct reset_gpio_lookup - lookup key for ad-hoc created reset-gpio dev= ices * @of_args: phandle to the reset controller with all the args like GPIO n= umber + * @swnode: Software node containing the reference to the GPIO provider * @list: list entry for the reset_gpio_lookup_list */ struct reset_gpio_lookup { struct of_phandle_args of_args; + struct fwnode_handle *swnode; struct list_head list; }; =20 @@ -822,52 +825,45 @@ static void __reset_control_put_internal(struct reset= _control *rstc) kref_put(&rstc->refcnt, __reset_control_release); } =20 -static int __reset_add_reset_gpio_lookup(struct gpio_device *gdev, int id, - struct device_node *np, - unsigned int gpio, - unsigned int of_flags) +static void reset_gpio_aux_device_release(struct device *dev) { - unsigned int lookup_flags; - const char *label_tmp; + struct auxiliary_device *adev =3D to_auxiliary_dev(dev); =20 - /* - * Later we map GPIO flags between OF and Linux, however not all - * constants from include/dt-bindings/gpio/gpio.h and - * include/linux/gpio/machine.h match each other. - */ - if (of_flags > GPIO_ACTIVE_LOW) { - pr_err("reset-gpio code does not support GPIO flags %u for GPIO %u\n", - of_flags, gpio); - return -EINVAL; + kfree(adev); +} + +static int reset_add_gpio_aux_device(struct device *parent, + struct fwnode_handle *swnode, + int id, void *pdata) +{ + struct auxiliary_device *adev; + int ret; + + adev =3D kzalloc(sizeof(*adev), GFP_KERNEL); + if (!adev) + return -ENOMEM; + + adev->id =3D id; + adev->name =3D "gpio"; + adev->dev.parent =3D parent; + adev->dev.platform_data =3D pdata; + adev->dev.release =3D reset_gpio_aux_device_release; + device_set_node(&adev->dev, swnode); + + ret =3D auxiliary_device_init(adev); + if (ret) { + kfree(adev); + return ret; } =20 - label_tmp =3D gpio_device_get_label(gdev); - if (!label_tmp) - return -EINVAL; + ret =3D __auxiliary_device_add(adev, "reset"); + if (ret) { + auxiliary_device_uninit(adev); + kfree(adev); + return ret; + } =20 - char *label __free(kfree) =3D kstrdup(label_tmp, GFP_KERNEL); - if (!label) - return -ENOMEM; - - /* Size: one lookup entry plus sentinel */ - struct gpiod_lookup_table *lookup __free(kfree) =3D kzalloc(struct_size(l= ookup, table, 2), - GFP_KERNEL); - if (!lookup) - return -ENOMEM; - - lookup->dev_id =3D kasprintf(GFP_KERNEL, "reset.gpio.%d", id); - if (!lookup->dev_id) - return -ENOMEM; - - lookup_flags =3D GPIO_PERSISTENT; - lookup_flags |=3D of_flags & GPIO_ACTIVE_LOW; - lookup->table[0] =3D GPIO_LOOKUP(no_free_ptr(label), gpio, "reset", - lookup_flags); - - /* Not freed on success, because it is persisent subsystem data. */ - gpiod_add_lookup_table(no_free_ptr(lookup)); - - return 0; + return ret; } =20 /* @@ -875,8 +871,10 @@ static int __reset_add_reset_gpio_lookup(struct gpio_d= evice *gdev, int id, */ static int __reset_add_reset_gpio_device(const struct of_phandle_args *arg= s) { + struct property_entry properties[2] =3D { }; + unsigned int offset, of_flags, lflags; struct reset_gpio_lookup *rgpio_dev; - struct auxiliary_device *adev; + struct device *parent; int id, ret; =20 /* @@ -895,6 +893,23 @@ static int __reset_add_reset_gpio_device(const struct = of_phandle_args *args) */ lockdep_assert_not_held(&reset_list_mutex); =20 + offset =3D args->args[0]; + of_flags =3D args->args[1]; + + /* + * Later we map GPIO flags between OF and Linux, however not all + * constants from include/dt-bindings/gpio/gpio.h and + * include/linux/gpio/machine.h match each other. + * + * FIXME: Find a better way of translating OF flags to GPIO lookup + * flags. + */ + if (of_flags > GPIO_ACTIVE_LOW) { + pr_err("reset-gpio code does not support GPIO flags %u for GPIO %u\n", + of_flags, offset); + return -EINVAL; + } + struct gpio_device *gdev __free(gpio_device_put) =3D gpio_device_find_by_fwnode(of_fwnode_handle(args->np)); if (!gdev) @@ -909,6 +924,10 @@ static int __reset_add_reset_gpio_device(const struct = of_phandle_args *args) } } =20 + lflags =3D GPIO_PERSISTENT | (of_flags & GPIO_ACTIVE_LOW); + parent =3D gpio_device_to_device(gdev); + properties[0] =3D PROPERTY_ENTRY_GPIO("reset-gpios", parent->fwnode, offs= et, lflags); + id =3D ida_alloc(&reset_gpio_ida, GFP_KERNEL); if (id < 0) return id; @@ -920,11 +939,6 @@ static int __reset_add_reset_gpio_device(const struct = of_phandle_args *args) goto err_ida_free; } =20 - ret =3D __reset_add_reset_gpio_lookup(gdev, id, args->np, args->args[0], - args->args[1]); - if (ret < 0) - goto err_kfree; - rgpio_dev->of_args =3D *args; /* * We keep the device_node reference, but of_args.np is put at the end @@ -932,19 +946,25 @@ static int __reset_add_reset_gpio_device(const struct= of_phandle_args *args) * Hold reference as long as rgpio_dev memory is valid. */ of_node_get(rgpio_dev->of_args.np); - adev =3D auxiliary_device_create(gpio_device_to_device(gdev), "reset", - "gpio", &rgpio_dev->of_args, id); - ret =3D PTR_ERR_OR_ZERO(adev); + + rgpio_dev->swnode =3D fwnode_create_software_node(properties, NULL); + ret =3D PTR_ERR(rgpio_dev->swnode); if (ret) - goto err_put; + goto err_put_of_node; + + ret =3D reset_add_gpio_aux_device(parent, rgpio_dev->swnode, id, + &rgpio_dev->of_args); + if (ret) + goto err_del_swnode; =20 list_add(&rgpio_dev->list, &reset_gpio_lookup_list); =20 return 0; =20 -err_put: +err_del_swnode: + fwnode_remove_software_node(rgpio_dev->swnode); +err_put_of_node: of_node_put(rgpio_dev->of_args.np); -err_kfree: kfree(rgpio_dev); err_ida_free: ida_free(&reset_gpio_ida, id); --=20 2.51.0