Index: sys/dev/sdhci/sdhci_fdt.c =================================================================== --- sys/dev/sdhci/sdhci_fdt.c +++ sys/dev/sdhci/sdhci_fdt.c @@ -72,6 +72,7 @@ { "sdhci_generic", SDHCI_FDT_GENERIC }, { "qcom,sdhci-msm-v4", SDHCI_FDT_QUALCOMM }, { "xlnx,zy7_sdhci", SDHCI_FDT_XLNX_ZY7 }, + { "arasan,sdhci-8.9a", SDHCI_FDT_XLNX_ZY7 }, { NULL, 0 } }; @@ -88,6 +89,7 @@ struct resource *mem_res[MAX_SLOTS]; /* Memory resource */ bool wp_inverted; /* WP pin is inverted */ + bool wp_disabled; /* disable WP altogether */ bool no_18v; /* No 1.8V support */ }; @@ -180,7 +182,8 @@ { struct sdhci_fdt_softc *sc = device_get_softc(bus); - return (sdhci_generic_get_ro(bus, dev) ^ sc->wp_inverted); + return (!sc->wp_disabled && (sdhci_generic_get_ro(bus, dev) ^ + sc->wp_inverted)); } static int @@ -230,6 +233,8 @@ sc->no_18v = true; if (OF_hasprop(node, "wp-inverted")) sc->wp_inverted = true; + if (OF_hasprop(node, "disable-wp")) + sc->wp_disabled = true; return (0); }