|
@@ -1458,11 +1458,17 @@ static int ux500_cryp_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 = cryp_enable_power(device_data->dev, device_data, false);
|
|
|
if (ret) {
|
|
|
dev_err(dev, "[%s]: cryp_enable_power() failed!", __func__);
|
|
|
- goto out_clk;
|
|
|
+ goto out_clk_unprepare;
|
|
|
}
|
|
|
|
|
|
cryp_error = cryp_check(device_data);
|
|
@@ -1523,6 +1529,9 @@ static int ux500_cryp_probe(struct platform_device *pdev)
|
|
|
out_power:
|
|
|
cryp_disable_power(device_data->dev, device_data, false);
|
|
|
|
|
|
+out_clk_unprepare:
|
|
|
+ clk_unprepare(device_data->clk);
|
|
|
+
|
|
|
out_clk:
|
|
|
clk_put(device_data->clk);
|
|
|
|
|
@@ -1593,6 +1602,7 @@ static int ux500_cryp_remove(struct platform_device *pdev)
|
|
|
dev_err(&pdev->dev, "[%s]: cryp_disable_power() failed",
|
|
|
__func__);
|
|
|
|
|
|
+ clk_unprepare(device_data->clk);
|
|
|
clk_put(device_data->clk);
|
|
|
regulator_put(device_data->pwr_regulator);
|
|
|
|