Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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

Since the commit 196b0e2cf237 ("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: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20211122200622.43305-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Andy Shevchenko and committed by
Mark Brown
44ec41b7 dd06a0c6

+6 -33
+6 -29
drivers/spi/spi-pxa2xx.c
··· 994 994 dev_err(&spi->dev, "Flush failed\n"); 995 995 return -EIO; 996 996 } 997 - drv_data->n_bytes = chip->n_bytes; 998 997 drv_data->tx = (void *)transfer->tx_buf; 999 998 drv_data->tx_end = drv_data->tx + transfer->len; 1000 999 drv_data->rx = transfer->rx_buf; 1001 1000 drv_data->rx_end = drv_data->rx + transfer->len; 1002 - drv_data->write = drv_data->tx ? chip->write : null_writer; 1003 - drv_data->read = drv_data->rx ? chip->read : null_reader; 1004 1001 1005 1002 /* Change speed and bit per word on a per transfer */ 1006 1003 bits = transfer->bits_per_word; ··· 1007 1010 1008 1011 if (bits <= 8) { 1009 1012 drv_data->n_bytes = 1; 1010 - drv_data->read = drv_data->read != null_reader ? 1011 - u8_reader : null_reader; 1012 - drv_data->write = drv_data->write != null_writer ? 1013 - u8_writer : null_writer; 1013 + drv_data->read = drv_data->rx ? u8_reader : null_reader; 1014 + drv_data->write = drv_data->tx ? u8_writer : null_writer; 1014 1015 } else if (bits <= 16) { 1015 1016 drv_data->n_bytes = 2; 1016 - drv_data->read = drv_data->read != null_reader ? 1017 - u16_reader : null_reader; 1018 - drv_data->write = drv_data->write != null_writer ? 1019 - u16_writer : null_writer; 1017 + drv_data->read = drv_data->rx ? u16_reader : null_reader; 1018 + drv_data->write = drv_data->tx ? u16_writer : null_writer; 1020 1019 } else if (bits <= 32) { 1021 1020 drv_data->n_bytes = 4; 1022 - drv_data->read = drv_data->read != null_reader ? 1023 - u32_reader : null_reader; 1024 - drv_data->write = drv_data->write != null_writer ? 1025 - u32_writer : null_writer; 1021 + drv_data->read = drv_data->rx ? u32_reader : null_reader; 1022 + drv_data->write = drv_data->tx ? u32_writer : null_writer; 1026 1023 } 1027 1024 /* 1028 1025 * If bits per word is changed in DMA mode, then must check ··· 1381 1390 1382 1391 if (spi->mode & SPI_LOOP) 1383 1392 chip->cr1 |= SSCR1_LBM; 1384 - 1385 - if (spi->bits_per_word <= 8) { 1386 - chip->n_bytes = 1; 1387 - chip->read = u8_reader; 1388 - chip->write = u8_writer; 1389 - } else if (spi->bits_per_word <= 16) { 1390 - chip->n_bytes = 2; 1391 - chip->read = u16_reader; 1392 - chip->write = u16_writer; 1393 - } else if (spi->bits_per_word <= 32) { 1394 - chip->n_bytes = 4; 1395 - chip->read = u32_reader; 1396 - chip->write = u32_writer; 1397 - } 1398 1393 1399 1394 spi_set_ctldata(spi, chip); 1400 1395
-4
drivers/spi/spi-pxa2xx.h
··· 61 61 u32 cr1; 62 62 u32 dds_rate; 63 63 u32 timeout; 64 - u8 n_bytes; 65 64 u8 enable_dma; 66 65 u32 dma_burst_size; 67 66 u32 dma_threshold; 68 67 u32 threshold; 69 68 u16 lpss_rx_threshold; 70 69 u16 lpss_tx_threshold; 71 - 72 - int (*write)(struct driver_data *drv_data); 73 - int (*read)(struct driver_data *drv_data); 74 70 75 71 void (*cs_control)(u32 command); 76 72 };