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
This commit is contained in:
Nathan Whitehorn 2009-03-02 15:22:01 +00:00
parent 06edd2f1e8
commit e2c10e7d4a

View File

@ -118,8 +118,15 @@ ofw_iicbus_attach(device_t dev)
node = ofw_bus_get_node(dev); node = ofw_bus_get_node(dev);
for (child = OF_child(node); child != 0; child = OF_peer(child)) { 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 * Now set up the I2C and OFW bus layer devinfo and add it