Module Name:    src
Committed By:   jmcneill
Date:           Sat Jun 30 16:22:56 UTC 2018

Modified Files:
        src/sys/arch/arm/fdt: files.fdt
        src/sys/arch/evbarm/conf: EXYNOS GENERIC GENERIC64 RPI RPI64 SUNXI
            TEGRA TI VEXPRESS_A15 VIRT
        src/sys/dev/fdt: fdtbus.c fdtvar.h files.fdt syscon.c

Log Message:
Allow nodes to attach child devices using the same sorting rules as used
by the simplebus driver.


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/sys/arch/arm/fdt/files.fdt
cvs rdiff -u -r1.22 -r1.23 src/sys/arch/evbarm/conf/EXYNOS
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/evbarm/conf/GENERIC \
    src/sys/arch/evbarm/conf/RPI64
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/evbarm/conf/GENERIC64
cvs rdiff -u -r1.78 -r1.79 src/sys/arch/evbarm/conf/RPI
cvs rdiff -u -r1.75 -r1.76 src/sys/arch/evbarm/conf/SUNXI
cvs rdiff -u -r1.33 -r1.34 src/sys/arch/evbarm/conf/TEGRA
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/evbarm/conf/TI
cvs rdiff -u -r1.19 -r1.20 src/sys/arch/evbarm/conf/VEXPRESS_A15
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/evbarm/conf/VIRT
cvs rdiff -u -r1.20 -r1.21 src/sys/dev/fdt/fdtbus.c
cvs rdiff -u -r1.35 -r1.36 src/sys/dev/fdt/fdtvar.h
cvs rdiff -u -r1.34 -r1.35 src/sys/dev/fdt/files.fdt
cvs rdiff -u -r1.1 -r1.2 src/sys/dev/fdt/syscon.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/fdt/files.fdt
diff -u src/sys/arch/arm/fdt/files.fdt:1.17 src/sys/arch/arm/fdt/files.fdt:1.18
--- src/sys/arch/arm/fdt/files.fdt:1.17	Wed Jun 20 08:03:55 2018
+++ src/sys/arch/arm/fdt/files.fdt	Sat Jun 30 16:22:56 2018
@@ -1,8 +1,8 @@
-# $NetBSD: files.fdt,v 1.17 2018/06/20 08:03:55 hkenken Exp $
+# $NetBSD: files.fdt,v 1.18 2018/06/30 16:22:56 jmcneill Exp $
 
 include	"dev/pckbport/files.pckbport"
 
-device	armfdt { }: bus_space_generic, fdtbus
+device	armfdt { }: bus_space_generic, fdt
 attach	armfdt at root with arm_fdt
 file	arch/arm/fdt/arm_fdt.c			arm_fdt
 

Index: src/sys/arch/evbarm/conf/EXYNOS
diff -u src/sys/arch/evbarm/conf/EXYNOS:1.22 src/sys/arch/evbarm/conf/EXYNOS:1.23
--- src/sys/arch/evbarm/conf/EXYNOS:1.22	Tue Jun 20 20:20:02 2017
+++ src/sys/arch/evbarm/conf/EXYNOS	Sat Jun 30 16:22:56 2018
@@ -1,5 +1,5 @@
 #
-#	$NetBSD: EXYNOS,v 1.22 2017/06/20 20:20:02 skrll Exp $
+#	$NetBSD: EXYNOS,v 1.23 2018/06/30 16:22:56 jmcneill Exp $
 #
 #	Samsung Exynos SoC kernel
 #
@@ -38,7 +38,7 @@ config		netbsd		root on ? type ?
 
 # Device tree support
 armfdt0		at root
-fdt*		at fdtbus?
+simplebus*	at fdt?
 
 # CPUs
 cpus*		at fdt? pass 0

