|
@@ -1726,11 +1726,17 @@ static int ux500_hash_probe(struct platform_device *pdev)
|
|
|
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);
|
|
@@ -1762,6 +1768,9 @@ static int ux500_hash_probe(struct platform_device *pdev)
|
|
|
out_power:
|
|
|
hash_disable_power(device_data, false);
|
|
|
|
|
|
+out_clk_unprepare:
|
|
|
+ clk_unprepare(device_data->clk);
|
|
|
+
|
|
|
out_clk:
|
|
|
clk_put(device_data->clk);
|
|
|
|
|
@@ -1826,6 +1835,7 @@ static int ux500_hash_remove(struct platform_device *pdev)
|
|
|
dev_err(dev, "[%s]: hash_disable_power() failed",
|
|
|
__func__);
|
|
|
|
|
|
+ clk_unprepare(device_data->clk);
|
|
|
clk_put(device_data->clk);
|
|
|
regulator_put(device_data->regulator);
|
|
|
|