svn commit: r298347 - head/sys/dev/flash

Stanislav Galabov sgalabov at FreeBSD.org
Wed Apr 20 14:33:01 UTC 2016


Author: sgalabov
Date: Wed Apr 20 14:33:00 2016
New Revision: 298347
URL: https://svnweb.freebsd.org/changeset/base/298347

Log:
  Modify mx25l FDT compatible device handling
  
  If we cannot establish compatibility by only looking at the compat_data we
  also check the flash_devices structure's names for a compatible device.
  
  Approved by:	adrian (mentor)
  Sponsored by:	Smartcom - Bulgaria AD
  Differential Revision:	https://reviews.freebsd.org/D6026

Modified:
  head/sys/dev/flash/mx25l.c

Modified: head/sys/dev/flash/mx25l.c
==============================================================================
--- head/sys/dev/flash/mx25l.c	Wed Apr 20 14:31:01 2016	(r298346)
+++ head/sys/dev/flash/mx25l.c	Wed Apr 20 14:33:00 2016	(r298347)
@@ -443,12 +443,26 @@ static struct ofw_compat_data compat_dat
 static int
 mx25l_probe(device_t dev)
 {
-
 #ifdef FDT
+	int i;
+
 	if (!ofw_bus_status_okay(dev))
 		return (ENXIO);
-	if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0)
-		return (ENXIO);
+
+	/* First try to match the compatible property to the compat_data */
+	if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 1)
+		goto found;
+
+	/*
+	 * Next, try to find a compatible device using the names in the
+	 * flash_devices structure
+	 */
+	for (i = 0; i < nitems(flash_devices); i++)
+		if (ofw_bus_is_compatible(dev, flash_devices[i].name))
+			goto found;
+
+	return (ENXIO);
+found:
 #endif
 	device_set_desc(dev, "M25Pxx Flash Family");
 


More information about the svn-src-all mailing list