From nobody Tue Dec 2 02:19:58 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