Index: src/sys/arch/evbarm/conf/GENERIC
diff -u src/sys/arch/evbarm/conf/GENERIC:1.1 src/sys/arch/evbarm/conf/GENERIC:1.2
--- src/sys/arch/evbarm/conf/GENERIC:1.1	Sun Apr  1 04:35:04 2018
+++ src/sys/arch/evbarm/conf/GENERIC	Sat Jun 30 16:22:56 2018
@@ -1,5 +1,5 @@
 #
-#	$NetBSD: GENERIC,v 1.1 2018/04/01 04:35:04 ryo Exp $
+#	$NetBSD: GENERIC,v 1.2 2018/06/30 16:22:56 jmcneill Exp $
 #
 #	GENERIC ARM (aarch32) kernel
 #
@@ -54,7 +54,7 @@ config		netbsd		root on ? type ?
 
 # Device tree support
 armfdt0		at root
-fdt*		at fdtbus?
+simplebus*	at fdt?
 
 # CPUs
 cpus*		at fdt? pass 0
Index: src/sys/arch/evbarm/conf/RPI64
diff -u src/sys/arch/evbarm/conf/RPI64:1.1 src/sys/arch/evbarm/conf/RPI64:1.2
--- src/sys/arch/evbarm/conf/RPI64:1.1	Sun Apr  1 04:35:04 2018
+++ src/sys/arch/evbarm/conf/RPI64	Sat Jun 30 16:22:56 2018
@@ -1,5 +1,5 @@
 #
-#	$NetBSD: RPI64,v 1.1 2018/04/01 04:35:04 ryo Exp $
+#	$NetBSD: RPI64,v 1.2 2018/06/30 16:22:56 jmcneill Exp $
 #
 #	RPI64 - Raspberry Pi 3 and Pi 2 v1.2 in AARCH64 mode
 #
@@ -61,7 +61,7 @@ config		netbsd		root on ? type ?
 
 # Device tree support
 armfdt0 	at root
-fdt*		at fdtbus?
+simplebus*	at fdt?
 
 # The CPU(s)
 cpus*		at fdt? pass 0

Index: src/sys/arch/evbarm/conf/GENERIC64
diff -u src/sys/arch/evbarm/conf/GENERIC64:1.20 src/sys/arch/evbarm/conf/GENERIC64:1.21
--- src/sys/arch/evbarm/conf/GENERIC64:1.20	Sat Jun 30 12:42:42 2018
+++ src/sys/arch/evbarm/conf/GENERIC64	Sat Jun 30 16:22:56 2018
@@ -1,5 +1,5 @@
 #
-#	$NetBSD: GENERIC64,v 1.20 2018/06/30 12:42:42 jmcneill Exp $
+#	$NetBSD: GENERIC64,v 1.21 2018/06/30 16:22:56 jmcneill Exp $
 #
 #	GENERIC ARM (aarch64) kernel
 #
@@ -80,7 +80,7 @@ config		netbsd		root on ? type ?
 
 # Device tree support
 armfdt0		at root
-fdt*		at fdtbus?
+simplebus*	at fdt?
 
 # CPUs
 cpus*		at fdt? pass 0

Index: src/sys/arch/evbarm/conf/RPI
diff -u src/sys/arch/evbarm/conf/RPI:1.78 src/sys/arch/evbarm/conf/RPI:1.79
--- src/sys/arch/evbarm/conf/RPI:1.78	Sun Dec 10 21:38:26 2017
+++ src/sys/arch/evbarm/conf/RPI	Sat Jun 30 16:22:56 2018
@@ -1,5 +1,5 @@
 #
-#	$NetBSD: RPI,v 1.78 2017/12/10 21:38:26 skrll Exp $
+#	$NetBSD: RPI,v 1.79 2018/06/30 16:22:56 jmcneill Exp $
 #
 #	RPi -- Raspberry Pi
 #
@@ -55,7 +55,7 @@ config		netbsd		root on ? type ?
 
 # Device tree support
 armfdt0		at root
