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", &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