diff options
author | Gao Pan <pandy.gao@nxp.com> | 2016-11-24 06:04:44 -0500 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-11-25 08:04:41 -0500 |
commit | 3ffa1a5dc696f661754bf145813433fda92371b2 (patch) | |
tree | 00dadd3ad3a993a6d3c8fe64377ef5262b289a55 | |
parent | a17efbc5ef9468aae32c7799a0ebc329c15cd0dc (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.c | 10 |
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 | ||
151 | static int fsl_lpspi_prepare_message(struct spi_master *master, | 151 | static 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 | ||
159 | static int | 158 | static int lpspi_unprepare_xfer_hardware(struct spi_master *master) |
160 | fsl_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; |