diff options
author | Ian Lepore <ian@FreeBSD.org> | 2014-11-18 01:54:31 +0000 |
---|---|---|
committer | Ian Lepore <ian@FreeBSD.org> | 2014-11-18 01:54:31 +0000 |
commit | 844aff82a6599a8d96545dfb89663809e71719fc (patch) | |
tree | 12552f97db5b3d3d363057c8e7968cc7eea6aa65 /sys/dev/ofw | |
parent | 668ed8aa024461af37a6c16a2ccbf1b6d7208aed (diff) | |
download | src-844aff82a6599a8d96545dfb89663809e71719fc.tar.gz src-844aff82a6599a8d96545dfb89663809e71719fc.zip |
Notes
Diffstat (limited to 'sys/dev/ofw')
-rw-r--r-- | sys/dev/ofw/ofw_iicbus.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/sys/dev/ofw/ofw_iicbus.c b/sys/dev/ofw/ofw_iicbus.c index 1574f6e9674a..f6d1be58612f 100644 --- a/sys/dev/ofw/ofw_iicbus.c +++ b/sys/dev/ofw/ofw_iicbus.c @@ -101,12 +101,24 @@ ofw_iicbus_attach(device_t dev) { struct iicbus_softc *sc = IICBUS_SOFTC(dev); struct ofw_iicbus_devinfo *dinfo; - phandle_t child; - pcell_t paddr; + phandle_t child, node; + pcell_t freq, paddr; device_t childdev; sc->dev = dev; mtx_init(&sc->lock, "iicbus", NULL, MTX_DEF); + + /* + * If there is a clock-frequency property for the device node, use it as + * the starting value for the bus frequency. Then call the common + * routine that handles the tunable/sysctl which allows the FDT value to + * be overridden by the user. + */ + node = ofw_bus_get_node(dev); + freq = 0; + OF_getencprop(node, "clock-frequency", &freq, sizeof(freq)); + iicbus_init_frequency(dev, freq); + iicbus_reset(dev, IIC_FASTEST, 0, NULL); bus_generic_probe(dev); @@ -115,8 +127,7 @@ ofw_iicbus_attach(device_t dev) /* * Attach those children represented in the device tree. */ - for (child = OF_child(ofw_bus_get_node(dev)); child != 0; - child = OF_peer(child)) { + for (child = OF_child(node); child != 0; child = OF_peer(child)) { /* * Try to get the I2C address first from the i2c-address * property, then try the reg property. It moves around |