Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 21 Nov 2019 02:44:05 +0000 (UTC)
From:      Kyle Evans <kevans@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r354931 - head/sys/arm/broadcom/bcm2835
Message-ID:  <201911210244.xAL2i5uM046011@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);
 }
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201911210244.xAL2i5uM046011>