Commit c25b2c9eb36502f81c59df764074a475249a4550
Exists in
smarc-imx_3.14.28_1.0.0_ga
and in
1 other branch
Merge remote-tracking branch 'spi/topic/imx' into spi-next
Showing 1 changed file Side-by-side Diff
drivers/spi/spi-imx.c
... | ... | @@ -749,6 +749,35 @@ |
749 | 749 | { |
750 | 750 | } |
751 | 751 | |
752 | +static int | |
753 | +spi_imx_prepare_message(struct spi_master *master, struct spi_message *msg) | |
754 | +{ | |
755 | + struct spi_imx_data *spi_imx = spi_master_get_devdata(master); | |
756 | + int ret; | |
757 | + | |
758 | + ret = clk_enable(spi_imx->clk_per); | |
759 | + if (ret) | |
760 | + return ret; | |
761 | + | |
762 | + ret = clk_enable(spi_imx->clk_ipg); | |
763 | + if (ret) { | |
764 | + clk_disable(spi_imx->clk_per); | |
765 | + return ret; | |
766 | + } | |
767 | + | |
768 | + return 0; | |
769 | +} | |
770 | + | |
771 | +static int | |
772 | +spi_imx_unprepare_message(struct spi_master *master, struct spi_message *msg) | |
773 | +{ | |
774 | + struct spi_imx_data *spi_imx = spi_master_get_devdata(master); | |
775 | + | |
776 | + clk_disable(spi_imx->clk_ipg); | |
777 | + clk_disable(spi_imx->clk_per); | |
778 | + return 0; | |
779 | +} | |
780 | + | |
752 | 781 | static int spi_imx_probe(struct platform_device *pdev) |
753 | 782 | { |
754 | 783 | struct device_node *np = pdev->dev.of_node; |
... | ... | @@ -810,6 +839,8 @@ |
810 | 839 | spi_imx->bitbang.txrx_bufs = spi_imx_transfer; |
811 | 840 | spi_imx->bitbang.master->setup = spi_imx_setup; |
812 | 841 | spi_imx->bitbang.master->cleanup = spi_imx_cleanup; |
842 | + spi_imx->bitbang.master->prepare_message = spi_imx_prepare_message; | |
843 | + spi_imx->bitbang.master->unprepare_message = spi_imx_unprepare_message; | |
813 | 844 | spi_imx->bitbang.master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH; |
814 | 845 | |
815 | 846 | init_completion(&spi_imx->xfer_done); |
... | ... | @@ -872,6 +903,8 @@ |
872 | 903 | |
873 | 904 | dev_info(&pdev->dev, "probed\n"); |
874 | 905 | |
906 | + clk_disable(spi_imx->clk_ipg); | |
907 | + clk_disable(spi_imx->clk_per); | |
875 | 908 | return ret; |
876 | 909 | |
877 | 910 | out_clk_put: |