Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a0832798c05241f15e793805b6024919c07b8292
Commit:     a0832798c05241f15e793805b6024919c07b8292
Parent:     60ce1c20068ec2c138cdf9e5cbe583cc60883c62
Author:     Tzachi Perelstein <[EMAIL PROTECTED]>
AuthorDate: Mon Nov 12 19:38:51 2007 +0200
Committer:  Russell King <[EMAIL PROTECTED]>
CommitDate: Sat Jan 26 15:03:59 2008 +0000

    [I2C] Split mv643xx I2C platform support
    
    The motivation for this change is to allow other chips, like the
    Marvell Orion ARM SoC family, to use the existing i2c-mv64xxx driver.
    
    Signed-off-by: Tzachi Perelstein <[EMAIL PROTECTED]>
    Acked-by: Nicolas Pitre <[EMAIL PROTECTED]>
    Acked-by: Dale Farnsworth <[EMAIL PROTECTED]>
    Acked-by: Mark A. Greer <[EMAIL PROTECTED]>
    Acked-by: Jean Delvare <[EMAIL PROTECTED]>
---
 drivers/i2c/busses/Kconfig       |    2 +-
 drivers/i2c/busses/i2c-mv64xxx.c |   31 +++++++++++++++++--------------
 include/linux/mv643xx.h          |   10 +---------
 include/linux/mv643xx_i2c.h      |   23 +++++++++++++++++++++++
 4 files changed, 42 insertions(+), 24 deletions(-)

diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
index c466c6c..b148bf0 100644
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
@@ -648,7 +648,7 @@ config I2C_PCA_ISA
 
 config I2C_MV64XXX
        tristate "Marvell mv64xxx I2C Controller"
-       depends on MV64X60 && EXPERIMENTAL
+       depends on (MV64X60 || ARCH_ORION) && EXPERIMENTAL
        help
          If you say yes to this option, support will be included for the
          built-in I2C interface on the Marvell 64xxx line of host bridges.
diff --git a/drivers/i2c/busses/i2c-mv64xxx.c b/drivers/i2c/busses/i2c-mv64xxx.c
index bb7bf68..cdd1ef9 100644
--- a/drivers/i2c/busses/i2c-mv64xxx.c
+++ b/drivers/i2c/busses/i2c-mv64xxx.c
@@ -1,6 +1,6 @@
 /*
- * Driver for the i2c controller on the Marvell line of host bridges for MIPS
- * and PPC (e.g, gt642[46]0, mv643[46]0, mv644[46]0).
+ * Driver for the i2c controller on the Marvell line of host bridges
+ * (e.g, gt642[46]0, mv643[46]0, mv644[46]0, and Orion SoC family).
  *
  * Author: Mark A. Greer <[EMAIL PROTECTED]>
  *
@@ -14,7 +14,7 @@
 #include <linux/spinlock.h>
 #include <linux/i2c.h>
 #include <linux/interrupt.h>
-#include <linux/mv643xx.h>
+#include <linux/mv643xx_i2c.h>
 #include <linux/platform_device.h>
 
 #include <asm/io.h>
@@ -86,6 +86,7 @@ struct mv64xxx_i2c_data {
        u32                     cntl_bits;
        void __iomem            *reg_base;
        u32                     reg_base_p;
+       u32                     reg_size;
        u32                     addr1;
        u32                     addr2;
        u32                     bytes_left;
@@ -463,17 +464,20 @@ static int __devinit
 mv64xxx_i2c_map_regs(struct platform_device *pd,
        struct mv64xxx_i2c_data *drv_data)
 {
-       struct resource *r;
+       int size;
+       struct resource *r = platform_get_resource(pd, IORESOURCE_MEM, 0);
 
-       if ((r = platform_get_resource(pd, IORESOURCE_MEM, 0)) &&
-               request_mem_region(r->start, MV64XXX_I2C_REG_BLOCK_SIZE,
-                       drv_data->adapter.name)) {
+       if (!r)
+               return -ENODEV;
 
-               drv_data->reg_base = ioremap(r->start,
-                       MV64XXX_I2C_REG_BLOCK_SIZE);
-               drv_data->reg_base_p = r->start;
-       } else
-               return -ENOMEM;
+       size = r->end - r->start + 1;
+
+       if (!request_mem_region(r->start, size, drv_data->adapter.name))
+               return -EBUSY;
+
+       drv_data->reg_base = ioremap(r->start, size);
+       drv_data->reg_base_p = r->start;
+       drv_data->reg_size = size;
 
        return 0;
 }
@@ -483,8 +487,7 @@ mv64xxx_i2c_unmap_regs(struct mv64xxx_i2c_data *drv_data)
 {
        if (drv_data->reg_base) {
                iounmap(drv_data->reg_base);
-               release_mem_region(drv_data->reg_base_p,
-                       MV64XXX_I2C_REG_BLOCK_SIZE);
+               release_mem_region(drv_data->reg_base_p, drv_data->reg_size);
        }
 
        drv_data->reg_base = NULL;
diff --git a/include/linux/mv643xx.h b/include/linux/mv643xx.h
index d2ae618..69327b7 100644
--- a/include/linux/mv643xx.h
+++ b/include/linux/mv643xx.h
@@ -15,6 +15,7 @@
 
 #include <asm/types.h>
 #include <linux/mv643xx_eth.h>
+#include <linux/mv643xx_i2c.h>
 
 /****************************************/
 /* Processor Address Space              */
@@ -863,7 +864,6 @@
 /* I2C Registers                        */
 /****************************************/
 
-#define MV64XXX_I2C_CTLR_NAME                                  "mv64xxx_i2c"
 #define MV64XXX_I2C_OFFSET                                          0xc000
 #define MV64XXX_I2C_REG_BLOCK_SIZE                                  0x0020
 
@@ -968,14 +968,6 @@ struct mpsc_pdata {
        u32     brg_clk_freq;
 };
 
-/* i2c Platform Device, Driver Data */
-struct mv64xxx_i2c_pdata {
-       u32     freq_m;
-       u32     freq_n;
-       u32     timeout;        /* In milliseconds */
-       u32     retries;
-};
-
 /* Watchdog Platform Device, Driver Data */
 #define        MV64x60_WDT_NAME                        "mv64x60_wdt"
 
diff --git a/include/linux/mv643xx_i2c.h b/include/linux/mv643xx_i2c.h
new file mode 100644
index 0000000..adb629b
--- /dev/null
+++ b/include/linux/mv643xx_i2c.h
@@ -0,0 +1,23 @@
+/*
+ * This program is free software; you can redistribute  it and/or modify it
+ * under  the terms of  the GNU General  Public License as published by the
+ * Free Software Foundation;  either version 2 of the  License, or (at your
+ * option) any later version.
+ */
+
+#ifndef _MV64XXX_I2C_H_
+#define _MV64XXX_I2C_H_
+
+#include <linux/types.h>
+
+#define MV64XXX_I2C_CTLR_NAME  "mv64xxx_i2c"
+
+/* i2c Platform Device, Driver Data */
+struct mv64xxx_i2c_pdata {
+       u32     freq_m;
+       u32     freq_n;
+       u32     timeout;        /* In milliseconds */
+       u32     retries;
+};
+
+#endif /*_MV64XXX_I2C_H_*/
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to