diff options
author | Grant Likely <grant.likely@secretlab.ca> | 2010-06-08 09:48:19 -0400 |
---|---|---|
committer | Grant Likely <grant.likely@secretlab.ca> | 2010-07-05 18:14:52 -0400 |
commit | 959e85f7751c33d1a2dabc5cc3fe2ed0db7052e5 (patch) | |
tree | eb466e1e2b9fae09a2639cdfa00a8e6996e34ca9 /drivers/i2c | |
parent | 9fd049927ccba1c1d0343239b82f28c4e07fb95d (diff) |
i2c: Add OF-style registration and binding
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>
Diffstat (limited to 'drivers/i2c')
-rw-r--r-- | drivers/i2c/busses/i2c-cpm.c | 5 | ||||
-rw-r--r-- | drivers/i2c/busses/i2c-ibm_iic.c | 3 | ||||
-rw-r--r-- | drivers/i2c/busses/i2c-mpc.c | 1 | ||||
-rw-r--r-- | drivers/i2c/i2c-core.c | 9 |
4 files changed, 9 insertions, 9 deletions
diff --git a/drivers/i2c/busses/i2c-cpm.c b/drivers/i2c/busses/i2c-cpm.c index 03ae62e69596..e591de1bc704 100644 --- a/drivers/i2c/busses/i2c-cpm.c +++ b/drivers/i2c/busses/i2c-cpm.c | |||
@@ -677,11 +677,6 @@ static int __devinit cpm_i2c_probe(struct of_device *ofdev, | |||
677 | dev_dbg(&ofdev->dev, "hw routines for %s registered.\n", | 677 | dev_dbg(&ofdev->dev, "hw routines for %s registered.\n", |
678 | cpm->adap.name); | 678 | cpm->adap.name); |
679 | 679 | ||
680 | /* | ||
681 | * register OF I2C devices | ||
682 | */ | ||
683 | of_i2c_register_devices(&cpm->adap); | ||
684 | |||
685 | return 0; | 680 | return 0; |
686 | out_shut: | 681 | out_shut: |
687 | cpm_i2c_shutdown(cpm); | 682 | cpm_i2c_shutdown(cpm); |
diff --git a/drivers/i2c/busses/i2c-ibm_iic.c b/drivers/i2c/busses/i2c-ibm_iic.c index d9641210dd3a..1168d61418c9 100644 --- a/drivers/i2c/busses/i2c-ibm_iic.c +++ b/drivers/i2c/busses/i2c-ibm_iic.c | |||
@@ -761,9 +761,6 @@ static int __devinit iic_probe(struct of_device *ofdev, | |||
761 | dev_info(&ofdev->dev, "using %s mode\n", | 761 | dev_info(&ofdev->dev, "using %s mode\n", |
762 | dev->fast_mode ? "fast (400 kHz)" : "standard (100 kHz)"); | 762 | dev->fast_mode ? "fast (400 kHz)" : "standard (100 kHz)"); |
763 | 763 | ||
764 | /* Now register all the child nodes */ | ||
765 | of_i2c_register_devices(adap); | ||
766 | |||
767 | return 0; | 764 | return 0; |
768 | 765 | ||
769 | error_cleanup: | 766 | error_cleanup: |
diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c index d2e26d290e7a..9f7fef8c4639 100644 --- a/drivers/i2c/busses/i2c-mpc.c +++ b/drivers/i2c/busses/i2c-mpc.c | |||
@@ -607,7 +607,6 @@ static int __devinit fsl_i2c_probe(struct of_device *op, | |||
607 | dev_err(i2c->dev, "failed to add adapter\n"); | 607 | dev_err(i2c->dev, "failed to add adapter\n"); |
608 | goto fail_add; | 608 | goto fail_add; |
609 | } | 609 | } |
610 | of_i2c_register_devices(&i2c->adap); | ||
611 | 610 | ||
612 | return result; | 611 | return result; |
613 | 612 | ||
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c index 1cca2631e5b3..5588ac1fb8ad 100644 --- a/drivers/i2c/i2c-core.c +++ b/drivers/i2c/i2c-core.c | |||
@@ -30,6 +30,8 @@ | |||
30 | #include <linux/init.h> | 30 | #include <linux/init.h> |
31 | #include <linux/idr.h> | 31 | #include <linux/idr.h> |
32 | #include <linux/mutex.h> | 32 | #include <linux/mutex.h> |
33 | #include <linux/of_i2c.h> | ||
34 | #include <linux/of_device.h> | ||
33 | #include <linux/completion.h> | 35 | #include <linux/completion.h> |
34 | #include <linux/hardirq.h> | 36 | #include <linux/hardirq.h> |
35 | #include <linux/irqflags.h> | 37 | #include <linux/irqflags.h> |
@@ -70,6 +72,10 @@ static int i2c_device_match(struct device *dev, struct device_driver *drv) | |||
70 | if (!client) | 72 | if (!client) |
71 | return 0; | 73 | return 0; |
72 | 74 | ||
75 | /* Attempt an OF style match */ | ||
76 | if (of_driver_match_device(dev, drv)) | ||
77 | return 1; | ||
78 | |||
73 | driver = to_i2c_driver(drv); | 79 | driver = to_i2c_driver(drv); |
74 | /* match on an id table if there is one */ | 80 | /* match on an id table if there is one */ |
75 | if (driver->id_table) | 81 | if (driver->id_table) |
@@ -790,6 +796,9 @@ static int i2c_register_adapter(struct i2c_adapter *adap) | |||
790 | if (adap->nr < __i2c_first_dynamic_bus_num) | 796 | if (adap->nr < __i2c_first_dynamic_bus_num) |
791 | i2c_scan_static_board_info(adap); | 797 | i2c_scan_static_board_info(adap); |
792 | 798 | ||
799 | /* Register devices from the device tree */ | ||
800 | of_i2c_register_devices(adap); | ||
801 | |||
793 | /* Notify drivers */ | 802 | /* Notify drivers */ |
794 | mutex_lock(&core_lock); | 803 | mutex_lock(&core_lock); |
795 | dummy = bus_for_each_drv(&i2c_bus_type, NULL, adap, | 804 | dummy = bus_for_each_drv(&i2c_bus_type, NULL, adap, |