Commit 44ec41b7 authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Mark Brown

spi: pxa2xx: Remove redundant ->read() and ->write() in struct chip_data

Since the commit 196b0e2c ("spi: pxa2xx: Remove if statement
that is always true in pump_transfers()") the ->read() and ->write()
methods in the struct driver_data are reconfigured for each transfer.
Hence no need to keep the intermediate state in the struct chip_data.

The same applies to n_bytes member of the same data structure.
Get rid of unneeded storage for good.
Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20211122200622.43305-1-andriy.shevchenko@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent dd06a0c6
...@@ -994,13 +994,10 @@ static int pxa2xx_spi_transfer_one(struct spi_controller *controller, ...@@ -994,13 +994,10 @@ static int pxa2xx_spi_transfer_one(struct spi_controller *controller,
dev_err(&spi->dev, "Flush failed\n"); dev_err(&spi->dev, "Flush failed\n");
return -EIO; return -EIO;
} }
drv_data->n_bytes = chip->n_bytes;
drv_data->tx = (void *)transfer->tx_buf; drv_data->tx = (void *)transfer->tx_buf;
drv_data->tx_end = drv_data->tx + transfer->len; drv_data->tx_end = drv_data->tx + transfer->len;
drv_data->rx = transfer->rx_buf; drv_data->rx = transfer->rx_buf;
drv_data->rx_end = drv_data->rx + transfer->len; drv_data->rx_end = drv_data->rx + transfer->len;
drv_data->write = drv_data->tx ? chip->write : null_writer;
drv_data->read = drv_data->rx ? chip->read : null_reader;
/* Change speed and bit per word on a per transfer */ /* Change speed and bit per word on a per transfer */
bits = transfer->bits_per_word; bits = transfer->bits_per_word;
...@@ -1010,22 +1007,16 @@ static int pxa2xx_spi_transfer_one(struct spi_controller *controller, ...@@ -1010,22 +1007,16 @@ static int pxa2xx_spi_transfer_one(struct spi_controller *controller,
if (bits <= 8) { if (bits <= 8) {
drv_data->n_bytes = 1; drv_data->n_bytes = 1;
drv_data->read = drv_data->read != null_reader ? drv_data->read = drv_data->rx ? u8_reader : null_reader;
u8_reader : null_reader; drv_data->write = drv_data->tx ? u8_writer : null_writer;
drv_data->write = drv_data->write != null_writer ?
u8_writer : null_writer;
} else if (bits <= 16) { } else if (bits <= 16) {
drv_data->n_bytes = 2; drv_data->n_bytes = 2;
drv_data->read = drv_data->read != null_reader ? drv_data->read = drv_data->rx ? u16_reader : null_reader;
u16_reader : null_reader; drv_data->write = drv_data->tx ? u16_writer : null_writer;
drv_data->write = drv_data->write != null_writer ?
u16_writer : null_writer;
} else if (bits <= 32) { } else if (bits <= 32) {
drv_data->n_bytes = 4; drv_data->n_bytes = 4;
drv_data->read = drv_data->read != null_reader ? drv_data->read = drv_data->rx ? u32_reader : null_reader;
u32_reader : null_reader; drv_data->write = drv_data->tx ? u32_writer : null_writer;
drv_data->write = drv_data->write != null_writer ?
u32_writer : null_writer;
} }
/* /*
* If bits per word is changed in DMA mode, then must check * If bits per word is changed in DMA mode, then must check
...@@ -1391,20 +1382,6 @@ static int setup(struct spi_device *spi) ...@@ -1391,20 +1382,6 @@ static int setup(struct spi_device *spi)
if (spi->mode & SPI_LOOP) if (spi->mode & SPI_LOOP)
chip->cr1 |= SSCR1_LBM; chip->cr1 |= SSCR1_LBM;
if (spi->bits_per_word <= 8) {
chip->n_bytes = 1;
chip->read = u8_reader;
chip->write = u8_writer;
} else if (spi->bits_per_word <= 16) {
chip->n_bytes = 2;
chip->read = u16_reader;
chip->write = u16_writer;
} else if (spi->bits_per_word <= 32) {
chip->n_bytes = 4;
chip->read = u32_reader;
chip->write = u32_writer;
}
spi_set_ctldata(spi, chip); spi_set_ctldata(spi, chip);
if (drv_data->ssp_type == CE4100_SSP) if (drv_data->ssp_type == CE4100_SSP)
......
...@@ -61,7 +61,6 @@ struct chip_data { ...@@ -61,7 +61,6 @@ struct chip_data {
u32 cr1; u32 cr1;
u32 dds_rate; u32 dds_rate;
u32 timeout; u32 timeout;
u8 n_bytes;
u8 enable_dma; u8 enable_dma;
u32 dma_burst_size; u32 dma_burst_size;
u32 dma_threshold; u32 dma_threshold;
...@@ -69,9 +68,6 @@ struct chip_data { ...@@ -69,9 +68,6 @@ struct chip_data {
u16 lpss_rx_threshold; u16 lpss_rx_threshold;
u16 lpss_tx_threshold; u16 lpss_tx_threshold;
int (*write)(struct driver_data *drv_data);
int (*read)(struct driver_data *drv_data);
void (*cs_control)(u32 command); void (*cs_control)(u32 command);
}; };
......
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