powerpc/112435: Update nexus children to use ofw_bus functions

Andrew Turner andrew at fubar.geek.nz
Sat May 5 07:40:03 UTC 2007


>Number:         112435
>Category:       powerpc
>Synopsis:       Update nexus children to use ofw_bus functions
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ppc
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Sat May 05 07:40:02 GMT 2007
>Closed-Date:
>Last-Modified:
>Originator:     Andrew Turner
>Release:        FreeBSD 5.5-RC1 i386
>Organization:
>Environment:
System: FreeBSD serv.int.fubar.geek.nz 5.5-RC1 FreeBSD 5.5-RC1 #0: Mon May 15 14:09:18 NZST 2006 root at serv.int.fubar.geek.nz:/usr/obj/usr/src/sys/GENERIC i386


	
>Description:
	The attached patch changes the children of the nexus bus to use ofw_bus_get_* rather than the nexus specific functions. It also removes the unused nexus accessor functions.
	
>How-To-Repeat:
	
>Fix:

	

--- freebsd-ppc-nexus-ofw2.diff begins here ---
Index: sys/powerpc/include/nexusvar.h
===================================================================
RCS file: /cvsroot/src/sys/powerpc/include/nexusvar.h,v
retrieving revision 1.3
diff -u -u -r1.3 nexusvar.h
--- sys/powerpc/include/nexusvar.h	13 Jan 2004 11:20:52 -0000	1.3
+++ sys/powerpc/include/nexusvar.h	5 May 2007 06:55:26 -0000
@@ -29,10 +29,7 @@
 #define _MACHINE_NEXUSVAR_H_
 
 enum nexus_ivars {
-	NEXUS_IVAR_NODE,
-	NEXUS_IVAR_NAME,
 	NEXUS_IVAR_DEVICE_TYPE,
-	NEXUS_IVAR_COMPATIBLE,
 };
 
 /*
@@ -43,10 +40,7 @@
 #define NEXUS_ACCESSOR(var, ivar, type)					\
 	__BUS_ACCESSOR(nexus, var, NEXUS, ivar, type)
 
-NEXUS_ACCESSOR(node,		NODE,			phandle_t)
-NEXUS_ACCESSOR(name,		NAME,			char *)
 NEXUS_ACCESSOR(device_type,	DEVICE_TYPE,		char *)
-NEXUS_ACCESSOR(compatible,	COMPATIBLE,		char *)
 
 #undef NEXUS_ACCESSOR
 
Index: sys/powerpc/ofw/ofw_syscons.c
===================================================================
RCS file: /cvsroot/src/sys/powerpc/ofw/ofw_syscons.c,v
retrieving revision 1.9
diff -u -u -r1.9 ofw_syscons.c
--- sys/powerpc/ofw/ofw_syscons.c	28 Sep 2005 14:54:07 -0000	1.9
+++ sys/powerpc/ofw/ofw_syscons.c	5 May 2007 06:47:22 -0000
@@ -51,6 +51,7 @@
 #include <dev/syscons/syscons.h>
 
 #include <dev/ofw/openfirm.h>
+#include <dev/ofw/ofw_bus.h>
 #include <dev/ofw/ofw_pci.h>
 #include <powerpc/ofw/ofw_syscons.h>
 #include <machine/nexusvar.h>
@@ -841,9 +842,9 @@
 static int
 ofwfb_scprobe(device_t dev)
 {
-	char *name;
+	const char *name;
 
-	name = nexus_get_name(dev);
+	name = ofw_bus_get_name(dev);
 	if (strcmp(SC_DRIVER_NAME, name) != 0)
 		return (ENXIO);
 
Index: sys/powerpc/powermac/grackle.c
===================================================================
RCS file: /cvsroot/src/sys/powerpc/powermac/grackle.c,v
retrieving revision 1.8
diff -u -u -r1.8 grackle.c
--- sys/powerpc/powermac/grackle.c	20 Apr 2006 04:19:10 -0000	1.8
+++ sys/powerpc/powermac/grackle.c	5 May 2007 06:36:39 -0000
@@ -35,6 +35,7 @@
 #include <sys/kernel.h>
 
 #include <dev/ofw/openfirm.h>
+#include <dev/ofw/ofw_bus.h>
 #include <dev/ofw/ofw_pci.h>
 
 #include <dev/pci/pcivar.h>
@@ -42,7 +43,6 @@
 
 #include <machine/bus.h>
 #include <machine/md_var.h>
-#include <machine/nexusvar.h>
 #include <machine/resource.h>
 
 #include <sys/rman.h>
@@ -137,10 +137,10 @@
 static int
 grackle_probe(device_t dev)
 {
-	char	*type, *compatible;
+	const char	*type, *compatible;
 
-	type = nexus_get_device_type(dev);
-	compatible = nexus_get_compatible(dev);
+	type = ofw_bus_get_type(dev);
+	compatible = ofw_bus_get_compat(dev);
 
 	if (type == NULL || compatible == NULL)
 		return (ENXIO);
@@ -161,7 +161,7 @@
 	struct		grackle_range *rp, *io, *mem[2];
 	int		nmem, i;
 
-	node = nexus_get_node(dev);
+	node = ofw_bus_get_node(dev);
 	sc = device_get_softc(dev);
 
 	if (OF_getprop(node, "bus-range", busrange, sizeof(busrange)) != 8)
Index: sys/powerpc/powermac/hrowpic.c
===================================================================
RCS file: /cvsroot/src/sys/powerpc/powermac/hrowpic.c,v
retrieving revision 1.12
diff -u -u -r1.12 hrowpic.c
--- sys/powerpc/powermac/hrowpic.c	23 Feb 2007 12:19:04 -0000	1.12
+++ sys/powerpc/powermac/hrowpic.c	5 May 2007 06:40:39 -0000
@@ -156,9 +156,9 @@
 static int
 hrowpic_probe(device_t dev)
 {
-	char    *name;
+	const char    *name;
 
-	name = nexus_get_name(dev);
+	name = ofw_bus_get_name(dev);
 
 	if (strcmp(name, "hrowpic"))
 		return (ENXIO);
Index: sys/powerpc/powermac/openpic_macio.c
===================================================================
RCS file: /cvsroot/src/sys/powerpc/powermac/openpic_macio.c,v
retrieving revision 1.9
diff -u -u -r1.9 openpic_macio.c
--- sys/powerpc/powermac/openpic_macio.c	7 Jan 2005 02:29:20 -0000	1.9
+++ sys/powerpc/powermac/openpic_macio.c	5 May 2007 07:16:10 -0000
@@ -135,11 +135,11 @@
 static int
 openpic_ofw_probe(device_t dev)
 {
-	char	*name;
-	char	*type;
+	const char	*name;
+	const char	*type;
 
-	name = nexus_get_name(dev);
-	type = nexus_get_device_type(dev);
+	name = ofw_bus_get_name(dev);
+	type = ofw_bus_get_type(dev);
 
 	if (strcmp(name, "openpic") != 0 ||
 	    strcmp(type, "macio") != 0)
Index: sys/powerpc/powermac/uninorth.c
===================================================================
RCS file: /cvsroot/src/sys/powerpc/powermac/uninorth.c,v
retrieving revision 1.15
diff -u -u -r1.15 uninorth.c
--- sys/powerpc/powermac/uninorth.c	1 Apr 2007 06:15:53 -0000	1.15
+++ sys/powerpc/powermac/uninorth.c	5 May 2007 02:38:16 -0000
@@ -33,6 +33,7 @@
 #include <sys/kernel.h>
 
 #include <dev/ofw/openfirm.h>
+#include <dev/ofw/ofw_bus.h>
 #include <dev/ofw/ofw_pci.h>
 
 #include <dev/pci/pcivar.h>
@@ -40,7 +41,6 @@
 
 #include <machine/bus.h>
 #include <machine/md_var.h>
-#include <machine/nexusvar.h>
 #include <machine/resource.h>
 
 #include <sys/rman.h>
@@ -127,10 +127,10 @@
 static int
 uninorth_probe(device_t dev)
 {
-	char	*type, *compatible;
+	const char	*type, *compatible;
 
-	type = nexus_get_device_type(dev);
-	compatible = nexus_get_compatible(dev);
+	type = ofw_bus_get_type(dev);
+	compatible = ofw_bus_get_compat(dev);
 
 	if (type == NULL || compatible == NULL)
 		return (ENXIO);
@@ -152,7 +152,7 @@
 	struct		uninorth_range *rp, *io, *mem[2];
 	int		nmem, i;
 
-	node = nexus_get_node(dev);
+	node = ofw_bus_get_node(dev);
 	sc = device_get_softc(dev);
 
 	if (OF_getprop(node, "reg", reg, sizeof(reg)) < 8)
@@ -534,9 +534,9 @@
 static int
 unin_chip_probe(device_t dev)
 {
-	char	*name;
+	const char	*name;
 
-	name = nexus_get_name(dev);
+	name = ofw_bus_get_name(dev);
 
 	if (name == NULL)
 		return (ENXIO);
@@ -555,7 +555,7 @@
 	u_int reg[2];
 
 	uncsc = device_get_softc(dev);
-	node = nexus_get_node(dev);
+	node = ofw_bus_get_node(dev);
 
 	if (OF_getprop(node, "reg", reg, sizeof(reg)) < 8)
 		return (ENXIO);
Index: sys/powerpc/powerpc/nexus.c
===================================================================
RCS file: /cvsroot/src/sys/powerpc/powerpc/nexus.c,v
retrieving revision 1.14
diff -u -u -r1.14 nexus.c
--- sys/powerpc/powerpc/nexus.c	20 Apr 2007 03:24:59 -0000	1.14
+++ sys/powerpc/powerpc/nexus.c	5 May 2007 06:45:02 -0000
@@ -209,12 +209,12 @@
 static void
 nexus_probe_nomatch(device_t dev, device_t child)
 {
-	char	*name, *type;
+	const char	*name, *type;
 
-	if (BUS_READ_IVAR(dev, child, NEXUS_IVAR_NAME,
-	    (uintptr_t *)&name) != 0 ||
-	    BUS_READ_IVAR(dev, child, NEXUS_IVAR_DEVICE_TYPE,
-	    (uintptr_t *)&type) != 0)
+	name = OFW_BUS_GET_NAME(dev, child);
+	type = OFW_BUS_GET_TYPE(dev, child);
+	
+	if (name == NULL)
 		return;
 
 	if (type == NULL)
@@ -255,18 +255,9 @@
 	if ((dinfo = device_get_ivars(child)) == 0)
 		return (ENOENT);
 	switch (which) {
-	case NEXUS_IVAR_NODE:
-		*result = dinfo->ndi_node;
-		break;
-	case NEXUS_IVAR_NAME:
-		*result = (uintptr_t)dinfo->ndi_name;
-		break;
 	case NEXUS_IVAR_DEVICE_TYPE:
 		*result = (uintptr_t)dinfo->ndi_device_type;
 		break;
-	case NEXUS_IVAR_COMPATIBLE:
-		*result = (uintptr_t)dinfo->ndi_compatible;
-		break;
 	default:
 		return (ENOENT);
 	}
@@ -282,14 +273,6 @@
 		return (ENOENT);
 
 	switch (which) {
-	case NEXUS_IVAR_NAME:
-		return (EINVAL);
-
-	/* Identified devices may want to set these */
-	case NEXUS_IVAR_NODE:
-		dinfo->ndi_node = (phandle_t)value;
-		break;
-
 	case NEXUS_IVAR_DEVICE_TYPE:
 		dinfo->ndi_device_type = (char *)value;
 		break;
