patch-2.1.30 linux/arch/sparc/prom/tree.c

Next file: linux/arch/sparc64/Makefile
Previous file: linux/arch/sparc/prom/mp.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.29/linux/arch/sparc/prom/tree.c linux/arch/sparc/prom/tree.c
@@ -1,4 +1,4 @@
-/* $Id: tree.c,v 1.15 1997/01/31 00:17:04 tdyas Exp $
+/* $Id: tree.c,v 1.16 1997/03/19 14:53:16 davem Exp $
  * tree.c: Basic device tree traversal/scanning for the Linux
  *         prom library.
  *
@@ -257,6 +257,33 @@
 	restore_current();
 	restore_flags(flags);
 	return ret;
+}
+
+int prom_finddevice(char *name)
+{
+	int topnd = prom_getchild(prom_root_node);
+	int srch;
+
+	if(name[0] == '/')
+		name++;
+	if(sparc_cpu_model == sun4d) {
+		if(!strcmp(name, "sbus"))
+			name = "sbi";
+		if((srch = prom_searchsiblings(topnd, "io-unit")) == 0 ||
+		   (srch = prom_getchild(srch)) == 0 ||
+		   (srch = prom_searchsiblings(srch, name)) == 0) {
+			prom_printf("%s prom node not found.\n", name);
+			prom_halt();
+		}
+	} else if((srch = prom_searchsiblings(topnd, name)) == 0) {
+		if((srch = prom_searchsiblings(topnd, "iommu")) == 0 ||
+		   (srch = prom_getchild(srch)) == 0 ||
+		   (srch = prom_searchsiblings(srch, name)) == 0) {
+			prom_printf("Cannot find node %s\n", name);
+			prom_halt();
+		}
+	}
+	return srch;
 }
 
 int prom_node_has_property(int node, char *prop)

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov