From nobody Tue Dec 2 01:51:45 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 5696D317712 for ; Thu, 20 Nov 2025 13:24:10 +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=1763645054; cv=none; b=MRBuvQkj/PGsLtV17E94wFB+vWwdcTNK+BIEptputE2G0oHYcAHcw92n7/ZfMYgkbTPvtwobvA+aPeqyDJYIyzgWjNkQf1V/Kywg1OdAG66oaraiQjIRTAy8kT2k1tL4C2V0//dy7D17yUV3nEGRZ5Btc+NAGLykWPqo8CG92rE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763645054; c=relaxed/simple; bh=BuYgFAZZbSpKpsTYQp01UrI9oIh6Sp0S2u9ZSteIe18=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nh0wEzbVPU4pHc2t1Gn5LI9w3370NOGXm1Vo4+kUUIVcdYBjSnRf3HKO9vLiDWg66Xvp/5DdxWyyr6N53+GUjhpldEz1qWaM2g2FXS4jG0DQw+EW71Qw2ag5afQJ5CQ/dzlfhspuAsV//ovWn59aVU7QTxYWkEGWN0VbLsYBreo= 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=1gnhub9n; 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="1gnhub9n" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-477b1cc8fb4so5954835e9.1 for ; Thu, 20 Nov 2025 05:24:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1763645049; x=1764249849; 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=fQJ9XtNto1bKDWFPhkt3LB0ixKNziS3EmuJ1JwgvOg0=; b=1gnhub9nNeSENnNr22G9g668JeQvD2+abmtSdy3y3/mCCa1478iRtA0MZrq1h+xNPj quxAV4I/MzVlguv74mVwfVaMf2pl1dyq2E8ADo0uJ1AqTFV+hysrEBlqGu7MsfMUllpK neCit+ZNfQcR89FezWtNp8Lc/olNjSEP5gQ2WGJF9HvRaAsx6msx9UOHYlVBF8pu/0j+ v/8oPlS0PyIHwhqcJmqvh2ABVaGTqt1UwYVfTbLYDsa1FE6zPE1qtSBLKBgEsazZhLQM gDL5O4FXHyok64kOyG2Fi4K29556q+l8lgWF6YD/lk4ChZAFCY+W138P/CER5tNqvjYr imoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763645049; x=1764249849; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=fQJ9XtNto1bKDWFPhkt3LB0ixKNziS3EmuJ1JwgvOg0=; b=Tv2jYy57BGq9H84+d+RXNwiSV7JuOlRw4lOzczOqmGEzCI4RA6BbIXcHW8EH9+/+AU v9+ZjlIz2XRlXVjqq22HzxSI3Mzg/jB1T7Bl4m74nCO3GzB3zRQ41OLn0e91wXkvEVyK +qhNgKl4t5DPZJj9JV6Vcz4DNkSIs8wJogiaugoBWUDFAuKfPKkplBr0T2eLbNvyauic enNSVmwy5s5z1gd8m+rt42OAk3uYf7pyApryq0g2kVHJVz2gCtAjDxHPMIuAvkC8XrH9 HrsbDrH1+6AgKw7eEzWwJ0lWWYQm2Xu77yKZZT1d4MiflnYf3BE4ni2CTLH4TkZ+GAcj 852A== X-Forwarded-Encrypted: i=1; AJvYcCXMcyUNKV1cMrmJl4gjyUWvefHvO1Iey5msG2Sb9PcZfeCpntVegct0Zu0PiImndu6ijRyxnHn5gzjKAT4=@vger.kernel.org X-Gm-Message-State: AOJu0Ywi4X4ZHGde16Wi/X9wIBwn3ShkdB/h6qr9RVqWyq/bn8jV7m5B J7XC8trDAEtmpStJrjJUebdkqrpDe4QP5S59dvyj65nQLvgW5fFLIDop2YgRm2YTwNk= X-Gm-Gg: ASbGncuW1NTdp/xYS/Pg5bKlC1+3D89PBDlS/b2ilAtmGU2qPgFpprrv4yXkkQhiVhZ Bomy9gdUN9H3SkVMhMMa52lfK8C3yuY+9MYmcGK4VDUCVfPbwQGt/gg2MZYnGHrcP+KM3hOlaPX HtmH+NhnDLNyqa+VT3X+o1ae2gvl+BuEeSjvROGpZdOyscbZRWVFzME1zC935RnkMukE31Vp0GS n6mbG4IftYVMh5m54J3ltj2i0OtkyoozCPJHpIRj0Ih5hhDNnCFhOj/F3sNnp7t1J9xNlGUNwwc 6NGYeeODu0PLXGPYUYfrt3hTi92gLnpmP1l88dUXn5QQxtR+TqJDDyn6oZpftM9GEdc3sDhOcrl jIzyIqhrHUhGN/3JTOzXlPYXbOj+q+dS1dVO+MMo7vKOQ4tz0lTOkFe274185aBuw4RJeYtxiDX EHDU8= X-Google-Smtp-Source: AGHT+IHe1VrYNEFSKnVFZzn6eN9xcn49No4MD91AWIJrNPyNSPzr4/CBgBGVsemdF8hxk1ZXqq5v+Q== X-Received: by 2002:a05:600c:4704:b0:477:7d94:5d0e with SMTP id 5b1f17b1804b1-477b8a9ab58mr28905855e9.27.1763645048920; Thu, 20 Nov 2025 05:24:08 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:37af:6c1f:28a:47d2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477b82cc72dsm46762935e9.1.2025.11.20.05.24.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Nov 2025 05:24:07 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 20 Nov 2025 14:23:56 +0100 Subject: [PATCH v7 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: <20251120-reset-gpios-swnodes-v7-1-a100493a0f4b@linaro.org> References: <20251120-reset-gpios-swnodes-v7-0-a100493a0f4b@linaro.org> In-Reply-To: <20251120-reset-gpios-swnodes-v7-0-a100493a0f4b@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 , David Rhodes , Richard Fitzgerald , Mark Brown , Maciej Strozek , Charles Keepax , Andy Shevchenko , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linux-sound@vger.kernel.org, patches@opensource.cirrus.com, linux-spi@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1145; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=T/cLF5pkEYUrhB0PpULA+kEHdrTrynh6SpnU2EG+2zI=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBpHxZyq1RhLZnYaknhB1KZ4rmSbfeSyk4JclFra WwoR2OkXHSJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCaR8WcgAKCRAFnS7L/zaE w497D/4lHaTdMweES9UKFCv/L+yKEDQDbLoma2l27haxeLwUNmH0ThjalHneW6hHUvAJ00D0omM tQhDnOOsXRxFbWaX+AF7SGzct6S1vMpC141rRabE/dEOyEbQPxcUMEQqCxZoakJoh8gKmvvl3Pk HRwLJO1bsiozYXRhwwVdXqlMdob2UEp3X/hW9SCxwCoXAGSiKyg3ZTS6njxVPSvxqDNgh4ai6qg Gd4+mO1htF54C6V+thRwG274xE7UcoyV0sQWseE9L68I7tDga+WPGstkblKAB9etgWvE5OvUL4h SueuDW28Rol9RWn9W9wc9ZTN3vyoeBtR5leuLv7B3IpHxF0wzu9X8bFXGLY71OJ+Eor+y4zRWmo X99ipgf3dle7ixTqcXBi1Z+u8mHHQ8aZi7KQWX6tjlQLQp32wPhRfrU+wo+cV14MlksFrKMcyJQ lkkc7HWZiIYcEYMC7n7mMYp3nfITe4g4wEK1AGIgXVNrE0VuaLybfqVw4rCXpQ30lvhNr7lLtWm 3ppsRU9iweLn18D4YOG+is76DHa1nhWoOpedE6JTEdEriIAMaduiRPQlUl9rtQtWiwGG6PVRg/z 5VSKvIf7rFG9TAoOTjMcyWN1cyDJMjK+rCOWxv82QR4N2J1Ayjtpi2Uh9FmetW6sdrqTOEH6FVg EzNEpn/Oak+xpUQ== 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 Acked-by: Greg Kroah-Hartman Signed-off-by: Bartosz Golaszewski Reviewed-by: Andy Shevchenko Reviewed-by: Charles Keepax Tested-by: Charles Keepax --- 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 Tue Dec 2 01:51:45 2025 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C10AB21ADC7 for ; Thu, 20 Nov 2025 13:24:12 +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=1763645055; cv=none; b=A11CAuJ+pFYoE4d2a97TxHHqVqR/wCu34HeKVFwPv0Gz10eqU6X0oZMJTC03PwnWENMScMZJnJLq6umNMkzivtQgXa8Pcs+xdIfJ9LoFV5wZe1+SqM77RVbso3rzHgjNBVhTkSMj7Dz4r+dq5twbjLcPJo1dzlV3NbAHDDrTD0M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763645055; c=relaxed/simple; bh=nGvOsKJSYyuX08yZfx7ehkwdqK43axSBuUV3X7zPZPY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Dg/x/RplAFNp71A1JZDlt5dsjYMw/A4l7i8WY9RhYsMRafhardNsgI0Yv0M87PjfZjqFTxeEOiGT0cl8Vi5XHdEbGmqOVAmqFoXX/8quIau2urz/d/aNOrp3hWmvaY+1F+QLFk3AFjAlKK1y11kPjWNRO79w0NlD3920ntKfYss= 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=FWTAwCPp; 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="FWTAwCPp" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-477a2ab455fso9992515e9.3 for ; Thu, 20 Nov 2025 05:24:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1763645051; x=1764249851; 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=gjurEy66uFzhgqR84OZ+03Q+oPyKtXngi2acMZEt35U=; b=FWTAwCPpv8zMKVYk6RmBR2VcLCilJrqKmIuPryZvlYK2tASFQyFmtXfn21PP5Uzr8Q O40HOid/Db42o0VF0e3WO9B9Nn/x7OnexGenRR9sNyjwlQfY5sKedWFLgv8w5TW/BoeY oWMEF9QXBqnkCKT5sI3qzzz91L8Hs71xJDKgSAsD5dB1mbM5990K/Ag4F0ywvlfbn3TQ 7ZpAfboyEH3jAja4klbyekpy8lfKBatR2XRLxNycVMNL5Jva2V960s2W0rnENuh0VjNl sm5+h0W2WV6B3U1FmHeliTRb8odAxTiNAIBd/yetuulgNPtuVgvZtg8JO4Etvlkmf0qm s46A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763645051; x=1764249851; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=gjurEy66uFzhgqR84OZ+03Q+oPyKtXngi2acMZEt35U=; b=WVu/YuqNDTIZiK44rWQlN2JU6Brwyr3Zo0KgvZTHU8OtXbJO3CSGYBBiycQ2a4DNl3 jMKP5N7h2deVkBh/WBHR5VLNfbbOTHjzE96kcUJcIEBMaHT/Rc1GAhB5Qn7ial0hRcnQ zuGP5D+yg1sEy0qNJs3t3nKa0hJxtx8IwycuKiO5152sQs0WSKrQo3eDy56/o2QvSfvp 2+LbO3iH/2WXAg8pxyh/rVWIfrOLtdY4ngvxH+n4TpR3dJzhQHO+u0Zrm6LxQDfL2KrN hWNtsM8QpyLcYB0mX2RqadN843J7NN07cYdcIszirC8Qza2OJqi5AFVB+Q+4Koyk39aL llRw== X-Forwarded-Encrypted: i=1; AJvYcCWOvdCNr5U/xZspgAlQjVfbbBOXIefAtS0loL6FNwUpnrH77jj2XAglrVhPzMxQ7+tFWlq6qEs93PxFRVU=@vger.kernel.org X-Gm-Message-State: AOJu0YzaD9yHhEkyw74kWqJ3tTxT7ZWpm2KlI6XRXuTEy1m10ZW1YFrh 9VwMv+qbjbIhx0fZW3F6gdE9VEci20EVRfsdJMsQdkgq4YAKiQshZCNIKYBxOWCFQtcNwsVVOdg Nb6HZLLfk6g== X-Gm-Gg: ASbGncuru5MySIdddjGp05LYea9z1HtzU2r4j5NmXgny8MAhczOHfQ2WbiDMAd4kyxa 6EizovCaLbL1KU9dySO7QTvqncnelx+zQi32v1NOsYQLzbXfglVYhEpdUhIHz8GwAbvFtZSDKNB EL3ToOOunphqPB+GIi42d2Zc6wv/tUy76GVl1L0Be8clLxl7rITshz9xjCCRkon6aifwLOHGwQS HlR4+ZMmAgzmRzPZ01LDEwaRJizDTwDbcGAQmVDhK4anoRwHiPDtBZgO3KT6wxcGJEBm3x4/V1/ UokqfODjxCrTxiXsbJLBXyK/OGzMG91TCCSYsKBx0WFNUDH9MALMAWssuq4p16FN5tEjMwQcGGz It6CVMn90lMWffHxaGCp5BssJIQAAVyfLlgznITpgv0wpQRRMwaHDYsTO3gqPRJu6sHLd3BPu7O x8DRk= X-Google-Smtp-Source: AGHT+IEoNE5KMStZzlaZi+zRosECWOIXlmzVTWZ/StxtAPpEZjiVCwXj8iHk/ygAx9K7h6245IYWoA== X-Received: by 2002:a05:600c:154d:b0:475:d8b3:a9d5 with SMTP id 5b1f17b1804b1-477b8953efdmr36161755e9.10.1763645050673; Thu, 20 Nov 2025 05:24:10 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:37af:6c1f:28a:47d2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477b82cc72dsm46762935e9.1.2025.11.20.05.24.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Nov 2025 05:24:09 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 20 Nov 2025 14:23:57 +0100 Subject: [PATCH v7 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: <20251120-reset-gpios-swnodes-v7-2-a100493a0f4b@linaro.org> References: <20251120-reset-gpios-swnodes-v7-0-a100493a0f4b@linaro.org> In-Reply-To: <20251120-reset-gpios-swnodes-v7-0-a100493a0f4b@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 , David Rhodes , Richard Fitzgerald , Mark Brown , Maciej Strozek , Charles Keepax , Andy Shevchenko , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linux-sound@vger.kernel.org, patches@opensource.cirrus.com, linux-spi@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1022; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=prKyYsy2Naj1W4DD2JlmvlVbpPDmr3NjqYB+l80Q6J0=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBpHxZyYz672OW3spWBP1aLSGLK6NVlyo2KR15zD qV9wSVZNSeJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCaR8WcgAKCRAFnS7L/zaE w4uhD/4lKzA6330y3LuwdXfUPHULtSPTWc2hSoyUauQHiF9BW1gHRCnIxQciTJcQvwBgShkQnXN MmPCgqPvHbL0ndMm7oRye2jzzt1FiOBGCxWDNdsuopO0Uy0SqVTwbkPrVsqTtuk90ygUnxrf75j pCsgPkPwONimP7Dmw2/qQz8uW8J87ZRpVRoy2+z6sMdyFwtD7UySvytPJa2Mik6zVtNYoL0d3C1 3f73uB8FTTO1yfVvTbUqMzlvRPlOSUkr1z+BEL7MozwcslXpOeqDhC2oFMBS+xBn65aEM7fEZQ+ JIaJGzVOjVm3jtJ1L3ghuWRKQvsOULZI7XAmRxL+psqlnIts8elhdXU/B8uOSV5qmGQiqi/aHE3 88Ec3e9LRJL4cvfRlPMXI++28Q/TLHjBJhZ2RQKelVGenfzL77Qe8RV4ZtSeixonVvh1bqexPtj T220Uu1tJa4WPY1BaggY91dYNwuEPpYDVGsDYOGuGhb+E4hxoUGGwMxyiTxCHflzZewut7TjhiD /LIiaikuy7GhKLaj9s7gu+Bjnyn+FLIJ8VP6NBrrVL5ByrpXceP2mC1mIgw09lSsT5Ppowsaftn FOvmyngYhvw9dJoYvhxQdyr6rXsSgvGy7sXdCW/OpEFtrMCf0E3V7inlVkgzTSzjj8Dw91tednT JRxaeZqtlup3lkw== 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 Acked-by: Greg Kroah-Hartman Signed-off-by: Bartosz Golaszewski Reviewed-by: Andy Shevchenko Reviewed-by: Charles Keepax Tested-by: Charles Keepax --- 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 Tue Dec 2 01:51:45 2025 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3C60632F76C for ; Thu, 20 Nov 2025 13:24:14 +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=1763645061; cv=none; b=nQVA4vYQ4OWeZWS6XvOM8NhLihaz/Tj5g2byzQIujRPOUD/3dBiQflWss993CZMmvbp4RSeU2T9f1hqM5ysldd8pfbQKNuEymQq4nr3FnYymI5ZjVs18GGQV9c52xWLqxqDv9vfyBEqW54c7nglvNYaPcE77CuRQrGwB2nHsP1A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763645061; c=relaxed/simple; bh=oHRVYdIjd/Yd3H6psQO5ORnSPlcaHmVdQ/RqmmG7LOc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HxRoNqCjigt3z3J0uBPWVOEIiQ+sLeBFZ6UFHwd+OwU4+1B4hIXy0b6MaByVMxVCrtUUm2PLRS/2aKyA4n5fnO6SYtBhPFRJAbjbMMgfe7ph4aUlAdBHmaHW8A3xHm6DK66yVZk545Eb8R1cDbKI/AnEhGx9gMO4P//8A5FROM4= 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=bPFO+MtV; 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="bPFO+MtV" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-4775ae77516so9794595e9.1 for ; Thu, 20 Nov 2025 05:24:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1763645052; x=1764249852; 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=MRaQQoBUjPToTmVTOLCnaE+FSHPEdMRVOEcLCHXxxj4=; b=bPFO+MtVHT3k7aKlTyTpiBEylJlA21SVZMYH9YVtroTjV0wEESBYXA1usedq0ydrn0 HklIaqmTcI/cUZxirvQ2nYi0qSUu+1PqU7SsW45dyruFMiEF0+VKzb6ZhnWPd+iTHXHB VRUz3nMG+MPDIS0ngWXBLPLDfJbQC2E5+Ch85VqalsTLsv5OwOLVK7C/tlN4C0Wn0i0x IppdBfPL0/Z9gt4i6yPCU2iFX5GzJHss8e5PV7+gskfAimkkCc/uauiB9d6BAKuSScRt y+Rb/vYrHu0cq5bNNPhw29KifMoKeyKnQ3dSMliTLmp2mIB4p1P+Ts3vWZhJSQRq3gmw VU+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763645052; x=1764249852; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=MRaQQoBUjPToTmVTOLCnaE+FSHPEdMRVOEcLCHXxxj4=; b=iKu0EOdH+2MGXaBBMMDJYhOWH9ksZZeDTUG3hi/CTTxxwX0BaN6TqRNCWa454qydmN tNSIu5jzZNsF4rLp9Pj0rX2F/hgKTHZYsTZ6PVC5RyzcONTMTACPmIapXA20EFtNw1uk FaSeVBjFhqM0oUcNYyLVxMlM/wn99thjBGWKzenUj0G/sC5VD5JRrDJA9LEkUmw96Sz3 0pPntHjCI3sHpzTxbdjsa2Ot5WlehBShPzVMlU1R066jTffPLxy6OEJLZQRwvup202u/ X1fcpHZA+GoDvB75h26zHUo0OGXei+gmfOg1PGehaYjSzxz2uCwUw+FtmqQ7Um4dB25V Q2dw== X-Forwarded-Encrypted: i=1; AJvYcCXrTg1W6Duj90FFCFg61jNrZhZBWrZipeZ7zj99K3mEonFDCa47cpPbEtXSMnijvTgTYheDVm7KIO+973I=@vger.kernel.org X-Gm-Message-State: AOJu0YxExa+zUpI2FL2egm4LM2CR+WlaWfC1sJTJtME/OGJEwX6zFO2y qPvAf5K6pExDMexXFb56Mj5HwyoAJIVfmVA9XPae/QCzyFGZf+SgUMsmRynVRqBpoT8= X-Gm-Gg: ASbGncvSiCGUZ5/qx8MVRzFCT9ku6JqhwQ9PDnYeGpgM9A3lkflwdOluDYGGfW1s1kV 6IzZtgm73f4SaE/5f9j3AGe7TtJ12lWn7CGGidKInDuIURgsM+YPT0C1GC0kUQreZ9DUK8M3/o+ /Uy/un8hhMnNeUkjZ3GfXu3lswnStDcN5Me2QRyv9ETd5qwN2FHRG7JZalAesHtKEbSSRzh28tA wX8/zSnlUK5XAjFVXhhpH4o2AMyPtGxhun2AI3e6yJT66BJV/DkImJ19beZxV01sZeN95djGo7W QP9ABQ8fc5vH+aJP1OfEl3YZ9gFgjuq4Hg9s94Q3aZZJmOR683kdMdKXnT8xgqhbAj5MThaA8Zn gBiZaDw8YDszYjLAX2oH7qeaqZAisGZqKuJznU5oLibDLgOXMAeI3od2FjG+Cy+r0Gxsh7ih+mM ptybfTkd9g1jc3Ng== X-Google-Smtp-Source: AGHT+IH3hYAe2O/tKOuUpAJ7i/RcaZOaAn9ArFPrD5AK9VGJHEneDKjfYXeaAppiEZHUy4nrflG5lA== X-Received: by 2002:a05:600c:3ba1:b0:477:c37:2ea7 with SMTP id 5b1f17b1804b1-477b8a84841mr2670455e9.21.1763645052351; Thu, 20 Nov 2025 05:24:12 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:37af:6c1f:28a:47d2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477b82cc72dsm46762935e9.1.2025.11.20.05.24.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Nov 2025 05:24:11 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 20 Nov 2025 14:23:58 +0100 Subject: [PATCH v7 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: <20251120-reset-gpios-swnodes-v7-3-a100493a0f4b@linaro.org> References: <20251120-reset-gpios-swnodes-v7-0-a100493a0f4b@linaro.org> In-Reply-To: <20251120-reset-gpios-swnodes-v7-0-a100493a0f4b@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 , David Rhodes , Richard Fitzgerald , Mark Brown , Maciej Strozek , Charles Keepax , Andy Shevchenko , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linux-sound@vger.kernel.org, patches@opensource.cirrus.com, linux-spi@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3940; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=jEg7ScMzld+wLGiHDAncvLuj6Q+b2Nv5Y09GFyLpduI=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBpHxZyYB3Pcu0cgiUmoHlajxQL2+zrp5X3CpVHY lBTQ1ay3vmJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCaR8WcgAKCRAFnS7L/zaE w28TD/4lXRUCRC+Pme/fHRFXDEnjAj6FiVe+JDQdH1IPiDeM56/qwpqkZ82DWBdobLTUvtx60FE xGzbd/A3USw5o607LH0g2clGxtTUUPH4iQspgkeJpdWStEnmxDDUhljg5gmxpCJb9ybB/rJV9jO Ft9X6GPHwCFz7GSUkQsWfBCEP8VnYgEUoLRmwrHdNO/ShEEwE8fsNuM0K/lqIdNArEhsGViLJrJ /wH+ajrOqreC41hSJ9QrjXj3ItlYRyl40gnwFFOwS1FdetroL73JTU8u657ZBaCWL9NoAqjpnQt uE8vxzSE0gp0tyo9aH5NaWsFrE+DZuqhb/4znM76VhN0zrfxKpniM230qLAbEkjSJGIYoQ1Gd7C 0Lc+lkkQPEEeoPS584I7yvNZt4lVDtG3i7KO8D7w0Gs0UA85fP5XpsAq9eIMx68qalwLRESBlND FucPzSS+JIFDu8fX07MD3Qsw2fWqjFSm+45x8cMR1onVW/vtJV944OvC/Cl8kryEL9GI0EQCIBM ZuPKvhTH/G2EAu9IwSAS+nXRKVn9LR9ELm7UcyxHIkZ8V/TvPHKmNpyCdYyQ1eHcdNqlnluN8j/ dnwLWN3lCCXG7o1+gdPOJ8/VbKnOzKnVVic9FNSD3HwHEJo7bnb0X1715D1QXqjSHRhKiacmeAV ANetY0o+KvwXmxA== 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 Acked-by: Greg Kroah-Hartman Signed-off-by: Bartosz Golaszewski Reviewed-by: Charles Keepax Tested-by: Charles Keepax --- 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 Tue Dec 2 01:51:45 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 5A568337105 for ; Thu, 20 Nov 2025 13:24:16 +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=1763645061; cv=none; b=W0aHe6Qb/nwcYTv+cw6drMmMpzJTtoTTC0eX2LptXPk4GDErKpY7H3gANS1OQs59DdkmKnPneBYqQKJ5NrpDXebxQ+SAfovoYQAxpdBUP2i0qY8EzdN4oFIupQslJDcY32oi32nXeuqE4nzhyMp193MUoI9l333T63+ZpqoSmnE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763645061; c=relaxed/simple; bh=DAh7GJYihto1rb/7izzaWNy0krHQiRwe/MsGu2gJbwU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CE4a1THeu5ImpXkZlkLWC7VoAv3CUf55Oo9XhqZBbhcpEs1wmX9mhBsyQTNjrLW4xOWcMyGYMKqSg6yHNbQ7V0ZwcWxqL5c982AuGixjQmnJm2GkrPZfvJFUVHkNjOibta1CcZnEc+rv/qqz++Mz395uNhTuf66n8R46WAZzEDw= 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=urPHQq2B; 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="urPHQq2B" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-477b198f4bcso6760775e9.3 for ; Thu, 20 Nov 2025 05:24:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1763645054; x=1764249854; 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=T6c4R4ZR/mmanidIpFqY9K6Mkfp/rNBIc8Ut3S49/Rs=; b=urPHQq2BnXPoZn5GWSb+UIUlLXpVVVWHV3zO9mSeowOXZj9LK6Ft3j3cxy+yJNW11M SumN4RtwHCkI/DsiLmGIAKab577LyWf8QEkXMDhY9MoH2zwNN6sOjt9j61LaJuBi3wWv /LsOnsZJmofID0SxLrMEC6raA6s5FE4aIAP76rnyESw+J6Myu4p8LTuR+nzTWNW9ru1o wjzD9nlEmLh/i+EYy8iKd9ypowAM0cGs0/VEPdwtVlKxdMcDBP5HEntQuVoIWbIBg13A a3kUamD8B9LpqySwku5t08sQZNpi7P1Kt70z8pvEZn1yAo5hdjNey+jKCpPVtSl50TT3 uIUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763645054; x=1764249854; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=T6c4R4ZR/mmanidIpFqY9K6Mkfp/rNBIc8Ut3S49/Rs=; b=R5ByFjKx58wjcQrjP3kiqynUEa/4GIS3XzfXd48so+alBomr8u/IaSzQXRDhqfqnxT YT0PrU7sPu71EMB5ceQkmsxTKac6JpzodIl8uZqmA4xeCo4B3LORHFVd2D1i4QB/OsJY y8SEoucNwTPlo0WqTwev8FzbG/s/9E+pAs8oqYRAKtCIOf3cI+K6CzVvsQTiVL0Nn+mN ES+oIL5kZdRnuCxlmAjt7WtCAFyy6tAYHaVzf7M7z0llOnnYKeSEUwt39XAg4c1v4s5i E4Re6JWzr9f5TlsFYZOMMdTrbiBD75v4keOGXA3cwSFAcOqydOWQm8esUqRbAIEiwmHS 20Lw== X-Forwarded-Encrypted: i=1; AJvYcCXN2qhyp91VYK3b5+syNLU256uZ0ojJ98XY7bq0sgIJMUre6AnMJ2Ghm70GUAYziovubv5XB3Kcl/lt1Bo=@vger.kernel.org X-Gm-Message-State: AOJu0YxVwW45+l+aeJN44ZFeKgkiqk21cbKgGTwGDKpa7EsqrHnN83se Zsb8KzEgbNsTLq4VvQBvz8y1RckzijsTC0Ofje+1yv2B7n6x2R8JFXczp+Q1wjZpVLs= X-Gm-Gg: ASbGncvH929hU+sqlQvM2Ryun7LJZxYzKY8MH61enbEilgXdNT1Ycw3dzoUddCEeHPV WLncVKPHIilvsxpcLRwV0WcWFaL8yyOcA6J2ik4QGaqO+d6k782QhBVC903lxUPKoyTc/UhcDvE 1UjuVYAmLINv0z9xbEggybiaXwQOVdsMti3AZ56Czs+FFi2L7qtxrfb04w6NTgxPo+3QLUu093j oPP7W9VrSzoVBfhpgNprlge8rWdObkR8wX5+8wnUkBvHbcYmBootTmt/900VBMxbIi75+QUYPUS 2PhLRzlbs4PdwzS/8rELzYtLnB8eMQ1PmzDTC8tLcjrIqOHQhUTQQjDY4D8F3p7XAW9eH6fHfFp aVaJXt+CfhYyGbiEvKh8jEQ+gjARuSDmId9FaR/Ymldis0/177JIplEnYfApDGaRNSSCh4WkuuL hk2Lo= X-Google-Smtp-Source: AGHT+IFF7rV6uBva+BQRyBrCj38/4077uancqKeUXViRLWTSQtvD46FVILY+Uc8Srf05smNtarypTw== X-Received: by 2002:a05:600c:1c02:b0:477:6d96:b3c8 with SMTP id 5b1f17b1804b1-477b9e377cemr28611695e9.23.1763645054075; Thu, 20 Nov 2025 05:24:14 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:37af:6c1f:28a:47d2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477b82cc72dsm46762935e9.1.2025.11.20.05.24.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Nov 2025 05:24:13 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 20 Nov 2025 14:23:59 +0100 Subject: [PATCH v7 4/9] spi: cs42l43: Use actual ACPI firmware node for chip selects 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: <20251120-reset-gpios-swnodes-v7-4-a100493a0f4b@linaro.org> References: <20251120-reset-gpios-swnodes-v7-0-a100493a0f4b@linaro.org> In-Reply-To: <20251120-reset-gpios-swnodes-v7-0-a100493a0f4b@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 , David Rhodes , Richard Fitzgerald , Mark Brown , Maciej Strozek , Charles Keepax , Andy Shevchenko , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linux-sound@vger.kernel.org, patches@opensource.cirrus.com, linux-spi@vger.kernel.org, Bartosz Golaszewski , stable+noautosel@kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4326; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=d76VHZwIwnB+K4dfBzZLwy1CDep3KCUqEcn4QrJ+rFU=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBpHxZzNvrgBP2H3ds0pVhTuGe6OzgZgzq1W6R0L /mn/TbtxyCJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCaR8WcwAKCRAFnS7L/zaE wxXbD/0SblSbNyyKOZkdAfFJSkmxgHZXxNFq3JE7HL0wgdCi0AO66QupG/HPcKXjULfDqHhCGwd 4Kjne31/UiQLfV4KublOc+BgyLqpUB8TyFdDpjBVo6sFTKUi+ZsFURo7zYDLtY6ngMIkF4SAqjx vEKdX/5ipoqSxKY8ZuYceFNcy53UC7Zo41qPOSz5ZNgB9+aWlx/DxTpztI1sC2ljYROdeEtPcd7 T8se4oUz8DvyzCxNyFa/cJ/Xa20jmqNH7ELcKGG2gixZfJScOFak5rdnxUPPG0yq/RpkuSANFIU 8Lqn638HDK2hH0lgEpJ2XqCi/4pEZGCeFIDf23LF6Tz4d2tO/LAIgfcEwy0SbzbR7RxQVT9qJeD ktQWF4LQ1th9Cg1Oz8e+vovSyTbSKZh1c5entNqpyk9VqcHpLKltFXF98Sx4JCr9aEH9NaOmCwF jPExra5JKYuRn6RkI3/0otuXH7sqEY7CWSCjP7Aw3JH1QsMAI/b/jArv90+WqjpMlmFt9Z23ilo ZP7J7mxpg5tjXd9OcTNU/ztnRyvBSmd/g+KXBrVlWMMXaXTx4Ous1Upj4XxDBS4+kIhZ9Z4oy8B Ky67aBRO8dFoMYwv+LfLT7OXtOobdvnqiVa1DMiUZpRLP7s5k9Z2o3uyjvVt4jGcnWbdhgoRzMg 8pldvv8LYKz0nHw== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Charles Keepax On some systems the cs42l43 has amplifiers attached to its SPI controller that are not properly defined in ACPI. Currently software nodes are added to support this case, however, the chip selects for these devices are specified using a hack. A software node is added with the same name as the pinctrl driver, as the look up was name based, this allowed the GPIO look up to return the pinctrl driver even though the swnode was not owned by it. This was necessary as the swnodes did not support directly linking to real firmware nodes. Since commit e5d527be7e69 ("gpio: swnode: don't use the swnode's name as the key for GPIO lookup") changed the lookup to be fwnode based this hack will no longer find the pinctrl driver, resulting in the driver not probing. There is no pinctrl driver attached to the swnode itself. But other patches did add support for linking a swnode to a real fwnode node [1]. As such the hack is no longer needed, so switch over to just passing the real fwnode for the pinctrl property to avoid any issues. Link: https://lore.kernel.org/linux-gpio/20251106-reset-gpios-swnodes-v6-0-= 69aa852de9e4@linaro.org/ [1] Fixes: 439fbc97502a ("spi: cs42l43: Add bridged cs35l56 amplifiers") Cc: stable+noautosel@kernel.org # Don't backport, previous approach works, = fix relies on swnode changes Signed-off-by: Charles Keepax Reviewed-by: Bartosz Golaszewski [Bartosz: - remove unneeded Fixes: tag, - use PROPERTY_ENTRY_REF_ARRAY() instead of PROPERTY_ENTRY_REF_ARRAY_LEN(= )] Signed-off-by: Bartosz Golaszewski Acked-by: Bartosz Golaszewski Acked-by: Mark Brown Reviewed-by: Andy Shevchenko --- drivers/spi/spi-cs42l43.c | 40 ++++++++++------------------------------ 1 file changed, 10 insertions(+), 30 deletions(-) diff --git a/drivers/spi/spi-cs42l43.c b/drivers/spi/spi-cs42l43.c index 14307dd800b744fee17edd864688a68c65666c68..4b6b65f450a86c238ba0c66e034= 62c775d12b8cd 100644 --- a/drivers/spi/spi-cs42l43.c +++ b/drivers/spi/spi-cs42l43.c @@ -52,20 +52,6 @@ static struct spi_board_info amp_info_template =3D { .mode =3D SPI_MODE_0, }; =20 -static const struct software_node cs42l43_gpiochip_swnode =3D { - .name =3D "cs42l43-pinctrl", -}; - -static const struct software_node_ref_args cs42l43_cs_refs[] =3D { - SOFTWARE_NODE_REFERENCE(&cs42l43_gpiochip_swnode, 0, GPIO_ACTIVE_LOW), - SOFTWARE_NODE_REFERENCE(&swnode_gpio_undefined), -}; - -static const struct property_entry cs42l43_cs_props[] =3D { - PROPERTY_ENTRY_REF_ARRAY("cs-gpios", cs42l43_cs_refs), - {} -}; - static int cs42l43_spi_tx(struct regmap *regmap, const u8 *buf, unsigned i= nt len) { const u8 *end =3D buf + len; @@ -324,11 +310,6 @@ static void cs42l43_release_of_node(void *data) fwnode_handle_put(data); } =20 -static void cs42l43_release_sw_node(void *data) -{ - software_node_unregister(&cs42l43_gpiochip_swnode); -} - static int cs42l43_spi_probe(struct platform_device *pdev) { struct cs42l43 *cs42l43 =3D dev_get_drvdata(pdev->dev.parent); @@ -391,6 +372,15 @@ static int cs42l43_spi_probe(struct platform_device *p= dev) fwnode_property_read_u32(xu_fwnode, "01fa-sidecar-instances", &nsidecars); =20 if (nsidecars) { + struct software_node_ref_args args[] =3D { + SOFTWARE_NODE_REFERENCE(fwnode, 0, GPIO_ACTIVE_LOW), + SOFTWARE_NODE_REFERENCE(&swnode_gpio_undefined), + }; + struct property_entry props[] =3D { + PROPERTY_ENTRY_REF_ARRAY("cs-gpios", args), + { } + }; + ret =3D fwnode_property_read_u32(xu_fwnode, "01fa-spk-id-val", &spkid); if (!ret) { dev_dbg(priv->dev, "01fa-spk-id-val =3D %d\n", spkid); @@ -403,17 +393,7 @@ static int cs42l43_spi_probe(struct platform_device *p= dev) "Failed to get spk-id-gpios\n"); } =20 - ret =3D software_node_register(&cs42l43_gpiochip_swnode); - if (ret) - return dev_err_probe(priv->dev, ret, - "Failed to register gpio swnode\n"); - - ret =3D devm_add_action_or_reset(priv->dev, cs42l43_release_sw_node, NUL= L); - if (ret) - return ret; - - ret =3D device_create_managed_software_node(&priv->ctlr->dev, - cs42l43_cs_props, NULL); + ret =3D device_create_managed_software_node(&priv->ctlr->dev, props, NUL= L); if (ret) return dev_err_probe(priv->dev, ret, "Failed to add swnode\n"); } else { --=20 2.51.0 From nobody Tue Dec 2 01:51:45 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 C900E33030F for ; Thu, 20 Nov 2025 13:24:18 +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=1763645061; cv=none; b=BQ9GETPT/WP+HmNo1jv0/GwP+kWzmysDf4RoJkCVPdP2XfiJHnw8nIfpb2k6MaNtSa22m8y5kq5MkA34nUpY6RQ7g9ku9HNlRbgxYmW6OEAfMqCjvJvKD4xdjjb2BFh3Fo41GgZb4N52cFow9La9HM5qEbpTozEzE8TCTfBXgUM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763645061; c=relaxed/simple; bh=IiJdl/f/j3uvqy4h7tqf1b0BVcaqoK6kqQxRYGFXj78=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GkImKb1JvcgBEvyS1m1LV6SVjNO5fptDhvDMb8sWoan/ZF+jQ2j/fBauO+j9upXOqEZPWoQbQOtxOkIlSGMHx77Fj8N/1YoeyYc0ld7RFGr3n8ZlUS77bf+q+xp/HxgVUoZdv453M1qgdy4sc4FcjNXPHTVf8Wb/qE85ZOujWPc= 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=G8RLaYZY; 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="G8RLaYZY" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-4779adb38d3so6695725e9.2 for ; Thu, 20 Nov 2025 05:24:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1763645056; x=1764249856; 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=tUtdFcR7PDGf6skoQftKs9iIKGP/DcX0bvw39dndE/w=; b=G8RLaYZYO7Gw5jrw62+cc4YGs8H+5I87qrk8yqJyh0+Nc4+zvBs8qVUZywf4gWYG1e F5XhH3TtXDPqkzJ6t95+f+XakEd6eWR+gcHGRJpOtL+oqWa5Vl5FLnIuEKVnKcTyvifZ cj0lz5ljqc/hEBDLbwzHeG0TuzxZP49kTZYIb56kxDZ3Dvw8ikpMLBfIiEPpaUMCB8S3 mVt39iyIZ581uwlj2d22bCZTTc3JS3H/KN6jmJvSf39UFimFkCq3CV6PfODYhUrKA49k A98GIM2mFEZzT2aZth+OcVtt/a3OSohtRSLbsdcU/UlW4il+09jYYUbBbejxTxLHBHhE 3Auw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763645056; x=1764249856; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=tUtdFcR7PDGf6skoQftKs9iIKGP/DcX0bvw39dndE/w=; b=b58OBPcew9I/qKTxNcei6Zr26TWzGNUWpa54A6vMC5VWhG9MWN33h7hIC/v4HJjNX2 ANp8i63yjNNp1pn8enO4zwifNUwaGvpTiuDDTcXW9ZQR26PkKlvGpX4n4MmEZ5q6N/Wf vUlATcG7rEezPFDMRiL0+opJAbDChef3kQqbtX9i9xRVZsm9XAfgX11tD3RWI55r3Q7V hPV8Z8b+FfB1kk3l0DTSujvNTNZWMKiVnHWMwAn6VqbApCEi7s4h7mETUEEyQGATun+U Jez6poJiS2Jr2hFdjzXCC44o28RyNXk/+h/sXLg2IvYKc/T60gqbKuBPVFXR1GvSSoAn fHNQ== X-Forwarded-Encrypted: i=1; AJvYcCVPOAbhgWHa0XwfhjAQhXf1BBI4FLMdh18J8IzR3GW/tQp37nFbEGcRfb2tqpAKI9t1biYQ+WSnJuYwqPU=@vger.kernel.org X-Gm-Message-State: AOJu0YwwCoNGCByYFKNYoUAvHYukRC+mMiJcQvkNQIyPHVsQdxtXJE2r 4E9at4TGU/qnZwXS8r6vHf7uQNxc62lCfVEdIedftzF7JWKcFPJfAdSHjyS+0HDxw7Xg/d0xKbi 4S1hppvU28Q== X-Gm-Gg: ASbGncuIXxJ6ZemUOklJjzPjlJpp/hRnA7XKz1iSfM/kmoLCfAq3i7qiZT2ro6eMqdF i7zOkI6xGJ98iXMg+3WMh6L0BWMN+XVz+xyHUlmFmOavyzUmvt4NQtMrThhrlhZI2bLU0ZMxNS2 /IIZi2XUeI22ef/9dM+cXw12zyBc9revEF7y4z39/VCdAUuvpR1AZoCxHdnids0ri/usQ+AUtos pG47NwcibF6lEJsFE3f5A92rlBcbfWIRSXXCn4w93eSgQtjfidt4tasqyc8Bzehh1oXxCOuGHxD tHZ8Mcxz61D6RsUGfswIG2Goahi0P6lfOeiYkmLRVs84W9ZwZOD+3Ej03Mhc1OVP+ppmcWkGpDq 44hyEWGPwXXNaVUMAdiQUcDJli3rINrlthHalZXGO5cWJRsENjL5yUhvlfV23qyZTCSjABgEoC+ iud2g= X-Google-Smtp-Source: AGHT+IFalJewbs1LD2Bkg7N04ReZJFPTXvGDLHsrCVhop71bplWxSwFfjvzN6B/bqixKbIyPFxze6Q== X-Received: by 2002:a05:600c:19d3:b0:475:de68:3c30 with SMTP id 5b1f17b1804b1-477b8a8a606mr41272065e9.16.1763645055734; Thu, 20 Nov 2025 05:24:15 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:37af:6c1f:28a:47d2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477b82cc72dsm46762935e9.1.2025.11.20.05.24.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Nov 2025 05:24:14 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 20 Nov 2025 14:24:00 +0100 Subject: [PATCH v7 5/9] 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: <20251120-reset-gpios-swnodes-v7-5-a100493a0f4b@linaro.org> References: <20251120-reset-gpios-swnodes-v7-0-a100493a0f4b@linaro.org> In-Reply-To: <20251120-reset-gpios-swnodes-v7-0-a100493a0f4b@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 , David Rhodes , Richard Fitzgerald , Mark Brown , Maciej Strozek , Charles Keepax , Andy Shevchenko , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linux-sound@vger.kernel.org, patches@opensource.cirrus.com, linux-spi@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1686; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=VYVRdSRaxEEjo1QKUSMSRUCNb9ltdhV2FCewzDpDJRI=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBpHxZzTRyJ3yFk+mKcntqNTthwYQeC6YFUGZ0Ss RRAJgqCEViJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCaR8WcwAKCRAFnS7L/zaE w96eEACluwaG4DnypsI9eVhneBH8csPp7dfpvZWX2U9ADqrnfnjShOcHSdRtJ/6DInZkKYTbv0E d/lwYpejv4ERfIxbYqmBHtVkbNhZqHsh9PSpQom6diLujjOyPDDj1I7CthLXOHFJ/8/b4eoI+oM fY35HkjgHdiDdtKrJroee7ywHg+TP5ONgga4+0wPK79bEfVj/1/RlbVALT//0oEWiNempXiVm/w k9c4bfya9La1vu2YWwjMjwkRIP9UQ31ho5DQ7DsDrHR4Khuphfg/ufChhcZMO9TDdP0MXIHRjvB Aw76+E1oOhmA89IVtjtz9A2CPpkmoEjzsq6XZapNNcWEWR+LUVzh4hq+z2IYfnyHIemQkXT7NHM dsEX2HoktgqM98LyyjhngznBQeUD68dPswVnq+r6pOVzpQ/iB0450krvwDwX2cMgaQXJWROoxFE CvgkXxRxvwthH+4rMO1c5QsnofHDOkZa3JUgoH6OfKCmktHemI8c0K/9JTgD+GHVJ2mHK5QzMGD bPF7a1MWXaEYumrdvhcHjqd4oehQumS+BimuNSKTgrEbnVoKmihFfA5yqmjK8s82eAyNqAeYFSu Hkzz5AcTcWNVHlYUXJhfRKYpjZ12Fv5Z7z7xsmmFpv3iASlW+egbuZTnDGRw7CCaXk7cvI3JYMt 1dydqbyLuCc1THg== 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 Acked-by: Greg Kroah-Hartman Signed-off-by: Bartosz Golaszewski --- 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 Tue Dec 2 01:51:45 2025 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 AA4ED33C1B3 for ; Thu, 20 Nov 2025 13:24:19 +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=1763645063; cv=none; b=njvepgmulUqs6vj0g3CUVnlrI/370lwKMclDIyGXAN5W4uuMgdA1DaP/bhnd5Ci/yLkjtqr+X2yXmNPSMJAOuvtsqsqAVEdWIBDkMO0VqPSMN8NuB+qKZg20fm1oT3p0ENeb5VkT514D5IjXIaz7tak0/1r3NGTHCkfoYc0rJyE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763645063; c=relaxed/simple; bh=xKxkAWH4Dczupi1GaaNtdbgqFj51lObDxl6PmZMGnFY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tpHFM99IaY70DZbS/01exgr2+f9l74yhLBbnFLN7beUyV+iCZurAbULPLDXi5fvmH/BM1xywGDZcSl982bFddnYvsIUkInyovBV0vb/8ggniLHQ9FrF3N3plPTIfHx2N43K8XEB98/YdkbFIAJwdb62w0EQJzy1lTdmtZsrEJdo= 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=A3qk6ZG6; 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="A3qk6ZG6" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-4779cc419b2so9911955e9.3 for ; Thu, 20 Nov 2025 05:24:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1763645057; x=1764249857; 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=M5vizWl8rhZW0RSqNph2iU7whaAxLz0S9Wta2HZ+aHY=; b=A3qk6ZG6b1TfUAWZjsrogkhVln4r1BtSYCh53d1xxPmXSokPZqbzbFKNVBzsQTRVUZ X9kaBKgAkpvKDTBRPgDOgBrjSE8hPzsdvUjPY0KJw3Qsd+vyqda9+KIi+oVLUD2OSr7I v7WJY6ik753D+Z7VShqIh82wxEPVdGsaYl1ZJlAgYgcHOBLtf1wk9VR36q9cARKLTy+k VG2gMC8Hpzf/rBKP505LfYPsPNpLHA4EkRJj+Roll9dfACZJH/ZkCN/ZbsrdfHABOCwB O9cfRB/NgcTumIZtjBlx6LLH/dKJdvcZi5NqJ1t1ESt04sTBI0Dz3gvW2QFncX9+peXs o+6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763645058; x=1764249858; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=M5vizWl8rhZW0RSqNph2iU7whaAxLz0S9Wta2HZ+aHY=; b=NG9dZoDRYYMGQ4OTUSgASKNWvxJX2rW9lPLiXjxNz2ifEBa09fWJik7vFZ4EF61KmJ EZ2EdtNgJeUZOYsvh7E1Xxnzb4qqa2kRcHVIG5rREx+bAG6sF1kZflQq8iz5UBJUMPwz HpGCtnMhPS77b5Hpo3oUtkFhLWalkyi816OjxpkhcyYcKBh8k2aK+j13vUpEbVIZgFoU CAH2vTxKV6jztXRjtlDG+ABapXQHxKAUuZOdWJ7vtLTYoqfgYDtL/9Yx0UHEYLo7TY3y 4dgQUnfQ2X4riSsub+B9yxa4W0TXrwfd/83/RDwlDnufzV+4XP1xiDsCqIgnOrnoVHwG Gs8A== X-Forwarded-Encrypted: i=1; AJvYcCXYcgPOw4zt6eeTwP0MoC+3TVppQ+InS+3y1JtyjlEJhfg47UdPW75S0XxWBPZ1aaEoiD92t8AZSPWgvFw=@vger.kernel.org X-Gm-Message-State: AOJu0YywDDFdph7ADv/E82S6i5O+rcTw53XGGpbN0PctJrfs6nf7+BRH /ugK0G8QgiyyllUH08Gg8KZLzxPT/EQZHU6gaAmCgPul+OK71hAf0aKv++HFHTLEAdo= X-Gm-Gg: ASbGncvuLE6zt3O+C7jfrM3PYPC1bWLuwZ00+v406iI5LtIPXSR+3Qkaxps/zcSnk2v ySRC7fTDioJj+R+l7QxPee4zzyJlBa6O3ylBRqWuSvsit3ZeIgJwSOVdi4BEKkd07VqhyG5jeoL SdjCcOhW2AHp73McHN9xnaNl1HnuOjEf0vvz067LfgBttOSXfyr2xMd5ppCDBJMk/AmVpTADZVQ HGLQMElrJE1sNyJKDh0SkCsNJqfzlUNKo+zi4yFS/GWuwiaAYS7KEozxt6wb5/WjpBzEFrz982W qFsbGyG6dcjP6av5WleQI3lk04so0v4Ftmweevpyju6ausGYM744YgSIC32mEJRGpe94wFpbxDu L2M80AWRCtE+HiatDWqJ/w+BPz9633IuOJVeA5E3pZHY+8vrSe3xblh1pr30UucTJWsSoKhNwPD 9g5Eo= X-Google-Smtp-Source: AGHT+IGRr4yukGKYf2pApMEgpzEgng5lwLAdGmuWgZBY3u2bUJBecmuK0ddXMVwX0AtEQYOu191Fow== X-Received: by 2002:a05:600c:5488:b0:477:b0b9:312a with SMTP id 5b1f17b1804b1-477b8a51880mr30543285e9.7.1763645057616; Thu, 20 Nov 2025 05:24:17 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:37af:6c1f:28a:47d2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477b82cc72dsm46762935e9.1.2025.11.20.05.24.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Nov 2025 05:24:16 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 20 Nov 2025 14:24:01 +0100 Subject: [PATCH v7 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: <20251120-reset-gpios-swnodes-v7-6-a100493a0f4b@linaro.org> References: <20251120-reset-gpios-swnodes-v7-0-a100493a0f4b@linaro.org> In-Reply-To: <20251120-reset-gpios-swnodes-v7-0-a100493a0f4b@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 , David Rhodes , Richard Fitzgerald , Mark Brown , Maciej Strozek , Charles Keepax , Andy Shevchenko , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linux-sound@vger.kernel.org, patches@opensource.cirrus.com, linux-spi@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1260; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=8Ie2dCuu8QXdvPTAlAcJf0uowzb7E2XgoBNHHNwWq7o=; b=owEBbAKT/ZANAwAKAQWdLsv/NoTDAcsmYgBpHxZ0ksI2ssXrYXVp7fpyre9TZ24sPg23CCf4a BdcXf+uYd6JAjIEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCaR8WdAAKCRAFnS7L/zaE w771D/isIARPHlgEcchxRvSiESyU79he8yBQ/W67kgACmkURbQmMzS94heu5F/B4UQkHSIi1A8x TAh8hHUZpA/fLMbhiW8YpS/RKXSe0zn002nHki5k1lb0JcY+gBecFogrTfBcX9FWIJvg3oS90WV aywSENKMeVY6l5sYZCwYko90Nzh7FdmkfJKq/i7UdpcmiS843GrfIo86aNpV5XEkmGB0HCJfIbL 7byDTrfz9larGmQz3ikyYa44qD4DMLbK8vVCtEZC9wScYUktJRth0dO2O5blLKXJq7D4D656CPy 8Wf3WRQB+861ae3pJLA4lFh1cfqeOpatqaAHiRs0aovxSGY91aOQeZ+j9P/CXff4JZBRjydBSGb XmaLw6qna47OUKOS3kY/deyvMXb5LlZ7WoZSI8nXQOia3skoJ+r5Qhfqo7MNihc/lN3hgTJ9NbG kFxScWa/OGSZRsRJ3fZbl6ff0VI1Y5BVzqyz8c8u2qMHDw2OaTuPPNE1+fWFDMKrEZgrS7kbwJf 02V1C+QgA6PSv85HNldjKiQIO69uxXXEOYfN4oCWFXJEpaBbzggZ2OTdW/WJVE0l8CpoSwyHvdo vJRISFsUu6XhUmi9w8xYbOHueIzyLTgoMRqyJS2E262O5dHBKgdiHjzEz+5Vs9HKI9xyMQUSIee pagPib/jm+iL6 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 Acked-by: Greg Kroah-Hartman Signed-off-by: Bartosz Golaszewski --- 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 20cd50804ba1b649faa5d74d17d6f128341ccbc4..5b6f314bdbdde84a1cf613fbf70= ae39cbb5e20e2 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 Tue Dec 2 01:51:45 2025 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1B44333A71C for ; Thu, 20 Nov 2025 13:24:22 +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=1763645068; cv=none; b=aOhikvMWC428I+dXHbbu5hMPD8yD08Yv49jjG5tmqjgpLdE1CPlrpBC3lhtGwK0D2TO5/HYXfuM18zrtfKrk2RbcwE2z+QJzyCtFIT2WzgnMOXgSjqvTrY+wz/mZL3Vrj3laiTvrXHslMLmmWg6kWTG4pjq98HHbXwAGlB5Fglc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763645068; c=relaxed/simple; bh=xH0CG842SvjgRIU9+ZvI7SWECNKFgSlkkOq1ntKdt0M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hZY/aT7s3ZBmylRdlmfR4YmPXc2H60grEU39JzeuAKx2ghNHz/FzeNRs1/rYZZnugW1jKhAU7S58OqT+mfB840V+ADJvSkQH8i+Ni9mg4EFeBtzDIlCzLTMnO/gOhPr2QHQwVucDFJWa3OXMZYCF0r90T7wjKZdy/nNeCE8I6bM= 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=n7B5i7X/; 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="n7B5i7X/" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-4775895d69cso4021395e9.0 for ; Thu, 20 Nov 2025 05:24:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1763645059; x=1764249859; 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=31em30QMLEREEBSvcPXeWYIA2k37w8MVjGybg5HKctM=; b=n7B5i7X/3eNHhGxZqXrpKpn1GjBY27/y0ju9S+Vt6XarErvlB4cSNsccVOxN17Sd3J k0Xch9axtn7aX7LrZkScKKOpDxrHR6J0SubxZO5n1TcdxbKZ9tuA7Kh/Yc+0jsPkBNJu ULy6gFze72EEreznjeT+neDJEnO+D0xQJ0tCIJ5qlFUNw482GFTFL2ELmeV3oCDsgYoi dXMMSH7Z8tqN96zt3JmaC+ZejUyZWFifA0a0+wScOlGAoGWcr06Z7JZoQ6V45Kdr9Vle 3/Nb4qUF4ekL/iqTmjQnf0ImCaM0MC5o+ZBwooxYCIoeXCgeyP+K061Ygm0hzHpvp1Pg NJCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763645059; x=1764249859; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=31em30QMLEREEBSvcPXeWYIA2k37w8MVjGybg5HKctM=; b=hXYgn6d+bCnH7TIuy/0jHJN2p5RMZXKI3/0t2xh4IEtLOwDok8iVGSH1vHHxlrMjob uV8AKKoz6b1CnVI5lzBkwVs/Lz6w0E9k5spyLi8yobwofxJddgqGaEjmA74TnkV0XtI6 dEt2qnY/ugYHQA5oM+nRrO5cmfvJ6iXnBOpZ3pBi41X8d6t03xcqxTZupiLakQ7CLEYn JoMMo3+l5FL08JDWgodlzS1KGJekrLo8KWhHkjIMwRr3taiAh94+bSvs5zFUy/iKV5po rwXXgfuqgUz916o5+Ud6GAfa2RfWmM+L5gDcdXy7DuL0sCMl+QTFMeXc47D68rv+CfyQ kBUQ== X-Forwarded-Encrypted: i=1; AJvYcCX72xsg32dh3IPdRBsqODb0akDsC8nDPFqoEUtDz4vOvTgQCiDLFfXEuIoe3ECo5VQUfwHkYtvd70zZ9zQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yy0GjGE7gf/NPe8bcAkR/nWFp2yvLgjFEmcXaUj5ZShnsuqmUWV QGt5kgQBB6q7ufWozGvJz3rysxyXRj42X+DhfjOEgiNxLc4kQ1KVehup8j71i0zIFg4= X-Gm-Gg: ASbGncv6nX0/S5bVtIgtbf+iVB80UOpRl4iBW2gL5xtWMp41hcRESZbX+9/SRIPiEfy SZloD6mOL3tN1uyIncgjB4IjddM2HjfOe2dWq2KgAbBt9vveDTRE/d/VEJjXUKZ1oRfUgeFLY5i revcolzvzyIoBnX86D430YgvLKVop9KJnOlPOiBs34ribFq/e1xFc9LE6DucwsTbkL1//Fdgi+6 V5YNjay2eFDeeUOuO1VOrCQA4G5RM8+k2eNiuDW/a3WKrb2Rk1JRN/NrdsZy3IjexBv91z8c28R Qxm0E91StFCVJ7qNL47tWrLoIq0k/BiNJ1rFOA7Cg+Pl9j8TrZG+zIwVciNOPWtb2KnLMeiJ5sn Y6bEPstvAi4BXKAbrl5Oka7JM7U7rDOBNvdeE/BCv+WAOAkAzAx0GpfPkNTdSpo35nFd4GD9r1f /IhTc= X-Google-Smtp-Source: AGHT+IEXecxg5QFk63mFO+FspplntioJsgDc9pqGDG5H5xEPtvWbefQmM8ZTCVargBiZYfg5G09reA== X-Received: by 2002:a05:600c:190a:b0:477:9a28:b0a4 with SMTP id 5b1f17b1804b1-477b8355eb2mr41764215e9.0.1763645059186; Thu, 20 Nov 2025 05:24:19 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:37af:6c1f:28a:47d2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477b82cc72dsm46762935e9.1.2025.11.20.05.24.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Nov 2025 05:24:18 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 20 Nov 2025 14:24:02 +0100 Subject: [PATCH v7 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: <20251120-reset-gpios-swnodes-v7-7-a100493a0f4b@linaro.org> References: <20251120-reset-gpios-swnodes-v7-0-a100493a0f4b@linaro.org> In-Reply-To: <20251120-reset-gpios-swnodes-v7-0-a100493a0f4b@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 , David Rhodes , Richard Fitzgerald , Mark Brown , Maciej Strozek , Charles Keepax , Andy Shevchenko , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linux-sound@vger.kernel.org, patches@opensource.cirrus.com, linux-spi@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3115; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=FhmNonzpYHgRFKsuekRiAhccBMXMP9k+uDJyjRxj7Ok=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBpHxZ0WP52PZD2bEnzAEa+WWNWxyYU1nUOtyWS3 5400vW/PNuJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCaR8WdAAKCRAFnS7L/zaE w64nEACk3w/L1UOykoTfQ3nBiRV3xyrul9xLO6AQmJmsiY+ds+Z45OaQA15VzYrkrdLmHsxBCcT f8Y08HLZVsZIqYf0YKV4TLBoJQnRuPgVzlm8QfTwfCO1Kduf7wBpYReJGZMAcxooiQ4BG4wRBhZ UoK0BywjWsQ5tVX4qPMEq3GEv5zMhWtTb0QPu+Qc2vVlVJQmDdWOM/k54i2BMFIumG1JRR+FVKB MNU17clQQMnheah2PUyjSLOk26dFvneF1HjrzHQA4P0qtPP5m+ZCIfq8028gVPsolO1PRizrVyQ Td22bMHRYIkYKgBmf+uF09oel9NESSJjzSkJbwI/IcsrKWZadc0i2MertOTGI4ijwiq3n8IyFm2 h+yrmIr9sY0RhMu3ZeKB+mzMJolfmLnTODbxi/A0Tabc51JmWE2B1jDxCa3Emundby0RuFUd6sT OujPW6uxgVGB2y7jiA5JX3jkqwNOHLAWUIS2lbwavf5Sl8X15EH3lZRjADMQtJd5gcRFTbAX9/o LJflkD5hVZM++f8eGkWaNWDa8qG7nGO8wXr9v2NaOjmAc80vhehqOrE8MoEASmuzfIjB88adXMK QRQhuTu4RQGIEqsEEhXoI9aPY2TOM0TBBjQLWqszgO9Ue6Q7hz4h3uw/FRlP5bJZmz9NtLXsrHJ zat+pdXbwPhYV5Q== 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 Acked-by: Greg Kroah-Hartman 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 5b6f314bdbdde84a1cf613fbf70ae39cbb5e20e2..50ff078dea7fd84d59e505fc1f6= 07f593ec6381f 100644 --- a/drivers/reset/core.c +++ b/drivers/reset/core.c @@ -819,11 +819,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 @@ -838,10 +838,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; @@ -896,6 +892,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) { @@ -916,7 +917,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; @@ -928,7 +929,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 Tue Dec 2 01:51:45 2025 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 521F433F391 for ; Thu, 20 Nov 2025 13:24:23 +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=1763645070; cv=none; b=b1jUOiJ1GchLXH7ZoNYm8GNGnFxfq/awvSNao1NcWLCXsQoEM3fUNSZmILJtbVDWYcRYOOQVIHxG2Juo9OFPept20Nim/tBh7vahgbbmkUb2lp1h8YPXwHIcNB9G71LKYUWONbHhUFs694J6sUzwvpWUJiFo/pWuKxakO4HAMDI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763645070; c=relaxed/simple; bh=TmnPwRPKxNqDK4kqJf7gkqi9ML3vw5hcnCB0TrZwF+c=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SuSdItj1vaz7jL2/WikFafAmlzB7QuAWanG2Yys8yB5QwVGButOH68/IJQ1LtR/3GEZchrIn6G9CAcWmrznNeGGjgdrVqnp6MX/L4Bet4DI/KRqShftuAiUc2UypRJgZHee+7rvEFyyaVXMHHquT03+IIsGv2WSUe7GVnl/MTNM= 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=2UaiMPMD; 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="2UaiMPMD" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-477632b0621so6218435e9.2 for ; Thu, 20 Nov 2025 05:24:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1763645061; x=1764249861; 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=4XjD0ueSQIVGxSnWq5N3fbydIO3JRz9g8LzIgvZUmG8=; b=2UaiMPMD8sG8UssyS9sKwozsoxbZT8fNWYYFijsRQiLud51+TaXDixljGfwhTBoa0B 2YBSDAKvAvu1SLUCiJT0RXEO8x1mr9TxGSZcAxcrezztXGDejcuLEe3J1R/v3ZLfewdH Q9AKIaFlNvY6+x4PCwF/BWkKr9mxR0TAv1viTY/0kc7dE4Le3FJ+YI2L4yCNGbRnomLt JeovOk8QV8nAWMqPYjDpuKtQr8TojLC028raL9gMgnB2TbVKpdRT04+Hr+DyOgY8ybMn IgXMB8c9Xl2L29SVcYx9/dUiI4ozgwJNGkaeBrJlnU71Z2kYLaa7ut/5GaaHZKa67Vj8 vvrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763645061; x=1764249861; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=4XjD0ueSQIVGxSnWq5N3fbydIO3JRz9g8LzIgvZUmG8=; b=hXB3n3mT58jTOnbIMw3PU6jP961W/CsyQkzKT0zld19NO53Hofi9T2wq5Xx2B5J+sS v64oV2G9OOAWSE/8pXPR5v3uXXdh7rL5ov1lLROM+6+8m8TOmcU36H3Hii6pZFB9MaTp 2TVgaw6XDNFmIbKs80zMbkuhlgwqtm8gl7nLlOM5qMtbm1TYQUj2keO/+emvpZw4jjAI COyoZiuNFHb3aNYgCBdpFWjnzMGOJVCr+3P9P5UfQhtnqao75bX/IMsRyhqEGeLZg7Hz KkLNXVpm4X985ciyHMQH4TVSefpmkXozatChXT4MunV6l9RKGRRrmRLtDNsn61WTQgrY YPQA== X-Forwarded-Encrypted: i=1; AJvYcCXeBvZxa+USzaD4xaft1z1UnpbEgG6q55r/Onu4VDPwqzY1HORaUZIzHczBscwogXMpE6KcHOfr8EUylTE=@vger.kernel.org X-Gm-Message-State: AOJu0YxNUndN52JUoaShLqL81S4uTYnD5bd24Kat3g13OoPgo3sS94OT GbLhOUwZYNCDN7lnRhcKlckur3rtb346F5q65aL5+edd1xzQ6bKD9OuJKgklxKSGT5s= X-Gm-Gg: ASbGncuvcShOXmrNhovPpuhZUl/U+Z9DmLgzm3w8bwmRQj4Bhw4HqSSg44DkYXbvHN/ 9FpVEH7BQl1+zRiduiXzaugDtd7ii/P/pQUrjVqeZAnK+fIWAl+dfot42mgFV+PtGT9I5zSEhLq WCQF1gokQeilWali8ycZXVm4YqOkwO7n2j7lwzOIMkwl68X1mD6ZyBA45hDnuDwa9D1GsaOWdxD g5rjR9wFMUwMF/ju+FjyZvfSf/YRD+6mbgcx7NGGVlvSvikDtKRm6nJ+NYTr75suAERkvI8E70w M9lf8vIWT4WVHX9jS4yATMGl5G6/enLjucFqtNojJ2M8mhr1D0Rg0hqV5TNK3ljFP4uTAjTBArc 9ZedpfZSazqbHKX7awTY8YjmC5bD4vHDLVzS6wUww8Y6R0lT44SijZpf9vEFJAuud/kcrB5dI91 FQ2uk= X-Google-Smtp-Source: AGHT+IH6vuUXtQR0V74bFxueAkhlb1rxpZ2IJm5JuJVY/HCjNaVgdMXz0xpHyMcS1GsLh4Ijmud52A== X-Received: by 2002:a05:600c:154d:b0:475:d8b3:a9d5 with SMTP id 5b1f17b1804b1-477b8953efdmr36167295e9.10.1763645060976; Thu, 20 Nov 2025 05:24:20 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:37af:6c1f:28a:47d2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477b82cc72dsm46762935e9.1.2025.11.20.05.24.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Nov 2025 05:24:20 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 20 Nov 2025 14:24:03 +0100 Subject: [PATCH v7 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: <20251120-reset-gpios-swnodes-v7-8-a100493a0f4b@linaro.org> References: <20251120-reset-gpios-swnodes-v7-0-a100493a0f4b@linaro.org> In-Reply-To: <20251120-reset-gpios-swnodes-v7-0-a100493a0f4b@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 , David Rhodes , Richard Fitzgerald , Mark Brown , Maciej Strozek , Charles Keepax , Andy Shevchenko , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linux-sound@vger.kernel.org, patches@opensource.cirrus.com, linux-spi@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5143; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=KmSwa9RPZ6TcHq3hcL4F56YB9LD5MmMIEe1ovhHQ/ek=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBpHxZ0kT6+RHdf8teKNwn/OCNtuIggjuyI0WJtv RrJ4k8WfqaJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCaR8WdAAKCRAFnS7L/zaE w9oRD/4w+yTXcGQDgBD2AkFNCjVW169CvEZDNpxIWwn8p4/8WKdVbKIRy9ldTYs3xMQsC6SBYmO BbuZtGJJkxQsEHA33nRWUBlUTPNbseHPESTeNt8X9QOQX01uwF4t0mcN7v8fZ/h3Bf1XVX3VoeQ LtthcPFxv0I16Bxv2roIJvfnwVwYOmYbrnxW91DAiwKTmQ1Y2T/Ajw4rp9EAwqcHmdy2N10vcQR IvtulANBhSy3cLRG+afIeKDM2rWV86aFFktjV02p+ffUtfYcCibQeuXc9IegwtjftptH6RxCDUC jhg20ItvFg8t25huMvBlzIGB+g90L6gfs8YsBtNuCVnXJ/yXXtGUBf+f+mavGUrbbWgEg1p9bTH 77wU9lOyKMfw0TLgPCrTXbTchX+0jddQEov2yCVwCpqMmM2MwiIR3xD3ZB9whRouzLXL1xffUG8 0nL45YdejFVdx/gWaWI2WiW1ptKKgaCdBWkL7d4shrS7m6gkY/YPRt+NkpkQSjH4tyIeUOEfltN Wjz/KxArwX3u8m270Sso7GRWpFHi47r4zZ00MI9FgsKQica3Bg/aa2zt1aGypPieOmDKkYpsSeT 5Igo4lrt+mm2mpDokz3YIuT4Nl8xVSfTIQf1TPFCowUWlW3SEkainSqgbPmT9MItYRj7aRBPv6Z +SBs2oQU7YGb/RA== 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 Acked-by: Greg Kroah-Hartman Signed-off-by: Bartosz Golaszewski --- 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 9951dbd50130946952f3bbfc4b97525978f494ae..e158a818fb0897a51af370a8e5c= e058e1de3b4ee 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 50ff078dea7fd84d59e505fc1f607f593ec6381f..1f5f8d85dc16142da3e3a9988f2= 737c83550cb2f 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 @@ -852,7 +852,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 @@ -873,7 +873,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 /* @@ -929,11 +929,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 Tue Dec 2 01:51:45 2025 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 C3AF7239E76 for ; Thu, 20 Nov 2025 13:24:28 +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=1763645072; cv=none; b=SnZNQBsAS5xH61G0Hf+40Kctn7Me4VuFOYqJkClDEL1h3MKC1cvf2HU9CYOlK+AbE0qI3uNY6G88SEN4vcvIX2R5HfnYJslFft2RZnF4KBU+f8U0t73NCMDQ6mmATteaMTYx0nKQeaQ6yDUfFeeU0+NOAAU++aXD2RYnAVQ0k9w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763645072; c=relaxed/simple; bh=aZ73W3YHGMU6xBUkukDk+WxhhQlc8F45xSk2D12rMD0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NET6yVhQnE6Pm+0jT55HHEw88KysZBJ7c1L02XRwMQFWFBZw8cYlV+1ZNu7UUBD7w2RAJMvSfp6uD/XCRVxRwy2GIaj706xgwKr2/jVWa0bYkBqYXjMSp9dTYrRgpyJXxl657DnFHEIjh/JsO/u3aU/OHSDShmihlVxMCTUexY4= 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=0uYfHLY4; 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="0uYfHLY4" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-47118259fd8so7367675e9.3 for ; Thu, 20 Nov 2025 05:24:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1763645064; x=1764249864; 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=G8PxX49w5EzD4UFdp7KS/r9tDFhJ08WKJg91+BqmaAY=; b=0uYfHLY43FJDmE/SOb/HZKj+RXb0Uku8tf2XRiML3LAsoRZve1/nwwB4lzq1q8f0/j 08JmnjD/ebPJocbIWHiDVstkScr1agn5jJv2JqKWDSx7Yu9Bv0knLY4AtQVClppR5IZ3 CzveYHyAtsSUzVfCWzUfdObS4dhDIO46GCa1OAoCt32FkAoic+g3WYWo3PNsIWEmb2tb BJ78HhazpTEU9VqflHg9uugbwMLKVn5lY+hnjgqPd0z23vrbHywxJTknva98MVxfdNLU ioNj285srjUB7HOPeX2/XYAu+o9pukJOPGB4YSSiFqiyCwaVwQ9g9VmjXe8PGalwlw9j JroQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763645064; x=1764249864; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=G8PxX49w5EzD4UFdp7KS/r9tDFhJ08WKJg91+BqmaAY=; b=dJMk0Z8vl5kT4yQeOXx/qvrRa+nRReqNpraz7Aus+ih5oH6Ti8Jvd+iZUzaII3qy7z zzAJv6Bx4zqjWHFVd1Kjbh6CPrWDH1cxZvP0YiDkMqjbA7a7pr5kKiL7veAgwO93YhVQ /QzE9n6Y5o9ZHVsx4BrgcIpE3Sl8iRBEOxu6QPlh8uivP38cRfyI1j3AkwdLWpzKU7eI po7XdF/C4ZZvqOpL3gsxwFO9FdcKdQWwh3zKOajDmQ0lUGz8jpdiSaADtXZIKQfdl3wq WqZWfg2YuI5N+oFLL50xg7PEzZXjlUVAh08CMlnqaCLETcU5QuwUTSdxPjV192UJSigA Yr3A== X-Forwarded-Encrypted: i=1; AJvYcCVh5fcu3taJ8ROCXtRZ/fj53xYymVnILA1Qzk3bQzA7QhSv/EMbqeLWiVzwCqjezoLr71sMj+4D1Zjpk0A=@vger.kernel.org X-Gm-Message-State: AOJu0Yy6AjnNsp1vNXni+lrtX/JMfM9s64s+huvwLUzbkMmRN2cL45tj GlZCQXv1CxQYj6QvVqMQD7Ham1DW+wO1rMoUNpj0iG1Q+/t7SkP0zqQ/t7qewFdff+8= X-Gm-Gg: ASbGncu6emiUNdQBwof9aCP6kNrqvVjTSf6FayoUVKOof2VbONX6HdOn2J1SL97Zstk TrK2A5iokgk+Q1/tZaV/xE7jrcijyDg9liQ4HRNzcPb8UICMyiSgjuFI+7gPCMyNyJ/ehe3Rw63 MpHAUf+V60ygcM0PCGvbw+NzbmXcH/CE+p7FaoGBENE1CkkPZDG2hpZ3TLQi3dHJcYWMYsPUViw /0C1X9xY42g0RmYFlZH54Wfdbe0tzQLWCTWgaQKBVbkBjP4k63EJOy9EtAb7SOAeYKDJL7u6aCM mwUUUFmTA+b+bQnInDrVJ737Ed/rBy0Vl+nFiTNA5cEo0ooG3B3W/ZnDeeBodogREsTmRK3L+46 dq+zrPbiVe044KgR1YX5Tp7JEdv3FZwONlcBobAt9YrX9N87N6TVqTya5XEZUXgMdExW4CvTxii PXziE= X-Google-Smtp-Source: AGHT+IEPrIuvvvNMQFwqIyjWYN4SQgSzWiJ7h+dcP18/s+37GPMsHprp+4ehD4s+zAvJdXC3SMQrZQ== X-Received: by 2002:a05:600c:1549:b0:477:a9e:859a with SMTP id 5b1f17b1804b1-477b8a8a611mr29954055e9.22.1763645063647; Thu, 20 Nov 2025 05:24:23 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:37af:6c1f:28a:47d2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477b82cc72dsm46762935e9.1.2025.11.20.05.24.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Nov 2025 05:24:21 -0800 (PST) From: Bartosz Golaszewski Date: Thu, 20 Nov 2025 14:24:04 +0100 Subject: [PATCH v7 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: <20251120-reset-gpios-swnodes-v7-9-a100493a0f4b@linaro.org> References: <20251120-reset-gpios-swnodes-v7-0-a100493a0f4b@linaro.org> In-Reply-To: <20251120-reset-gpios-swnodes-v7-0-a100493a0f4b@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 , David Rhodes , Richard Fitzgerald , Mark Brown , Maciej Strozek , Charles Keepax , Andy Shevchenko , Bartosz Golaszewski Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linux-sound@vger.kernel.org, patches@opensource.cirrus.com, linux-spi@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=7100; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=LjGY9Q7mtS01FVXkHDotI+zXY3Fvxr3o/OlPgyLk0TI=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBpHxZ14gj5DrBF7BjfQSYkrPkMGdchXL7C84cpA KldwESHuaaJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCaR8WdQAKCRAFnS7L/zaE w0XKEACEAckJGFkSrLISJsfqUyT4xiT9YfJMF2gB9kxRNAxwghciygZ9f7VnTqHyPNatoNhoiw1 E4FHBgWoklBQfqNMPdNoS4RdB8d1nFYv4pen1wZ3pA814x5/Zx4S9qC+L/xqiibxLN6MrfW8LMy 6WHIQ1P5B4yUmpZI1A1DqFMv5upZ35nbbKyDLa8yRxjuROC+Nt75mYI9mxwWlSvvcoVqu1OGqG2 mHUWjUrU8JzKMw+R7NXKm3gV1fyn7qJNrIMd1GspbBlPSv0hga5fC25ZZw5EMFWZ9WFeNyGSMlH Z6yG/tZJHsUxKs1SPAHy4F+92oJ3jPNEPJfImCDEEsMGVgxoo5IcV2wGvVw+6/puCLagj+zTNaT wpey8oRdiAZ8XXSFCGJmpj/8cETs0mtAyXTV1eoBduLE+pAyglmdcurRcPkY1acTFK9xVZp1G4m 1gt3Ux14aD3BaTFEjUnWfzrtFw0cYwpZDQQvjo5McStw2E5JkAvvChn7PH36+sKqKf+bpjwliTY asDaM2+Jn6np80FewW2ZmGgfSSL5osa0R84Uhq3TsawQxqB29OMN1GHbVXuNmJO7S3EbAdBusjP fMIfEls4PbOZYNd+6564Cvf46pp2hZxWYXIAiJI0uKqg+516JCILSzGl5cTmKkdMju8ggW1FU6T z6r0OwGdtHBUKsA== 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 Acked-by: Greg Kroah-Hartman Signed-off-by: Bartosz Golaszewski --- drivers/reset/core.c | 127 ++++++++++++++++++++++++++++++-----------------= ---- 1 file changed, 74 insertions(+), 53 deletions(-) diff --git a/drivers/reset/core.c b/drivers/reset/core.c index 1f5f8d85dc16142da3e3a9988f2737c83550cb2f..0135dd0ae20498396fdb5a682f9= 13b6048cb5750 100644 --- a/drivers/reset/core.c +++ b/drivers/reset/core.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -74,10 +75,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 @@ -819,52 +822,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 /* @@ -872,8 +868,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 /* @@ -892,6 +890,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) @@ -906,6 +921,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; @@ -917,11 +936,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 @@ -929,19 +943,26 @@ 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)) { + ret =3D PTR_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.51.0