Loading drivers/spi/spi-imx.c +33 −0 Original line number Diff line number Diff line Loading @@ -749,6 +749,35 @@ static void spi_imx_cleanup(struct spi_device *spi) { } static int spi_imx_prepare_message(struct spi_master *master, struct spi_message *msg) { struct spi_imx_data *spi_imx = spi_master_get_devdata(master); int ret; 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; } return 0; } static int spi_imx_unprepare_message(struct spi_master *master, struct spi_message *msg) { struct spi_imx_data *spi_imx = spi_master_get_devdata(master); clk_disable(spi_imx->clk_ipg); clk_disable(spi_imx->clk_per); return 0; } static int spi_imx_probe(struct platform_device *pdev) { struct device_node *np = pdev->dev.of_node; Loading Loading @@ -810,6 +839,8 @@ static int spi_imx_probe(struct platform_device *pdev) spi_imx->bitbang.txrx_bufs = spi_imx_transfer; spi_imx->bitbang.master->setup = spi_imx_setup; spi_imx->bitbang.master->cleanup = spi_imx_cleanup; spi_imx->bitbang.master->prepare_message = spi_imx_prepare_message; spi_imx->bitbang.master->unprepare_message = spi_imx_unprepare_message; spi_imx->bitbang.master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH; init_completion(&spi_imx->xfer_done); Loading Loading @@ -872,6 +903,8 @@ static int spi_imx_probe(struct platform_device *pdev) dev_info(&pdev->dev, "probed\n"); clk_disable(spi_imx->clk_ipg); clk_disable(spi_imx->clk_per); return ret; out_clk_put: Loading Loading
drivers/spi/spi-imx.c +33 −0 Original line number Diff line number Diff line Loading @@ -749,6 +749,35 @@ static void spi_imx_cleanup(struct spi_device *spi) { } static int spi_imx_prepare_message(struct spi_master *master, struct spi_message *msg) { struct spi_imx_data *spi_imx = spi_master_get_devdata(master); int ret; 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; } return 0; } static int spi_imx_unprepare_message(struct spi_master *master, struct spi_message *msg) { struct spi_imx_data *spi_imx = spi_master_get_devdata(master); clk_disable(spi_imx->clk_ipg); clk_disable(spi_imx->clk_per); return 0; } static int spi_imx_probe(struct platform_device *pdev) { struct device_node *np = pdev->dev.of_node; Loading Loading @@ -810,6 +839,8 @@ static int spi_imx_probe(struct platform_device *pdev) spi_imx->bitbang.txrx_bufs = spi_imx_transfer; spi_imx->bitbang.master->setup = spi_imx_setup; spi_imx->bitbang.master->cleanup = spi_imx_cleanup; spi_imx->bitbang.master->prepare_message = spi_imx_prepare_message; spi_imx->bitbang.master->unprepare_message = spi_imx_unprepare_message; spi_imx->bitbang.master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH; init_completion(&spi_imx->xfer_done); Loading Loading @@ -872,6 +903,8 @@ static int spi_imx_probe(struct platform_device *pdev) dev_info(&pdev->dev, "probed\n"); clk_disable(spi_imx->clk_ipg); clk_disable(spi_imx->clk_per); return ret; out_clk_put: Loading