aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/i2c/busses/i2c-sh_mobile.c
diff options
context:
space:
mode:
authorMagnus Damm <damm@opensource.se>2012-03-30 04:44:02 -0400
committerWolfram Sang <w.sang@pengutronix.de>2012-05-12 08:28:12 -0400
commitad33707417e4fa3dd4b12f9ed912e2349a984026 (patch)
tree3757668b186a5490796c3e5fde349c2dd3189342 /drivers/i2c/busses/i2c-sh_mobile.c
parent26f8d43df75c79332f3b7b60cc1c748e2cad5753 (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/busses/i2c-sh_mobile.c')
-rw-r--r--drivers/i2c/busses/i2c-sh_mobile.c11
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 675c9692d14..8110ca45f34 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
717static const struct of_device_id sh_mobile_i2c_dt_ids[] __devinitconst = {
718 { .compatible = "renesas,rmobile-iic", },
719 {},
720};
721MODULE_DEVICE_TABLE(of, sh_mobile_i2c_dt_ids);
722
713static struct platform_driver sh_mobile_i2c_driver = { 723static 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,