-fdt*		at fdtbus?
+simplebus*	at fdt?
 
 # The CPU(s)
 cpus*		at fdt? pass 0

Index: src/sys/arch/evbarm/conf/SUNXI
diff -u src/sys/arch/evbarm/conf/SUNXI:1.75 src/sys/arch/evbarm/conf/SUNXI:1.76
--- src/sys/arch/evbarm/conf/SUNXI:1.75	Sat Jun 30 12:42:42 2018
+++ src/sys/arch/evbarm/conf/SUNXI	Sat Jun 30 16:22:56 2018
@@ -1,5 +1,5 @@
 #
-#	$NetBSD: SUNXI,v 1.75 2018/06/30 12:42:42 jmcneill Exp $
+#	$NetBSD: SUNXI,v 1.76 2018/06/30 16:22:56 jmcneill Exp $
 #
 #	Allwinner sunxi family
 #
@@ -168,7 +168,7 @@ config		netbsd		root on ? type ?
 
 # Device tree support
 armfdt0		at root
-fdt*		at fdtbus?
+simplebus*	at fdt?
 
 # CPUs
 cpus*		at fdt? pass 0

Index: src/sys/arch/evbarm/conf/TEGRA
diff -u src/sys/arch/evbarm/conf/TEGRA:1.33 src/sys/arch/evbarm/conf/TEGRA:1.34
--- src/sys/arch/evbarm/conf/TEGRA:1.33	Tue Sep 26 16:12:45 2017
+++ src/sys/arch/evbarm/conf/TEGRA	Sat Jun 30 16:22:56 2018
@@ -1,5 +1,5 @@
 #
-#	$NetBSD: TEGRA,v 1.33 2017/09/26 16:12:45 jmcneill Exp $
+#	$NetBSD: TEGRA,v 1.34 2018/06/30 16:22:56 jmcneill Exp $
 #
 #	NVIDIA Tegra family SoCs
 #
@@ -46,7 +46,7 @@ config		netbsd		root on ? type ?
 
 # Device tree support
 armfdt0		at root
-fdt*		at fdtbus?
+simplebus*	at fdt?
 
 # CPUs
 cpus*		at fdt? pass 0

Index: src/sys/arch/evbarm/conf/TI
diff -u src/sys/arch/evbarm/conf/TI:1.2 src/sys/arch/evbarm/conf/TI:1.3
--- src/sys/arch/evbarm/conf/TI:1.2	Thu Oct 26 23:28:14 2017
+++ src/sys/arch/evbarm/conf/TI	Sat Jun 30 16:22:56 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: TI,v 1.2 2017/10/26 23:28:14 jmcneill Exp $
+#	$NetBSD: TI,v 1.3 2018/06/30 16:22:56 jmcneill Exp $
 #
 
 include "arch/evbarm/conf/std.ti"
@@ -29,7 +29,7 @@ options 	OMAP_SYSTEM_CLOCK_FREQ="4800000
 config		netbsd	root on ? type ?
 
 armfdt0	 	at root
-fdt* 		at fdtbus?
+simplebus*	at fdt?
 
 cpus*           at fdt? pass 0
 cpu*            at cpus?

Index: src/sys/arch/evbarm/conf/VEXPRESS_A15
diff -u src/sys/arch/evbarm/conf/VEXPRESS_A15:1.19 src/sys/arch/evbarm/conf/VEXPRESS_A15:1.20
--- src/sys/arch/evbarm/conf/VEXPRESS_A15:1.19	Mon Jun 11 19:49:18 2018
+++ src/sys/arch/evbarm/conf/VEXPRESS_A15	Sat Jun 30 16:22:56 2018
@@ -1,5 +1,5 @@
 #
-#	$NetBSD: VEXPRESS_A15,v 1.19 2018/06/11 19:49:18 jakllsch Exp $
+#	$NetBSD: VEXPRESS_A15,v 1.20 2018/06/30 16:22:56 jmcneill Exp $
 #
 #	ARM Versatile Express A15
 #
