]> git.ipfire.org Git - thirdparty/linux.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)
committerWilliam Breathitt Gray <wbg@kernel.org>
Sat, 22 Jun 2024 04:48:11 +0000 (13:48 +0900)
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>
drivers/counter/ti-eqep.c

index 072b11fd6b32e8084de86d2da81dd4ef10da642e..825ae22c3ebc700a81fc77b3a0dc25a0b3cf3101 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);