goto out_regulator;
        }
 
+       ret = clk_prepare(device_data->clk);
+       if (ret) {
+               dev_err(dev, "[%s] clk_prepare() failed!", __func__);
+               goto out_clk;
+       }
+
        /* Enable device power (and clock) */
        ret = hash_enable_power(device_data, false);
        if (ret) {
                dev_err(dev, "[%s]: hash_enable_power() failed!", __func__);
-               goto out_clk;
+               goto out_clk_unprepare;
        }
 
        ret = hash_check_hw(device_data);
 out_power:
        hash_disable_power(device_data, false);
 
+out_clk_unprepare:
+       clk_unprepare(device_data->clk);
+
 out_clk:
        clk_put(device_data->clk);
 
                dev_err(dev, "[%s]: hash_disable_power() failed",
                        __func__);
 
+       clk_unprepare(device_data->clk);
        clk_put(device_data->clk);
        regulator_put(device_data->regulator);