diff options
author | Magnus Damm <damm@opensource.se> | 2012-03-30 04:44:02 -0400 |
---|---|---|
committer | Wolfram Sang <w.sang@pengutronix.de> | 2012-05-12 08:28:12 -0400 |
commit | ad33707417e4fa3dd4b12f9ed912e2349a984026 (patch) | |
tree | 3757668b186a5490796c3e5fde349c2dd3189342 /drivers/i2c | |
parent | 26f8d43df75c79332f3b7b60cc1c748e2cad5753 (diff) |
i2c: sh_mobile: add device tree support
This patch enables DT support for the IIC driver
used on SH-based SoCs such as sh7722 and sh7724
among others as well as SH-Mobile SoCs such as
sh7367, sh7377, sh7372, sh73a0 and r8a7740.
Tested with out-of-tree DT support code on the
sh7372 Mackerel board.
Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Diffstat (limited to 'drivers/i2c')
-rw-r--r-- | drivers/i2c/busses/i2c-sh_mobile.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/i2c/busses/i2c-sh_mobile.c b/drivers/i2c/busses/i2c-sh_mobile.c index 675c9692d148..8110ca45f342 100644 --- a/drivers/i2c/busses/i2c-sh_mobile.c +++ b/drivers/i2c/busses/i2c-sh_mobile.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/platform_device.h> | 27 | #include <linux/platform_device.h> |
28 | #include <linux/interrupt.h> | 28 | #include <linux/interrupt.h> |
29 | #include <linux/i2c.h> | 29 | #include <linux/i2c.h> |
30 | #include <linux/of_i2c.h> | ||
30 | #include <linux/err.h> | 31 | #include <linux/err.h> |
31 | #include <linux/pm_runtime.h> | 32 | #include <linux/pm_runtime.h> |
32 | #include <linux/clk.h> | 33 | #include <linux/clk.h> |
@@ -653,6 +654,7 @@ static int sh_mobile_i2c_probe(struct platform_device *dev) | |||
653 | adap->dev.parent = &dev->dev; | 654 | adap->dev.parent = &dev->dev; |
654 | adap->retries = 5; | 655 | adap->retries = 5; |
655 | adap->nr = dev->id; | 656 | adap->nr = dev->id; |
657 | adap->dev.of_node = dev->dev.of_node; | ||
656 | 658 | ||
657 | strlcpy(adap->name, dev->name, sizeof(adap->name)); | 659 | strlcpy(adap->name, dev->name, sizeof(adap->name)); |
658 | 660 | ||
@@ -667,6 +669,8 @@ static int sh_mobile_i2c_probe(struct platform_device *dev) | |||
667 | 669 | ||
668 | dev_info(&dev->dev, "I2C adapter %d with bus speed %lu Hz\n", | 670 | dev_info(&dev->dev, "I2C adapter %d with bus speed %lu Hz\n", |
669 | adap->nr, pd->bus_speed); | 671 | adap->nr, pd->bus_speed); |
672 | |||
673 | of_i2c_register_devices(adap); | ||
670 | return 0; | 674 | return 0; |
671 | 675 | ||
672 | err_all: | 676 | err_all: |
@@ -710,11 +714,18 @@ static const struct dev_pm_ops sh_mobile_i2c_dev_pm_ops = { | |||
710 | .runtime_resume = sh_mobile_i2c_runtime_nop, | 714 | .runtime_resume = sh_mobile_i2c_runtime_nop, |
711 | }; | 715 | }; |
712 | 716 | ||
717 | static const struct of_device_id sh_mobile_i2c_dt_ids[] __devinitconst = { | ||
718 | { .compatible = "renesas,rmobile-iic", }, | ||
719 | {}, | ||
720 | }; | ||
721 | MODULE_DEVICE_TABLE(of, sh_mobile_i2c_dt_ids); | ||
722 | |||
713 | static struct platform_driver sh_mobile_i2c_driver = { | 723 | static struct platform_driver sh_mobile_i2c_driver = { |
714 | .driver = { | 724 | .driver = { |
715 | .name = "i2c-sh_mobile", | 725 | .name = "i2c-sh_mobile", |
716 | .owner = THIS_MODULE, | 726 | .owner = THIS_MODULE, |
717 | .pm = &sh_mobile_i2c_dev_pm_ops, | 727 | .pm = &sh_mobile_i2c_dev_pm_ops, |
728 | .of_match_table = sh_mobile_i2c_dt_ids, | ||
718 | }, | 729 | }, |
719 | .probe = sh_mobile_i2c_probe, | 730 | .probe = sh_mobile_i2c_probe, |
720 | .remove = sh_mobile_i2c_remove, | 731 | .remove = sh_mobile_i2c_remove, |