@@ -29,7 +29,7 @@ config		netbsd		root on ? type ?
 
 # Device tree support
 armfdt0		at root
-fdt*		at fdtbus?
+simplebus*	at fdt?
 
 # CPUs
 cpus*		at fdt? pass 0

Index: src/sys/arch/evbarm/conf/VIRT
diff -u src/sys/arch/evbarm/conf/VIRT:1.3 src/sys/arch/evbarm/conf/VIRT:1.4
--- src/sys/arch/evbarm/conf/VIRT:1.3	Fri Jun 15 19:52:01 2018
+++ src/sys/arch/evbarm/conf/VIRT	Sat Jun 30 16:22:56 2018
@@ -1,5 +1,5 @@
 #
-#	$NetBSD: VIRT,v 1.3 2018/06/15 19:52:01 jakllsch Exp $
+#	$NetBSD: VIRT,v 1.4 2018/06/30 16:22:56 jmcneill Exp $
 #
 #	QEMU ARM 'virt' virtual machine
 #
@@ -30,7 +30,7 @@ config		netbsd		root on ? type ?
 
 # Device tree support
 armfdt0		at root
-fdt*		at fdtbus?
+simplebus*	at fdt?
 
 # CPUs
 cpus*		at fdt? pass 0

Index: src/sys/dev/fdt/fdtbus.c
diff -u src/sys/dev/fdt/fdtbus.c:1.20 src/sys/dev/fdt/fdtbus.c:1.21
--- src/sys/dev/fdt/fdtbus.c:1.20	Sat Jun 30 13:44:50 2018
+++ src/sys/dev/fdt/fdtbus.c	Sat Jun 30 16:22:56 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: fdtbus.c,v 1.20 2018/06/30 13:44:50 jmcneill Exp $ */
+/* $NetBSD: fdtbus.c,v 1.21 2018/06/30 16:22:56 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill <jmcne...@invisible.ca>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: fdtbus.c,v 1.20 2018/06/30 13:44:50 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: fdtbus.c,v 1.21 2018/06/30 16:22:56 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -50,7 +50,8 @@ struct fdt_node {
 	device_t	n_bus;
 	device_t	n_dev;
 	int		n_phandle;
-	char		*n_name;
+	const char	*n_name;
+	struct fdt_attach_args n_faa;
 
 	u_int		n_order;
 
@@ -59,6 +60,7 @@ struct fdt_node {
 
 static TAILQ_HEAD(, fdt_node) fdt_nodes =
     TAILQ_HEAD_INITIALIZER(fdt_nodes);
+static bool fdt_need_rescan = false;
 
 struct fdt_softc {
 	device_t	sc_dev;
@@ -69,7 +71,7 @@ struct fdt_softc {
 static int	fdt_match(device_t, cfdata_t, void *);
 static void	fdt_attach(device_t, device_t, void *);
 static int	fdt_scan_submatch(device_t, cfdata_t, const int *, void *);
-static void	fdt_scan_bus(struct fdt_softc *);
+static void	fdt_scan_bus(device_t, const int);
 static void	fdt_scan(struct fdt_softc *, int);
 static void	fdt_add_node(struct fdt_node *);
 static u_int	fdt_get_order(int);
@@ -77,7 +79,7 @@ static u_int	fdt_get_order(int);
 static const char * const fdtbus_compatible[] =
     { "simple-bus", "simple-mfd", NULL };
 
-CFATTACH_DECL_NEW(fdt, sizeof(struct fdt_softc),
+CFATTACH_DECL_NEW(simplebus, sizeof(struct fdt_softc),
     fdt_match, fdt_attach, NULL, NULL);
 
 static int
@@ -111,51 +113,25 @@ fdt_attach(device_t parent, device_t sel
 	const struct fdt_attach_args *faa = aux;
 	const int phandle = faa->faa_phandle;
 	struct fdt_node *node;
-	char *model, *name;
-	int len, child;
+	const char *model;
+	int pass;
 
 	sc->sc_dev = self;
 	sc->sc_phandle = phandle;
 	sc->sc_faa = *faa;
 
 	aprint_naive("\n");
-	len = OF_getproplen(phandle, "model");
-	if (len > 0) {
-		model = kmem_zalloc(len, KM_SLEEP);
-		if (OF_getprop(phandle, "model", model, len) == len) {
-			aprint_normal(": %s\n", model);
-		} else {
-			aprint_normal("\n");
-		}
-		kmem_free(model, len);
-	} else {
+	model = fdtbus_get_string(phandle, "model");
+	if (model)
+		aprint_normal(": %s\n", model);
+	else
 		aprint_normal("\n");
-	}
-
-	for (child = OF_child(phandle); child; child = OF_peer(child)) {
-		if (!fdtbus_status_okay(child))
-			continue;
 
-		len = OF_getproplen(child, "name");
-		if (len <= 0)
-			continue;
-
-		name = kmem_zalloc(len, KM_SLEEP);
-		if (OF_getprop(child, "name", name, len) != len)
-			continue;
-
-		/* Add the node to our device list */
-		node = kmem_alloc(sizeof(*node), KM_SLEEP);
-		node->n_bus = self;
-		node->n_dev = NULL;
-		node->n_phandle = child;
-		node->n_name = name;
-		node->n_order = fdt_get_order(node->n_phandle);
-		fdt_add_node(node);
-	}
+	/* Find all child nodes */
+	fdt_add_bus(self, phandle, &sc->sc_faa);
 
 	/* Scan and attach all known busses in the tree. */
