Author: ian
Date: Fri Feb 13 18:03:50 2015
New Revision: 278685
URL: https://svnweb.freebsd.org/changeset/base/278685

Log:
  MFC r276985:
  
    Store the shadow command/mode register in the softc, not a local static var.

Modified:
  stable/10/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c
==============================================================================
--- stable/10/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c  Fri Feb 13 17:53:11 
2015        (r278684)
+++ stable/10/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c  Fri Feb 13 18:03:50 
2015        (r278685)
@@ -121,6 +121,7 @@ struct bcm_sdhci_softc {
        bus_dma_tag_t           sc_dma_tag;
        bus_dmamap_t            sc_dma_map;
        vm_paddr_t              sc_sdhci_buffer_phys;
+       uint32_t                cmd_and_mode;
 };
 
 static int bcm_sdhci_probe(device_t);
@@ -344,6 +345,14 @@ bcm_sdhci_read_2(device_t dev, struct sd
        struct bcm_sdhci_softc *sc = device_get_softc(dev);
        uint32_t val = RD4(sc, off & ~3);
 
+       /*
+        * Standard 32-bit handling of command and transfer mode.
+        */
+       if (off == SDHCI_TRANSFER_MODE) {
+               return (sc->cmd_and_mode >> 16);
+       } else if (off == SDHCI_COMMAND_FLAGS) {
+               return (sc->cmd_and_mode & 0x0000ffff);
+       }
        return ((val >> (off & 3)*8) & 0xffff);
 }
 
@@ -378,16 +387,15 @@ static void
 bcm_sdhci_write_2(device_t dev, struct sdhci_slot *slot, bus_size_t off, 
uint16_t val)
 {
        struct bcm_sdhci_softc *sc = device_get_softc(dev);
-       static uint32_t cmd_and_trandfer_mode;
        uint32_t val32;
        if (off == SDHCI_COMMAND_FLAGS)
-               val32 = cmd_and_trandfer_mode;
+               val32 = sc->cmd_and_mode;
        else
                val32 = RD4(sc, off & ~3);
        val32 &= ~(0xffff << (off & 3)*8);
        val32 |= (val << (off & 3)*8);
        if (off == SDHCI_TRANSFER_MODE)
-               cmd_and_trandfer_mode = val32;
+               sc->cmd_and_mode = val32;
        else
                WR4(sc, off & ~3, val32);
 }
_______________________________________________
svn-src-stable-10@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-stable-10
To unsubscribe, send any mail to "svn-src-stable-10-unsubscr...@freebsd.org"

Reply via email to