+++ /dev/null
-From 3752e1c62b4968606391bc8586169eda1b30079f Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 26 May 2025 11:47:01 +0200
-Subject: ASoC: codecs: wcd9335: Fix missing free of regulator supplies
-
-From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
-
-[ Upstream commit 9079db287fc3e38e040b0edeb0a25770bb679c8e ]
-
-Driver gets and enables all regulator supplies in probe path
-(wcd9335_parse_dt() and wcd9335_power_on_reset()), but does not cleanup
-in final error paths and in unbind (missing remove() callback). This
-leads to leaked memory and unbalanced regulator enable count during
-probe errors or unbind.
-
-Fix this by converting entire code into devm_regulator_bulk_get_enable()
-which also greatly simplifies the code.
-
-Fixes: 20aedafdf492 ("ASoC: wcd9335: add support to wcd9335 codec")
-Cc: stable@vger.kernel.org
-Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
-Link: https://patch.msgid.link/20250526-b4-b4-asoc-wcd9395-vdd-px-fixes-v1-1-0b8a2993b7d3@linaro.org
-Signed-off-by: Mark Brown <broonie@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- sound/soc/codecs/wcd9335.c | 25 +++++++------------------
- 1 file changed, 7 insertions(+), 18 deletions(-)
-
---- a/sound/soc/codecs/wcd9335.c
-+++ b/sound/soc/codecs/wcd9335.c
-@@ -339,7 +339,6 @@ struct wcd9335_codec {
-
- int intr1;
- int reset_gpio;
-- struct regulator_bulk_data supplies[WCD9335_MAX_SUPPLY];
-
- unsigned int rx_port_value;
- unsigned int tx_port_value;
-@@ -366,6 +365,10 @@ struct wcd9335_irq {
- char *name;
- };
-
-+static const char * const wcd9335_supplies[] = {
-+ "vdd-buck", "vdd-buck-sido", "vdd-tx", "vdd-rx", "vdd-io",
-+};
-+
- static const struct wcd9335_slim_ch wcd9335_tx_chs[WCD9335_TX_MAX] = {
- WCD9335_SLIM_TX_CH(0),
- WCD9335_SLIM_TX_CH(1),
-@@ -5039,30 +5042,16 @@ static int wcd9335_parse_dt(struct wcd93
- if (IS_ERR(wcd->native_clk))
- return dev_err_probe(dev, PTR_ERR(wcd->native_clk), "slimbus clock not found\n");
-
-- wcd->supplies[0].supply = "vdd-buck";
-- wcd->supplies[1].supply = "vdd-buck-sido";
-- wcd->supplies[2].supply = "vdd-tx";
-- wcd->supplies[3].supply = "vdd-rx";
-- wcd->supplies[4].supply = "vdd-io";
--
-- ret = regulator_bulk_get(dev, WCD9335_MAX_SUPPLY, wcd->supplies);
-+ ret = devm_regulator_bulk_get_enable(dev, ARRAY_SIZE(wcd9335_supplies),
-+ wcd9335_supplies);
- if (ret)
-- return dev_err_probe(dev, ret, "Failed to get supplies\n");
-+ return dev_err_probe(dev, ret, "Failed to get and enable supplies\n");
-
- return 0;
- }
-
- static int wcd9335_power_on_reset(struct wcd9335_codec *wcd)
- {
-- struct device *dev = wcd->dev;
-- int ret;
--
-- ret = regulator_bulk_enable(WCD9335_MAX_SUPPLY, wcd->supplies);
-- if (ret) {
-- dev_err(dev, "Failed to get supplies: err = %d\n", ret);
-- return ret;
-- }
--
- /*
- * For WCD9335, it takes about 600us for the Vout_A and
- * Vout_D to be ready after BUCK_SIDO is powered up.
+++ /dev/null
-From ab3ce384fb24a3ee3671c39955a6c53d01ce1b87 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 12 Jun 2024 18:15:17 +0200
-Subject: ASoC: codecs: wcd9335: Handle nicer probe deferral and simplify with
- dev_err_probe()
-
-From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
-
-[ Upstream commit 4a03b5dbad466c902d522f3405daa4e5d80578c5 ]
-
-wcd9335_parse_dt() function is called only from probe(), so printing
-errors on resource acquisition is discouraged, because it can pollute
-dmesg. Use dev_err_probe() to fix this and also make the code a bit
-simpler.
-
-Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
-Link: https://msgid.link/r/20240612-asoc-wcd9xxx-wide-cleanups-v1-4-0d15885b2a06@linaro.org
-Signed-off-by: Mark Brown <broonie@kernel.org>
-Stable-dep-of: 9079db287fc3 ("ASoC: codecs: wcd9335: Fix missing free of regulator supplies")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- sound/soc/codecs/wcd9335.c | 28 +++++++++-------------------
- 1 file changed, 9 insertions(+), 19 deletions(-)
-
-diff --git a/sound/soc/codecs/wcd9335.c b/sound/soc/codecs/wcd9335.c
-index 075ed20e9fad8..dc4ce2c3f2188 100644
---- a/sound/soc/codecs/wcd9335.c
-+++ b/sound/soc/codecs/wcd9335.c
-@@ -5028,22 +5028,16 @@ static int wcd9335_parse_dt(struct wcd9335_codec *wcd)
- int ret;
-
- wcd->reset_gpio = of_get_named_gpio(np, "reset-gpios", 0);
-- if (wcd->reset_gpio < 0) {
-- dev_err(dev, "Reset GPIO missing from DT\n");
-- return wcd->reset_gpio;
-- }
-+ if (wcd->reset_gpio < 0)
-+ return dev_err_probe(dev, wcd->reset_gpio, "Reset GPIO missing from DT\n");
-
- wcd->mclk = devm_clk_get(dev, "mclk");
-- if (IS_ERR(wcd->mclk)) {
-- dev_err(dev, "mclk not found\n");
-- return PTR_ERR(wcd->mclk);
-- }
-+ if (IS_ERR(wcd->mclk))
-+ return dev_err_probe(dev, PTR_ERR(wcd->mclk), "mclk not found\n");
-
- wcd->native_clk = devm_clk_get(dev, "slimbus");
-- if (IS_ERR(wcd->native_clk)) {
-- dev_err(dev, "slimbus clock not found\n");
-- return PTR_ERR(wcd->native_clk);
-- }
-+ if (IS_ERR(wcd->native_clk))
-+ return dev_err_probe(dev, PTR_ERR(wcd->native_clk), "slimbus clock not found\n");
-
- wcd->supplies[0].supply = "vdd-buck";
- wcd->supplies[1].supply = "vdd-buck-sido";
-@@ -5052,10 +5046,8 @@ static int wcd9335_parse_dt(struct wcd9335_codec *wcd)
- wcd->supplies[4].supply = "vdd-io";
-
- ret = regulator_bulk_get(dev, WCD9335_MAX_SUPPLY, wcd->supplies);
-- if (ret) {
-- dev_err(dev, "Failed to get supplies: err = %d\n", ret);
-- return ret;
-- }
-+ if (ret)
-+ return dev_err_probe(dev, ret, "Failed to get supplies\n");
-
- return 0;
- }
-@@ -5158,10 +5150,8 @@ static int wcd9335_slim_probe(struct slim_device *slim)
-
- wcd->dev = dev;
- ret = wcd9335_parse_dt(wcd);
-- if (ret) {
-- dev_err(dev, "Error parsing DT: %d\n", ret);
-+ if (ret)
- return ret;
-- }
-
- ret = wcd9335_power_on_reset(wcd);
- if (ret)
---
-2.39.5
-
drm-gem-fix-race-in-drm_gem_handle_create_tail.patch
usb-gadget-u_serial-fix-race-condition-in-tty-wakeup.patch
revert-acpi-battery-negate-current-when-discharging.patch
-asoc-codecs-wcd9335-handle-nicer-probe-deferral-and-.patch
-asoc-codecs-wcd9335-fix-missing-free-of-regulator-su.patch
btrfs-propagate-last_unlink_trans-earlier-when-doing.patch
btrfs-use-btrfs_record_snapshot_destroy-during-rmdir.patch
rdma-mlx5-fix-vport-loopback-for-mpv-device.patch