Skip to content

Commit

Permalink
i2c: Add OF-style registration and binding
Browse files Browse the repository at this point in the history
This patch adds OF hooks to the i2c core so that devices can automatically
be registered based on device tree data.

Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
  • Loading branch information
Grant Likely committed Jul 5, 2010
1 parent 9fd0499 commit 959e85f
Showing 4 changed files with 9 additions and 9 deletions.
5 changes: 0 additions & 5 deletions drivers/i2c/busses/i2c-cpm.c
Original file line number Diff line number Diff line change
@@ -677,11 +677,6 @@ static int __devinit cpm_i2c_probe(struct of_device *ofdev,
dev_dbg(&ofdev->dev, "hw routines for %s registered.\n",
cpm->adap.name);

/*
* register OF I2C devices
*/
of_i2c_register_devices(&cpm->adap);

return 0;
out_shut:
cpm_i2c_shutdown(cpm);
3 changes: 0 additions & 3 deletions drivers/i2c/busses/i2c-ibm_iic.c
Original file line number Diff line number Diff line change
@@ -761,9 +761,6 @@ static int __devinit iic_probe(struct of_device *ofdev,
dev_info(&ofdev->dev, "using %s mode\n",
dev->fast_mode ? "fast (400 kHz)" : "standard (100 kHz)");

/* Now register all the child nodes */
of_i2c_register_devices(adap);

return 0;

error_cleanup:
1 change: 0 additions & 1 deletion drivers/i2c/busses/i2c-mpc.c
Original file line number Diff line number Diff line change
@@ -607,7 +607,6 @@ static int __devinit fsl_i2c_probe(struct of_device *op,
dev_err(i2c->dev, "failed to add adapter\n");
goto fail_add;
}
of_i2c_register_devices(&i2c->adap);

return result;

9 changes: 9 additions & 0 deletions drivers/i2c/i2c-core.c
Original file line number Diff line number Diff line change
@@ -30,6 +30,8 @@
#include <linux/init.h>
#include <linux/idr.h>
#include <linux/mutex.h>
#include <linux/of_i2c.h>
#include <linux/of_device.h>
#include <linux/completion.h>
#include <linux/hardirq.h>
#include <linux/irqflags.h>
@@ -70,6 +72,10 @@ static int i2c_device_match(struct device *dev, struct device_driver *drv)
if (!client)
return 0;

/* Attempt an OF style match */
if (of_driver_match_device(dev, drv))
return 1;

driver = to_i2c_driver(drv);
/* match on an id table if there is one */
if (driver->id_table)
@@ -790,6 +796,9 @@ static int i2c_register_adapter(struct i2c_adapter *adap)
if (adap->nr < __i2c_first_dynamic_bus_num)
i2c_scan_static_board_info(adap);

/* Register devices from the device tree */
of_i2c_register_devices(adap);

/* Notify drivers */
mutex_lock(&core_lock);
dummy = bus_for_each_drv(&i2c_bus_type, NULL, adap,

0 comments on commit 959e85f

Please sign in to comment.