Hi, on some GPD Pocket mlarkin@ has the eMMC doesn't come up. One issue is that we shouldn't go to 0V on some/most(?) Intel controllers. This only adds it for his machine, but I know that the Appollo Lake versions might also work if added to this check. But unless verified I'll not add it. This makes mlarkin@'s machine work, even though it's utterly slow. That would be the next thing to fix... probably low clocks or doesn't use 8-bit.
ok? Patrick diff --git a/sys/dev/pci/sdhc_pci.c b/sys/dev/pci/sdhc_pci.c index d1b6688f573..dd6bc79c29c 100644 --- a/sys/dev/pci/sdhc_pci.c +++ b/sys/dev/pci/sdhc_pci.c @@ -127,6 +127,11 @@ sdhc_pci_attach(struct device *parent, struct device *self, void *aux) PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_ENE_SDCARD) sc->sc.sc_flags |= SDHC_F_NOPWR0; + /* Some Intel controllers break if set to 0V bus power. */ + if (PCI_VENDOR(pa->pa_id) == PCI_VENDOR_INTEL && + PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_INTEL_100SERIES_LP_EMMC) + sc->sc.sc_flags |= SDHC_F_NOPWR0; + /* Some RICOH controllers need to be bumped into the right mode. */ if (PCI_VENDOR(pa->pa_id) == PCI_VENDOR_RICOH && (PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_RICOH_R5U822 ||