Index: head/sys/dev/ahci/ahci_generic.c =================================================================== --- head/sys/dev/ahci/ahci_generic.c +++ head/sys/dev/ahci/ahci_generic.c @@ -86,11 +86,22 @@ #endif #ifdef DEV_ACPI + +static const struct ahci_acpi_quirk { + const char* hid; + u_int quirks; +} ahci_acpi_quirks[] = { + { "NXP0004", AHCI_Q_NOPMP }, + { NULL, 0 } +}; + + static int ahci_acpi_probe(device_t dev) { struct ahci_controller *ctlr = device_get_softc(dev); ACPI_HANDLE h; + int i; if ((h = acpi_get_handle(dev)) == NULL) return (ENXIO); @@ -105,6 +116,12 @@ if (bootverbose) device_printf(dev, "Bus is%s cache-coherent\n", ctlr->dma_coherent ? "" : " not"); + for (i = 0; ahci_acpi_quirks[i].hid != NULL; i++) { + if (acpi_MatchHid(h, ahci_acpi_quirks[i].hid) != ACPI_MATCHHID_NOMATCH) { + ctlr->quirks = ahci_acpi_quirks[i].quirks; + break; + } + } return (BUS_PROBE_DEFAULT); }