]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 5.10
authorSasha Levin <sashal@kernel.org>
Mon, 1 Jul 2024 13:16:34 +0000 (09:16 -0400)
committerSasha Levin <sashal@kernel.org>
Mon, 1 Jul 2024 13:16:34 +0000 (09:16 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-5.10/counter-ti-eqep-enable-clock-at-probe.patch [new file with mode: 0644]
queue-5.10/series

diff --git a/queue-5.10/counter-ti-eqep-enable-clock-at-probe.patch b/queue-5.10/counter-ti-eqep-enable-clock-at-probe.patch
new file mode 100644 (file)
index 0000000..ebeed8d
--- /dev/null
@@ -0,0 +1,59 @@
+From 31082bd502218aad7f8d6b4b091a599f0f8b7530 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 21 Jun 2024 17:22:40 -0500
+Subject: counter: ti-eqep: enable clock at probe
+
+From: David Lechner <dlechner@baylibre.com>
+
+[ Upstream commit 0cf81c73e4c6a4861128a8f27861176ec312af4e ]
+
+The TI eQEP clock is both a functional and interface clock. Since it is
+required for the device to function, we should be enabling it at probe.
+
+Up to now, we've just been lucky that the clock was enabled by something
+else on the system already.
+
+Fixes: f213729f6796 ("counter: new TI eQEP driver")
+Reviewed-by: Judith Mendez <jm@ti.com>
+Signed-off-by: David Lechner <dlechner@baylibre.com>
+Link: https://lore.kernel.org/r/20240621-ti-eqep-enable-clock-v2-1-edd3421b54d4@baylibre.com
+Signed-off-by: William Breathitt Gray <wbg@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/counter/ti-eqep.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/drivers/counter/ti-eqep.c b/drivers/counter/ti-eqep.c
+index 65df9ef5b5bc0..6343998819296 100644
+--- a/drivers/counter/ti-eqep.c
++++ b/drivers/counter/ti-eqep.c
+@@ -6,6 +6,7 @@
+  */
+ #include <linux/bitops.h>
++#include <linux/clk.h>
+ #include <linux/counter.h>
+ #include <linux/kernel.h>
+ #include <linux/mod_devicetable.h>
+@@ -349,6 +350,7 @@ static int ti_eqep_probe(struct platform_device *pdev)
+       struct device *dev = &pdev->dev;
+       struct ti_eqep_cnt *priv;
+       void __iomem *base;
++      struct clk *clk;
+       int err;
+       priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
+@@ -388,6 +390,10 @@ static int ti_eqep_probe(struct platform_device *pdev)
+       pm_runtime_enable(dev);
+       pm_runtime_get_sync(dev);
++      clk = devm_clk_get_enabled(dev, NULL);
++      if (IS_ERR(clk))
++              return dev_err_probe(dev, PTR_ERR(clk), "failed to enable clock\n");
++
+       err = counter_register(&priv->counter);
+       if (err < 0) {
+               pm_runtime_put_sync(dev);
+-- 
+2.43.0
+
index c1a21958abc37e0631d3764fc1482d642defb911..16767785e7265a9d89817f850e1412b1abc9c224 100644 (file)
@@ -297,3 +297,4 @@ ocfs2-fix-dio-failure-due-to-insufficient-transaction-credits.patch
 mmc-sdhci-pci-convert-pcibios_-return-codes-to-errnos.patch
 mmc-sdhci-do-not-invert-write-protect-twice.patch
 mmc-sdhci-do-not-lock-spinlock-around-mmc_gpio_get_ro.patch
+counter-ti-eqep-enable-clock-at-probe.patch