Commit ba33d8ac authored by Andrew Bresticker's avatar Andrew Bresticker Committed by Mark Brown

spi: img-spfi: Reset controller after each message

Imagination has recommended that the SPFI controller be reset after
each message, regardless of success or failure.  Do this in an
unprepare_message() callback.
Signed-off-by: default avatarAndrew Bresticker <abrestic@chromium.org>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 824ab37d
...@@ -414,8 +414,6 @@ static void img_spfi_handle_err(struct spi_master *master, ...@@ -414,8 +414,6 @@ static void img_spfi_handle_err(struct spi_master *master,
dmaengine_terminate_all(spfi->rx_ch); dmaengine_terminate_all(spfi->rx_ch);
} }
spin_unlock_irqrestore(&spfi->lock, flags); spin_unlock_irqrestore(&spfi->lock, flags);
spfi_reset(spfi);
} }
static int img_spfi_prepare(struct spi_master *master, struct spi_message *msg) static int img_spfi_prepare(struct spi_master *master, struct spi_message *msg)
...@@ -437,6 +435,16 @@ static int img_spfi_prepare(struct spi_master *master, struct spi_message *msg) ...@@ -437,6 +435,16 @@ static int img_spfi_prepare(struct spi_master *master, struct spi_message *msg)
return 0; return 0;
} }
static int img_spfi_unprepare(struct spi_master *master,
struct spi_message *msg)
{
struct img_spfi *spfi = spi_master_get_devdata(master);
spfi_reset(spfi);
return 0;
}
static void img_spfi_config(struct spi_master *master, struct spi_device *spi, static void img_spfi_config(struct spi_master *master, struct spi_device *spi,
struct spi_transfer *xfer) struct spi_transfer *xfer)
{ {
...@@ -610,6 +618,7 @@ static int img_spfi_probe(struct platform_device *pdev) ...@@ -610,6 +618,7 @@ static int img_spfi_probe(struct platform_device *pdev)
master->set_cs = img_spfi_set_cs; master->set_cs = img_spfi_set_cs;
master->transfer_one = img_spfi_transfer_one; master->transfer_one = img_spfi_transfer_one;
master->prepare_message = img_spfi_prepare; master->prepare_message = img_spfi_prepare;
master->unprepare_message = img_spfi_unprepare;
master->handle_err = img_spfi_handle_err; master->handle_err = img_spfi_handle_err;
spfi->tx_ch = dma_request_slave_channel(spfi->dev, "tx"); spfi->tx_ch = dma_request_slave_channel(spfi->dev, "tx");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment