linux-mips
[Top] [All Lists]

Re: [PATCH 1/3] MIPS: Octeon: Add I2C platform driver.

To: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Subject: Re: [PATCH 1/3] MIPS: Octeon: Add I2C platform driver.
From: David Daney <ddaney@caviumnetworks.com>
Date: Thu, 07 Jan 2010 12:55:19 -0800
Cc: linux-mips@linux-mips.org, ralf@linux-mips.org, linux-i2c@vger.kernel.org, ben-linux@fluff.org, khali@linux-fr.org, rade.bozic.ext@nsn.com
In-reply-to: <4B4645A3.30401@ru.mvista.com>
References: <4B463B1F.6000404@caviumnetworks.com> <1262894061-32613-1-git-send-email-ddaney@caviumnetworks.com> <4B4645A3.30401@ru.mvista.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Thunderbird 2.0.0.21 (X11/20090320)
Sergei Shtylyov wrote:
Hello.

David Daney wrote:

Signed-off-by: David Daney <ddaney@caviumnetworks.com>
CC: Rade Bozic <rade.bozic.ext@nsn.com>
[...]
diff --git a/arch/mips/cavium-octeon/octeon-platform.c b/arch/mips/cavium-octeon/octeon-platform.c
index 20698a6..f2c0602 100644
--- a/arch/mips/cavium-octeon/octeon-platform.c
+++ b/arch/mips/cavium-octeon/octeon-platform.c
@@ -165,6 +165,78 @@ out:
 }
 device_initcall(octeon_rng_device_init);
+
+#define OCTEON_I2C_IO_BASE 0x1180000001000ull
+#define OCTEON_I2C_IO_UNIT_OFFSET 0x200
+
+static struct octeon_i2c_data octeon_i2c_data[2];
+
+static int __init octeon_i2c_device_init(void)
+{
+    struct platform_device *pd;
+    int ret = 0;
+    int port, num_ports;
+
+    struct resource i2c_resources[] = {
+        {
+            .flags    = IORESOURCE_MEM,
+        }, {
+            .flags    = IORESOURCE_IRQ,
+        }
+    };
+
+ if (OCTEON_IS_MODEL(OCTEON_CN56XX) || OCTEON_IS_MODEL(OCTEON_CN52XX))
+        num_ports = 2;
+    else
+        num_ports = 1;
+
+    for (port = 0; port < num_ports; port++) {
+        octeon_i2c_data[port].sys_freq = octeon_get_clock_rate();
+        /*FIXME: should be examined. At the moment is set for 100Khz */
+        octeon_i2c_data[port].i2c_freq = 100000;
+
+        pd = platform_device_alloc("i2c-octeon", port);
+        if (!pd) {
+            ret = -ENOMEM;
+            goto out;
+        }
+
+        pd->dev.platform_data = octeon_i2c_data + port;
+
+        i2c_resources[0].start =
+            OCTEON_I2C_IO_BASE + (port * OCTEON_I2C_IO_UNIT_OFFSET);
+        i2c_resources[0].end = i2c_resources[0].start + 0x20;

  Not 0x1F?


You are correct.  I will fix it.

David Daney

<Prev in Thread] Current Thread [Next in Thread>