svn commit: r366652 - head/sys/dev/iicbus

Ian Lepore ian at FreeBSD.org
Mon Oct 12 18:02:52 UTC 2020


Author: ian
Date: Mon Oct 12 18:02:51 2020
New Revision: 366652
URL: https://svnweb.freebsd.org/changeset/base/366652

Log:
  Bug fixes for the ads111x driver... make configurable gain and sample rate
  hints work on per-channel basis as documented, rather than chip-wide.  Also,
  when configured via hints, return BUS_PROBE_NOWILDCARD on successful hints
  match, so that the hints don't bogusly match other types of i2c chips.

Modified:
  head/sys/dev/iicbus/ads111x.c

Modified: head/sys/dev/iicbus/ads111x.c
==============================================================================
--- head/sys/dev/iicbus/ads111x.c	Mon Oct 12 17:43:38 2020	(r366651)
+++ head/sys/dev/iicbus/ads111x.c	Mon Oct 12 18:02:51 2020	(r366652)
@@ -456,12 +456,15 @@ ads111x_add_channels(struct ads111x_softc *sc)
 	name = device_get_name(sc->dev);
 	unit = device_get_unit(sc->dev);
 	for (chan = 0; chan < sc->chipinfo->numchan; ++chan) {
+		char resname[16];
 		found = false;
 		gainidx = DEFAULT_GAINIDX;
 		rateidx = DEFAULT_RATEIDX;
-		if (resource_int_value(name, unit, "gain_index", &gainidx) == 0)
+		snprintf(resname, sizeof(resname), "%d.gain_index", chan);
+		if (resource_int_value(name, unit, resname, &gainidx) == 0)
 			found = true;
-		if (resource_int_value(name, unit, "rate_index", &gainidx) == 0)
+		snprintf(resname, sizeof(resname), "%d.rate_index", chan);
+		if (resource_int_value(name, unit, resname, &rateidx) == 0)
 			found = true;
 		if (found) {
 			ads111x_setup_channel(sc, chan, gainidx, rateidx);
@@ -522,7 +525,11 @@ ads111x_probe(device_t dev)
 	info = ads111x_find_chipinfo(dev);
 	if (info != NULL) {
 		device_set_desc(dev, info->name);
+#ifdef FDT
 		return (BUS_PROBE_DEFAULT);
+#else
+		return (BUS_PROBE_NOWILDCARD);
+#endif
 	}
 
 	return (ENXIO);


More information about the svn-src-head mailing list