soc/tegra: fuse: Add FUSE clock check in tegra_fuse_readl()
authorNagarjuna Kristam <nkristam@nvidia.com>
Tue, 3 Sep 2019 10:56:52 +0000 (16:26 +0530)
committerThierry Reding <treding@nvidia.com>
Tue, 1 Oct 2019 15:02:17 +0000 (17:02 +0200)
tegra_fuse_readl() can be called from drivers at any time. If this API
is called before tegra_fuse_probe(), we end up enabling the clock before
it is registered. Add a check for the FUSE clock in tegra_fuse_readl()
and propagate any errors.

Signed-off-by: Nagarjuna Kristam <nkristam@nvidia.com>
Acked-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/soc/tegra/fuse/fuse-tegra.c

index 3eb44e65b3261ee366e0ade55f99013839cf4819..58996c6ea767a0a484722fa3a55a905208490a87 100644 (file)
@@ -186,9 +186,12 @@ u32 __init tegra_fuse_read_early(unsigned int offset)
 
 int tegra_fuse_readl(unsigned long offset, u32 *value)
 {
-       if (!fuse->read)
+       if (!fuse->read || !fuse->clk)
                return -EPROBE_DEFER;
 
+       if (IS_ERR(fuse->clk))
+               return PTR_ERR(fuse->clk);
+
        *value = fuse->read(fuse, offset);
 
        return 0;