diff options
| -rw-r--r-- | drivers/spi/dw_spi.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/spi/dw_spi.c b/drivers/spi/dw_spi.c index 3853df5db052..e434320fded8 100644 --- a/drivers/spi/dw_spi.c +++ b/drivers/spi/dw_spi.c | |||
| @@ -537,6 +537,22 @@ static void pump_transfers(unsigned long data) | |||
| 537 | } | 537 | } |
| 538 | message->state = RUNNING_STATE; | 538 | message->state = RUNNING_STATE; |
| 539 | 539 | ||
| 540 | /* | ||
| 541 | * Adjust transfer mode if necessary. Requires platform dependent | ||
| 542 | * chipselect mechanism. | ||
| 543 | */ | ||
| 544 | if (dws->cs_control) { | ||
| 545 | if (dws->rx && dws->tx) | ||
| 546 | chip->tmode = 0x00; | ||
| 547 | else if (dws->rx) | ||
| 548 | chip->tmode = 0x02; | ||
| 549 | else | ||
| 550 | chip->tmode = 0x01; | ||
| 551 | |||
| 552 | cr0 &= ~(0x3 << SPI_MODE_OFFSET); | ||
| 553 | cr0 |= (chip->tmode << SPI_TMOD_OFFSET); | ||
| 554 | } | ||
| 555 | |||
| 540 | /* Check if current transfer is a DMA transaction */ | 556 | /* Check if current transfer is a DMA transaction */ |
| 541 | dws->dma_mapped = map_dma_buffers(dws); | 557 | dws->dma_mapped = map_dma_buffers(dws); |
| 542 | 558 | ||
