Author: kevans
Date: Thu Nov 21 02:44:05 2019
New Revision: 354931
URL: https://svnweb.freebsd.org/changeset/base/354931

Log:
  Revert r354930: wrong diff, right message.

Modified:
  head/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c

Modified: head/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c
==============================================================================
--- head/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c       Thu Nov 21 02:41:22 
2019        (r354930)
+++ head/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c       Thu Nov 21 02:44:05 
2019        (r354931)
@@ -87,7 +87,6 @@ __FBSDID("$FreeBSD$");
            rounddown(BCM_SDHCI_SLOT_LEFT(slot), BCM_SDHCI_BUFFER_SIZE))
 
 #define        DATA_PENDING_MASK       (SDHCI_INT_DATA_AVAIL | 
SDHCI_INT_SPACE_AVAIL)
-#define        DATA_XFER_MASK          (DATA_PENDING_MASK | SDHCI_INT_DATA_END)
 
 #ifdef DEBUG
 static int bcm2835_sdhci_debug = 0;
@@ -580,7 +579,7 @@ bcm_sdhci_start_dma_seg(struct bcm_sdhci_softc *sc)
        if (idx == 0) {
                bus_dmamap_sync(sc->sc_dma_tag, sc->sc_dma_map, sync_op);
 
-               slot->intmask &= ~DATA_XFER_MASK;
+               slot->intmask &= ~DATA_PENDING_MASK;
                bcm_sdhci_write_4(sc->sc_dev, slot, SDHCI_SIGNAL_ENABLE,
                    slot->intmask);
        }
@@ -601,7 +600,7 @@ bcm_sdhci_dma_exit(struct bcm_sdhci_softc *sc)
        mtx_assert(&slot->mtx, MA_OWNED);
 
        /* Re-enable interrupts */
-       slot->intmask |= DATA_XFER_MASK;
+       slot->intmask |= DATA_PENDING_MASK;
        bcm_sdhci_write_4(slot->bus, slot, SDHCI_SIGNAL_ENABLE,
            slot->intmask);
 }
@@ -655,12 +654,6 @@ bcm_sdhci_dma_intr(int ch, void *arg)
                        sdhci_finish_data(slot);
                        bcm_sdhci_dma_exit(sc);
                }
-       } else if ((reg & SDHCI_INT_DATA_END) != 0) {
-               bcm_sdhci_dma_exit(sc);
-               bcm_sdhci_write_4(slot->bus, slot, SDHCI_INT_STATUS,
-                   reg);
-               slot->flags &= ~PLATFORM_DATA_STARTED;
-               sdhci_finish_data(slot);
        } else {
                bcm_sdhci_dma_exit(sc);
        }
@@ -739,11 +732,7 @@ bcm_sdhci_finish_transfer(device_t dev, struct sdhci_s
 {
        struct bcm_sdhci_softc *sc = device_get_softc(slot->bus);
 
-       /*
-        * Clean up.  Interrupts are clearly enabled, because we received an
-        * SDHCI_INT_DATA_END to get this far -- just make sure we don't leave
-        * anything laying around.
-        */
+       /* Clean up */
        if (sc->dmamap_seg_count != 0) {
                /*
                 * Our segment math should have worked out such that we would
@@ -764,6 +753,7 @@ bcm_sdhci_finish_transfer(device_t dev, struct sdhci_s
                sc->dmamap_seg_index = 0;
        }
 
+       bcm_sdhci_dma_exit(sc);
        sdhci_finish_data(slot);
 }
 
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to