{
int err;
- if (powered && !IS_ERR(dev->clk) && !dev->clk_enabled) {
+ if (powered && !dev->clk_enabled) {
err = clk_prepare_enable(dev->clk);
if (err)
return err;
if (err)
goto err_revert_shutdown;
- if (!powered && !IS_ERR(dev->clk) && dev->clk_enabled)
+ if (!powered && dev->clk_enabled)
clk_disable_unprepare(dev->clk);
dev->clk_enabled = powered;
err_revert_shutdown:
dev->set_shutdown(dev, !powered);
err_clk_disable:
- if (powered && !IS_ERR(dev->clk) && !dev->clk_enabled)
+ if (powered && !dev->clk_enabled)
clk_disable_unprepare(dev->clk);
return err;
}
if (dev->clk == ERR_PTR(-EPROBE_DEFER))
return PTR_ERR(dev->clk);
+ /* Ignore all other errors as before */
+ if (IS_ERR(dev->clk))
+ dev->clk = NULL;
+
dev->device_wakeup = devm_gpiod_get_optional(dev->dev, "device-wakeup",
GPIOD_OUT_LOW);
if (IS_ERR(dev->device_wakeup))