aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/spi/spi-pxa2xx.c
diff options
context:
space:
mode:
authorJarkko Nikula <jarkko.nikula@linux.intel.com>2016-09-07 10:04:06 -0400
committerMark Brown <broonie@kernel.org>2016-09-12 15:01:27 -0400
commit4fc0caac065dbf300238997c7d2c212a2b120099 (patch)
tree495a2497f84650f4674f00bb67f9d155638fc4ee /drivers/spi/spi-pxa2xx.c
parentbffc967e93c771805739a4cc4c7849a749a7b0a6 (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.c25
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
509void *pxa2xx_spi_next_transfer(struct driver_data *drv_data) 509void *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);