linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: lee.jones@linaro.org (Lee Jones)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 01/15] i2c/busses: Add Device Tree support to the Nomadik I2C driver
Date: Sat, 05 May 2012 07:17:14 +0100	[thread overview]
Message-ID: <4FA4C5EA.7030006@linaro.org> (raw)
In-Reply-To: <201205042002.20943.arnd@arndb.de>

I haven't tested it yet (it builds with no warnings/errors, but I
haven't booted it), as I don't have my board immediately to hand,
but does this kind of thing better suit what you're looking for?

From: Lee Jones <lee.jones@linaro.org>
Date: Tue, 17 Apr 2012 16:04:13 +0100
Subject: [PATCH 01/15] i2c/busses: Add Device Tree support to the Nomadik I2C
 driver

Here we move the i2c-nomadik's default settings into the driver
rather than specifying them from platform code. At the time of
this writing we only have one user, the u8500. As new users are
added, it is expected that they will be Device Tree compliant.
If this is the case, we will look up their initialisation values
by compatible entry, then apply them forthwith.

Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 drivers/i2c/busses/i2c-nomadik.c |   42 +++++++++++++++++++++++++++++++++++++-
 1 file changed, 41 insertions(+), 1 deletion(-)

diff --git a/drivers/i2c/busses/i2c-nomadik.c b/drivers/i2c/busses/i2c-nomadik.c
index 5267ab9..3478a13 100644
--- a/drivers/i2c/busses/i2c-nomadik.c
+++ b/drivers/i2c/busses/i2c-nomadik.c
@@ -23,6 +23,7 @@
 #include <linux/io.h>
 #include <linux/regulator/consumer.h>
 #include <linux/pm_runtime.h>
+#include <linux/of_device.h>
 
 #include <plat/i2c.h>
 
@@ -899,15 +900,53 @@ static const struct i2c_algorithm nmk_i2c_algo = {
 	.functionality	= nmk_i2c_functionality
 };
 
