aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGao Pan <pandy.gao@nxp.com>2016-11-24 06:04:44 -0500
committerMark Brown <broonie@kernel.org>2016-11-25 08:04:41 -0500
commit3ffa1a5dc696f661754bf145813433fda92371b2 (patch)
tree00dadd3ad3a993a6d3c8fe64377ef5262b289a55
parenta17efbc5ef9468aae32c7799a0ebc329c15cd0dc (diff)
spi: imx: use prepare_transfer_hardware() for lpspi
The old driver enable clk in fsl_lpspi_prepare_message() and disable clk in fsl_lpspi_unprepare_message(). Rather than doing this per message it's a bit better to do it in prepare_transfer_hardware(), that way if there's a sequence of messages queued one after another we don't turn the clock on and off all the time. Signed-off-by: Gao Pan <pandy.gao@nxp.com> Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r--drivers/spi/spi-fsl-lpspi.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/drivers/spi/spi-fsl-lpspi.c b/drivers/spi/spi-fsl-lpspi.c
index bcb7b284d2f2..d7ce32aa083b 100644
--- a/drivers/spi/spi-fsl-lpspi.c
+++ b/drivers/spi/spi-fsl-lpspi.c
@@ -148,16 +148,14 @@ static void fsl_lpspi_intctrl(struct fsl_lpspi_data *fsl_lpspi,
148 writel(enable, fsl_lpspi->base + IMX7ULP_IER); 148 writel(enable, fsl_lpspi->base + IMX7ULP_IER);
149} 149}
150 150
151static int fsl_lpspi_prepare_message(struct spi_master *master, 151static int lpspi_prepare_xfer_hardware(struct spi_master *master)
152 struct spi_message *msg)
153{ 152{
154 struct fsl_lpspi_data *fsl_lpspi = spi_master_get_devdata(master); 153 struct fsl_lpspi_data *fsl_lpspi = spi_master_get_devdata(master);
155 154
156 return clk_prepare_enable(fsl_lpspi->clk); 155 return clk_prepare_enable(fsl_lpspi->clk);
157} 156}
158 157
159static int 158static int lpspi_unprepare_xfer_hardware(struct spi_master *master)
160fsl_lpspi_unprepare_message(struct spi_master *master, struct spi_message *msg)
161{ 159{
162 struct fsl_lpspi_data *fsl_lpspi = spi_master_get_devdata(master); 160 struct fsl_lpspi_data *fsl_lpspi = spi_master_get_devdata(master);
163 161
@@ -438,8 +436,8 @@ static int fsl_lpspi_probe(struct platform_device *pdev)
438 fsl_lpspi->dev = &pdev->dev; 436 fsl_lpspi->dev = &pdev->dev;
439 437
440 master->transfer_one_message = fsl_lpspi_transfer_one_msg; 438 master->transfer_one_message = fsl_lpspi_transfer_one_msg;
441 master->prepare_message = fsl_lpspi_prepare_message; 439 master->prepare_transfer_hardware = lpspi_prepare_xfer_hardware;
442 master->unprepare_message = fsl_lpspi_unprepare_message; 440 master->unprepare_transfer_hardware = lpspi_unprepare_xfer_hardware;
443 master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH; 441 master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH;
444 master->flags = SPI_MASTER_MUST_RX | SPI_MASTER_MUST_TX; 442 master->flags = SPI_MASTER_MUST_RX | SPI_MASTER_MUST_TX;
445 master->dev.of_node = pdev->dev.of_node; 443 master->dev.of_node = pdev->dev.of_node;