-	fdt_scan_bus(sc);
+	fdt_scan_bus(self, phandle);
 
 	/* Only the root bus should scan for devices */
 	if (OF_finddevice("/") != faa->faa_phandle)
@@ -174,34 +150,44 @@ fdt_attach(device_t parent, device_t sel
 	}
 
 	/* Scan devices */
-	for (int pass = 0; pass <= FDTCF_PASS_DEFAULT; pass++)
+	pass = 0;
+	fdt_need_rescan = false;
+	do {
 		fdt_scan(sc, pass);
+		if (fdt_need_rescan == true) {
+			pass = 0;
+			fdt_need_rescan = false;
+		} else {
+			pass++;
+		}
+	} while (pass <= FDTCF_PASS_DEFAULT);
 }
 
 static void
-fdt_init_attach_args(struct fdt_softc *sc, struct fdt_node *node,
+fdt_init_attach_args(const struct fdt_attach_args *faa_tmpl, struct fdt_node *node,
     bool quiet, struct fdt_attach_args *faa)
 {
-	*faa = sc->sc_faa;
+	*faa = *faa_tmpl;
 	faa->faa_phandle = node->n_phandle;
 	faa->faa_name = node->n_name;
 	faa->faa_quiet = quiet;
 }
 
 static void
-fdt_scan_bus(struct fdt_softc *sc)
+fdt_scan_bus(device_t bus, const int phandle)
 {
 	struct fdt_node *node;
 	struct fdt_attach_args faa;
 	cfdata_t cf;
 
 	TAILQ_FOREACH(node, &fdt_nodes, n_nodes) {
-		if (node->n_bus != sc->sc_dev)
+		if (node->n_bus != bus)
 			continue;
 		if (node->n_dev != NULL)
 			continue;
 
-		fdt_init_attach_args(sc, node, true, &faa);
+		faa = node->n_faa;
+		faa.faa_quiet = true;
 
 		/*
 		 * Only attach busses to nodes where this driver is the best
@@ -218,6 +204,32 @@ fdt_scan_bus(struct fdt_softc *sc)
 	}
 }
 
+void
+fdt_add_bus(device_t bus, const int phandle, struct fdt_attach_args *faa)
+{
+	struct fdt_node *node;
+	int child;
+
+	for (child = OF_child(phandle); child; child = OF_peer(child)) {
+		if (!fdtbus_status_okay(child))
+			continue;
+
+		/* Add the node to our device list */
+		node = kmem_alloc(sizeof(*node), KM_SLEEP);
+		node->n_bus = bus;
+		node->n_dev = NULL;
+		node->n_phandle = child;
+		node->n_name = fdtbus_get_string(child, "name");
+		node->n_order = fdt_get_order(child);
+		node->n_faa = *faa;
+		node->n_faa.faa_phandle = child;
+		node->n_faa.faa_name = node->n_name;
+
+		fdt_add_node(node);
+		fdt_need_rescan = true;
+	}
+}
+
 static int
 fdt_scan_submatch(device_t parent, cfdata_t cf, const int *locs, void *aux)
 {
@@ -242,7 +254,7 @@ fdt_scan_best(struct fdt_softc *sc, stru
 		const int locs[FDTCF_NLOCS] = {
 			[FDTCF_PASS] = pass
 		};
-		fdt_init_attach_args(sc, node, true, &faa);
+		fdt_init_attach_args(&sc->sc_faa, node, true, &faa);
 		cf = config_search_loc(fdt_scan_submatch, node->n_bus, "fdt", locs, &faa);
 		if (cf == NULL)
 			continue;
@@ -270,7 +282,7 @@ fdt_scan(struct fdt_softc *sc, int pass)
 		if (node->n_dev != NULL)
 			continue;
 
-		fdt_init_attach_args(sc, node, quiet, &faa);
+		fdt_init_attach_args(&sc->sc_faa, node, quiet, &faa);
 
 		/*
 		 * Make sure we don't attach before a better match in a later pass.

Index: src/sys/dev/fdt/fdtvar.h
diff -u src/sys/dev/fdt/fdtvar.h:1.35 src/sys/dev/fdt/fdtvar.h:1.36
--- src/sys/dev/fdt/fdtvar.h:1.35	Sat Jun 30 12:35:18 2018
+++ src/sys/dev/fdt/fdtvar.h	Sat Jun 30 16:22:56 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: fdtvar.h,v 1.35 2018/06/30 12:35:18 jmcneill Exp $ */
+/* $NetBSD: fdtvar.h,v 1.36 2018/06/30 16:22:56 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill <jmcne...@invisible.ca>
@@ -351,6 +351,8 @@ const void *	fdtbus_get_prop(int, const 
 const char *	fdtbus_get_string(int, const char *);
 const char *	fdtbus_get_string_index(int, const char *, u_int);
 
+void		fdt_add_bus(device_t, int, struct fdt_attach_args *);
+
 void		fdt_remove_byhandle(int);
 void		fdt_remove_bycompat(const char *[]);
 int		fdtbus_print(void *, const char *);

Index: src/sys/dev/fdt/files.fdt
diff -u src/sys/dev/fdt/files.fdt:1.34 src/sys/dev/fdt/files.fdt:1.35
--- src/sys/dev/fdt/files.fdt:1.34	Sat Jun 30 12:35:18 2018
+++ src/sys/dev/fdt/files.fdt	Sat Jun 30 16:22:56 2018
@@ -1,13 +1,13 @@
-# $NetBSD: files.fdt,v 1.34 2018/06/30 12:35:18 jmcneill Exp $
+# $NetBSD: files.fdt,v 1.35 2018/06/30 16:22:56 jmcneill Exp $
 
 include	"external/bsd/libfdt/conf/files.libfdt"
 
 defflag	opt_fdt.h				FDT: libfdt, ofw_subr
 
-define	fdtbus { } : clk, pwm
+define	fdt { [pass = 10] } : clk, pwm
 
-device	fdt { [pass = 10] } : fdtbus
-attach	fdt at fdtbus
+device	simplebus { } : fdt
+attach	simplebus at fdt
 file	dev/fdt/fdtbus.c			fdt
 
 device	fregulator
@@ -44,25 +44,25 @@ device	panel: fdt_port
 attach	panel at fdt with fdt_panel
 file	dev/fdt/panel_fdt.c			fdt_panel
 
-file	dev/fdt/fdt_openfirm.c			fdtbus
-file	dev/fdt/fdt_subr.c			fdtbus
-file	dev/fdt/fdt_clock.c			fdtbus
-file	dev/fdt/fdt_dai.c			fdtbus
-file	dev/fdt/fdt_dma.c			fdtbus
-file	dev/fdt/fdt_gpio.c			fdtbus
-file	dev/fdt/fdt_i2c.c			fdtbus
-file	dev/fdt/fdt_intr.c			fdtbus
-file	dev/fdt/fdt_mmc_pwrseq.c		fdtbus
-file	dev/fdt/fdt_phy.c			fdtbus
-file	dev/fdt/fdt_power.c			fdtbus
-file	dev/fdt/fdt_pwm.c			fdtbus
-file	dev/fdt/fdt_regulator.c			fdtbus
-file	dev/fdt/fdt_reset.c			fdtbus
-file	dev/fdt/fdt_rtc.c			fdtbus
-file	dev/fdt/fdt_syscon.c			fdtbus
-file	dev/fdt/fdt_pinctrl.c			fdtbus
+file	dev/fdt/fdt_openfirm.c			fdt
+file	dev/fdt/fdt_subr.c			fdt
+file	dev/fdt/fdt_clock.c			fdt
+file	dev/fdt/fdt_dai.c			fdt
+file	dev/fdt/fdt_dma.c			fdt
+file	dev/fdt/fdt_gpio.c			fdt
+file	dev/fdt/fdt_i2c.c			fdt
+file	dev/fdt/fdt_intr.c			fdt
+file	dev/fdt/fdt_mmc_pwrseq.c		fdt
+file	dev/fdt/fdt_phy.c			fdt
+file	dev/fdt/fdt_power.c			fdt
+file	dev/fdt/fdt_pwm.c			fdt
+file	dev/fdt/fdt_regulator.c			fdt
+file	dev/fdt/fdt_reset.c			fdt
+file	dev/fdt/fdt_rtc.c			fdt
+file	dev/fdt/fdt_syscon.c			fdt
+file	dev/fdt/fdt_pinctrl.c			fdt
 
-device	cpus { } : fdtbus
+device	cpus { } : fdt
 attach	cpus at fdt
 file	dev/fdt/cpus.c				cpus
 
@@ -70,7 +70,7 @@ device	mmcpwrseq
 attach	mmcpwrseq at fdt
 file	dev/fdt/mmc_pwrseq_simple.c		mmcpwrseq
 
-device	syscon
+device	syscon { } : fdt
 attach	syscon at fdt
 file	dev/fdt/syscon.c			syscon
 

Index: src/sys/dev/fdt/syscon.c
diff -u src/sys/dev/fdt/syscon.c:1.1 src/sys/dev/fdt/syscon.c:1.2
--- src/sys/dev/fdt/syscon.c:1.1	Sat Jun 30 12:35:18 2018
+++ src/sys/dev/fdt/syscon.c	Sat Jun 30 16:22:56 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: syscon.c,v 1.1 2018/06/30 12:35:18 jmcneill Exp $ */
+/* $NetBSD: syscon.c,v 1.2 2018/06/30 16:22:56 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2018 Jared McNeill <jmcne...@invisible.ca>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: syscon.c,v 1.1 2018/06/30 12:35:18 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: syscon.c,v 1.2 2018/06/30 16:22:56 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -135,4 +135,6 @@ syscon_attach(device_t parent, device_t 
 	aprint_normal(": System Controller Registers\n");
 
 	fdtbus_register_syscon(self, phandle, &sc->sc_syscon);
+
+	fdt_add_bus(self, phandle, faa);
 }

Reply via email to