summaryrefslogtreecommitdiffstats
path: root/sys/arm/broadcom
diff options
context:
space:
mode:
authorian <ian@FreeBSD.org>2015-02-13 20:38:39 +0000
committerian <ian@FreeBSD.org>2015-02-13 20:38:39 +0000
commit0d83b78040e96a999c8a7fbcb3c316c4f6522fe4 (patch)
tree3236a4799459000986218a2f7fd31f71235becf0 /sys/arm/broadcom
parentf271f6c323ee2d3562e7999be16cdb5a30be0e9d (diff)
downloadFreeBSD-src-0d83b78040e96a999c8a7fbcb3c316c4f6522fe4.zip
FreeBSD-src-0d83b78040e96a999c8a7fbcb3c316c4f6522fe4.tar.gz
MFC r277306, r277307, r277346:
Add defines for SDHCI 3.0 controllers. Add a new SDHCI quirk, SDHCI_QUIRK_DONT_SET_HISPD_BIT. Save the command-and-flags value into shadow register when it is written.
Diffstat (limited to 'sys/arm/broadcom')
-rw-r--r--sys/arm/broadcom/bcm2835/bcm2835_sdhci.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c b/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c
index 42ce786..93bfcab 100644
--- a/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c
+++ b/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c
@@ -232,6 +232,7 @@ bcm_sdhci_attach(device_t dev)
sc->sc_slot.caps |= (default_freq << SDHCI_CLOCK_BASE_SHIFT);
sc->sc_slot.quirks = SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK
| SDHCI_QUIRK_BROKEN_TIMEOUT_VAL
+ | SDHCI_QUIRK_DONT_SET_HISPD_BIT
| SDHCI_QUIRK_MISSING_CAPS;
sdhci_init_slot(dev, &sc->sc_slot, 0);
@@ -401,8 +402,11 @@ bcm_sdhci_write_2(device_t dev, struct sdhci_slot *slot, bus_size_t off, uint16_
val32 |= (val << (off & 3)*8);
if (off == SDHCI_TRANSFER_MODE)
sc->cmd_and_mode = val32;
- else
+ else {
WR4(sc, off & ~3, val32);
+ if (off == SDHCI_COMMAND_FLAGS)
+ sc->cmd_and_mode = val32;
+ }
}
static void
OpenPOWER on IntegriCloud