Index: sys/powerpc/psim/iobus.c
===================================================================
RCS file: /cvsroot/src/sys/powerpc/psim/iobus.c,v
retrieving revision 1.9
diff -u -u -r1.9 iobus.c
--- sys/powerpc/psim/iobus.c	20 Apr 2006 04:19:10 -0000	1.9
+++ sys/powerpc/psim/iobus.c	5 May 2007 06:53:22 -0000
@@ -45,6 +45,7 @@
 #include <sys/rman.h>
 
 #include <dev/ofw/openfirm.h>
+#include <dev/ofw/ofw_bus.h>
 
 #include <machine/vmparam.h>
 #include <vm/vm.h>
@@ -52,7 +53,6 @@
 #include <machine/pmap.h>
 
 #include <machine/resource.h>
-#include <machine/nexusvar.h>
 
 #include <powerpc/psim/iobusvar.h>
 
@@ -121,7 +121,7 @@
 static int
 iobus_probe(device_t dev)
 {
-	char *type = nexus_get_name(dev);
+	const char *type = ofw_bus_get_name(dev);
 
 	if (strcmp(type, "psim-iobus") != 0)
 		return (ENXIO);
@@ -190,7 +190,7 @@
 	int size;
 
 	sc = device_get_softc(dev);
-	sc->sc_node = nexus_get_node(dev);
+	sc->sc_node = ofw_bus_get_node(dev);
 
 	/*
 	 * Find the base addr/size of the iobus, and initialize the
Index: sys/powerpc/psim/openpic_iobus.c
===================================================================
RCS file: /cvsroot/src/sys/powerpc/psim/openpic_iobus.c,v
retrieving revision 1.6
diff -u -u -r1.6 openpic_iobus.c
--- sys/powerpc/psim/openpic_iobus.c	7 Jan 2005 02:29:21 -0000	1.6
+++ sys/powerpc/psim/openpic_iobus.c	5 May 2007 07:16:40 -0000
@@ -41,6 +41,7 @@
 #include <sys/kernel.h>
 
 #include <dev/ofw/openfirm.h>
+#include <dev/ofw/ofw_bus.h>
 
 #include <machine/bus.h>
 #include <machine/intr.h>
@@ -124,11 +125,11 @@
 static int
 openpic_psim_probe(device_t dev)
 {
-	char    *name;
-	char	*type;
+	const char    *name;
+	const char	*type;
 
-	name = nexus_get_name(dev);
-	type = nexus_get_device_type(dev);
+	name = ofw_bus_get_name(dev);
+	type = ofw_bus_get_device_type(dev);
 
 	if (strcmp(name, "openpic") != 0 ||
 	    strcmp(type, "psim") != 0)
--- freebsd-ppc-nexus-ofw2.diff ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-ppc mailing list