nvmem: qfprom: Mark core clk as optional
authorLuca Weiss <luca.weiss@fairphone.com>
Fri, 20 Oct 2023 10:55:40 +0000 (11:55 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 21 Oct 2023 17:19:06 +0000 (19:19 +0200)
On some platforms like sc7280 on non-ChromeOS devices the core clock
cannot be touched by Linux so we cannot provide it. Mark it as optional
as accessing qfprom for reading works without it but we still prohibit
writing if we cannot provide the clock.

Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20231020105545.216052-2-srinivas.kandagatla@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/nvmem/qfprom.c

index 14814cba2dd6563a56442c4479806a8d8bea7c23..525be03b7bbab9455b8871c5b10795a079a12fb9 100644 (file)
@@ -423,12 +423,12 @@ static int qfprom_probe(struct platform_device *pdev)
                if (IS_ERR(priv->vcc))
                        return PTR_ERR(priv->vcc);
 
-               priv->secclk = devm_clk_get(dev, "core");
+               priv->secclk = devm_clk_get_optional(dev, "core");
                if (IS_ERR(priv->secclk))
                        return dev_err_probe(dev, PTR_ERR(priv->secclk), "Error getting clock\n");
 
-               /* Only enable writing if we have SoC data. */
-               if (priv->soc_data)
+               /* Only enable writing if we have SoC data and a valid clock */
+               if (priv->soc_data && priv->secclk)
                        econfig.reg_write = qfprom_reg_write;
        }