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

spi: pxa2xx: Remove pointer to current SPI message from driver data

There is no need to carry pointer to current SPI message in driver data
because cur_msg in struct spi_master holds it already when driver is using
the message queueing infrastructure from the SPI core.

Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Jarkko Nikula and committed by
Mark Brown
4fc0caac bffc967e

+12 -16
+1 -1
drivers/spi/spi-pxa2xx-dma.c
··· 23 23 static void pxa2xx_spi_dma_transfer_complete(struct driver_data *drv_data, 24 24 bool error) 25 25 { 26 - struct spi_message *msg = drv_data->cur_msg; 26 + struct spi_message *msg = drv_data->master->cur_msg; 27 27 28 28 /* 29 29 * It is possible that one CPU is handling ROR interrupt and other
+11 -14
drivers/spi/spi-pxa2xx.c
··· 316 316 317 317 value = __lpss_ssp_read_priv(drv_data, config->reg_cs_ctrl); 318 318 319 - cs = drv_data->cur_msg->spi->chip_select; 319 + cs = drv_data->master->cur_msg->spi->chip_select; 320 320 cs <<= config->cs_sel_shift; 321 321 if (cs != (value & config->cs_sel_mask)) { 322 322 /* ··· 508 508 509 509 void *pxa2xx_spi_next_transfer(struct driver_data *drv_data) 510 510 { 511 - struct spi_message *msg = drv_data->cur_msg; 511 + struct spi_message *msg = drv_data->master->cur_msg; 512 512 struct spi_transfer *trans = drv_data->cur_transfer; 513 513 514 514 /* Move to next transfer */ ··· 529 529 struct spi_message *msg; 530 530 unsigned long timeout; 531 531 532 - msg = drv_data->cur_msg; 533 - drv_data->cur_msg = NULL; 532 + msg = drv_data->master->cur_msg; 534 533 drv_data->cur_transfer = NULL; 535 534 536 535 last_transfer = list_last_entry(&msg->transfers, struct spi_transfer, ··· 609 610 610 611 dev_err(&drv_data->pdev->dev, "%s\n", msg); 611 612 612 - drv_data->cur_msg->state = ERROR_STATE; 613 + drv_data->master->cur_msg->state = ERROR_STATE; 613 614 tasklet_schedule(&drv_data->pump_transfers); 614 615 } 615 616 ··· 622 623 pxa2xx_spi_write(drv_data, SSTO, 0); 623 624 624 625 /* Update total byte transferred return count actual bytes read */ 625 - drv_data->cur_msg->actual_length += drv_data->len - 626 + drv_data->master->cur_msg->actual_length += drv_data->len - 626 627 (drv_data->rx_end - drv_data->rx); 627 628 628 629 /* Transfer delays and chip select release are ··· 630 631 */ 631 632 632 633 /* Move to next transfer */ 633 - drv_data->cur_msg->state = pxa2xx_spi_next_transfer(drv_data); 634 + drv_data->master->cur_msg->state = pxa2xx_spi_next_transfer(drv_data); 634 635 635 636 /* Schedule transfer tasklet */ 636 637 tasklet_schedule(&drv_data->pump_transfers); ··· 745 746 if (!(status & mask)) 746 747 return IRQ_NONE; 747 748 748 - if (!drv_data->cur_msg) { 749 + if (!drv_data->master->cur_msg) { 749 750 750 751 pxa2xx_spi_write(drv_data, SSCR0, 751 752 pxa2xx_spi_read(drv_data, SSCR0) ··· 933 934 { 934 935 struct driver_data *drv_data = (struct driver_data *)data; 935 936 struct spi_master *master = drv_data->master; 936 - struct spi_message *message; 937 + struct spi_message *message = master->cur_msg; 937 938 struct spi_transfer *transfer; 938 939 struct spi_transfer *previous; 939 940 struct chip_data *chip; ··· 949 950 int dma_mapped; 950 951 951 952 /* Get current state information */ 952 - message = drv_data->cur_msg; 953 953 transfer = drv_data->cur_transfer; 954 954 chip = drv_data->cur_chip; 955 955 ··· 1144 1146 { 1145 1147 struct driver_data *drv_data = spi_master_get_devdata(master); 1146 1148 1147 - drv_data->cur_msg = msg; 1148 1149 /* Initial message state*/ 1149 - drv_data->cur_msg->state = START_STATE; 1150 - drv_data->cur_transfer = list_entry(drv_data->cur_msg->transfers.next, 1150 + msg->state = START_STATE; 1151 + drv_data->cur_transfer = list_entry(msg->transfers.next, 1151 1152 struct spi_transfer, 1152 1153 transfer_list); 1153 1154 1154 1155 /* prepare to setup the SSP, in pump_transfers, using the per 1155 1156 * chip configuration */ 1156 - drv_data->cur_chip = spi_get_ctldata(drv_data->cur_msg->spi); 1157 + drv_data->cur_chip = spi_get_ctldata(msg->spi); 1157 1158 1158 1159 /* Mark as busy and launch transfers */ 1159 1160 tasklet_schedule(&drv_data->pump_transfers);
-1
drivers/spi/spi-pxa2xx.h
··· 53 53 atomic_t dma_running; 54 54 55 55 /* Current message transfer state info */ 56 - struct spi_message *cur_msg; 57 56 struct spi_transfer *cur_transfer; 58 57 struct chip_data *cur_chip; 59 58 size_t len;