diff options
author | Jarkko Nikula <jarkko.nikula@linux.intel.com> | 2016-09-07 10:04:06 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-09-12 15:01:27 -0400 |
commit | 4fc0caac065dbf300238997c7d2c212a2b120099 (patch) | |
tree | 495a2497f84650f4674f00bb67f9d155638fc4ee /drivers/spi/spi-pxa2xx.c | |
parent | bffc967e93c771805739a4cc4c7849a749a7b0a6 (diff) |
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>
Diffstat (limited to 'drivers/spi/spi-pxa2xx.c')
-rw-r--r-- | drivers/spi/spi-pxa2xx.c | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c index 0e0d445f4028..e05af2a94d38 100644 --- a/drivers/spi/spi-pxa2xx.c +++ b/drivers/spi/spi-pxa2xx.c | |||
@@ -316,7 +316,7 @@ static void lpss_ssp_select_cs(struct driver_data *drv_data, | |||
316 | 316 | ||
317 | value = __lpss_ssp_read_priv(drv_data, config->reg_cs_ctrl); | 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 | cs <<= config->cs_sel_shift; | 320 | cs <<= config->cs_sel_shift; |
321 | if (cs != (value & config->cs_sel_mask)) { | 321 | if (cs != (value & config->cs_sel_mask)) { |
322 | /* | 322 | /* |
@@ -508,7 +508,7 @@ static int u32_reader(struct driver_data *drv_data) | |||
508 | 508 | ||
509 | void *pxa2xx_spi_next_transfer(struct driver_data *drv_data) | 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 | struct spi_transfer *trans = drv_data->cur_transfer; | 512 | struct spi_transfer *trans = drv_data->cur_transfer; |
513 | 513 | ||
514 | /* Move to next transfer */ | 514 | /* Move to next transfer */ |
@@ -529,8 +529,7 @@ static void giveback(struct driver_data *drv_data) | |||
529 | struct spi_message *msg; | 529 | struct spi_message *msg; |
530 | unsigned long timeout; | 530 | unsigned long timeout; |
531 | 531 | ||
532 | msg = drv_data->cur_msg; | 532 | msg = drv_data->master->cur_msg; |
533 | drv_data->cur_msg = NULL; | ||
534 | drv_data->cur_transfer = NULL; | 533 | drv_data->cur_transfer = NULL; |
535 | 534 | ||
536 | last_transfer = list_last_entry(&msg->transfers, struct spi_transfer, | 535 | last_transfer = list_last_entry(&msg->transfers, struct spi_transfer, |
@@ -610,7 +609,7 @@ static void int_error_stop(struct driver_data *drv_data, const char* msg) | |||
610 | 609 | ||
611 | dev_err(&drv_data->pdev->dev, "%s\n", msg); | 610 | dev_err(&drv_data->pdev->dev, "%s\n", msg); |
612 | 611 | ||
613 | drv_data->cur_msg->state = ERROR_STATE; | 612 | drv_data->master->cur_msg->state = ERROR_STATE; |
614 | tasklet_schedule(&drv_data->pump_transfers); | 613 | tasklet_schedule(&drv_data->pump_transfers); |
615 | } | 614 | } |
616 | 615 | ||
@@ -623,7 +622,7 @@ static void int_transfer_complete(struct driver_data *drv_data) | |||
623 | pxa2xx_spi_write(drv_data, SSTO, 0); | 622 | pxa2xx_spi_write(drv_data, SSTO, 0); |
624 | 623 | ||
625 | /* Update total byte transferred return count actual bytes read */ | 624 | /* Update total byte transferred return count actual bytes read */ |
626 | drv_data->cur_msg->actual_length += drv_data->len - | 625 | drv_data->master->cur_msg->actual_length += drv_data->len - |
627 | (drv_data->rx_end - drv_data->rx); | 626 | (drv_data->rx_end - drv_data->rx); |
628 | 627 | ||
629 | /* Transfer delays and chip select release are | 628 | /* Transfer delays and chip select release are |
@@ -631,7 +630,7 @@ static void int_transfer_complete(struct driver_data *drv_data) | |||
631 | */ | 630 | */ |
632 | 631 | ||
633 | /* Move to next transfer */ | 632 | /* Move to next transfer */ |
634 | drv_data->cur_msg->state = pxa2xx_spi_next_transfer(drv_data); | 633 | drv_data->master->cur_msg->state = pxa2xx_spi_next_transfer(drv_data); |
635 | 634 | ||
636 | /* Schedule transfer tasklet */ | 635 | /* Schedule transfer tasklet */ |
637 | tasklet_schedule(&drv_data->pump_transfers); | 636 | tasklet_schedule(&drv_data->pump_transfers); |
@@ -746,7 +745,7 @@ static irqreturn_t ssp_int(int irq, void *dev_id) | |||
746 | if (!(status & mask)) | 745 | if (!(status & mask)) |
747 | return IRQ_NONE; | 746 | return IRQ_NONE; |
748 | 747 | ||
749 | if (!drv_data->cur_msg) { | 748 | if (!drv_data->master->cur_msg) { |
750 | 749 | ||
751 | pxa2xx_spi_write(drv_data, SSCR0, | 750 | pxa2xx_spi_write(drv_data, SSCR0, |
752 | pxa2xx_spi_read(drv_data, SSCR0) | 751 | pxa2xx_spi_read(drv_data, SSCR0) |
@@ -934,7 +933,7 @@ static void pump_transfers(unsigned long data) | |||
934 | { | 933 | { |
935 | struct driver_data *drv_data = (struct driver_data *)data; | 934 | struct driver_data *drv_data = (struct driver_data *)data; |
936 | struct spi_master *master = drv_data->master; | 935 | struct spi_master *master = drv_data->master; |
937 | struct spi_message *message; | 936 | struct spi_message *message = master->cur_msg; |
938 | struct spi_transfer *transfer; | 937 | struct spi_transfer *transfer; |
939 | struct spi_transfer *previous; | 938 | struct spi_transfer *previous; |
940 | struct chip_data *chip; | 939 | struct chip_data *chip; |
@@ -950,7 +949,6 @@ static void pump_transfers(unsigned long data) | |||
950 | int dma_mapped; | 949 | int dma_mapped; |
951 | 950 | ||
952 | /* Get current state information */ | 951 | /* Get current state information */ |
953 | message = drv_data->cur_msg; | ||
954 | transfer = drv_data->cur_transfer; | 952 | transfer = drv_data->cur_transfer; |
955 | chip = drv_data->cur_chip; | 953 | chip = drv_data->cur_chip; |
956 | 954 | ||
@@ -1146,16 +1144,15 @@ static int pxa2xx_spi_transfer_one_message(struct spi_master *master, | |||
1146 | { | 1144 | { |
1147 | struct driver_data *drv_data = spi_master_get_devdata(master); | 1145 | struct driver_data *drv_data = spi_master_get_devdata(master); |
1148 | 1146 | ||
1149 | drv_data->cur_msg = msg; | ||
1150 | /* Initial message state*/ | 1147 | /* Initial message state*/ |
1151 | drv_data->cur_msg->state = START_STATE; | 1148 | msg->state = START_STATE; |
1152 | drv_data->cur_transfer = list_entry(drv_data->cur_msg->transfers.next, | 1149 | drv_data->cur_transfer = list_entry(msg->transfers.next, |
1153 | struct spi_transfer, | 1150 | struct spi_transfer, |
1154 | transfer_list); | 1151 | transfer_list); |
1155 | 1152 | ||
1156 | /* prepare to setup the SSP, in pump_transfers, using the per | 1153 | /* prepare to setup the SSP, in pump_transfers, using the per |
1157 | * chip configuration */ | 1154 | * chip configuration */ |
1158 | drv_data->cur_chip = spi_get_ctldata(drv_data->cur_msg->spi); | 1155 | drv_data->cur_chip = spi_get_ctldata(msg->spi); |
1159 | 1156 | ||
1160 | /* Mark as busy and launch transfers */ | 1157 | /* Mark as busy and launch transfers */ |
1161 | tasklet_schedule(&drv_data->pump_transfers); | 1158 | tasklet_schedule(&drv_data->pump_transfers); |