svn commit: r356521 - head/sys/dev/iicbus/mux
Ian Lepore
ian at FreeBSD.org
Wed Jan 8 22:45:33 UTC 2020
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);
}
More information about the svn-src-all
mailing list