summaryrefslogtreecommitdiffstats
path: root/sys/dev/ofw
diff options
context:
space:
mode:
authornwhitehorn <nwhitehorn@FreeBSD.org>2009-03-02 15:22:01 +0000
committernwhitehorn <nwhitehorn@FreeBSD.org>2009-03-02 15:22:01 +0000
commit9c1d9573361b5e7cd3cbe74b0f747372ed7677a8 (patch)
treef20b4d18fb2f7386dbee4ef9b6a6263f11677f8b /sys/dev/ofw
parentee5318d5431890ccd7baeb15560b4bebe982525b (diff)
downloadFreeBSD-src-9c1d9573361b5e7cd3cbe74b0f747372ed7677a8.zip
FreeBSD-src-9c1d9573361b5e7cd3cbe74b0f747372ed7677a8.tar.gz
Some Apple I2C buses give the device's I2C address in a property with the
name i2c-address instead of reg. Change the OFW I2C probe to check both locations for the address. Submitted by: Marco Trillo Reported by: Justin Hibbits
Diffstat (limited to 'sys/dev/ofw')
-rw-r--r--sys/dev/ofw/ofw_iicbus.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/sys/dev/ofw/ofw_iicbus.c b/sys/dev/ofw/ofw_iicbus.c
index fc752b6..e8effca 100644
--- a/sys/dev/ofw/ofw_iicbus.c
+++ b/sys/dev/ofw/ofw_iicbus.c
@@ -118,8 +118,15 @@ ofw_iicbus_attach(device_t dev)
node = ofw_bus_get_node(dev);
for (child = OF_child(node); child != 0; child = OF_peer(child)) {
- if (OF_getprop(child, "reg", &addr, sizeof(addr)) == -1)
- continue;
+ /*
+ * Try to get the I2C address first from the i2c-address
+ * property, then try the reg property. It moves around
+ * on different systems.
+ */
+
+ if (OF_getprop(child, "i2c-address", &addr, sizeof(addr)) == -1)
+ if (OF_getprop(child, "reg", &addr, sizeof(addr)) == -1)
+ continue;
/*
* Now set up the I2C and OFW bus layer devinfo and add it
OpenPOWER on IntegriCloud