|
@@ -1668,12 +1668,23 @@ static int spi_imx_remove(struct platform_device *pdev)
|
|
|
{
|
|
|
struct spi_master *master = platform_get_drvdata(pdev);
|
|
|
struct spi_imx_data *spi_imx = spi_master_get_devdata(master);
|
|
|
+ int ret;
|
|
|
|
|
|
spi_bitbang_stop(&spi_imx->bitbang);
|
|
|
|
|
|
+ ret = clk_enable(spi_imx->clk_per);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
+
|
|
|
+ ret = clk_enable(spi_imx->clk_ipg);
|
|
|
+ if (ret) {
|
|
|
+ clk_disable(spi_imx->clk_per);
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
writel(0, spi_imx->base + MXC_CSPICTRL);
|
|
|
- clk_unprepare(spi_imx->clk_ipg);
|
|
|
- clk_unprepare(spi_imx->clk_per);
|
|
|
+ clk_disable_unprepare(spi_imx->clk_ipg);
|
|
|
+ clk_disable_unprepare(spi_imx->clk_per);
|
|
|
spi_imx_sdma_exit(spi_imx);
|
|
|
spi_master_put(master);
|
|
|
|