diff options
author | Olof Johansson <olof@lixom.net> | 2014-09-24 14:20:48 -0400 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2014-09-24 14:21:01 -0400 |
commit | 28fd837204236cf5b5533525e5b53c5176fa97a3 (patch) | |
tree | ac7dcad925950bc0bb53c5a55cb199e31e7aaee0 /drivers/spi | |
parent | c82eb464879dd0ecbe0c4cb1b80ac4e82b634872 (diff) | |
parent | 64d14a31d5410ea34641c41795e0ba222bda740c (diff) |
Merge tag 'imx-cleanup-3.18' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into next/cleanup
Merge "ARM: imx: cleanup for 3.18" from Shawn Guo:
The i.MX cleanup for 3.18:
- Reomve a few i.MX27 and i.MX1 board files
- Remove imx_scu_standby_enable() since core code handles scu
standby now
- Remove unnecessary iomux declaration
- Remove useless sound card property from vf610-twr dts
* tag 'imx-cleanup-3.18' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux:
ARM: imx: Remove mach-mxt_td60 board file
ARM: i.MX: Remove i.MX1 ADS board support
ARM: dts: vf610-twr: remove useless property for sound card.
ARM: imx: remove imx_scu_standby_enable()
ARM: i.MX: Remove Phytec i.MX27 PCM038/PCM970 board files
ARM: i.MX: Remove mach-cpuimx27sd board file
ARM: imx: iomux: Do not export symbol without public declaration
Signed-off-by: Olof Johansson <olof@lixom.net>
Diffstat (limited to 'drivers/spi')
-rw-r--r-- | drivers/spi/spi-au1550.c | 2 | ||||
-rw-r--r-- | drivers/spi/spi-davinci.c | 16 | ||||
-rw-r--r-- | drivers/spi/spi-dw-pci.c | 2 | ||||
-rw-r--r-- | drivers/spi/spi-dw.c | 2 | ||||
-rw-r--r-- | drivers/spi/spi-omap2-mcspi.c | 3 | ||||
-rw-r--r-- | drivers/spi/spi-pxa2xx.c | 1 | ||||
-rw-r--r-- | drivers/spi/spi-rockchip.c | 4 | ||||
-rw-r--r-- | drivers/spi/spi-rspi.c | 94 | ||||
-rw-r--r-- | drivers/spi/spi-sh-msiof.c | 71 | ||||
-rw-r--r-- | drivers/spi/spi.c | 1 |
10 files changed, 114 insertions, 82 deletions
diff --git a/drivers/spi/spi-au1550.c b/drivers/spi/spi-au1550.c index 40c3d43c9292..f40b34cdf2fc 100644 --- a/drivers/spi/spi-au1550.c +++ b/drivers/spi/spi-au1550.c | |||
@@ -945,7 +945,7 @@ static int au1550_spi_remove(struct platform_device *pdev) | |||
945 | spi_bitbang_stop(&hw->bitbang); | 945 | spi_bitbang_stop(&hw->bitbang); |
946 | free_irq(hw->irq, hw); | 946 | free_irq(hw->irq, hw); |
947 | iounmap((void __iomem *)hw->regs); | 947 | iounmap((void __iomem *)hw->regs); |
948 | release_mem_region(r->start, sizeof(psc_spi_t)); | 948 | release_mem_region(hw->ioarea->start, sizeof(psc_spi_t)); |
949 | 949 | ||
950 | if (hw->usedma) { | 950 | if (hw->usedma) { |
951 | au1550_spi_dma_rxtmp_free(hw); | 951 | au1550_spi_dma_rxtmp_free(hw); |
diff --git a/drivers/spi/spi-davinci.c b/drivers/spi/spi-davinci.c index 276a3884fb3c..48f1d26e6ad9 100644 --- a/drivers/spi/spi-davinci.c +++ b/drivers/spi/spi-davinci.c | |||
@@ -417,16 +417,16 @@ static int davinci_spi_setup(struct spi_device *spi) | |||
417 | flags, dev_name(&spi->dev)); | 417 | flags, dev_name(&spi->dev)); |
418 | internal_cs = false; | 418 | internal_cs = false; |
419 | } | 419 | } |
420 | } | ||
421 | 420 | ||
422 | if (retval) { | 421 | if (retval) { |
423 | dev_err(&spi->dev, "GPIO %d setup failed (%d)\n", | 422 | dev_err(&spi->dev, "GPIO %d setup failed (%d)\n", |
424 | spi->cs_gpio, retval); | 423 | spi->cs_gpio, retval); |
425 | return retval; | 424 | return retval; |
426 | } | 425 | } |
427 | 426 | ||
428 | if (internal_cs) | 427 | if (internal_cs) |
429 | set_io_bits(dspi->base + SPIPC0, 1 << spi->chip_select); | 428 | set_io_bits(dspi->base + SPIPC0, 1 << spi->chip_select); |
429 | } | ||
430 | 430 | ||
431 | if (spi->mode & SPI_READY) | 431 | if (spi->mode & SPI_READY) |
432 | set_io_bits(dspi->base + SPIPC0, SPIPC0_SPIENA_MASK); | 432 | set_io_bits(dspi->base + SPIPC0, SPIPC0_SPIENA_MASK); |
diff --git a/drivers/spi/spi-dw-pci.c b/drivers/spi/spi-dw-pci.c index 3f3dc1226edf..e14960470d8d 100644 --- a/drivers/spi/spi-dw-pci.c +++ b/drivers/spi/spi-dw-pci.c | |||
@@ -62,6 +62,8 @@ static int spi_pci_probe(struct pci_dev *pdev, | |||
62 | if (ret) | 62 | if (ret) |
63 | return ret; | 63 | return ret; |
64 | 64 | ||
65 | dws->regs = pcim_iomap_table(pdev)[pci_bar]; | ||
66 | |||
65 | dws->bus_num = 0; | 67 | dws->bus_num = 0; |
66 | dws->num_cs = 4; | 68 | dws->num_cs = 4; |
67 | dws->irq = pdev->irq; | 69 | dws->irq = pdev->irq; |
diff --git a/drivers/spi/spi-dw.c b/drivers/spi/spi-dw.c index 29f33143b795..670f0627f3bf 100644 --- a/drivers/spi/spi-dw.c +++ b/drivers/spi/spi-dw.c | |||
@@ -271,7 +271,7 @@ static void giveback(struct dw_spi *dws) | |||
271 | transfer_list); | 271 | transfer_list); |
272 | 272 | ||
273 | if (!last_transfer->cs_change) | 273 | if (!last_transfer->cs_change) |
274 | spi_chip_sel(dws, dws->cur_msg->spi, 0); | 274 | spi_chip_sel(dws, msg->spi, 0); |
275 | 275 | ||
276 | spi_finalize_current_message(dws->master); | 276 | spi_finalize_current_message(dws->master); |
277 | } | 277 | } |
diff --git a/drivers/spi/spi-omap2-mcspi.c b/drivers/spi/spi-omap2-mcspi.c index 68441fa448de..352eed7463ac 100644 --- a/drivers/spi/spi-omap2-mcspi.c +++ b/drivers/spi/spi-omap2-mcspi.c | |||
@@ -329,7 +329,8 @@ static void omap2_mcspi_set_fifo(const struct spi_device *spi, | |||
329 | disable_fifo: | 329 | disable_fifo: |
330 | if (t->rx_buf != NULL) | 330 | if (t->rx_buf != NULL) |
331 | chconf &= ~OMAP2_MCSPI_CHCONF_FFER; | 331 | chconf &= ~OMAP2_MCSPI_CHCONF_FFER; |
332 | else | 332 | |
333 | if (t->tx_buf != NULL) | ||
333 | chconf &= ~OMAP2_MCSPI_CHCONF_FFET; | 334 | chconf &= ~OMAP2_MCSPI_CHCONF_FFET; |
334 | 335 | ||
335 | mcspi_write_chconf0(spi, chconf); | 336 | mcspi_write_chconf0(spi, chconf); |
diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c index fe792106bdc5..46f45ca2c694 100644 --- a/drivers/spi/spi-pxa2xx.c +++ b/drivers/spi/spi-pxa2xx.c | |||
@@ -1074,6 +1074,7 @@ static struct acpi_device_id pxa2xx_spi_acpi_match[] = { | |||
1074 | { "INT3430", 0 }, | 1074 | { "INT3430", 0 }, |
1075 | { "INT3431", 0 }, | 1075 | { "INT3431", 0 }, |
1076 | { "80860F0E", 0 }, | 1076 | { "80860F0E", 0 }, |
1077 | { "8086228E", 0 }, | ||
1077 | { }, | 1078 | { }, |
1078 | }; | 1079 | }; |
1079 | MODULE_DEVICE_TABLE(acpi, pxa2xx_spi_acpi_match); | 1080 | MODULE_DEVICE_TABLE(acpi, pxa2xx_spi_acpi_match); |
diff --git a/drivers/spi/spi-rockchip.c b/drivers/spi/spi-rockchip.c index c0743604b906..cd0e08b0c9f6 100644 --- a/drivers/spi/spi-rockchip.c +++ b/drivers/spi/spi-rockchip.c | |||
@@ -499,7 +499,7 @@ static void rockchip_spi_config(struct rockchip_spi *rs) | |||
499 | } | 499 | } |
500 | 500 | ||
501 | /* div doesn't support odd number */ | 501 | /* div doesn't support odd number */ |
502 | div = rs->max_freq / rs->speed; | 502 | div = max_t(u32, rs->max_freq / rs->speed, 1); |
503 | div = (div + 1) & 0xfffe; | 503 | div = (div + 1) & 0xfffe; |
504 | 504 | ||
505 | spi_enable_chip(rs, 0); | 505 | spi_enable_chip(rs, 0); |
@@ -678,7 +678,7 @@ static int rockchip_spi_probe(struct platform_device *pdev) | |||
678 | rs->dma_tx.addr = (dma_addr_t)(mem->start + ROCKCHIP_SPI_TXDR); | 678 | rs->dma_tx.addr = (dma_addr_t)(mem->start + ROCKCHIP_SPI_TXDR); |
679 | rs->dma_rx.addr = (dma_addr_t)(mem->start + ROCKCHIP_SPI_RXDR); | 679 | rs->dma_rx.addr = (dma_addr_t)(mem->start + ROCKCHIP_SPI_RXDR); |
680 | rs->dma_tx.direction = DMA_MEM_TO_DEV; | 680 | rs->dma_tx.direction = DMA_MEM_TO_DEV; |
681 | rs->dma_tx.direction = DMA_DEV_TO_MEM; | 681 | rs->dma_rx.direction = DMA_DEV_TO_MEM; |
682 | 682 | ||
683 | master->can_dma = rockchip_spi_can_dma; | 683 | master->can_dma = rockchip_spi_can_dma; |
684 | master->dma_tx = rs->dma_tx.ch; | 684 | master->dma_tx = rs->dma_tx.ch; |
diff --git a/drivers/spi/spi-rspi.c b/drivers/spi/spi-rspi.c index c850dfdfa9e3..ad87a98f8f68 100644 --- a/drivers/spi/spi-rspi.c +++ b/drivers/spi/spi-rspi.c | |||
@@ -472,25 +472,52 @@ static int rspi_dma_transfer(struct rspi_data *rspi, struct sg_table *tx, | |||
472 | dma_cookie_t cookie; | 472 | dma_cookie_t cookie; |
473 | int ret; | 473 | int ret; |
474 | 474 | ||
475 | if (tx) { | 475 | /* First prepare and submit the DMA request(s), as this may fail */ |
476 | desc_tx = dmaengine_prep_slave_sg(rspi->master->dma_tx, | ||
477 | tx->sgl, tx->nents, DMA_TO_DEVICE, | ||
478 | DMA_PREP_INTERRUPT | DMA_CTRL_ACK); | ||
479 | if (!desc_tx) | ||
480 | goto no_dma; | ||
481 | |||
482 | irq_mask |= SPCR_SPTIE; | ||
483 | } | ||
484 | if (rx) { | 476 | if (rx) { |
485 | desc_rx = dmaengine_prep_slave_sg(rspi->master->dma_rx, | 477 | desc_rx = dmaengine_prep_slave_sg(rspi->master->dma_rx, |
486 | rx->sgl, rx->nents, DMA_FROM_DEVICE, | 478 | rx->sgl, rx->nents, DMA_FROM_DEVICE, |
487 | DMA_PREP_INTERRUPT | DMA_CTRL_ACK); | 479 | DMA_PREP_INTERRUPT | DMA_CTRL_ACK); |
488 | if (!desc_rx) | 480 | if (!desc_rx) { |
489 | goto no_dma; | 481 | ret = -EAGAIN; |
482 | goto no_dma_rx; | ||
483 | } | ||
484 | |||
485 | desc_rx->callback = rspi_dma_complete; | ||
486 | desc_rx->callback_param = rspi; | ||
487 | cookie = dmaengine_submit(desc_rx); | ||
488 | if (dma_submit_error(cookie)) { | ||
489 | ret = cookie; | ||
490 | goto no_dma_rx; | ||
491 | } | ||
490 | 492 | ||
491 | irq_mask |= SPCR_SPRIE; | 493 | irq_mask |= SPCR_SPRIE; |
492 | } | 494 | } |
493 | 495 | ||
496 | if (tx) { | ||
497 | desc_tx = dmaengine_prep_slave_sg(rspi->master->dma_tx, | ||
498 | tx->sgl, tx->nents, DMA_TO_DEVICE, | ||
499 | DMA_PREP_INTERRUPT | DMA_CTRL_ACK); | ||
500 | if (!desc_tx) { | ||
501 | ret = -EAGAIN; | ||
502 | goto no_dma_tx; | ||
503 | } | ||
504 | |||
505 | if (rx) { | ||
506 | /* No callback */ | ||
507 | desc_tx->callback = NULL; | ||
508 | } else { | ||
509 | desc_tx->callback = rspi_dma_complete; | ||
510 | desc_tx->callback_param = rspi; | ||
511 | } | ||
512 | cookie = dmaengine_submit(desc_tx); | ||
513 | if (dma_submit_error(cookie)) { | ||
514 | ret = cookie; | ||
515 | goto no_dma_tx; | ||
516 | } | ||
517 | |||
518 | irq_mask |= SPCR_SPTIE; | ||
519 | } | ||
520 | |||
494 | /* | 521 | /* |
495 | * DMAC needs SPxIE, but if SPxIE is set, the IRQ routine will be | 522 | * DMAC needs SPxIE, but if SPxIE is set, the IRQ routine will be |
496 | * called. So, this driver disables the IRQ while DMA transfer. | 523 | * called. So, this driver disables the IRQ while DMA transfer. |
@@ -503,34 +530,24 @@ static int rspi_dma_transfer(struct rspi_data *rspi, struct sg_table *tx, | |||
503 | rspi_enable_irq(rspi, irq_mask); | 530 | rspi_enable_irq(rspi, irq_mask); |
504 | rspi->dma_callbacked = 0; | 531 | rspi->dma_callbacked = 0; |
505 | 532 | ||
506 | if (rx) { | 533 | /* Now start DMA */ |
507 | desc_rx->callback = rspi_dma_complete; | 534 | if (rx) |
508 | desc_rx->callback_param = rspi; | ||
509 | cookie = dmaengine_submit(desc_rx); | ||
510 | if (dma_submit_error(cookie)) | ||
511 | return cookie; | ||
512 | dma_async_issue_pending(rspi->master->dma_rx); | 535 | dma_async_issue_pending(rspi->master->dma_rx); |
513 | } | 536 | if (tx) |
514 | if (tx) { | ||
515 | if (rx) { | ||
516 | /* No callback */ | ||
517 | desc_tx->callback = NULL; | ||
518 | } else { | ||
519 | desc_tx->callback = rspi_dma_complete; | ||
520 | desc_tx->callback_param = rspi; | ||
521 | } | ||
522 | cookie = dmaengine_submit(desc_tx); | ||
523 | if (dma_submit_error(cookie)) | ||
524 | return cookie; | ||
525 | dma_async_issue_pending(rspi->master->dma_tx); | 537 | dma_async_issue_pending(rspi->master->dma_tx); |
526 | } | ||
527 | 538 | ||
528 | ret = wait_event_interruptible_timeout(rspi->wait, | 539 | ret = wait_event_interruptible_timeout(rspi->wait, |
529 | rspi->dma_callbacked, HZ); | 540 | rspi->dma_callbacked, HZ); |
530 | if (ret > 0 && rspi->dma_callbacked) | 541 | if (ret > 0 && rspi->dma_callbacked) |
531 | ret = 0; | 542 | ret = 0; |
532 | else if (!ret) | 543 | else if (!ret) { |
544 | dev_err(&rspi->master->dev, "DMA timeout\n"); | ||
533 | ret = -ETIMEDOUT; | 545 | ret = -ETIMEDOUT; |
546 | if (tx) | ||
547 | dmaengine_terminate_all(rspi->master->dma_tx); | ||
548 | if (rx) | ||
549 | dmaengine_terminate_all(rspi->master->dma_rx); | ||
550 | } | ||
534 | 551 | ||
535 | rspi_disable_irq(rspi, irq_mask); | 552 | rspi_disable_irq(rspi, irq_mask); |
536 | 553 | ||
@@ -541,11 +558,16 @@ static int rspi_dma_transfer(struct rspi_data *rspi, struct sg_table *tx, | |||
541 | 558 | ||
542 | return ret; | 559 | return ret; |
543 | 560 | ||
544 | no_dma: | 561 | no_dma_tx: |
545 | pr_warn_once("%s %s: DMA not available, falling back to PIO\n", | 562 | if (rx) |
546 | dev_driver_string(&rspi->master->dev), | 563 | dmaengine_terminate_all(rspi->master->dma_rx); |
547 | dev_name(&rspi->master->dev)); | 564 | no_dma_rx: |
548 | return -EAGAIN; | 565 | if (ret == -EAGAIN) { |
566 | pr_warn_once("%s %s: DMA not available, falling back to PIO\n", | ||
567 | dev_driver_string(&rspi->master->dev), | ||
568 | dev_name(&rspi->master->dev)); | ||
569 | } | ||
570 | return ret; | ||
549 | } | 571 | } |
550 | 572 | ||
551 | static void rspi_receive_init(const struct rspi_data *rspi) | 573 | static void rspi_receive_init(const struct rspi_data *rspi) |
diff --git a/drivers/spi/spi-sh-msiof.c b/drivers/spi/spi-sh-msiof.c index 2a4354dcd661..543075b80f16 100644 --- a/drivers/spi/spi-sh-msiof.c +++ b/drivers/spi/spi-sh-msiof.c | |||
@@ -636,48 +636,38 @@ static int sh_msiof_dma_once(struct sh_msiof_spi_priv *p, const void *tx, | |||
636 | dma_cookie_t cookie; | 636 | dma_cookie_t cookie; |
637 | int ret; | 637 | int ret; |
638 | 638 | ||
639 | if (tx) { | 639 | /* First prepare and submit the DMA request(s), as this may fail */ |
640 | ier_bits |= IER_TDREQE | IER_TDMAE; | ||
641 | dma_sync_single_for_device(p->master->dma_tx->device->dev, | ||
642 | p->tx_dma_addr, len, DMA_TO_DEVICE); | ||
643 | desc_tx = dmaengine_prep_slave_single(p->master->dma_tx, | ||
644 | p->tx_dma_addr, len, DMA_TO_DEVICE, | ||
645 | DMA_PREP_INTERRUPT | DMA_CTRL_ACK); | ||
646 | if (!desc_tx) | ||
647 | return -EAGAIN; | ||
648 | } | ||
649 | |||
650 | if (rx) { | 640 | if (rx) { |
651 | ier_bits |= IER_RDREQE | IER_RDMAE; | 641 | ier_bits |= IER_RDREQE | IER_RDMAE; |
652 | desc_rx = dmaengine_prep_slave_single(p->master->dma_rx, | 642 | desc_rx = dmaengine_prep_slave_single(p->master->dma_rx, |
653 | p->rx_dma_addr, len, DMA_FROM_DEVICE, | 643 | p->rx_dma_addr, len, DMA_FROM_DEVICE, |
654 | DMA_PREP_INTERRUPT | DMA_CTRL_ACK); | 644 | DMA_PREP_INTERRUPT | DMA_CTRL_ACK); |
655 | if (!desc_rx) | 645 | if (!desc_rx) { |
656 | return -EAGAIN; | 646 | ret = -EAGAIN; |
657 | } | 647 | goto no_dma_rx; |
658 | 648 | } | |
659 | /* 1 stage FIFO watermarks for DMA */ | ||
660 | sh_msiof_write(p, FCTR, FCTR_TFWM_1 | FCTR_RFWM_1); | ||
661 | |||
662 | /* setup msiof transfer mode registers (32-bit words) */ | ||
663 | sh_msiof_spi_set_mode_regs(p, tx, rx, 32, len / 4); | ||
664 | |||
665 | sh_msiof_write(p, IER, ier_bits); | ||
666 | |||
667 | reinit_completion(&p->done); | ||
668 | 649 | ||
669 | if (rx) { | ||
670 | desc_rx->callback = sh_msiof_dma_complete; | 650 | desc_rx->callback = sh_msiof_dma_complete; |
671 | desc_rx->callback_param = p; | 651 | desc_rx->callback_param = p; |
672 | cookie = dmaengine_submit(desc_rx); | 652 | cookie = dmaengine_submit(desc_rx); |
673 | if (dma_submit_error(cookie)) { | 653 | if (dma_submit_error(cookie)) { |
674 | ret = cookie; | 654 | ret = cookie; |
675 | goto stop_ier; | 655 | goto no_dma_rx; |
676 | } | 656 | } |
677 | dma_async_issue_pending(p->master->dma_rx); | ||
678 | } | 657 | } |
679 | 658 | ||
680 | if (tx) { | 659 | if (tx) { |
660 | ier_bits |= IER_TDREQE | IER_TDMAE; | ||
661 | dma_sync_single_for_device(p->master->dma_tx->device->dev, | ||
662 | p->tx_dma_addr, len, DMA_TO_DEVICE); | ||
663 | desc_tx = dmaengine_prep_slave_single(p->master->dma_tx, | ||
664 | p->tx_dma_addr, len, DMA_TO_DEVICE, | ||
665 | DMA_PREP_INTERRUPT | DMA_CTRL_ACK); | ||
666 | if (!desc_tx) { | ||
667 | ret = -EAGAIN; | ||
668 | goto no_dma_tx; | ||
669 | } | ||
670 | |||
681 | if (rx) { | 671 | if (rx) { |
682 | /* No callback */ | 672 | /* No callback */ |
683 | desc_tx->callback = NULL; | 673 | desc_tx->callback = NULL; |
@@ -688,15 +678,30 @@ static int sh_msiof_dma_once(struct sh_msiof_spi_priv *p, const void *tx, | |||
688 | cookie = dmaengine_submit(desc_tx); | 678 | cookie = dmaengine_submit(desc_tx); |
689 | if (dma_submit_error(cookie)) { | 679 | if (dma_submit_error(cookie)) { |
690 | ret = cookie; | 680 | ret = cookie; |
691 | goto stop_rx; | 681 | goto no_dma_tx; |
692 | } | 682 | } |
693 | dma_async_issue_pending(p->master->dma_tx); | ||
694 | } | 683 | } |
695 | 684 | ||
685 | /* 1 stage FIFO watermarks for DMA */ | ||
686 | sh_msiof_write(p, FCTR, FCTR_TFWM_1 | FCTR_RFWM_1); | ||
687 | |||
688 | /* setup msiof transfer mode registers (32-bit words) */ | ||
689 | sh_msiof_spi_set_mode_regs(p, tx, rx, 32, len / 4); | ||
690 | |||
691 | sh_msiof_write(p, IER, ier_bits); | ||
692 | |||
693 | reinit_completion(&p->done); | ||
694 | |||
695 | /* Now start DMA */ | ||
696 | if (rx) | ||
697 | dma_async_issue_pending(p->master->dma_rx); | ||
698 | if (tx) | ||
699 | dma_async_issue_pending(p->master->dma_tx); | ||
700 | |||
696 | ret = sh_msiof_spi_start(p, rx); | 701 | ret = sh_msiof_spi_start(p, rx); |
697 | if (ret) { | 702 | if (ret) { |
698 | dev_err(&p->pdev->dev, "failed to start hardware\n"); | 703 | dev_err(&p->pdev->dev, "failed to start hardware\n"); |
699 | goto stop_tx; | 704 | goto stop_dma; |
700 | } | 705 | } |
701 | 706 | ||
702 | /* wait for tx fifo to be emptied / rx fifo to be filled */ | 707 | /* wait for tx fifo to be emptied / rx fifo to be filled */ |
@@ -726,14 +731,14 @@ static int sh_msiof_dma_once(struct sh_msiof_spi_priv *p, const void *tx, | |||
726 | stop_reset: | 731 | stop_reset: |
727 | sh_msiof_reset_str(p); | 732 | sh_msiof_reset_str(p); |
728 | sh_msiof_spi_stop(p, rx); | 733 | sh_msiof_spi_stop(p, rx); |
729 | stop_tx: | 734 | stop_dma: |
730 | if (tx) | 735 | if (tx) |
731 | dmaengine_terminate_all(p->master->dma_tx); | 736 | dmaengine_terminate_all(p->master->dma_tx); |
732 | stop_rx: | 737 | no_dma_tx: |
733 | if (rx) | 738 | if (rx) |
734 | dmaengine_terminate_all(p->master->dma_rx); | 739 | dmaengine_terminate_all(p->master->dma_rx); |
735 | stop_ier: | ||
736 | sh_msiof_write(p, IER, 0); | 740 | sh_msiof_write(p, IER, 0); |
741 | no_dma_rx: | ||
737 | return ret; | 742 | return ret; |
738 | } | 743 | } |
739 | 744 | ||
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index e0531baf2782..ca935df80c88 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c | |||
@@ -848,6 +848,7 @@ out: | |||
848 | 848 | ||
849 | /** | 849 | /** |
850 | * spi_finalize_current_transfer - report completion of a transfer | 850 | * spi_finalize_current_transfer - report completion of a transfer |
851 | * @master: the master reporting completion | ||
851 | * | 852 | * |
852 | * Called by SPI drivers using the core transfer_one_message() | 853 | * Called by SPI drivers using the core transfer_one_message() |
853 | * implementation to notify it that the current interrupt driven | 854 | * implementation to notify it that the current interrupt driven |