Commit c25b2c9eb36502f81c59df764074a475249a4550

Authored by Mark Brown

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: