]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
counter: ti-eqep: enable clock at probe
authorDavid Lechner <dlechner@baylibre.com>
Fri, 21 Jun 2024 22:22:40 +0000 (17:22 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 5 Jul 2024 07:33:56 +0000 (09:33 +0200)
[ 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

index b0f24cf3e891dedd8295bc43c79e4f1403e1bd72..4d3de4a35801fc2b598ff0c79998475e1d468c5a 100644 (file)
@@ -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>
@@ -376,6 +377,7 @@ static int ti_eqep_probe(struct platform_device *pdev)
        struct counter_device *counter;
        struct ti_eqep_cnt *priv;
        void __iomem *base;
+       struct clk *clk;
        int err;
 
        counter = devm_counter_alloc(dev, sizeof(*priv));
@@ -415,6 +417,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_add(counter);
        if (err < 0) {
                pm_runtime_put_sync(dev);