Page MenuHomeFreeBSD

D58467.id.diff
No OneTemporary

D58467.id.diff

diff --git a/sys/dev/sdhci/sdhci.h b/sys/dev/sdhci/sdhci.h
--- a/sys/dev/sdhci/sdhci.h
+++ b/sys/dev/sdhci/sdhci.h
@@ -95,6 +95,8 @@
#define SDHCI_QUIRK_MMC_HS400_IF_CAN_SDR104 (1 << 29)
/* SDMA boundary in SDHCI_BLOCK_SIZE broken - use front-end supplied value. */
#define SDHCI_QUIRK_BROKEN_SDMA_BOUNDARY (1 << 30)
+/* Slot type in SDHCI_CAPABILITIES reads as embedded, but slot is removable. */
+#define SDHCI_QUIRK_SLOTTYPE_BROKEN (1U << 31)
/*
* Controller registers
diff --git a/sys/dev/sdhci/sdhci.c b/sys/dev/sdhci/sdhci.c
--- a/sys/dev/sdhci/sdhci.c
+++ b/sys/dev/sdhci/sdhci.c
@@ -901,7 +901,8 @@
SDHCI_LOCK_DESTROY(slot);
return (ENXIO);
} else if ((caps & SDHCI_SLOTTYPE_MASK) ==
- SDHCI_SLOTTYPE_EMBEDDED) {
+ SDHCI_SLOTTYPE_EMBEDDED &&
+ !(slot->quirks & SDHCI_QUIRK_SLOTTYPE_BROKEN)) {
slot->opt |= SDHCI_SLOT_EMBEDDED | SDHCI_NON_REMOVABLE;
}
}
diff --git a/sys/dev/sdhci/sdhci_pci.c b/sys/dev/sdhci/sdhci_pci.c
--- a/sys/dev/sdhci/sdhci_pci.c
+++ b/sys/dev/sdhci/sdhci_pci.c
@@ -142,6 +142,7 @@
{ 0x5aca8086, 0xffff, "Intel Apollo Lake SDXC Controller",
SDHCI_QUIRK_BROKEN_DMA | /* APL18 erratum */
SDHCI_QUIRK_WAIT_WHILE_BUSY |
+ SDHCI_QUIRK_SLOTTYPE_BROKEN |
SDHCI_QUIRK_PRESET_VALUE_BROKEN },
{ 0x5acc8086, 0xffff, "Intel Apollo Lake eMMC 5.0 Controller",
SDHCI_QUIRK_BROKEN_DMA | /* APL18 erratum */

File Metadata

Mime Type
text/plain
Expires
Fri, Aug 28, 7:36 AM (19 h, 38 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
37443374
Default Alt Text
D58467.id.diff (1 KB)

Event Timeline