svn commit: r293057 - in head/sys: arm64/include dev/ofw sparc64/include

Nathan Whitehorn nwhitehorn at FreeBSD.org
Sat Jan 2 19:28:37 UTC 2016


Author: nwhitehorn
Date: Sat Jan  2 19:28:35 2016
New Revision: 293057
URL: https://svnweb.freebsd.org/changeset/base/293057

Log:
  Make using the #address-cells property on the interrupt parent in device
  tree parsing opt-out rather than opt-in. All FDT-based systems as well as
  PowerPC systems with real Open Firmware use the CHRP-derived binding that
  includes it, which makes SPARC the odd man out here. Making it opt-out
  avoids astonishment on new platform bring up.

Modified:
  head/sys/arm64/include/ofw_machdep.h
  head/sys/dev/ofw/ofw_bus_subr.c
  head/sys/sparc64/include/ofw_machdep.h

Modified: head/sys/arm64/include/ofw_machdep.h
==============================================================================
--- head/sys/arm64/include/ofw_machdep.h	Sat Jan  2 19:14:19 2016	(r293056)
+++ head/sys/arm64/include/ofw_machdep.h	Sat Jan  2 19:28:35 2016	(r293057)
@@ -41,7 +41,4 @@ struct mem_region {
 	vm_size_t	mr_size;
 };
 
-/* FDT follows ePAPR */
-#define	OFW_EPAPR
-
 #endif /* _MACHINE_OFW_MACHDEP_H_ */

Modified: head/sys/dev/ofw/ofw_bus_subr.c
==============================================================================
--- head/sys/dev/ofw/ofw_bus_subr.c	Sat Jan  2 19:14:19 2016	(r293056)
+++ head/sys/dev/ofw/ofw_bus_subr.c	Sat Jan  2 19:28:35 2016	(r293057)
@@ -361,10 +361,11 @@ ofw_bus_search_intrmap(void *intr, int i
 	paddrsz = 0;
 	while (i > 0) {
 		bcopy(mptr + physsz + intrsz, &parent, sizeof(parent));
-#ifdef OFW_EPAPR
+#ifndef OFW_IMAP_NO_IPARENT_ADDR_CELLS
 		/*
-		 * Find if we need to read the parent address data. Sparc64
-		 * uses a different encoding that doesn't include this data.
+		 * Find if we need to read the parent address data.
+		 * CHRP-derived OF bindings, including ePAPR-compliant FDTs,
+		 * use this as an optional part of the specifier.
 		 */
 		if (OF_getencprop(OF_node_from_xref(parent),
 		    "#address-cells", &paddrsz, sizeof(paddrsz)) == -1)

Modified: head/sys/sparc64/include/ofw_machdep.h
==============================================================================
--- head/sys/sparc64/include/ofw_machdep.h	Sat Jan  2 19:14:19 2016	(r293056)
+++ head/sys/sparc64/include/ofw_machdep.h	Sat Jan  2 19:28:35 2016	(r293057)
@@ -34,6 +34,9 @@
 
 typedef uint64_t cell_t;
 
+/* sparc64 doesn't use the interrupt parent #address-cells in interrupt maps */
+#define OFW_IMAP_NO_IPARENT_ADDR_CELLS
+
 int  OF_decode_addr(phandle_t, int, int *, bus_addr_t *);
 void OF_getetheraddr(device_t, u_char *);
 u_int OF_getscsinitid(device_t);


More information about the svn-src-all mailing list