Author: ian Date: Wed Jan 8 22:45:32 2020 New Revision: 356521 URL: https://svnweb.freebsd.org/changeset/base/356521
Log: Init sc->maxbus to -1, not 0. It represents the highest array index that has a non-NULL child bus stored in it, so the "none" value can't be zero since that's a valid array index. Also, when adding all possible buses because there is no specific per-bus config, there's no need to reset sc->maxbus on each loop iteration, it can be set once after the loop. Modified: head/sys/dev/iicbus/mux/iicmux.c Modified: head/sys/dev/iicbus/mux/iicmux.c ============================================================================== --- head/sys/dev/iicbus/mux/iicmux.c Wed Jan 8 22:16:26 2020 (r356520) +++ head/sys/dev/iicbus/mux/iicmux.c Wed Jan 8 22:45:32 2020 (r356521) @@ -249,6 +249,7 @@ iicmux_attach(device_t dev, device_t busdev, int numbu sc->dev = dev; sc->busdev = busdev; + sc->maxbus = -1; sc->numbuses = numbuses; SYSCTL_ADD_UINT(device_get_sysctl_ctx(sc->dev), @@ -262,7 +263,8 @@ iicmux_attach(device_t dev, device_t busdev, int numbu #ifdef FDT phandle_t child, node, parent; - pcell_t idx; + pcell_t reg; + int idx; /* * Find our FDT node. Child nodes within our node will become our @@ -285,11 +287,12 @@ iicmux_attach(device_t dev, device_t busdev, int numbu * Attach the children represented in the device tree. */ for (child = OF_child(parent); child != 0; child = OF_peer(child)) { - if (OF_getencprop(child, "reg", &idx, sizeof(idx)) == -1) { + if (OF_getencprop(child, "reg", ®, sizeof(reg)) == -1) { device_printf(dev, "child bus missing required 'reg' property\n"); continue; } + idx = (int)reg; if (idx >= sc->numbuses) { device_printf(dev, "child bus 'reg' property %d exceeds the number " @@ -314,9 +317,8 @@ iicmux_attach(device_t dev, device_t busdev, int numbu for (i = 0; i < sc->numbuses; ++i) { sc->childdevs[i] = device_add_child(sc->dev, "iicbus", -1); - if (sc->maxbus < i) - sc->maxbus = i; } + sc->maxbus = sc->numbuses - 1; return (0); } _______________________________________________ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"