From nobody Tue Dec 2 02:19:52 2025 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ED08135C1B3 for ; Wed, 19 Nov 2025 15:21:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763565715; cv=none; b=PO9VTbTu2Y0HmLy4+eQTpDqZa6+9KlUs+FHUqx1EQxwxrTjHWTJrWOG0cLjiZESKkFh2V8v1iKpB7zNXS1NldojHQLDruSOw7WZnyHIzsZUu2nU5JgClit26wNta2i1Din/FWfpDJmlaoZh1fbjzZWYZusrx8fBCCR+uQIoxgMw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763565715; c=relaxed/simple; bh=N3l59kOsQt7nYIQ5xrgl5IaNVvlsHEsLL3tCZhtIQ2Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OcdYw8f21Aghdo45gmHu3Q6P6rRaOcVxIFEN0ydxU2ua2uHsRb0eUQ8Ak/aKbOcZcMpZFy1ExN0mPUTXY2Bn+ng8Bm5/txl1TFXd109Z74uDrHPO7SJPMvHSx9g0Xc7/X4i6qbEFthtJD+plalfVac9vzbyuwIRSlWwLqAyUrQo= 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=WLCJhtcz; arc=none smtp.client-ip=209.85.128.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="WLCJhtcz" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-4779cc419b2so48026465e9.3 for ; Wed, 19 Nov 2025 07:21:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1763565712; x=1764170512; 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=WWzVKv5ouKkFGvVUTZu4Vj8DMC+GR4MyL5I2JNNHBKI=; b=WLCJhtczJTtnY+sG28TP/mFnhGcneqK8wZ0Ga1JWWgygHwrXBzuMj2/MjEeykGSdaJ UtGhBiWVOF9XYBnWrm6zO2pdelRYUDocy3KAF43/lqgYi9MhT3yTj8Q9uIprVWQMT91R ZwvBq74iR3l5aOeis6sn4kmwlQRnc7gKSxj1n7qM/uDghRhegaC8pm9meTEukE9E/Zed 3uhNlWzWWcSxs7nN5RhoQXxY3PKq8qpTVs6FmXu9UguKPGSJpHh83QPJC/Q+9BDDyGQh yYQBn7E0gIVUBAnoCEUUPW/YdNE1oNf8aN7i4AgeLzic7jNdz5w36WG5gG9SxyJYBnjj 3EJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763565712; x=1764170512; 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=WWzVKv5ouKkFGvVUTZu4Vj8DMC+GR4MyL5I2JNNHBKI=; b=D+Eirdt4cHvtzVHxhnFXeLzlhYGU5ijbkJbVwrc3YOVsitWAQIv6kNPkRzpgBAkEbJ tZHetMJqPJvbLMwbXY0gCJndZ+MpA1NJbuvW5aE7ENIJnsKwdNaRrstrxyAMkvAF9Flj iuxF8gG7fWdXWwcxtR6/mzqtaa/RNs7COy2cZ+Ob9HwZ9aGax2vRh0kQzkF2erNvGWXR JXsybK15Hypw1GuPnriYZU8kIvmdXmmAUlqEvqzlAF6IL4Sa8rxmF8UDegIXt5a+LA5s ILDeNi4U1emHE6X0Ok+YL8W+vuHm+3xWz2w7SyTWa+1raES21BPaJZhR2VSQ+/Kr5V1C N2vQ== X-Forwarded-Encrypted: i=1; AJvYcCV+mrVRLYzoVvo29URANbjfZObi+rPcc909RIjgoglgTm5gKMMYL5GiH3JQZnhI0z/y5hpsEmTZEfsPbjQ=@vger.kernel.org X-Gm-Message-State: AOJu0YygXWYaWmr+XASA3vHhlO76WdR2ssCMHZTDSbwGsehgdodFWPql dVg4kOVQ8Ngj5G4I1tmz0HmJVpGaT5cR34EGHn5Ay2eTsTmdEdnBVA4sSuoN0Q4OZbI= X-Gm-Gg: ASbGnctorpZLQftVAL41lcIjOo5++Q0SnkipQWkNxqVZWkbonUBnsHh8WR220KpFyQS BSKEuX1qQsW5njaRz+IYhpZ6OFyRKwYz3KLa4PO+9N35ikjv79AJhg+Uc+u36vqHHy5VD810fdb uDz59nt4ficm9nhmoms9Qray13ImYAb20Hsedsr2QROBGYx/LvZNzl1lk1PQE7ru6uwjOWDIOvH e1VzyTXjH+9nZyKB/ylzV4pGGBTQ610+7H2VgvurxlX8Jm1yJA7Lw4NRQbWmzUuyIdrU2qRO3vf dRYXtKQcOYR0N0e1Rg5NrIeH9pXV1Pm8hN8DWP0q02+kdGwrCs7GMkFkSU0zaLl2Pryqrztm3nl fWDf/Eku7fCRmKzIBVFsccpTWqNBALtLv6kRkqqBnVofjJEKhSlwU5uKVlXpetNuJzYpnpGD7az ADm1ZBJOWSt7WB/Ro= X-Google-Smtp-Source: AGHT+IEDKWc8zQoL0/HIGMblStUKKbwxr87JALzkXWBHan3UsjV1tyVowkbbkfozNa5172g/CAvNQA== X-Received: by 2002:a05:600c:4f0d:b0:477:a978:3a7b with SMTP id 5b1f17b1804b1-477a9783aaemr62118455e9.22.1763565712234; Wed, 19 Nov 2025 07:21:52 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:c10a:203f:120a:d2f9]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477b1076865sm54429375e9.13.2025.11.19.07.21.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Nov 2025 07:21:50 -0800 (PST) From: Bartosz Golaszewski Date: Wed, 19 Nov 2025 16:21:28 +0100 Subject: [PATCH RFT/RFC 1/2] gpiolib: support "undefined" GPIO machine 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: <20251119-cs42l43-gpio-lookup-v1-1-029b1d9e1843@linaro.org> References: <20251119-cs42l43-gpio-lookup-v1-0-029b1d9e1843@linaro.org> In-Reply-To: <20251119-cs42l43-gpio-lookup-v1-0-029b1d9e1843@linaro.org> To: Linus Walleij , Bartosz Golaszewski , David Rhodes , Richard Fitzgerald , Lee Jones , Mark Brown , Maciej Strozek , Charles Keepax , Andy Shevchenko , Philipp Zabel Cc: linux-gpio@vger.kernel.org, linux-kernel@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=1153; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=p2qr9cuaBFmf29Kwl9Pu2TEsEALyFX5fRqqffYfbc4s=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBpHeCMHDIjZ7lYX4IJcx54rCtuMc/TP+vjyd1t+ x9jaKqfgHyJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCaR3gjAAKCRAFnS7L/zaE w8n6D/9dGM5Y42PSNAC2Z+vDDvJVLHGQ0abvZavHWl1YP985hGUMZ+mRBoFTavPXN3sgkZgdnrK 68tslGfpvZ+RmJRNuLS7tDgiQiZH6to0q6TBvyDO3kKx78UsLzRlhz1vybs4N9jmyE7UwLeCeAv wojpzJFV5MeQq1dfyW1gxbtC3vsiOXoMXg+zqzMG//8ypGxOX2n7gkik5KLkzzWsq26rBelCmyn BjQbQF9/POwftv8mVYmYfy0xHHLYO0o71hzgPO8F43lBnLeVIhtScwWA15nPyoIxpzTYSZPvSvg La7nT5/IQHsqNXh6QBEz7ikuFnizP4sKkPOtPIT7EL1F1nmu2qc7fnX7MDj+FIZHzc6Z+evxPzm rzVB9W03A1FBTP2BjDocuDvVtCbrQaEBIkOLkLDEZbTuhUFYkvx4WUPqbEElhbgTxeagLK/pT/t UmEKyzt34ncPQLKn6CYO87qmpvagvuKrHX9qe6rBT6VPYLhIehFa8obD3OC8fPYlZblRkEkuk6r /FTofah8y+FbiYpuslDuQbPE443VeZlx3E+URPSW6sguUj9Bq6UUV1ZW4njbz2op3/NASiPpbXR l0tqHMrmF2A4/1FuE/XcYoo550oL86NKt/j2YD/I/q3F3ejck/ol2Iovwox5vZsvfZeGPKpoBUY Y5Mx6ub9nnbhmDg== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski SPI devices can specify a cs-gpios property to enumerate their chip selects. In device tree, a zero entry in this property can be used to specify that a particular chip select is using the SPI controllers native chip select, for example: cs-gpios =3D <&gpio1 0 0>, <0>; Here, the second chip select is native. Allow users to pass ERR_PTR(-ENOENT) as the key field in struct gpiod_lookup, indicating a native chip select. Signed-off-by: Bartosz Golaszewski --- drivers/gpio/gpiolib.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 91e0c384f34ae5c0ed61ccd3a978685d4f72e867..dbb5f7fe7b661979f559fcd32ad= 6e1c463431a18 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -4557,6 +4557,9 @@ static struct gpio_desc *gpiod_find(struct device *de= v, const char *con_id, if (p->con_id && (!con_id || strcmp(p->con_id, con_id))) continue; =20 + if (p->key =3D=3D PTR_ERR(-ENOENT)) + return ERR_PTR(-ENOENT); + if (p->chip_hwnum =3D=3D U16_MAX) { desc =3D gpio_name_to_desc(p->key); if (desc) { --=20 2.51.0 From nobody Tue Dec 2 02:19:52 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 BC320364049 for ; Wed, 19 Nov 2025 15:21:55 +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=1763565717; cv=none; b=FT1IoLukQo9HyA0RKfncBNpCFsBgFzCb1SYNLdlbHu1deV7rZCJrtimqwYOz6JFFGEXew1jNXVLh0p4sCFVJXiTdVSvEu+VF2rvmiOkzSL/KAqgU5s52g4nY1MKx9qCmcKIKVOQHZULIJjij17zuoae9VsHj7RmJRbCX001+xrA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763565717; c=relaxed/simple; bh=pCyof7wpaaJnTNYVQB5wytgT0h1Vlvk7iBUsVGcz4O4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sNV6xYqZj3xMOGyFio8WpEnNXTbes2sMGRHPqRd93ap1ZGQdWII3Nxb3jFhq3GmAbmidYgPyYmyo7mSXaHO1JICVC2I4756aekH71xib25nSnQk4apTm9CViSduZsHL1EcugsxXOdXBbkbBTV3OkXPS6izi+MRDCZhiQdSvZ+0c= 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=LHDTEt6q; 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="LHDTEt6q" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-477632d45c9so50778475e9.2 for ; Wed, 19 Nov 2025 07:21:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1763565714; x=1764170514; 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=+Wokim2MnbflW2UCaKEy7940kyHB29tB77UTXT5rzIo=; b=LHDTEt6qJmE8V9d26nEWThQVQKMaK+P4tBhXt95sDl+ThXUmAhuGW3JuXjl0T5RVIY JpDKGUjovuaziiP4ZxPuWjsPue3rnO6ZbZ/4ZLRzVgdivJFu6gUKi+9I4I8mGqfwtbQF a9e3IVSd86hvS3+J5mx3Ewkau4oxCe8lbJnSJ0A9Z+lFuSHL1RbQ+/vjyKU0OWQHDcqb 1rHKvbT0s2dO0n6RM8k584iikZVUL7se9c2fykCRWBNw8zK2ZwqS6p0GD5L5V97ZCXOm lb1/7AlSCCsAJe2IWtOhRelKhOoPytfwX0nq/oUKRwmFSbgNelr221KejmJI2Wc/vJGb faBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763565714; x=1764170514; 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=+Wokim2MnbflW2UCaKEy7940kyHB29tB77UTXT5rzIo=; b=iwnrUybfoVw/wEQdqe8LDyFsSKvBzDkZWBQhYMjAU8TwfiZC2S8HC5ffqUPbOZyzuF Hg8F9skzdaEzAtwOWMauXUAukHmysy6NHDISSIuxfhwtZdySe5L6R9SeLYaq7kQTu9Cu MEcyFd+qAZuJiXBKTvcU8W7wElPf/qLryokKsEZMsbESsQtWGY8NxpEODR+t/tyUtgos zqccDRkTYBqQxqSj1YG55w1sKUC7hlnFzwB/nh/5CniHd3+RDMhyMU8ruD6xb3//dMWd VwapjKPCFeEltKO6BMC6qqeBgN+2qwYkV2iXKzk2EaNDmbpuXOYUP9+ayz/DZ8Enco/A cg3Q== X-Forwarded-Encrypted: i=1; AJvYcCWs0oDxk6L45whMtmg6oHwzI2+i8Yt+PKjbPMchC97ZZzUYcBHZH+R1llsZxioRa520Qaqdolk3FeOiejY=@vger.kernel.org X-Gm-Message-State: AOJu0Yycf4cU82kelOwYMhS7CEv9NC332sgsxF5nbwma5d5rg+/KS3P8 oVY+iOCkc4O2pVz0u63NmzuZLNuokZxs+4VvAIkzYYE9M/JkPDEJSy81fVWyXRhwrdo= X-Gm-Gg: ASbGncskAtIc7S9r62IEmbPgXtQLxx1v0NPXz0bLvBrsDPXoo2RQ2IpQ0FfsE5wAWJe fk8KjsmproOrzydX43G0P7aLsdPE9NaMy1nPAZM9loNG/HzKyPfjxzqoQLW7gNt+jEkZ7kDCxJl qY3FbTnGkr2m1CkwSN0q9KeWcff5KR0BMBstWuccQwomBExw910rd9fz+oCSFYH0e7ZdebXOybC of5+nIafCJOJhJY17QBjnim2QS2Lc6Trsh5fzipV8SGjCoUq7HZAObGIUSPqujHySwIiNH+k2R9 ovkhaQeWoEkFJxG0gOZfHR8ptP4OHj4K5iBr8+J1exav9OgjPGoekjTO94ZvypFPkgfinYS0q1w FYZSc0OQ8mRU6Z42afImsW25Iqs6wEY5zA5mK8/ovOEwasWkbJF6c4QuuQ1gGADb4U35zsJX0mx FDUEkLaqXc/vjaEbc= X-Google-Smtp-Source: AGHT+IEIqa8r3x+XvV4zwMPPkOaNTfhmxNDifLzSTQW5ijcuh1xO+A13RMoY6j4TwrH7+wc5ucNKtw== X-Received: by 2002:a05:600c:1c23:b0:477:aed0:f40a with SMTP id 5b1f17b1804b1-477aed0fb8bmr59304935e9.19.1763565714049; Wed, 19 Nov 2025 07:21:54 -0800 (PST) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:c10a:203f:120a:d2f9]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477b1076865sm54429375e9.13.2025.11.19.07.21.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Nov 2025 07:21:52 -0800 (PST) From: Bartosz Golaszewski Date: Wed, 19 Nov 2025 16:21:29 +0100 Subject: [PATCH RFT/RFC 2/2] mfd: cs42l43: use GPIO machine lookup for cs-gpios 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: <20251119-cs42l43-gpio-lookup-v1-2-029b1d9e1843@linaro.org> References: <20251119-cs42l43-gpio-lookup-v1-0-029b1d9e1843@linaro.org> In-Reply-To: <20251119-cs42l43-gpio-lookup-v1-0-029b1d9e1843@linaro.org> To: Linus Walleij , Bartosz Golaszewski , David Rhodes , Richard Fitzgerald , Lee Jones , Mark Brown , Maciej Strozek , Charles Keepax , Andy Shevchenko , Philipp Zabel Cc: linux-gpio@vger.kernel.org, linux-kernel@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=5081; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=0NCKcXGMy5kZcnsdXSMWxn5BADFkeKJ4N2fCRMr3Rl8=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBpHeCMyt/IxRPrdK2pSzNuP0fxbrQ46lELbDKsU TC2U/8J/hOJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCaR3gjAAKCRAFnS7L/zaE w1PvD/9PCqRFIaRGrxOJK2NzRI/juuIGcJFYBpti9MuLFrVzljNhJTJsMtKXU4TLRUonZ1/BOL0 Qoh2W7g1sNRHidNy21szrrUAeAdpyAbMOJoTqxik40sFAm9MOeBTieJuMc4OcEf3scH62lGE/p7 jBiqMCTvZVxO8cbnx+4NgA+4iklexHzBe9rcYGqgBXAsW2NXJnje1Fa1bBSlzVz8exy3m/NTu1y pIR5QY1puVfLr8pUJRhk2P/GhI3tCzbS+DffsREWJBH3U+JEdfedQkJbXRK5s5t+SW/FNmakBlH IclKr1RB3l48rGV8/7PMEo8YrR9vKHZ7BCk5sOdEcot0k9n9iidIZAdLWWlQ5q+9VbAvW8N8sEw yhyTEnTzfILvX8Ff4bStY9mUNsYOskFExO3xzjQApAQn072BiImMWPwk2nU8F3qPadscCsXXBi4 xHYZ3LAOH2qr4MmzsI9RC8bJE/uvou/j8mU8ZSbLx9ETseBY9ZI980SSdBSJNHMffqCD6lXorTW pUlz3HRuX6nvYkiPBrSDwqWBjMVYUOizBKupmFx0tU4zFNJZI1YFra2Qg+G73yq2ElHuMkY+8xR Ov5bMmBL1bjEAt9hUlpZNgtQvA0tRB4G4Ww6O8Y72Lpk7XFej2Dd/HhPuTxR5MJo+gkuMKtmEFD ulqqaZ/vVclAiVg== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Currently the SPI driver sets up a software node referencing the GPIO controller exposing the chip-select GPIO but this node never gets attached to the actual GPIO provider. The lookup uses the weird way GPIO core performs the software node lookup by the swnode's name. We want to switch to a true firmware node lookup in GPIO core but without the true link, this driver will break. We can't use software nodes as only one software node per device is allowed and the ACPI node the MFD device uses has a secondary node already attached. Let's switch to GPIO machine lookup instead. Fixes: 439fbc97502a ("spi: cs42l43: Add bridged cs35l56 amplifiers") Reported-by: Charles Keepax Closes: https://lore.kernel.org/all/aRyf7qDdHKABppP8@opensource.cirrus.com/ Signed-off-by: Bartosz Golaszewski --- drivers/mfd/cs42l43.c | 23 +++++++++++++++++++++++ drivers/spi/spi-cs42l43.c | 35 ----------------------------------- 2 files changed, 23 insertions(+), 35 deletions(-) diff --git a/drivers/mfd/cs42l43.c b/drivers/mfd/cs42l43.c index 107cfb983fec416bbdd31caa1e6a569026467735..098b95a21b38158b5ea765ad55f= dcf703a2454c0 100644 --- a/drivers/mfd/cs42l43.c +++ b/drivers/mfd/cs42l43.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -522,6 +523,15 @@ static const struct mfd_cell cs42l43_devs[] =3D { }, }; =20 +static struct gpiod_lookup_table cs42l43_gpio_lookup =3D { + .dev_id =3D "cs42l43-spi", + .table =3D { + GPIO_LOOKUP("cs42l43-pinctrl", 0, "cs", GPIO_ACTIVE_LOW), + GPIO_LOOKUP(INIT_ERR_PTR(-ENOENT), 0, "cs", 0), + { } + }, +}; + /* * If the device is connected over Soundwire, as well as soft resetting the * device, this function will also way for the device to detach from the b= us @@ -900,6 +910,11 @@ static int cs42l43_irq_config(struct cs42l43 *cs42l43) return 0; } =20 +static void cs42l43_remove_gpio_lookup(void *data) +{ + gpiod_remove_lookup_table(&cs42l43_gpio_lookup); +} + static void cs42l43_boot_work(struct work_struct *work) { struct cs42l43 *cs42l43 =3D container_of(work, struct cs42l43, boot_work); @@ -954,6 +969,14 @@ static void cs42l43_boot_work(struct work_struct *work) if (ret) goto err; =20 + gpiod_add_lookup_table(&cs42l43_gpio_lookup); + + ret =3D devm_add_action_or_reset(cs42l43->dev, cs42l43_remove_gpio_lookup= , NULL); + if (ret) { + dev_err(cs42l43->dev, "Failed to schedule a devres action: %d\n", ret); + goto err; + } + ret =3D devm_mfd_add_devices(cs42l43->dev, PLATFORM_DEVID_NONE, cs42l43_devs, ARRAY_SIZE(cs42l43_devs), NULL, 0, NULL); diff --git a/drivers/spi/spi-cs42l43.c b/drivers/spi/spi-cs42l43.c index 14307dd800b744fee17edd864688a68c65666c68..7430a1ba829cbd68d4bfdb1cf9c= f8fa7a1cf23a6 100644 --- a/drivers/spi/spi-cs42l43.c +++ b/drivers/spi/spi-cs42l43.c @@ -13,8 +13,6 @@ #include #include #include -#include -#include #include #include #include @@ -52,20 +50,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 +308,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); @@ -402,20 +381,6 @@ static int cs42l43_spi_probe(struct platform_device *p= dev) return dev_err_probe(priv->dev, ret, "Failed to get spk-id-gpios\n"); } - - 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); - if (ret) - return dev_err_probe(priv->dev, ret, "Failed to add swnode\n"); } else { device_set_node(&priv->ctlr->dev, fwnode); } --=20 2.51.0