From nobody Wed Dec 17 21:25:31 2025 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.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 E40F52848A6 for ; Mon, 6 Oct 2025 13:00:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759755640; cv=none; b=nSsTwedAyNsamaNO50FeujADMgqNPRdK4m/WUjmDwIqW5RaDRDtM2k7Caef/WIwxwxXIzQIOAmbS8OFnthwBzdkfRVqlKL1NmPJgvnl5k/hLOo8kBnM7itlFa+8lDiPS6TcYroRoIRYtfuojwigoPzY+uW0ojoq+qILZ9WpOFGw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759755640; c=relaxed/simple; bh=fQI/x1mfXGLwGHQU2jPShdqMN7mTN0xvuZeF3kl8J+U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QFerwG1+HqvNkmSKNicqpHWDgg5gOjGd76ZGyM295uL/2vXJdRbRzb9A/eyiHQcP8UP/1HmWWeKU+afc/uoqqtNFfehuanz/bdpHwgLg57Ub1sEs6S+qCStuFhWP+dKL4W3hAoFI0DBeAwKv7y0iO64DAdRLU2uJhVRnrwxdGJA= 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=2TEjaxP0; arc=none smtp.client-ip=209.85.128.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="2TEjaxP0" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-46e491a5b96so28086475e9.2 for ; Mon, 06 Oct 2025 06:00:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1759755636; x=1760360436; 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=uWNKnqg+rjVWS75Xku977zgkREPrPcBc6PcBPNb4lsk=; b=2TEjaxP0buZCzXIOPLHjHvGj2aO/f1dR964eIX3cfAqq0y/tKpZQtprJRRRjww6opj sllyxopZwc0n020VAvZluiQtZqjBR7bp3UL2aFFIwuXgxnAVuKOlJ83V7pW0YIJEGRJi l+xiLFDBWLQ1hhg0yvNgVoJmhiFE//smj9SSEQL5qxUc7ciy7nchuy7s4dfHihYv58nC wRIxIVNP8XblRKfH/Xa05qedDCsZ2eXbI4ljk++cs7jFa/2RlWAwby/PGzPCSm8CSKk3 JwxLn+xWbGxvnVPrDSEbTfnRZN7dESuNT0Wk3y9nDwI0a4g8IGm59LKhx/RHawrC1zrG XvNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759755636; x=1760360436; 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=uWNKnqg+rjVWS75Xku977zgkREPrPcBc6PcBPNb4lsk=; b=vxLLSOEr2QNrICPEC2payCboGiCKI8uIDfbrrFFUcwjHU23bfTPdCoeQ/WHaRhnK0Z 8o9AyjShQY4OnGeRkmGrzEYABG2wqn4m41EhjCjhxEFkhIUSuvtMpaUmTh/mvMhYke4j 7h3zgIIK5BUggqa1bo1YdJFylR7Qx65bfaPkYB0c/A66tK8ek5kVhDHSLdwkV5iDBwbI klRTtb76i8YSU8k/CoTq69+5GiOFdQ/Ng8xOGMjTs/ejJ5uHamsZe94wcivSL0JkaPfd FUREDmN1brXFill+c9c0a8I5yCQ7WZ4f1flUSmUWrANEXaTAsVlaBWAusiS4fs4CEcJ8 PqWg== X-Forwarded-Encrypted: i=1; AJvYcCXOrjUt/PW8wMZBDVjA84bu7vi/mfQDr9+rPPih8SiwoaWLbfdlk0xdKmvCcZnA8CvCLlR1YNm3wSB0DUY=@vger.kernel.org X-Gm-Message-State: AOJu0YzQR/NAyA4z3QJH65+L/LuI/vCrvjf1ZtLUaH6ctwwJRvPAA0sw IsreoV6emNOUvzLepqxoIdG78Anf5HmkMT6KLYwpj2JSyE3kNLfQdnX0aiXS2utNRww= X-Gm-Gg: ASbGnctOulnmdJLWmTGlY67h3NuVszK8w7dXEeOCyV1f5IsPpXDZ2CcDlhKx6xjSyfO nMAcIVNkrEyXUm/yWRQz4PS+uHU9FIHmZyFuV+gRnoEmjRLINrw//LS+Cn2dk4D352qHRrJQKJ+ tieNzOPddnkwEga7cyRJr3cPwLkURC7vHI6W/0p41MDzGuS0dCaQOidrXf4eoZ7ecpYIMj1jA6B 3ieSdZEBBBV/Cx/u/+UFx1BXsqOlPmFR7jCxAhxWiuOz4bU0GOmyzfSoDMLvY3iPJ3k3In5RtYl QjHDZ4kQoSF8q76i1NsjxRd0Nv7BhmEo391DIztYWf/7pR9QAbAqPHdDq5hGxQVVkwQggiLUQFQ fJsJcaJLnBqIJ/qIKTaWhMge3XeSw0YAFc1IdjF4Uhw== X-Google-Smtp-Source: AGHT+IF8QYCtllO4mHewnOdNKwyg7VM7sonfF/iAif7DtVHOdnSxT2xKV7IG3D+F62nGaaXjHu14Rg== X-Received: by 2002:a05:600c:4447:b0:46e:3dad:31ea with SMTP id 5b1f17b1804b1-46e7113ceddmr102522015e9.17.1759755636178; Mon, 06 Oct 2025 06:00:36 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:ed2b:276f:1a72:aac0]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e619b86e1sm249725965e9.5.2025.10.06.06.00.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Oct 2025 06:00:35 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 06 Oct 2025 15:00:16 +0200 Subject: [PATCH 1/9] 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: <20251006-reset-gpios-swnodes-v1-1-6d3325b9af42@linaro.org> References: <20251006-reset-gpios-swnodes-v1-0-6d3325b9af42@linaro.org> In-Reply-To: <20251006-reset-gpios-swnodes-v1-0-6d3325b9af42@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=1002; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=O2Bm8zK8myf8pkCc6yVByD6bQNfFHPINhpPFtP7hF18=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBo471v6m7oxteEZyESdFKLOSTziNaLss3w9jkI7 CFUp3WLu7WJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaOO9bwAKCRARpy6gFHHX cuYDD/9ytGdRu/CtE4of0wQOC+lY5AA6NHbxW4y00dovav8+EestNKOrbwTfXvNs8TakPPw9pf8 UmOs/1CbTbVGY3EcLdC6OgoI1JALLGd24bWbjibom89VSr//6m02QQrAp5Z+LfaHvLmPvpizNbn 4UMWZRgqiy/U+lZZQVigCatheQ7JxfW1BlVOergWWZByTEnzxrHzqAF9XkPbfUE7/Yx7z8+TGib GLs3y9t1tSz3EO12/yaJePTuFR9zXWXbcMcItgTTWZbqh2fOc0BEaoG1DPhFIyplT4prWrkuBax S3SBO4mh9TX0JymOXKxHkeyS0VCjdGs+S44B18z4EEfp/tiDBFoIGEBzJcQFeq8ctogQBCvBmgC Nb9aHZxZM/iQ0WacOk5hgeR+F7lN22T6EVBURTr+MSvLAchm62IIn5We/8SDFbE0yTqrGGQZ/LE wTqa8TH0aThr4XrmY0KYYwd2H7V+t82uP+S6ecYqn7Qq6qRSDzPobbx8T9W870xD3H0qKD/uYd/ RYzbLfUF8DEkf7WkFhtCI68FrALzdeVKFloqtCOhXNmDF1IkWvMMxOSeuT0usFrJq/75lSSST4c uBOORRAIPyRoWVFh1wSgYAg2alqD4cULdktEOQLEHWF2as8qgqm4vaFCyH7hTB9eXOVoSTxsuAd IvNrQtd63c1UVag== 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. Signed-off-by: Bartosz Golaszewski --- drivers/base/swnode.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/base/swnode.c b/drivers/base/swnode.c index be1e9e61a7bf4d1301a3e109628517cfd9214704..cc48cff54d9c3d4d257095b6cb4= a7869bf657373 100644 --- a/drivers/base/swnode.c +++ b/drivers/base/swnode.c @@ -540,9 +540,8 @@ 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_array(refnode, nargs_prop, + &nargs_prop_val, 1); if (error) return error; =20 --=20 2.48.1 From nobody Wed Dec 17 21:25:31 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 7E5FD285045 for ; Mon, 6 Oct 2025 13:00:39 +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=1759755641; cv=none; b=ghbZJ/KguRM+3LCL9JfHHvcx0QYvLSL3usk0CCjo4ayNuGCQqD5Qp6Plf7VtP8EuprBlJCa3Jn7/2Ft26QxLVFktkO9niQ7MIqedEB7JDW4srOejs96Yn1UZ6RDvNtEhBR3Mo9GdU7U+yJG20pXp24anAKL1QL8eLUrYv2wwW9o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759755641; c=relaxed/simple; bh=7Jqk+0Rw48ZsZIR+qXKKV2mT1aS0h7swJqBj47Ge5oA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gUseDtkEmhjCk2EobCwtsRLPeVCepNwu/BfkZGcamiGsb9hV50jTBnOAlR5dchdx01onLnIlYo4LdxKayu4XecMQ635zWORbTXwKfPjb9gntwji/NGH284+OdPfIw3bfQ7x9pYF3fenahTxgvw/Fef1MgNA4VoRi3e42l2u2EBU= 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=27ZSLKjA; 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="27ZSLKjA" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-46e52279279so32114515e9.3 for ; Mon, 06 Oct 2025 06:00:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1759755638; x=1760360438; 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=Ra6UJLsRCiTY4w5Dlw98xmE+EwKNUja03T9QbZDu+Z0=; b=27ZSLKjABouIedOlIgPvxXPFf5g331lFoew8SRjeOhfFkbZ8fDVAgXBzUPYsnEqlkJ BBwaCSbNHctnsZ6DdCV2D/Xn+lVPSaSH6tFh5VAGwXWq0XR2yJK8g/KuF8Uay10OXT8u kBgP8j6h0+V69DFQZ/ost69Ie3O+p33cLItKVCpAM/Q7wYMC4EhWODvvCGhcNLG7hlej 8wY66uy/btdIjW9X7jrEeNscL2jJM4rtLEVcwHp1r/jlhV1+xfgXfoyoAwgyf+mlwt17 ioap7uwb6hXTem7Hrn199FeGzf9e8X8NPfsf/+ePFzZboxwdgg/CehEPa01CNXIwxzcC Bt4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759755638; x=1760360438; 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=Ra6UJLsRCiTY4w5Dlw98xmE+EwKNUja03T9QbZDu+Z0=; b=qdEQnCelKDT7Sprxwpuxs507BNGFd3kWIKWGeC/5AGmFND/phqaY97GAElcXb6I+5w 0TqwVA12foUINgFcFo6J/bjMyQaVh+Kitk4e0Cb7ByNJIWSnOKEKB7E60OhB0NAuzIeX QktlD+sRjhGImL/LtSfUZJyd9Xze/sW8kD1/B4j4Lue1SYJWZnwWZyE39c3J/QO93JmE gw5Fq0OuhU3l0LeBpRPt7I8tl7NfuMdcbdnUpFbRNSWAo9uc8uCD2r/2beCH2XoRtWgC 49HZb+c3soeIzxL0SfiU6/qDWSdLwfzDx7NDvsIEsPdr3Rq/5xzrOYVnNLxab58+TM63 yLyw== X-Forwarded-Encrypted: i=1; AJvYcCUzY857LyFyOrwmeSK3A1AL5tGo3HTIisFf8jjLJEvfZMePYX7ZdjDPNWzY9yLHPkkmr+qxezuDumMTDbk=@vger.kernel.org X-Gm-Message-State: AOJu0YwX3hU5w3zQpRodpAQop3rVsXnPgMtQ24WPBz5sbeuTAnUJLOhT SKrKsKKyjNdolnazDTBPBXXLgOMtJ+Vl/m4FkWPgkpvVjAC8MF5VBgbyzC+FljaptyA= X-Gm-Gg: ASbGncvKUhivMyDd78qZDuLAu2GAJleOTnD4kqw9GvTE15NyIpWgwZjjF9kiCnY4NxL 71WIuHmBz/RM6jJaFy95+5D02c0A7Bp60lpUwo+3LxX8sk3YwmEPn8SaMDCKogPcP6pmZjaU0VS VpVXUKU2i+rR2RuZlJCWYjdJjVDK5Ezu3LNiSmTp2dpZluJEIZVMB0BF35JGV8MZAroZim7spAp 2kidW2VUb9o0VGdQ1CX2dCA02D1hQXk9DCec+0BfXSzqkGtzLNzEpoJLzLNJIQ/TJNHlqgwcaCK tPYULf96dll5/6TBjOaWFbishfwFA0lytoDCoqjck0MT0OOmMpJTzbHZc8GkqShsMPFn5xP7vFh cvPmitw5wA5pyUcDXwGyPzlMNXG2/6aMAVYLrulq4ig== X-Google-Smtp-Source: AGHT+IFgLzIgY3pkjgFzcgT7VNRTa7prqsen/gecYHE31rP7DqfrVJpmATXrYOO7DsFU0yHLX2VQ4A== X-Received: by 2002:a05:600c:628b:b0:46e:4883:27d with SMTP id 5b1f17b1804b1-46e71147470mr88630675e9.30.1759755637657; Mon, 06 Oct 2025 06:00:37 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:ed2b:276f:1a72:aac0]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e619b86e1sm249725965e9.5.2025.10.06.06.00.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Oct 2025 06:00:36 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 06 Oct 2025 15:00:17 +0200 Subject: [PATCH 2/9] 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: <20251006-reset-gpios-swnodes-v1-2-6d3325b9af42@linaro.org> References: <20251006-reset-gpios-swnodes-v1-0-6d3325b9af42@linaro.org> In-Reply-To: <20251006-reset-gpios-swnodes-v1-0-6d3325b9af42@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=853; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=sIF2HhSB+nj6SiXIxMNel4X3wr1KbNilnoWbpiOKTXI=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBo471vLK1Kim9deZ74HcxK7aZgD3whmeIXPRFm3 KMWG/Qweg6JAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaOO9bwAKCRARpy6gFHHX crY8D/4xCm2koNyAO0n6ZToGqSga0HZbAspeEHKSlOdzR+hLK7wgy3tiCpeIkn1vsGNDzZvfjG/ Iu/rHEbo4OFbPnDz9bPMBqP+xe6s+9GR9NZiP03Z7e/PMub6BMnZraYcjpy4QN6KvjcSncdVulD a/tMUeKQ3gRwJEZV18YR/+o5zeZijpDqTJioG8hLg0Mp01pWBgogC/dz0AtWMFmjNjCdXX0IzXG nku+rFzKnJryquTRkJyTNL4c2hT8wZvR0D4uuuarJfsZMkNIyGMSRmeOrQwycBpujl71Xto8rP/ YY6CojcJQ5/cZaU1SiU2j4OweLodeL5+WHPJXkLBMgvU4+n+CuTLhfw0kfFFWNst319LloP0iV8 2NOAKcrmZ6A0ThSN6OfaP2gmSAMuU9ujuKazl0ppnYckr9F5ZA+IpYHpdbz9DB8Inic+U5BZigY aoG3FPKSxEE1AXEHdZzLeVLiBv1/7TkR+2U/8QqxaSFdX+bZzIAl4J1Hj5hwsgykZ64ojbwnV4C gJaslMY+7nrGc9VZTBj6Z0JPR7VVb4652BBj3ykkDjFKkpJiDb/+cLtOe2K7A0IexmhJxy5lADQ GuPu4B4vaA+LXGKEw74D+/yYgfPc+VVFApB1Xl7dPlsUJCLoUbjkfDx0copwxMQC7hgqU0mM7tc Gmrzs0jEt7n8Kdg== 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. Signed-off-by: Bartosz Golaszewski --- 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 cc48cff54d9c3d4d257095b6cb4a7869bf657373..a60ba4327db8b967034b296b73c= 948aa5746a094 100644 --- a/drivers/base/swnode.c +++ b/drivers/base/swnode.c @@ -554,7 +554,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.48.1 From nobody Wed Dec 17 21:25:31 2025 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 26AC82857EF for ; Mon, 6 Oct 2025 13:00:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759755643; cv=none; b=oqIQhVID0ezgNrL1r7Ovd/Fi7Rza1JFkRQk0aY5l3Nkq9X9eOp47L51ZdOKD4eEqcYuLOcCjzdC93ArNWVLn4MVVMUb+tjRWgijEiBVNfWv48//TUXOy/+HykrLFw80HsGJRRY5bqR3KRW0LMwLR6/vHa6+vcjtWG+ytX8zItEc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759755643; c=relaxed/simple; bh=AvhkONgnV/f/76mBmtjAh8xDscHo0o2v476DsPf7hi0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ueo/kPKVrMq4yPMC4b2+v0M7YkzSgeJT2Ny6mBoPS+l09Rl//4hConZo4Eq/kpkzYR4ua7EsLPp9qdcCpuZFYtOm0A8H6WOoFXE02Y+B2eHyyRuTkpAxkBytYlhwLheKLvigQxu3AR+EtZ+GV5hD9Nu1FrMWRhY1fpvI5wdRdWo= 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=gAh7h24W; arc=none smtp.client-ip=209.85.128.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="gAh7h24W" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-46e29d65728so28392625e9.3 for ; Mon, 06 Oct 2025 06:00:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1759755639; x=1760360439; 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=pnG+vzoldItCA0lZEefd0SGWib4/b//mffQktXnGmVc=; b=gAh7h24Wda+4iatJHpPsBJDExrritNuNFuVadKU3vdxszQ6PUdqz7ZOa3qvlaUhzEl 5DvUEmRpIbrhUgDGQrVE4weISJu7UjPpfDz4m3HGmxsVt7iOQI+smwCsEwRrN1VSPipQ kTadpuwE8G8M7KVVi0vyh3gpfROAbdNVnHMhqCPGkX511QGkdgXv8QflIeMjEpLDkLEd bJJcsyMBu0lr2mX8XX51+6RUui03uKkfsEd2o1vw1ynauYU4ATli99/AoT4rRx09Fp7j tqm2iJYVoW4DxwF4qoi7T/PFpaqvOsSF71eJ9lqX+M/ils5rIz7Iph1HBYL/UzWAWbh0 7ODQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759755639; x=1760360439; 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=pnG+vzoldItCA0lZEefd0SGWib4/b//mffQktXnGmVc=; b=lwjUXm5pPquA1HeoUIhKl+2kz/RpkdDoT21nsLntthqOR+O5reYATHLUfA1xrImeqh n0CM48/+4H1CSPKPUWZpwjFPdqBNDoY1M3qJMHaXijh2PoLu3bBOmeOBKMp3OhyhrgZ4 Bay5AyNDRgWJ0OWEKtoWeru7xVOffHrKwt3STJk0pLfPGbn0QgZdQ89Lt3BO/fRjgptU 0f7/jihWQHTtEzn6QBREWcWkIswlWChSC96qFTQqujZr+t1fVLwiNLc4aOSi2js6xLbv mP0PFXybKCJ6mduk7MeS1S9SP1hMk4ovhV40Rxas24H5Tb4yTikFA6OUEf0ZYdWHkYxT nhxg== X-Forwarded-Encrypted: i=1; AJvYcCV5K4+WI1UD+bHuGxFdZ6ZutUVlzILrauxMGHkShM77VUT+66BkUMY4EjRhWBizJGt4W341sh4IkaLu3nE=@vger.kernel.org X-Gm-Message-State: AOJu0YzNqD4eQBFrxvp+jkxVGYQV9bSl3lkzaqEfKAcsq34YQA/0T9Wk Bn8c2m6bCn15Ql61fAe148rxI5MGFQ3byPmttjptt3F+3aU3U/dGFIOUUZa/ehsFqBI= X-Gm-Gg: ASbGncuLcvTfzkCyKuhd5GIDZnVhIE8aI2KEJfk3rt4Xq3N6bG+pGsLRZzrIZ5OFQQw cNgJnpmhNhEOx42gn5avNQNVDOvA/0Egach1kIkwJ7niw3f60kMVBWo/tUA0xoFFoc28ltXs70W eC+/AnCIxtKUDclKyGmsmoZ/+CbYxw3oZMmslaKAy+n6oRdnC0ju3qgcLHek8hhKAZNz/SY72h5 XhSkhQ7H4lIp70MragwrBXZ0A0hJcjf9OIxSHQ7gDV80thtMsyKKiDGej+De9RQLbGh2YYGUeSA eKPbFEhB4DpiAxKatCC0NUI0y1RnMQLivStFQftZNomjj3/djZBAyUwRu2u1Zr/5gRQC2WLB2WM yVblKDCYM0JPm6kFlcZ/wYLbzDaPntAu76ztl8lcdVw== X-Google-Smtp-Source: AGHT+IHtbeYY26Aypf28VgCSf3z+x7Hjb1RGm5XsiB/bpY4Z1Yu9YNHJN1j1b7isg7ZJPQAbsKQoYg== X-Received: by 2002:a05:600c:a31c:b0:46d:996b:826f with SMTP id 5b1f17b1804b1-46e720c2cbbmr59775545e9.25.1759755639349; Mon, 06 Oct 2025 06:00:39 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:ed2b:276f:1a72:aac0]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e619b86e1sm249725965e9.5.2025.10.06.06.00.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Oct 2025 06:00:38 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 06 Oct 2025 15:00:18 +0200 Subject: [PATCH 3/9] 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: <20251006-reset-gpios-swnodes-v1-3-6d3325b9af42@linaro.org> References: <20251006-reset-gpios-swnodes-v1-0-6d3325b9af42@linaro.org> In-Reply-To: <20251006-reset-gpios-swnodes-v1-0-6d3325b9af42@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=5346; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=WSFYyWyrCPT2bWeYqzfvmUvOWn0rYkTPMrQkBOPvC6I=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBo471vKgVRBHpERVfLsLbgWt/+rXyWS6AU64Kv+ 1hJSkKBMbOJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaOO9bwAKCRARpy6gFHHX cnghD/wKQr5daJtf++yPSFf9su52sfGvfzMLCm1h1An8vgqVJgkFvg5v2qEajVO/0lzeGxzN3sa c1f7E/Ijl+gH1rPijvku9ln9ylGq/RgdlGhklZzmq0jWutqmRqeXDkoAX0csJLBMA9lK44igQAm hpIdprn47fQEpNKoBR5wafciAarAOMVSj2kMmRDEzkBHXiARyUV6I+/yD5xKgO1Dmn7hadmSd48 XbhvxdMnCqAnMJ/8D7ZKPhR50iHY+uuCkPYwKACB/vhmDGdp6rIjZE9j1QliL+L/3Rqdz1DvMsX hEFi0GeD2sbT1hEkJ5RkJvpgFRbHCKitjclJCiao3AQTTBVyKp81twYVz2/fLeidOurRdkR2Hlq CQ9LqexuK+cE+Rsq+zxMX6S9H+mMG0Kcc3ON8QNA2OpLru4MSN0LH2rg7vFhAvpCTI0fo+r9Qtz TSGnFpPBkqe3S0zB9v3g77SS5t3FmXpH3572t99SpnO8Z99WnJVau8fhQfZI7dajs3hPP9vhSPF j9MIHtic86hHclpTPfViCa/IQ5iKW23KtV8tF36ec+mn4xX4ncubvXZKvMkVJsAtXGuA/6y5RB/ tp5JOhE2xXI9zSwUiPu2OJ8qKJKXSsrxN3S2NLSjFam7K0wmsNyBAXKy6y8UlpQL4lLuj3ZCUCB 82cvqlUL5kX7ymQ== 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: use a union of different pointers in struct software_node_ref_args and add an enum indicating what kind of reference given instance of it is. Rework the helper macros and deprecate the existing ones whose names don't indicate the reference type. Software node graphs remain the same, as in: the remote endpoints still have to be software nodes. Signed-off-by: Bartosz Golaszewski --- drivers/base/swnode.c | 21 ++++++++++++++++---- include/linux/property.h | 51 +++++++++++++++++++++++++++++++++++++++++---= ---- 2 files changed, 61 insertions(+), 11 deletions(-) diff --git a/drivers/base/swnode.c b/drivers/base/swnode.c index a60ba4327db8b967034b296b73c948aa5746a094..b7e91c60c1d51b167adc88afb0f= 06feeeccf900c 100644 --- a/drivers/base/swnode.c +++ b/drivers/base/swnode.c @@ -535,9 +535,19 @@ 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); - if (!refnode) - return -ENOENT; + switch (ref->type) { + case SOFTWARE_NODE_REF_SWNODE: + refnode =3D software_node_fwnode(ref->swnode); + if (!refnode) + return -ENOENT; + break; + case SOFTWARE_NODE_REF_FWNODE: + refnode =3D ref->fwnode; + break; + default: + WARN_ON(1); + return -EINVAL; + } =20 if (nargs_prop) { error =3D fwnode_property_read_u32_array(refnode, nargs_prop, @@ -634,7 +644,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->type !=3D SOFTWARE_NODE_REF_SWNODE) + return NULL; + + return software_node_get(software_node_fwnode(ref[0].swnode)); } =20 static struct fwnode_handle * diff --git a/include/linux/property.h b/include/linux/property.h index 50b26589dd70d1756f3b8644255c24a011e2617c..af72f579e8026cee2456b098381= 9e7a4bf0c6805 100644 --- a/include/linux/property.h +++ b/include/linux/property.h @@ -353,25 +353,50 @@ fwnode_property_string_array_count(const struct fwnod= e_handle *fwnode, =20 struct software_node; =20 +enum software_node_ref_type { + /* References a software node. */ + SOFTWARE_NODE_REF_SWNODE =3D 0, + /* References a firmware node. */ + SOFTWARE_NODE_REF_FWNODE, +}; + /** * 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; + enum software_node_ref_type type; + union { + const struct software_node *swnode; + struct fwnode_handle *fwnode; + }; unsigned int nargs; u64 args[NR_FWNODE_REFERENCE_ARGS]; }; =20 -#define SOFTWARE_NODE_REFERENCE(_ref_, ...) \ +#define __SOFTWARE_NODE_REF(_ref, _type, _node, ...) \ (const struct software_node_ref_args) { \ - .node =3D _ref_, \ + .type =3D _type, \ + ._node =3D _ref, \ .nargs =3D COUNT_ARGS(__VA_ARGS__), \ .args =3D { __VA_ARGS__ }, \ } =20 +#define SOFTWARE_NODE_REF_SWNODE(_ref, ...) \ + __SOFTWARE_NODE_REF(_ref, SOFTWARE_NODE_REF_SWNODE, \ + swnode, __VA_ARGS__) + +#define SOFTWARE_NODE_REF_FWNODE(_ref, ...) \ + __SOFTWARE_NODE_REF(_ref, SOFTWARE_NODE_REF_FWNODE, \ + fwnode, __VA_ARGS__) + +/* DEPRECATED, use SOFTWARE_NODE_REF_SWNODE() instead. */ +#define SOFTWARE_NODE_REFERENCE(_ref, ...) \ + SOFTWARE_NODE_REF_SWNODE(_ref, __VA_ARGS__) + /** * struct property_entry - "Built-in" device property representation. * @name: Name of the property. @@ -463,14 +488,26 @@ struct property_entry { #define PROPERTY_ENTRY_STRING(_name_, _val_) \ __PROPERTY_ENTRY_ELEMENT(_name_, str, STRING, _val_) =20 -#define PROPERTY_ENTRY_REF(_name_, _ref_, ...) \ +#define __PROPERTY_ENTRY_REF(_type, _name, _ref, ...) \ (struct property_entry) { \ - .name =3D _name_, \ + .name =3D _name, \ .length =3D sizeof(struct software_node_ref_args), \ .type =3D DEV_PROP_REF, \ - { .pointer =3D &SOFTWARE_NODE_REFERENCE(_ref_, ##__VA_ARGS__), }, \ + { .pointer =3D &_type(_ref, ##__VA_ARGS__), }, \ } =20 +#define PROPERTY_ENTRY_REF_SWNODE(_name, _ref, ...) \ + __PROPERTY_ENTRY_REF(SOFTWARE_NODE_REF_SWNODE, \ + _name, _ref, __VA_ARGS__) + +#define PROPERTY_ENTRY_REF_FWNODE(_name, _ref, ...) \ + __PROPERTY_ENTRY_REF(SOFTWARE_NODE_REF_FWNODE, \ + _name, _ref, __VA_ARGS__) + +/* DEPRECATED, use PROPERTY_ENTRY_REF_SWNODE() instead. */ +#define PROPERTY_ENTRY_REF(_name, _ref, ...) \ + PROPERTY_ENTRY_REF_SWNODE(_name, _ref, __VA_ARGS__) + #define PROPERTY_ENTRY_BOOL(_name_) \ (struct property_entry) { \ .name =3D _name_, \ --=20 2.48.1 From nobody Wed Dec 17 21:25:31 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 D797D284890 for ; Mon, 6 Oct 2025 13:00:42 +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=1759755644; cv=none; b=qIHjCfRMVvVvo8CnnvcmzaVcRa4uQ58U2KmjEozslhz2Dx2ywn+x2crQXD8fNSxZJsaT8Im6gpRR1sTKEtLAQDoBwXMv96+Vv4685ff3hgApgPQrQkQruhu25NJO6Ngu5CvNtO12AqmnK5ZXP2MLpFoP6gn9a80RKyZ2iYVFYdk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759755644; c=relaxed/simple; bh=5pnEeKqHYnawOAlljhNqLC8nrX9toglKozfFs0IQDGM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mDq0i0wvq6ZnYP8qOYAJZioNaD2Cp9rCENdtTFOdmXuXOa7kdfP6OxS1zJhaY6IsiE1Kho5wlT/T3dmlStmLFvVdyS9o60I2KigCa9W7T4E2/JpqfO90XdmTbdZ12PqM/wcghCkIp9pa6PoKASTaoixKcCsZ6z01a+TaMRUayn0= 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=RJyNXgpk; 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="RJyNXgpk" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-46e3a50bc0fso40468615e9.3 for ; Mon, 06 Oct 2025 06:00:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1759755641; x=1760360441; 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=IB9li0p0kE9jGTTsXmkO4xLyhxPXUk87ZAQLNug4IQk=; b=RJyNXgpk89bTAvE79qK4tgAWBWIHCubMUeY9cjjFZ8Btb7Zhab4StlGZBbEcrwEKsB oZ+EWh6xvVmhnfxfYN/12d6PBh3P00UF/5rBOR7aljE76bLGAcPSBU8HFdtrigj6zIpM Uf6I72unEyTPuD5wqTpVEkGh/bX6K4r6uGWUrB6LW6q7DEU8qN+kl7VC8Eg1e5orDzX4 RUul+l0w5tPB/sqRKWRW2pPKSOOSV1J19YVbpHLOLDbX79b/Iw9GeVSV4Xr8jWwAfjt9 QEKca0m4llXzytWneQRNhfCbJ20ULA6MDxEWWU2YkeSxRu2+zc/wrplnkCH8RVeea5lm AQ8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759755641; x=1760360441; 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=IB9li0p0kE9jGTTsXmkO4xLyhxPXUk87ZAQLNug4IQk=; b=Rc5VJxAxHbn0yFLeZvpswKF40Mky41U7dRy4mTugxXc0w0moVTocsP/CJwRaSTFKJn KzLkmErGotlvzV49S0IUduqBRV2YwhDEbcwXKqyFSzswfnd4GUwfyjqXqeGoC8PZDG2E 2cNCHUa+YF6fUJuk47cAUgU67pBIzgvBRWb3f+p4/AV93ktXiXtPNhGENkeeHy4wV/Vd SI0Q6RrZjK2UllDtkjvdT3impeTvSABU0HlM3UElS1ykxpn44qwAgZpGPvkHW+/BYTGl PNyYSN2KixFfkOWr0RM6bt/LMjnahU3iQqO7GmyhqnY8bJddMhESq8PNpcEySn4PNpcW hLRA== X-Forwarded-Encrypted: i=1; AJvYcCWiUeCI9AxnYJGX4ltvUqJqhQp8ApI6UyoibyV8HaznfIq7Ne3TCJvLBdh7JuWGyiYCFBk1Ikr1a/ZFxjs=@vger.kernel.org X-Gm-Message-State: AOJu0YygP82/Z5P+uCbL2mVAHjL8AyNqEkz4iy3fneu7CsdvJzDvFaQ4 AM/Q91kWU+Vko+LJnyQNW/p3Bg+rLHjWWhrEMQ1y6THf/fEcv+GSNFiB6DcUOZU7hcE= X-Gm-Gg: ASbGncskPc3s4V0ipyaEoNtGyWPXPxLFFp1SfycbtORUJeq0phJl74NHTcvLyrUqoA2 5EuqbkKydaF5rkNrRJfgJ4arsz+KRExbUOGWT5GruWT07fchHaHv5X4x2uy/cf/UNkU8KVuGgux kBcUtZLrKSPJMaUosjeM6vZyRMYqUZFhROKHeVQO/ePy+Tlrb66wxImOq3dyA7ihNBlYR8wWtN1 01srmJ9/0crePmQlSRJUjHK4RMHVkudjtSCLccR20kd223aIxgnS5Y5T05tSncmbrQGmi0McYmT nJ9Rv1rHqOU1EfWeEPHDimJyj0d+hLJ8GaVWHq83nllrUxSZWh//kift8FMFbUr4DeH7rFBrVf4 x/sCtTWW5m/bgUZAVLlSzUq81IlQUt0swn8ETht+eZByBSMRv6ISF X-Google-Smtp-Source: AGHT+IHebbAPMR7oXC5VLW2/w5/FrK+xciuNp+N6rz1Yq+ku7VJkWBjybJF2PazE1vgpg855HYVNnw== X-Received: by 2002:a05:600d:41cd:b0:46e:1d8d:cfa2 with SMTP id 5b1f17b1804b1-46e7113dc01mr82047925e9.20.1759755641145; Mon, 06 Oct 2025 06:00:41 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:ed2b:276f:1a72:aac0]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e619b86e1sm249725965e9.5.2025.10.06.06.00.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Oct 2025 06:00:39 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 06 Oct 2025 15:00:19 +0200 Subject: [PATCH 4/9] gpio: swnode: don't use the swnode's name as the key for 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: <20251006-reset-gpios-swnodes-v1-4-6d3325b9af42@linaro.org> References: <20251006-reset-gpios-swnodes-v1-0-6d3325b9af42@linaro.org> In-Reply-To: <20251006-reset-gpios-swnodes-v1-0-6d3325b9af42@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=1995; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=j0RRfSQSsKVGeiwXPp8qsWRU8zLDV2TSTGFBIXN+YdY=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBo471wtB/HnaJ+O09mQ+9lgzCae0qQw32NwTefs jSgoICyADGJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaOO9cAAKCRARpy6gFHHX ctnHD/4+TTw++elPkjzjI+nwSVBBsHusvZ7gjWSbofVCsBjApKaJ9Jkxm8Nlj/uyMBJ4WBQwwNo hpq036tS1eW5uIhf3nUOQ1tTJ9a0Z0LBUE7Vp7/Xsul0r6BB1JGZuW6MKXsSi160DQn/i0NK4RZ PvMLswbpfF/6d1JlYrD2l7+aBNwx6qG4sDt7HAdVoA4opQqYU1GE2zbOLFylFdVcPTKoypmVM5R YtUytXE52w8c00pwe8sZKJs8RHpz/6m8Rxe1YyH9Bt4X7BrAxxqJbaPNDXyrdew34ShdrpxnHrC ePzLlLx9GPkLxLG+GB8JjySOlClZyiqDzWH7F6XxWLjXm+mVS7X4AwvoN9JAZyRdZPDE6K5Acyv 36sD88S8vx1ACVfqhh5OosZZJdyT2cdp+3+jlhQpGh74rLJomPs/67Xw8lagwFNwwnMF7H4VCXg m0qRihA289PN8TWMEF2feUNL5em0YXu3yRgf4OA1h90O2oxbJt/jVl3DH0CJb7hnXzbHfkhsaXE gVpBsfy6W+IOhPurkNZmV14obSmYS9RE9FA+tDi84Hi5VKn77gK3hZryWIJWEs+97srDMd17fan dyHc7gZalByu7pstT5/2NsYlFvSM+O+G7/QHZuUTuLLGzB6UXoI/FLDPiJXZLo0cNMBb0oG37rb Bj5vwuIyKtX6u+A== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Looking up a GPIO controller by label that is the name of the software node is wonky at best - the GPIO controller driver is free to set a different label than the name of its firmware node. We're already being passed a firmware node handle attached to the GPIO device to swnode_get_gpio_device() so use it instead for a more precise lookup. Signed-off-by: Bartosz Golaszewski --- drivers/gpio/gpiolib-swnode.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/drivers/gpio/gpiolib-swnode.c b/drivers/gpio/gpiolib-swnode.c index f21dbc28cf2c8c2d06d034b7c89d302cc52bb9b5..573b5216cfda105bafa58e04fc5= ad3a38d283698 100644 --- a/drivers/gpio/gpiolib-swnode.c +++ b/drivers/gpio/gpiolib-swnode.c @@ -7,6 +7,7 @@ =20 #define pr_fmt(fmt) "gpiolib: swnode: " fmt =20 +#include #include #include #include @@ -26,23 +27,20 @@ =20 static struct gpio_device *swnode_get_gpio_device(struct fwnode_handle *fw= node) { - const struct software_node *gdev_node; - struct gpio_device *gdev; - - gdev_node =3D to_software_node(fwnode); - if (!gdev_node || !gdev_node->name) - return ERR_PTR(-EINVAL); + struct gpio_device *gdev __free(gpio_device_put) =3D + gpio_device_find_by_fwnode(fwnode); + if (!gdev) + return ERR_PTR(-EPROBE_DEFER); =20 /* * Check for a special node that identifies undefined GPIOs, this is * primarily used as a key for internal chip selects in SPI bindings. */ if (IS_ENABLED(CONFIG_GPIO_SWNODE_UNDEFINED) && - !strcmp(gdev_node->name, GPIOLIB_SWNODE_UNDEFINED_NAME)) + !strcmp(fwnode_get_name(fwnode), GPIOLIB_SWNODE_UNDEFINED_NAME)) return ERR_PTR(-ENOENT); =20 - gdev =3D gpio_device_find_by_label(gdev_node->name); - return gdev ?: ERR_PTR(-EPROBE_DEFER); + return no_free_ptr(gdev); } =20 static int swnode_gpio_get_reference(const struct fwnode_handle *fwnode, --=20 2.48.1 From nobody Wed Dec 17 21:25:31 2025 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9DE8B2848A6 for ; Mon, 6 Oct 2025 13:00:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759755646; cv=none; b=Ph71t8KBYvskUIVCKMrQ8CY6UDu1JdQ4rQFasgmQ4ness0npoRcBYAekegSOiycNQgbX6/YFl95ZGXXyANq1PnFY272wGWnpjFyHzQhea6H5bZ3gOHbzDxQ7kvaxOdpgm388Md8+6H4NycazuActhsUu+RdHZgMj/AJUmvNPdZU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759755646; c=relaxed/simple; bh=LiKNRN4b6Rog3bOF2ZYrAAug90U1uNL0NBVGRtkRLdU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fc9BYTVwxnkxisdFjd84Yq9Ig65l9YDNbedrQaO/SWKS/Kstgf7V6YObhAyV6MtHrpU+z8bDjI/cBJ4a0lXfemSvajw4EuM+wdUkZeYzjBkOCbDH2oQCIHdPbP4hx8g1dym3waqWBwOQ4u67X3+reVqsGAqzFF6b3bE/rCdhsbA= 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=2csNWe1R; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="2csNWe1R" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-46e6674caa5so25510915e9.0 for ; Mon, 06 Oct 2025 06:00:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1759755643; x=1760360443; 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=2UJiGuxpdr2uQskb5nJaM3QuQzryJ9Mudo5s0IYG1NI=; b=2csNWe1Rnifm/BdzFd/ythjoyDcwZct58eGHKoWAKdFkR8MGHyjUqwgFO2GDMZt5p/ 0Y3MUFVMMc1lNLB37Z0oPpeAc3fLSmGf0WRYoajW25OJk4+xIOTwbVN9MLzWzIvHta7y qa2S+Sftjnmu7T4jx4ndvH5mnXwNo//aCDxx4RZIh76hyv8b/plU8o7wl+rCQd4mj+kH 6npu2tK5FxhUA7re605Zdsl5VMsku3UHlgsiNm++NdJyVpqQ6U4aNPrijmmXd14ZNy+w q3ICcpgbKN7NEByv7207fDURanBZSxjnm2M3eCbf5XE/BcEWLzFJimL7CvRI/VzC44Gl ddiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759755643; x=1760360443; 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=2UJiGuxpdr2uQskb5nJaM3QuQzryJ9Mudo5s0IYG1NI=; b=T9PirV+5SRAiP6p136+H82l/N0HazfLqtsRb21lQhjbXYjTHQFA3aLNuX9wxDKY4yn zN0oZKRbY9Jha1fkBWEqzTtpksLscW/8jUN5yI/ZuoAn9xjh7GQyRmpLfVV+eNLfgaJB bTqiv4q3W6IzsXBjS7bnmpZ2tnQGr5PQwSGl5m61iGONdTmYVNBGVquPbRERdjOp0jfT KuCm9CnO4Hs5LkjPz8Odyq3YCrA3iMNulSrCZ/1esMaTu/GDkLIWdqKjKJApqh/SsW3T wSmNSIJzALQWwCLM1feQEKmk+YtV0ZKL7KkGFpI1UaUXi/XFAQkNU84hpgAabiBSDiok Qtcw== X-Forwarded-Encrypted: i=1; AJvYcCVpLkWYmkdUtbiq04yx8ZpGQCf60N7dL2OQzGRhG4YEZLZm7PU9XfLEUk5AefijMnrb9YEJKQeoMjOrT6o=@vger.kernel.org X-Gm-Message-State: AOJu0Ywhe14vFVdZ3Inb2QIFMjleLjyVeqkEskIjf6EN6286nGEreASt qMqrZwZG+l4WrTlz8jLM0ohLXuJLGTtFzKoyg8FFfnIfpz+zBS5gRQRNWSwinywQSjtMPZw9X56 YQQteTks= X-Gm-Gg: ASbGncu28Kdj8zaF1ITaJ8v6m7PnSdAQS7x5r5mjxfOHI92Ig55+aaYt8D1ixDNYSG6 iEfPrhHbhJ+OIxi9taIuvTVm9Of2YQoCDFjkZbioKofCda/PY6qp8R4p/QsYBwUCWA6M4RybdoK OyGG5GxehvIhcPxvTQLJAdVwdBq2BiH5mnCI/TtAs4Dlmej+D1OYsE7p03zi9HXIrjiEXtRbSHF OKOQ4vl/EB83XmrvNSYRF4txhzYb3El0gYLzJFQm8YBQIitZm8tTuXa6M72/0l0t4Ye5wRCOL7r MrTJx3zN/YedYNnBTaJQ6NrdWuXLgl2AbCI0xu12nVWPfYjWcxyVbAnfSWtJqmCXp1VSVS0RJvM JVZoeBRZQYcaDTvDbzneF6pWTdRT5Jnyj2Tlz27AOa4cq8dstcNVDwwkq/ryeBwQ= X-Google-Smtp-Source: AGHT+IHReGjRTXAEj4+vwvO9u/f9ZuRyHo0s8k66WpB93PuyVoJgCciFXUHJKSLOxZzbTKByXL45NQ== X-Received: by 2002:a05:600c:840f:b0:46e:1b9d:ac6c with SMTP id 5b1f17b1804b1-46e68c0c4d4mr116982805e9.17.1759755642862; Mon, 06 Oct 2025 06:00:42 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:ed2b:276f:1a72:aac0]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e619b86e1sm249725965e9.5.2025.10.06.06.00.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Oct 2025 06:00:41 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 06 Oct 2025 15:00:20 +0200 Subject: [PATCH 5/9] gpio: swnode: update the property definitions 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: <20251006-reset-gpios-swnodes-v1-5-6d3325b9af42@linaro.org> References: <20251006-reset-gpios-swnodes-v1-0-6d3325b9af42@linaro.org> In-Reply-To: <20251006-reset-gpios-swnodes-v1-0-6d3325b9af42@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=992; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=2oDrBv8aDfvA250bRkDwWtWP1E31zoeQQskPCFFlV80=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBo471wajgCtsvE2edixdkcm6VSrxIu2UJSr9RZR 87oR5sRtUCJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaOO9cAAKCRARpy6gFHHX cjUDD/9UUxRlTRmA4VRrdVGqze7ySIptImxOeDvxSSi7iXxcS1qPwPovr0yMvpffdzTixfidORd CHFvrjrqbkQ2pP1KLhi/VfiCShRZD+/4Pah1MKOn8QyJcLcrI6aomkGiFxrlOScvu/SilzSq7PD qER5pmNjPVyV7RPgARi/z/opwBjWgsDzegtopitqXclrDeFqZSt/jL6Xej92aD38lUUlZ2dPzAy e/a8Q3tzQbxbhhDGKtx7U52ezFnC+Tw/BtBFfsQ+7XmCRUXjq99Fs387BJgK2HDqoituNC9H8ch olMVj/jRjD4Px3MX3+2TRcMgZIEJEMIosocfiFKIXwazf+EYRD8kIe6aAfYXuJetAuwt0ScA1Hf LcITQTIUydkscoQSWvz6gswBp1oHood9jUtkIXAzeyHy3/AQotdJYGBOGfANip4vp/Dt3wn4u4T hyEw1R8Pdf/aSJY54bnPpR0GlnZPA+V6M2uBFxXfoNAydgrhfUFpDR8So6p7eL14OoNzhemC4rC 9fma6eGsvy8ZgWqoyy+pyyHop/X8OvbWggvl6ygoptnO9pQQXnv2yMGNv/Bh1rsrsfUWkTBjtHr i9HLOsbaWyC/WQIe0UIzSHtN7sOb+jBIJlf5nak5otrr/26t2othcxilq6I4HiTA64GubEXLUSH 1A+cPZ6OZtzNfaA== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Use the recommended macros for creating references to software and firmware nodes attached to GPIO providers. Signed-off-by: Bartosz Golaszewski --- include/linux/gpio/property.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/linux/gpio/property.h b/include/linux/gpio/property.h index 0d220930800276a21b5ba96a68371ce66fc4ae3e..6b1c2ed9c57594bf3ead5edc824= 39f9fb7f514fd 100644 --- a/include/linux/gpio/property.h +++ b/include/linux/gpio/property.h @@ -7,7 +7,10 @@ struct software_node; =20 #define PROPERTY_ENTRY_GPIO(_name_, _chip_node_, _idx_, _flags_) \ - PROPERTY_ENTRY_REF(_name_, _chip_node_, _idx_, _flags_) + PROPERTY_ENTRY_REF_SWNODE(_name_, _chip_node_, _idx_, _flags_) + +#define PROPERTY_ENTRY_GPIO_FWNODE(_name_, _chip_node_, _idx_, _flags_) \ + PROPERTY_ENTRY_REF_FWNODE(_name_, _chip_node_, _idx_, _flags_) =20 extern const struct software_node swnode_gpio_undefined; =20 --=20 2.48.1 From nobody Wed Dec 17 21:25:31 2025 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8AC3A285056 for ; Mon, 6 Oct 2025 13:00:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759755648; cv=none; b=ufT8GdcVXoQRrYUGC5UrA6dOASxZ812id6iPd2CQWCaD14JPvnmN1rEOORxu0brSbEMLaptRuoLOC6oYomvJqdHY4JE0/9tz0Hb3Z5HrqvO5SKqIQT1NHOJivmDEvD/V+DvhtV4nlzWxHW4er/qLZBc+B4498sYImveg+kzx1qo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759755648; c=relaxed/simple; bh=Vt9wnIolF3wo/Kk0uCqHGjVh5+FV+lRIO97mPGjDUyY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=XhDuf3j5hVaXpNPeSZQoqFSmNO+NITG3klXsu/i0PThALSDA1AEqw3RaWp2UoUS987lN9GEcXZeFzz71Du6Ue9T3OIBYNIWurro4B8H6JQH1mBJCOmwLRCkvltHEWLoODA/zJvzz4qmJfzAACcfkh5pl6lrVVqfess3Qe/yydb0= 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=VRaS+irm; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="VRaS+irm" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-46e6a6a5e42so24757135e9.0 for ; Mon, 06 Oct 2025 06:00:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1759755645; x=1760360445; 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=/IT9kGD4PDZntf8OM6JZi28F9oGAqYVuiTpjsu4zy3w=; b=VRaS+irmFD/OBgYZPF3GlBBCRzdRjhuWXmdCe4VifuwH9c1dAsRzHY0ocgNdd5Wbg5 M6br7926J4leGtVxYM7s7raQRFarrCMC7tiHYjD1g/60WnBlGC/16yCJNzLAWCIyIKeh GnNOJVoVLaV8tELIm2Kd9hp8hHtstNY7XV7tq9KfoFIQs3JKVV2Xwp4kiVDmbF8nwPgy dVP8cwQdgERx3OzUHaoS0w+YEcJcP9+7JYyaVEIduKGRgSgzk9pwBO/UcXayHBa462Aj kaEu0zEdQQOYy3vbp3bLoCYpOMmSroEF/xsraKonT6QXLp48lFEp+F4Db0BFgGEadhjE VxTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759755645; x=1760360445; 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=/IT9kGD4PDZntf8OM6JZi28F9oGAqYVuiTpjsu4zy3w=; b=EZkPiCTu27sApuFjff/EHnb5bofYBZbkFE/VWfnuQ9phBcrXgsHNhkn1MRh4+sKDS+ H/GZbjLCC+2fKnPi9DpWbcqaH1wew8Q5vJ1t5l1nhyIR0+ypQN9YMDdbqWrP1jB4HL3n SncY5xc8b9+1QZY/9Hdd9zlswGlHQk76VyKiM46ppsEVklaiFRxqtCfjl2MGkXgzU9Hc zF2C92+yPIOVM0tav74dyR0pKdw7uWk6QzIVI1uQ/hNICP2k8e7gJ4IiQWxKCeKkDvjB GXxv1/Ii3ExIs35+qAb/cOB1fGqp/7Ht4sxu8IsaLvlFEz9av9os0wjo7VlnRbXKQFzZ zuwQ== X-Forwarded-Encrypted: i=1; AJvYcCV1FqqxAYbNd8nm9gn1mRETj86D0GhsjbCELKTqSSJUUix7MizHfOGh9TXGcl01Ph212XK2u6jnXX093OY=@vger.kernel.org X-Gm-Message-State: AOJu0YxSFelhpc4QQju185ERRw3/WevCA5nxyh41bHMY62VoYeAtLw1v jw6Zw30I27cB8qckNmxlVgI//w6Vl7I0KTD6ExGstTNIy1Xsepj5l+VdNkbmwB56aA8= X-Gm-Gg: ASbGncuauvMnTqRGEwJ40o0FdMh1uEVktBxvsVE1dSEccMjoB1+Ksl8v7L7VA56cSBI KkZxSlK+A7SDdPKFG838HsFF2p/ECyXUGVIrTNbsYAytsHcq4Hn3py+MrrmP6ZGRtQpJokSSIkH n55XTnY27On83jjDa93zYKvn0pSNb0wL4G6CVx9ma62T1D++6MkuY3FewF3bq1AG0iOMB7CTvvQ 055TuEFv42efDdH17z1oHW96Yrhq5tHulnO2XRwO85s74NfBiPxqc3hDqKrutRl019/+lAoNXjm jRjaEPF9WeCd+i1fXSiJ4vvJLc8SHDtKb3iB4sLaZq8vrhjiwD3cxJMoTpOUSRUZ6xb30QHgyZj 7iXGuiXKydVU2KPkZKBFF6ittk5+X8aXwz8u1o38A8g== X-Google-Smtp-Source: AGHT+IFcI7k/9n2YR8FC83rJGfcHlvQpg2C6nFUd24sixSFEEP5w3sJNEHKEVUf5IVa/dNhlqGBm/w== X-Received: by 2002:a05:600c:1f0e:b0:46e:3978:ba71 with SMTP id 5b1f17b1804b1-46e7113f659mr76463845e9.21.1759755644579; Mon, 06 Oct 2025 06:00:44 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:ed2b:276f:1a72:aac0]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e619b86e1sm249725965e9.5.2025.10.06.06.00.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Oct 2025 06:00:43 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 06 Oct 2025 15:00:21 +0200 Subject: [PATCH 6/9] 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: <20251006-reset-gpios-swnodes-v1-6-6d3325b9af42@linaro.org> References: <20251006-reset-gpios-swnodes-v1-0-6d3325b9af42@linaro.org> In-Reply-To: <20251006-reset-gpios-swnodes-v1-0-6d3325b9af42@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=1096; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=ISz7nO0lAaqHotZMBBTU6RwrDTKlASO8zsYyU+2upwQ=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBo471w6JhfRjQCA8hJP5hdnIaHCaGljK8aymehO +FgZAvfSbuJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaOO9cAAKCRARpy6gFHHX cn4OEACA7/SpyFyKEaHp7ocSnaGwo1aIkqVYudOPP9e+VFGVKMdOzVZh4A1gCWdcJxcx4tp+iij 2xE7CCS6bIIzlavt30LlZvA/llR8ufJhIggJUBsyscrj7uqGf9BJa7OgBNOaquONMALK+0jIzxr 4AUVqTKYWC0pLpFTGkFzkliMXLAnECba/+yZ8AJ/nWtjSEwuHtDCMCmTP5tYHX20mNTZmFUYjAg FhfGsxGCYXdIx0y3kT1mEajb5Ysum5XGB0fhWr3/2seZ472D1WKsew9shdHPftKZEnyVNOYi2r3 twpdZnVKnVbcks/iGVgv1DQdl7BvLywhB1DGry3PrjzqB5aMgDqKrqMpN4ifJ9dI+zb2HKkozuH iT6fxCdulwFtcWQPgvtSEWwjgRRPc60QBQsCCKiEnLJ8d7yfnjSpahAO7q/18kcDAT4xdgOtqhl tIFGG6gPIuwTU1h18mw4RsbOuvjpZ11L7eRae1OdwhspRYsh9/IsAmocZVn0Tj2ZSxp1DSt0iE1 FFTzqiN5URkaPVjqVdSUnfvm0AenDBpdJ710l68lyw2IVRs5m/9TfSLitc3D9XGMucWQaxo+Ltu eNi3jwkp4ADe0xOmDCh22OMXJ1YWptMbveatloyV8Rym0MGQQ0GXvJw0fZOasJf2LA1bcXukPWN cF8bcdWB9l0iDhQ== 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. Signed-off-by: Bartosz Golaszewski Reviewed-by: Philipp Zabel --- 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 22f67fc77ae531c6efba3ce92cc73a2d57397762..5a696e2dbcc224a633e2b321da5= 3b7bc699cb5f3 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.48.1 From nobody Wed Dec 17 21:25:31 2025 Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 65D42287265 for ; Mon, 6 Oct 2025 13:00:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759755650; cv=none; b=UqJHMMOjvYPvXaOsbkJscVGi14BoJSOTBIQgcgC1dcfrNrO3CI9MWgHnY7qck7un4AgVDfrxT6uzjNF1ExQsul0vTgL598/eAkY72rsKdO6z5X42qacU7cJbl4TgC5eSfJrQSFodOl/ATDHBS2mTN1S9dIguHRwD2mEyRKbXBts= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759755650; c=relaxed/simple; bh=K8U+CHaEDTDTAOOAhIZGQLKRldV6biiXuo/pIPzTEZM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OAqtX2LrSxCcliIIyteULlPAi7mGsldb+lz+sER+wJc06Fgz753/+3oL0QOxElLZ/RgJ+kuUzf0W9/6dfhrjd4PoCuNWDH8BQ6oP/zr0sh/IBfB5gBXcLylGk6bfEO/WmLjDZTvtIgxGZeD1dJQ2XwlOB+G5pZ8FoTZ+ydnSkPY= 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=ecq37Djg; arc=none smtp.client-ip=209.85.128.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="ecq37Djg" Received: by mail-wm1-f49.google.com with SMTP id 5b1f17b1804b1-46e3a50bc0fso40469815e9.3 for ; Mon, 06 Oct 2025 06:00:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1759755647; x=1760360447; 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=6pKa9jDqQ70bpsXEO6w9amEFdc6+U1mZOoJWBfQBYnU=; b=ecq37DjgMG+ZVpr3twoAHY6abMk19/hn0RwDKgRYMG6hcgjKMQvbgffI0K5820fJaA prGG/WZ751lrqbERuKQILKIuqvnk0/PE/OpF06y7Y1vHdEz3dPi3qNJO0oDBQrIpt7Bs GLZsY0Pgpo0pfj0D/VcRBtattHmSFYs2le/MEsCbJQt+Uc/UflvOGvYcJ6Lh1cfB+6Yq VbR82popzFAvnydO6lTyZuAX6CjE7EsSqTZvF+vOiWVuTgRmEqVozQZYGeooXccjP5MP o7y8Pa6D7xXY+p16EXClSDmtVfiF/iwdufK0vnGxts+cxOlFVCkeKxglIUHVzNhgLQSj Ikig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759755647; x=1760360447; 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=6pKa9jDqQ70bpsXEO6w9amEFdc6+U1mZOoJWBfQBYnU=; b=CL9myUhUZt4ocVAWPRptC4xui/yG9yo+6lgWtmKBynay3R8R9Ug23cGX1sAQDJ5Xnd lS8ZQWayUojtArS6yaziSiifOEi0pPxuj/fkPSRg9wsF7Cy/kaFTF31hfBpRJyTdnqVe /HBJceOaeauhBYY/4yHpuU41ANuksnoE43tMIIim2w8xsUhzFwtg0no/rXOwGzqDu3Yt va8agxYWPhcZKDrDxhWNYwHnDkXgAsGwuCq+jkWIKb1TvY7OYYynaTMfwFch0arrqgIP ffVo1UCoaBdwE4IKY53PhRzXWPSvIEp5TE+KI/nhp9wkFSK/Pamsm3g9iy5lDbP7n2G+ UK8Q== X-Forwarded-Encrypted: i=1; AJvYcCUjHvCEgGgFSCU9mAT8hrFfnv049aYxzKOzjrZwlmL/eJHJJu2SGmLDBMLyn3O6Zn7TEnCT9Dhpiq7qBU0=@vger.kernel.org X-Gm-Message-State: AOJu0YwVua7ZlR7q5/oueZ0HHgwjqlEYk6fvr7hVSMzWW0AxS6msbr7I j0R1s1gDAibDRUUAQRPzs8h+Ly4pflRVP+hV0c1iu74tv1PVRWJwdEGvyTfaZj2sVjM= X-Gm-Gg: ASbGncsfOlQs/2NCDe6OfaNLZxWyxCH1/nDp2YSIE3piEb7JOe/xVAv2OqLvoqEXXfB DBJWGW1vHfBk1TGkAKoPmAy7rie4deLIwRSDu4AGQlJYHsMT1XOql3zfsAcXX1us83HA1p2f0ig 77YBZ6Wl8GnzoZ99CL/hi/wp89g2+OLfB03xa1pKRNESNe8RbUAE3mAKIV+ISpiFIkrnywBAr12 XC0BJVqq9E0kpkwHAQHoQYGOs7XDxINPdoXcIZCLeECKoBTefEnvBvgCGnMzDMy0hAbR6sBUfHZ 3FNuMtO4QpHOLbRHuKR5zdCadZZaNkCLonIn34HNYVbmH3mwThIgvtfzbskXtm7bwX1AjpREDbx TUQFnySGuCAKW6tNMdr0YoL87ZWHlKD6btsh334s9uznl1p0w1MuH X-Google-Smtp-Source: AGHT+IHVfVXF804VbQxWVSNoeBDUmpNoTUbLdSk8nlsC5TJ7pPo085L60e5shPycALSUqFXkTIsQZg== X-Received: by 2002:a05:600c:354d:b0:46e:6a6a:5cf7 with SMTP id 5b1f17b1804b1-46e711026c4mr87577545e9.12.1759755646723; Mon, 06 Oct 2025 06:00:46 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:ed2b:276f:1a72:aac0]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e619b86e1sm249725965e9.5.2025.10.06.06.00.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Oct 2025 06:00:45 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 06 Oct 2025 15:00:22 +0200 Subject: [PATCH 7/9] 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: <20251006-reset-gpios-swnodes-v1-7-6d3325b9af42@linaro.org> References: <20251006-reset-gpios-swnodes-v1-0-6d3325b9af42@linaro.org> In-Reply-To: <20251006-reset-gpios-swnodes-v1-0-6d3325b9af42@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=2973; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=Zc+xs5tXGUpl9lw3Fpnc7se6u+D5QtL6RaYw/hFc3wY=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBo471w3VajOAmI2LiZSnq9w/PmWaCe3q6SYPRBE 9uM3dLHU1WJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaOO9cAAKCRARpy6gFHHX ckSwEAC5br4Du9+yyIV7DxA1c9XCvP2k/N0Ximod1Z6yO1qv18SfTIPIGICwPRXxjSk76i99qdS WG7yX/XIZDBSrvMfTgZ+YTiY51Qh4Ttg+Io8eAfJHZzgplYEGKXVCcXI647SGTQjkLjcKA2q61G nkUcFsYOP/3pIHQ8iS8O7yhAmFmOD8wV0bwVhdsQzS7Wiy/NXK7uhXdip/QeUs30US0X3bBADOm nmzoAA48zEJpHRppAeXCkiAWQCVT1xtycOPejnIcMyCkEs+n2v7kLKQsZsJKgVwy0DUrBMtdq4M RwbPmETuwWa1bvokYGPhDw8jEyxsovqmgdnDOSKaYqIQhkUUo7qLR/wEcw2WLwTrM9Mo67+evWF UlKucTeEzS4MEsECRa6Md3N4rbM/bgO48+Y4mG6qv3ya3ZmyCS37pxfr8b4VxPXhumkMQcCEjs5 Jgn7mTvpYamv0aam+h/X7BR02XFJtNcLX3Vs8lzqaL05qDn6rHrEUZhqzCYUKu0gQErrd8zkGvR GvzgZ1lpz8qhp1lXCSR7XJZjDLnBTNS0suTS+JRcwB5WA3api9Rzmml14mF++54HXPRX1lC2QBg kzVYwShdQjhKe11vv3aVrTX6HBDKe1XAeB91KmXQGwtUYdISv+v+2yYff0sGQrOzSsGTY9RkuZa /MWcXjbxzcks0Eg== 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 benefor of bailing out earlier, before allocating resources for the virtual device, if the chip is not up yet. Signed-off-by: Bartosz Golaszewski --- 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 5a696e2dbcc224a633e2b321da53b7bc699cb5f3..ad85ddc8dd9fcf8b512cb091685= 86e0afca257f1 100644 --- a/drivers/reset/core.c +++ b/drivers/reset/core.c @@ -849,11 +849,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 @@ -868,10 +868,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; @@ -919,6 +915,11 @@ static int __reset_add_reset_gpio_device(const struct = of_phandle_args *args) if (args->args_count !=3D 2) return -ENOENT; =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; + /* * Registering reset-gpio device might cause immediate * bind, resulting in its probe() registering new reset controller thus @@ -946,7 +947,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; @@ -958,7 +959,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.48.1 From nobody Wed Dec 17 21:25:31 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 EFEAC2874FB for ; Mon, 6 Oct 2025 13:00:49 +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=1759755652; cv=none; b=lOgN2M8xyWXHN3E3Biq6HgjTK5onhYZVsW8n9ucsh1Mic8pFKJzNXVPS41f/ANc02vhlFMU7uxjjRRHN1SDMGXzPuexdR8DOjRE9WjQzPjK7KpqUvGYCGKOifyVGLAxX2Upn/XCS+o7Q3Sutk2/G00Vv/hgAAvaWW/Ve9xqMBVU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759755652; c=relaxed/simple; bh=+JKWx7l/NGPc9FMlvYOUnFzEo+vds2fhGntk/7dxXpk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OpycLOf8AE7rqSIWKC/JiQXZo0Vus1DqLbIwcFNpXgveYyEfLLO940PcAHarIti29291co3qg0NNo9K0+VXOQXXSxD5E882aQw7LX6ABtwgzBAplcTKHIRduT1OKFwSFijv5Cwy7rOSD2TrRT1dVxxETa05qqZOg1kp/oyvC8r0= 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=y758cxIC; 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="y758cxIC" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-46e37d10ed2so43780075e9.2 for ; Mon, 06 Oct 2025 06:00:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1759755648; x=1760360448; 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=RVJyVOFkJy3oLbXktrQuphyyROzCpxmHBAoz+N8Ld0Q=; b=y758cxICsCIyMiTxXZkjLiojKK1A5P/vRAVtXN4oYs70RqIIwYBVzE0pYHlj1JfFlQ YW+pv3xcbFmwxm+ZsfzA1FmycOi+aqXoJxoEEVJNMrbmbNomXhEEZ68BIuvM1WvmhbeY NmLofOQnYyfsGJZvr9LqM5N4e1HM2i3+oC0prAcpz2NtXGAVfJETxBQZwgXBvvIStTcx jn5ABqJY7Juwj8yEw38ljV1yxjDFTrAVvfE7d1Lvh1qVy9NI6uyYcJzf1hAUbeBWxc+T z5mxAdB23KavtNxqF/+88J3XY1ibkatmcQ/naaFs77nrHLkyjB5I48OdZBTjyH2VE7Zb D6Sw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759755648; x=1760360448; 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=RVJyVOFkJy3oLbXktrQuphyyROzCpxmHBAoz+N8Ld0Q=; b=K25joNJ7vU77FvGQPOyO+zn+bcyaaw/D0B5M2ljajG85vsYp7HxqgKG0G3K20AL58V hmE2mT95hTLvrTiOcswv0hqB0GR+Zsdc29rafvDZ6RQp2Y6pLZT6A10yk7jVDqzddVGm 8vYLL2htSfuGXSwZMY7JLmtzMVdBeq6D27dZK6trDgG32HQL0Pl8UdTK5tLTnWZqo2g4 ejiEFGjoIXqvFAP40b0GxpvIqIfd9Bes5puIUT8A0s8RRmR4TlCbpcGbgfOw3GlMdGiH Tud0UlHfiz05l7x6vqd4vrxp+TzQJ1Xpc42MQh9onmvBFFJOWkrauH2FNZe+Ci2Oyc+f xWZQ== X-Forwarded-Encrypted: i=1; AJvYcCUuZE5zJNHLtrAaukLZ2Imi+mOEnanpXxSUb2ASE1WK8qcJQ0sngqLulFqTwikCcINhpL5b9hfSwSQmbio=@vger.kernel.org X-Gm-Message-State: AOJu0Yy8UIOME4wRtX/E8167006B/+4ozw8vOhhSNUk50s78Nd8bp+ZY bgMVLfc/l5bfV9P11VVidV3Wg6PFbWPi22vAgM1JwKEKYooPHKcNPYl19KPlypPIfsg= X-Gm-Gg: ASbGncsZ2UpZGXXs4k9tbKgrszTIwREIWeyE33URWjv7b1vmxm7pQH8j+IJ3+RWD8II jKcNeNE2VpRHtaIO9gEocQOVXNxk8qggRJ/QAEmX+L4a/9JAWzgONJ0WX7iZabCtgUiwXyyK6tV KDtVs8NinHgNkCTmd93XgFf4RnDQEWiWjrOipvVB7VtuRJ/H3cBuYAWIiyNRf3Yrl5pEfIadW21 SbSIYq8D23PpUnPPG+MC7c0oUVdyDDPXpKXo6mS79fkReIA1DB6agVFx/Uv/5KNZpb78bOjLYR4 LNBCLQxtPgZdb48w7e8aHvZrlDzwjb53+mxhGSvcXmnbe20HTbxyKuIIDT8tXxEffJfopvOvUfK 50eXtSG87mcO+49H+mdNNAALU0xuWt3KgSqirWXSwkDMSO/tL6A7Sf8d6gMAipt4= X-Google-Smtp-Source: AGHT+IFlCtvcNUI7/9UCDYySnsA2ln8tnjyIuGxNS6pmkEEAPUcuxt4MMplcSTveGNvJxMUSaSAp9A== X-Received: by 2002:a05:600c:8b83:b0:45b:8adf:cf2b with SMTP id 5b1f17b1804b1-46e71142e6fmr77497045e9.21.1759755648455; Mon, 06 Oct 2025 06:00:48 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:ed2b:276f:1a72:aac0]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e619b86e1sm249725965e9.5.2025.10.06.06.00.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Oct 2025 06:00:47 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 06 Oct 2025 15:00:23 +0200 Subject: [PATCH 8/9] 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: <20251006-reset-gpios-swnodes-v1-8-6d3325b9af42@linaro.org> References: <20251006-reset-gpios-swnodes-v1-0-6d3325b9af42@linaro.org> In-Reply-To: <20251006-reset-gpios-swnodes-v1-0-6d3325b9af42@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=4980; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=e1WjM0ZFklLnJ17T2rheOhCBlqmI5B5UMpfU921B1x0=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBo471xNzeVNqTbZtwqmv6yknmoSEVvaZo52odAH xQbrrKmzMSJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaOO9cQAKCRARpy6gFHHX chOUEACgXCqiQjC+EWfJWYzYmL6O74m50iWj9aNOxM0bc87M1tYLvyTo4Pd4cNZP2mXjFPAkzOF rAG8GpV01eZeOerDxqHjc8pcLg4f1wbW9BlCLpQV03FnozcsKpyqu1EEjkySnQb7AqWge5QNcyn mPW4Pg54HTgh+v505ks0+TmzDnZyqDDpUK/oAYW9MoKoyM9+4IVStXepYAzEEA7X4Xk0Gc9VCS1 D8PZV0t3eNzZLnN+m1zbRnn+DefsMdGuLwLr9yFUXpCjzv3r6Ny3deO/3VaYav9IgX3pLJT0EOJ SSYFpyV1Bf0ygUJoHvhUHuSnqFyqJS+GDwbv5l62Dp8Fh6CnRiHmtua29Oh7acLtoN9Dk2xKamG 5jRz5o2ctXL1SsJkIyJDpMSEmdTWrcwJtHYsdt7B7YeH3NAneMfmTPdlvYAjAec5JfBOZUn1iG+ 2wM2ADVAL8js9AsLhcHYYqfKBfcVWjaHXt+RnqdbZU8l3Zkr0LuHCAwK1DyHB0phhtClaRIZxA/ IoOYToEAg8BBLu4q9dTVvssuvXaLC26kirvnxnGm5xTzvPYGeOLcN2isH7hH5Eqg1eFm8p6hnGc xj9LcccT9h5S0APZf9tUSbeqQVJ/aMRrlq/5GwHCDMwBK6qSAPpJ53QVS2YLw/kzzd21tC03qJs 0XYM8rvZEulPXCg== 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. Signed-off-by: Bartosz Golaszewski Reviewed-by: Philipp Zabel --- 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 3102f5d7a93690f262722733e475b1215f61051c..24c9048cc7a31d3a6c9fb9af072= 6a8387bb3154a 100644 --- a/drivers/reset/Kconfig +++ b/drivers/reset/Kconfig @@ -89,6 +89,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 ad85ddc8dd9fcf8b512cb09168586e0afca257f1..c9f13020ca3a7b9273488497a7d= 4240d0af762b0 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 @@ -882,7 +882,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 @@ -903,7 +903,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 /* @@ -959,11 +959,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..7b43d61d0467aef5fbbad53d531= 294fa62f8084a 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.48.1 From nobody Wed Dec 17 21:25:31 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 021282877EA for ; Mon, 6 Oct 2025 13:00:51 +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=1759755653; cv=none; b=GUBSKzlULm2PxZ9STXgb+hrJtDLA0wAAATE39Bv0jJqdobCsIX+iKvmVaiXcSkrZRWgd13pFH6f6scB8yBYvY8FBdmfvZGCM3EHKMEZJ1fpErOIU5LCStVp4q8XEc7noq0F9Na5yRK01CmRdrKek2qcLejW3sQnsYFm/TzBKl2c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759755653; c=relaxed/simple; bh=3ITU5SMeBS5gbZ6+V2JyPdn7cXGWn2ep0zbQ9J0rsIY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=H7CECaU0hUrxtUlZZfiBEtxgxua11JC/Q3ep5gCMlybYC9U9Qy59951B/LaSpoQRpUEmcfG39N8bnhqJuX4i38CkY4QlUD/4iFTDBsLvF/BXv5SE7BxMqITHr/qZJCuq5K3RGPZWvvIg3RvPaugcefycsyW5kly1swY+n/41a+I= 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=UnmSROMG; 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="UnmSROMG" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-46e42fa08e4so46690105e9.3 for ; Mon, 06 Oct 2025 06:00:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1759755650; x=1760360450; 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=PQTP5tVg1KBqcYjkGWU/UXGNSpYIuMZY/FCVFHH95b4=; b=UnmSROMGZ2MmfEmnM0lKIrU/0z+R2U8y43ppUlZoCcXhQxl3+rjHLMrM3da/CFLIoE qRSQlqP75qHIvo0mNgZ6gH4wZg417V3w+MaZS2OpDAq1KzJ1iU0YoxvZ3hNA+KMl7QZx Bs9mDeyouFo/Lh7ChnC2AnH/jLZBEeDLPkc3GNy3USfVEa+pUOcVXOLz2upKYg61crhP 0kdQPGAbO+sBBggt6s6yxVMnS5T3XDA6If1/jxt/a1pGYjy2lbmjl3LpcFKtIiVKiecS 5Un+uSzyqtaWTvr8vj3hHEUi452NQ9FhxrN8FgLkkqauNpAEXXhY7VBrgcxNM7yEptt8 Bfdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759755650; x=1760360450; 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=PQTP5tVg1KBqcYjkGWU/UXGNSpYIuMZY/FCVFHH95b4=; b=ePt5lvJW21628wRzsVqhuPVWS/fE4BX0+At8XQeT2Y4YXjKo1i4XcJevaVc4HSyOyG DRp+cJwsuVjYcxA+aVg07ArgwF5aPQ/VLoVd+ZilCCykLmPnHA84+GfcbWZd+7LqRk8i tJdXkmdIt+t932uikfJOS7Dd1c2upNnJklsZARXi2Ole6lB9ED/qORcsRigl++ZgoWlp 9FeABlkS8QBuA45oLHlpkP7yba7Ms/L3GhdV7DV1AQTxtldxLIKpmia6/8+ejFV5n8hm ZUAAs8+wZjyDiTJzwWgABn1LWROM5vjqR0va+WORMuLW8n57eNqG5tgQ5pVUKGt0hgP3 WCdA== X-Forwarded-Encrypted: i=1; AJvYcCW5sNa0dTk3cUvCK5S17Z4IgYXsNDr4yLxLUoZwmP/jyvaNkbxSiX6DY7FFVsLdnzw89GyQMSKexZlmA74=@vger.kernel.org X-Gm-Message-State: AOJu0YxmDzx8rDKq+TA/C/WjmF83ghsdNNKUZxVQ/CyP3hMpizPLtmg6 IYTun50l7Oo9Ne4knHkySHEtRZ3uWLzaZYMgqEt8JRefq2w4ASinyh60tBW7p/UIQas= X-Gm-Gg: ASbGnctaaRPheGv2Tg61ypZft0zbI6szBH/uNAnRsFeiyhj51uQm5VtG8/yc/+Vdwxq FTnFVuUMubQN3i6dEgRzlOaMJOYZGxqUltd80Xcp+3t3Dw1T7nFPsbaR0DFWWbmNFG9rNcxv5IM ALOFuh4ZsY93Sd7x2LXrItiXUzHJxOuMzKbyaXTpza6j0WaJZE9+mmi//f/fcxpGd/gjAtdiQUM b5jJ37bJqHN83KbG5IyHjFv5rKgZnWihtzD0V9H8bIxdgknT2LNDWJTT6GGiOWHMBISGmSR0jnV xOSB+dEzqrSAeYumWe13ZFRnsttzPoYyp89XACLp40Ik8+49Hh2ql/kRrehxSVZ7mg2QduWQo+P D0KomwmNGVGTj4u6LJiFk3l78AvJXpWQ7/zIcncwyrw== X-Google-Smtp-Source: AGHT+IF+07vLyKlUC9AZcX/ELvnHFPy4Xnjef8d+glDiXjGJaJtY0fp2bybEmkWjDlxNv8CyAWcKSw== X-Received: by 2002:a05:600c:19ce:b0:45f:2919:5e6c with SMTP id 5b1f17b1804b1-46e7110c3d5mr106900545e9.16.1759755650133; Mon, 06 Oct 2025 06:00:50 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:ed2b:276f:1a72:aac0]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e619b86e1sm249725965e9.5.2025.10.06.06.00.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Oct 2025 06:00:48 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 06 Oct 2025 15:00:24 +0200 Subject: [PATCH 9/9] 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: <20251006-reset-gpios-swnodes-v1-9-6d3325b9af42@linaro.org> References: <20251006-reset-gpios-swnodes-v1-0-6d3325b9af42@linaro.org> In-Reply-To: <20251006-reset-gpios-swnodes-v1-0-6d3325b9af42@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=7200; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=euQnOmMaUXav6qiP7aQUzAMCDMlmaWDfPNDFpx0Zd40=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBo471xS0cpgGKN+eCwr4RM2flGdhV1fuNmW7IEy pih/wsr5euJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaOO9cQAKCRARpy6gFHHX coIXD/sE/r5VEuU12M8wenUEnCjWZoJJuKKYrWL2E7T4Hg5PiNgjOGaF62J0OdBofMxEpp7rkba V1Zb0qdvdTcb6zjP8tMlIiZf+DI7S8ifG7KBRU5kELDN9xifiv7wbUd2bCaDBIrjZduZjII2eGU XqQ+ySRjRpK2oa201uID8kJPlOQy8IsgNmhhhNAA100CDKAfs3m4prThhnkrJJTo7vR5npJ8Gvm I3J7mAAwAb4JZMHQ7gw7ddZEdYEtccdhMWJgy+mq3UoKLF40EjUH7EllFOLDZnMEauOuhhpmv1Z 6QwQNgrctI1hykn++MHmdCmWN3Rc1ve+V2yH4z3wNhGnajq1AFvkd8r90U9e4CWTX2f7PEvwbfD dT4/c5j8d9zdeTQjNAcNrBlDeAOD0p6aovQc3ZAgsDl9WBb7sp3qCbDgVh5tvycyM22ZX5nVLS0 ph12Vs8sJ9dXkAEbrhZk4suiee+dIafR5g5ipYuVz3AHnmhxbz5xuUCxapQK0kj5q9aoZzSJ7bq F71aDZP2VWHHZj5qJrZtiUAJics9X0DRE66hE6Qedl77sNKVCtIuEEOldJmj9BHLYyRBYT7IdxB MTffYjKJZy8PPvBBlqmCRkLOApcb+bob6RSos+/m8v/uXHTbW/wNC+E1rBDesJofLmkM2zlmc18 gyLYW+PH5ODOiaw== 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. Signed-off-by: Bartosz Golaszewski --- drivers/reset/core.c | 132 ++++++++++++++++++++++++++++++-----------------= ---- 1 file changed, 78 insertions(+), 54 deletions(-) diff --git a/drivers/reset/core.c b/drivers/reset/core.c index c9f13020ca3a7b9273488497a7d4240d0af762b0..b3e6ba7a9c3d756d2e30dc20edd= a9c02b624aefd 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 @@ -849,52 +852,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_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_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 /* @@ -903,8 +899,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 reset_gpio_lookup *rgpio_dev; - struct auxiliary_device *adev; - int id, ret; + struct property_entry properties[2]; + unsigned int offset, of_flags; + struct device *parent; + int id, ret, lflags; =20 /* * Currently only #gpio-cells=3D2 is supported with the meaning of: @@ -915,11 +913,30 @@ static int __reset_add_reset_gpio_device(const struct= of_phandle_args *args) if (args->args_count !=3D 2) return -ENOENT; =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) return -EPROBE_DEFER; =20 + parent =3D gpio_device_to_device(gdev); + /* * Registering reset-gpio device might cause immediate * bind, resulting in its probe() registering new reset controller thus @@ -936,6 +953,13 @@ static int __reset_add_reset_gpio_device(const struct = of_phandle_args *args) } } =20 + lflags =3D GPIO_PERSISTENT | (of_flags & GPIO_ACTIVE_LOW); + + memset(properties, 0, sizeof(properties)); + properties[0] =3D PROPERTY_ENTRY_GPIO_FWNODE("reset-gpios", + parent->fwnode, + offset, lflags); + id =3D ida_alloc(&reset_gpio_ida, GFP_KERNEL); if (id < 0) return id; @@ -947,11 +971,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 @@ -959,19 +978,24 @@ 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); + if (IS_ERR(rgpio_dev->swnode)) + 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_put; + 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.48.1