svn commit: r366295 - head/sys/dev/ahci

Emmanuel Vadot manu at FreeBSD.org
Wed Sep 30 17:10:50 UTC 2020


Author: manu
Date: Wed Sep 30 17:10:49 2020
New Revision: 366295
URL: https://svnweb.freebsd.org/changeset/base/366295

Log:
  ahci_generic: add quirk for NXP0004 (NXP Layerscape LX2160A)
  
  This fixes this error :
  (aprobe3:ahcich3:0:15:0): NOP FLUSHQUEUE. ACB: 00 00 00 00 00 00 00 00 00 00 00 00
  (aprobe3:ahcich3:0:15:0): CAM status: Command timeout
  (aprobe3:ahcich3:0:15:0): Error 5, Retries exhausted
  
  Submitted by:	Greg V <greg at unrelenting.technology>
  Reviewed by:	imp, mav
  MFC after:	2 weeks
  Differential Revision:	https://reviews.freebsd.org/D25157

Modified:
  head/sys/dev/ahci/ahci_generic.c

Modified: head/sys/dev/ahci/ahci_generic.c
==============================================================================
--- head/sys/dev/ahci/ahci_generic.c	Wed Sep 30 17:09:17 2020	(r366294)
+++ head/sys/dev/ahci/ahci_generic.c	Wed Sep 30 17:10:49 2020	(r366295)
@@ -86,11 +86,22 @@ ahci_fdt_probe(device_t dev)
 #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 @@ ahci_acpi_probe(device_t dev)
 		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);
 	}
 


More information about the svn-src-head mailing list