aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndriy Gapon <avg@FreeBSD.org>2021-11-04 11:56:12 +0000
committerAndriy Gapon <avg@FreeBSD.org>2021-11-06 17:24:44 +0000
commita75159eabc90dc35af68c92f7d5eb72e087f6131 (patch)
tree360824698e7a9f2981070c5bc9d3cd3b0778e890
parent6354154ef520d359492badf0de9c8ae5d7080ae7 (diff)
downloadsrc-a75159eabc90dc35af68c92f7d5eb72e087f6131.tar.gz
src-a75159eabc90dc35af68c92f7d5eb72e087f6131.zip
htu21: allow configuration via hints on FDT-based systems
On-board devices should be configured via the FDT and overlays. Hints are primarily useful for external and temporarily attached devices. Adding hints is much easier and faster than writing and compiling an overlay. MFC after: 1 week
-rw-r--r--sys/dev/iicbus/htu21.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/sys/dev/iicbus/htu21.c b/sys/dev/iicbus/htu21.c
index 5c59ebe8f54a..aa8507bf7437 100644
--- a/sys/dev/iicbus/htu21.c
+++ b/sys/dev/iicbus/htu21.c
@@ -458,11 +458,17 @@ static int
htu21_probe(device_t dev)
{
uint8_t addr;
+ int rc;
#ifdef FDT
- if (!ofw_bus_search_compatible(dev, compat_data)->ocd_data)
+ if (!ofw_bus_status_okay(dev))
return (ENXIO);
+ if (ofw_bus_search_compatible(dev, compat_data)->ocd_data)
+ rc = BUS_PROBE_GENERIC;
+ else
#endif
+ rc = BUS_PROBE_NOWILDCARD;
+
addr = iicbus_get_addr(dev);
if (addr != (HTU21_ADDR << 1)) {
device_printf(dev, "non-standard slave address 0x%02x\n",
@@ -470,7 +476,7 @@ htu21_probe(device_t dev)
}
device_set_desc(dev, "HTU21 temperature and humidity sensor");
- return (BUS_PROBE_GENERIC);
+ return (rc);
}
static int
@@ -516,6 +522,4 @@ static devclass_t htu21_devclass;
DRIVER_MODULE(htu21, iicbus, htu21_driver, htu21_devclass, 0, 0);
MODULE_DEPEND(htu21, iicbus, IICBUS_MINVER, IICBUS_PREFVER, IICBUS_MAXVER);
MODULE_VERSION(htu21, 1);
-#ifdef FDT
IICBUS_FDT_PNP_INFO(compat_data);
-#endif