+static const struct nmk_i2c_controller u8500_i2c = {
+       /*
+        * slave data setup time, which is
+        * 250 ns,100ns,10ns which is 14,6,2
+        * respectively for a 48 Mhz
+        * i2c clock
+        */
+       .slsu           = 0xe,
+       /* Tx FIFO threshold */
+       .tft            = 1,
+       /* Rx FIFO threshold */
+       .rft            = 8,
+       /* std. mode operation */
+       .clk_freq       = 100000,
+       /* Slave response timeout(ms) */
+       .timeout        = 200,
+       .sm             = I2C_FREQ_MODE_FAST,
+};
+
+static const struct of_device_id nmk_gpio_match[] = {
+	{ .compatible = "stericsson,db8500-i2c", .data = (void *)&u8500_i2c, },
+	{}
+};
+
 static int __devinit nmk_i2c_probe(struct platform_device *pdev)
 {
 	int ret = 0;
 	struct resource *res;
-	struct nmk_i2c_controller *pdata =
+	const struct nmk_i2c_controller *pdata =
 			pdev->dev.platform_data;
+	struct device_node *np = pdev->dev.of_node;
 	struct nmk_i2c_dev	*dev;
 	struct i2c_adapter *adap;
 
+	if (!pdata) {
+		if (!np) {
+			dev_err(&pdev->dev,
+				"Neither platform_data nor Device Tree not found\n");
+			return -EINVAL;
+		}
+		/* Try to fetch supplied i2c configuration from the match table. */
+		pdata = of_match_device(nmk_gpio_match, &pdev->dev)->data;
+		/* If no configuration was supplied, use the default. */
+		if (!pdata)
+			pdata = &u8500_i2c;
+	}
+
 	dev = kzalloc(sizeof(struct nmk_i2c_dev), GFP_KERNEL);
 	if (!dev) {
 		dev_err(&pdev->dev, "cannot allocate memory\n");
@@ -1044,6 +1083,7 @@ static struct platform_driver nmk_i2c_driver = {
 		.owner = THIS_MODULE,
 		.name = DRIVER_NAME,
 		.pm = &nmk_i2c_pm,
+		.of_match_table = nmk_gpio_match,
 	},
 	.probe = nmk_i2c_probe,
 	.remove = __devexit_p(nmk_i2c_remove),
-- 
1.7.9.5

  parent reply	other threads:[~2012-05-05  6:17 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-04 18:23 [PATCH 00/15] DT enablement for Snowball Lee Jones
2012-05-04 18:23 ` [PATCH 01/15] i2c/busses: Add Device Tree support to the Nomadik I2C driver Lee Jones
2012-05-04 20:02   ` Arnd Bergmann
2012-05-04 21:27     ` Lee Jones
2012-05-05  6:17     ` Lee Jones [this message]
2012-05-09  8:42       ` Linus Walleij
2012-05-04 18:23 ` [PATCH 02/15] ARM: ux500: Remove unused i2c platform_data initialisation code Lee Jones
2012-05-09  8:46   ` Linus Walleij
2012-05-09 10:22     ` Lee Jones
2012-05-10 11:24       ` Linus Walleij
2012-05-04 18:23 ` [PATCH 03/15] ARM: ux500: Provide auxdata to be used as name base clock search for nmk-i2c Lee Jones
2012-05-09  8:48   ` Linus Walleij
2012-05-04 18:23 ` [PATCH 04/15] ARM: ux500: CONFIG: Compile in support for leds-gpio Lee Jones
2012-05-09  8:49   ` Linus Walleij
2012-05-09 10:23     ` Lee Jones
2012-05-10 11:25       ` Linus Walleij
2012-05-04 18:23 ` [PATCH 05/15] ARM: ux500: Enable the user LED on Snowball via Device Tree Lee Jones
2012-05-09  8:50   ` Linus Walleij
2012-05-04 18:23 ` [PATCH 06/15] mfd/ab8500: Remove confusing ab8500-i2c file and merge into ab8500-core Lee Jones
2012-05-04 20:25   ` Arnd Bergmann
2012-05-04 21:24     ` Lee Jones
2012-05-05  6:30       ` Lee Jones
2012-05-07 16:54   ` Mark Brown
2012-05-09 12:20   ` Linus Walleij
2012-05-14  8:41     ` Lee Jones
2012-05-14  9:11       ` Linus Walleij
2012-05-04 18:23 ` [PATCH 07/15] drivers/power: Carry out platform_data error checking on ab8500 devices Lee Jones
2012-05-09  8:51   ` Linus Walleij
2012-05-09 10:24     ` Lee Jones
2012-05-04 18:23 ` [PATCH 08/15] ARM: ux500: PRCMU related configuration and layout corrections for Device Tree Lee Jones
2012-05-09  8:53   ` Linus Walleij
2012-05-09 10:27     ` Lee Jones
2012-05-10 11:27       ` Linus Walleij
2012-05-04 18:23 ` [PATCH 09/15] drivers/mfd: Enable Device Tree support for the db8500-prcmu Lee Jones
2012-05-09  8:56   ` Linus Walleij
2012-05-09 14:30   ` Samuel Ortiz
2012-05-04 18:23 ` [PATCH 10/15] drivers/mfd: db8500-prcmu: Add support for regulator supply for nmk-i2c.4 Lee Jones
2012-05-09  8:56   ` Linus Walleij
2012-05-09 14:31   ` Samuel Ortiz
2012-05-04 18:23 ` [PATCH 11/15] drivers/mfd: Enable Device Tree for ab8500-core driver Lee Jones
2012-05-09  9:02   ` Linus Walleij
2012-05-09 10:28     ` Lee Jones
2012-05-09 11:18       ` Mark Brown
2012-05-09 11:56     ` Arnd Bergmann
2012-05-10 10:26     ` Russell King - ARM Linux
2012-05-10 12:27       ` Linus Walleij
2012-05-11 10:12   ` Samuel Ortiz
2012-05-14  8:45     ` Lee Jones
2012-05-04 18:23 ` [PATCH 12/15] drivers/regulator: ab8500: Split up probe() into manageable pieces Lee Jones
2012-05-07 16:58   ` Mark Brown
     [not found]     ` <CAF2Aj3h7pgh=Kbt+M5Xd_RDRbJN7K+WbaH1+8nM2Eakb1QNpsg@mail.gmail.com>
2012-05-07 18:44       ` Mark Brown
2012-05-08 11:08         ` Lee Jones
2012-05-04 18:23 ` [PATCH 13/15] ARM: ux500: Add support for ab8500 regulators into the Device Tree Lee Jones
2012-05-09  9:04   ` Linus Walleij
2012-05-04 18:23 ` [PATCH 14/15] drivers/regulators: Enable the ab8500 for " Lee Jones
2012-05-07 17:08   ` Mark Brown
2012-05-08 12:04     ` Lee Jones
2012-05-08 12:19       ` Mark Brown
2012-05-08 12:38         ` Lee Jones
2012-05-08 13:34           ` Mark Brown
2012-05-08 14:54             ` Lee Jones
2012-05-08 14:57               ` Mark Brown
2012-05-08 17:00                 ` Lee Jones
2012-05-08 13:48           ` Arnd Bergmann
2012-05-08 14:29             ` Mark Brown
2012-05-08 14:36               ` Arnd Bergmann
2012-05-08 14:44                 ` Mark Brown
2012-05-14 15:49     ` Lee Jones
2012-05-14 16:18       ` Arnd Bergmann
2012-05-14 17:01       ` Mark Brown
2012-05-14 15:57     ` Lee Jones
2012-05-14 16:39       ` Mark Brown
2012-05-04 18:23 ` [PATCH 15/15] ARM: ux500: Disable platform setup of the ab8500 when DT is enabled Lee Jones
2012-05-09  9:05   ` Linus Walleij
2012-05-04 20:26 ` [PATCH 00/15] DT enablement for Snowball Arnd Bergmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4FA4C5EA.7030006@linaro.org \
    --to=lee.jones@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).