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); }