Re: [MeeGo-Dev][PATCH v2] Topcliff: Update PCH_I2C driver to 2.6.35

2010-10-18 Thread Masayuki Ohtake
Hi I2C maintainer,

I posted the i2c patch 1 month ago.
But I haven't received any response from you.
Could you review this patch ?

Thanks, Ohtake(OKISemi)
- Original Message - 
From: Masayuki Ohtak masa-k...@dsn.okisemi.com
To: Jean Delvare (PC drivers, core) kh...@linux-fr.org; Ben Dooks 
(embedded platforms) ben-li...@fluff.org;
Crane Cai crane@amd.com; Samuel Ortiz sa...@linux.intel.com; Linus 
Walleij linus.wall...@stericsson.com;
Ralf Baechle r...@linux-mips.org; srinidhi kasagar 
srinidhi.kasa...@stericsson.com; linux-i2c@vger.kernel.org;
linux-ker...@vger.kernel.org; j...@perches.com; Linus Walleij 
linus.wall...@stericsson.com; Wolfram Sang
w.s...@pengutronix.de; Alan Cox a...@lxorguk.ukuu.org.uk
Cc: yong.y.w...@intel.com; qi.w...@intel.com; 
andrew.chih.howe.k...@intel.com; ar...@linux.intel.com; Tomoya
MORINAGA morinaga...@dsn.okisemi.com; Arnd Bergmann a...@arndb.de; 
Masayuki Ohtake masa-k...@dsn.okisemi.com
Sent: Thursday, September 16, 2010 5:33 PM
Subject: [MeeGo-Dev][PATCH v2] Topcliff: Update PCH_I2C driver to 2.6.35


 I2C driver of Topcliff PCH

 Topcliff PCH is the platform controller hub that is going to be used in
 Intel's upcoming general embedded platform. All IO peripherals in
 Topcliff PCH are actually devices sitting on AMBA bus.
 Topcliff PCH has I2C I/F. Using this I/F, it is able to access system
 devices connected to I2C.

 Signed-off-by: Masayuki Ohtake masa-k...@dsn.okisemi.com
 Reviewed-by: Linus Walleij linus.wall...@stericsson.com
 ---
  drivers/i2c/busses/Kconfig   |8 +
  drivers/i2c/busses/Makefile  |1 +
  drivers/i2c/busses/i2c-pch.c |  908 
 ++
  3 files changed, 917 insertions(+), 0 deletions(-)
  create mode 100644 drivers/i2c/busses/i2c-pch.c

 diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
 index bceafbf..b7b132d 100644
 --- a/drivers/i2c/busses/Kconfig
 +++ b/drivers/i2c/busses/Kconfig
 @@ -613,6 +613,14 @@ config I2C_XILINX
 This driver can also be built as a module.  If so, the module
 will be called xilinx_i2c.

 +config PCH_I2C
 + tristate PCH I2C of Intel Topcliff
 + depends on PCI
 + help
 +   This driver is for PCH(Platform controller Hub) I2C of Topcliff which
 +   is an IOH(Input/Output Hub) for x86 embedded processor.
 +   This driver can access PCH I2C bus device.
 +
  comment External I2C/SMBus adapter drivers

  config I2C_PARPORT
 diff --git a/drivers/i2c/busses/Makefile b/drivers/i2c/busses/Makefile
 index 936880b..aa04135 100644
 --- a/drivers/i2c/busses/Makefile
 +++ b/drivers/i2c/busses/Makefile
 @@ -59,6 +59,7 @@ obj-$(CONFIG_I2C_STU300) += i2c-stu300.o
  obj-$(CONFIG_I2C_VERSATILE) += i2c-versatile.o
  obj-$(CONFIG_I2C_OCTEON) += i2c-octeon.o
  obj-$(CONFIG_I2C_XILINX) += i2c-xiic.o
 +obj-$(CONFIG_PCH_I2C) += i2c-pch.o

  # External I2C/SMBus adapter drivers
  obj-$(CONFIG_I2C_PARPORT) += i2c-parport.o
 diff --git a/drivers/i2c/busses/i2c-pch.c b/drivers/i2c/busses/i2c-pch.c
 new file mode 100644
 index 000..37491d7
 --- /dev/null
 +++ b/drivers/i2c/busses/i2c-pch.c
 @@ -0,0 +1,908 @@
 +/*
 + * Copyright (C) 2010 OKI SEMICONDUCTOR Co., LTD.
 + *
 + * 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; version 2 of the License.
 + *
 + * This program is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU General Public License for more details.
 + *
 + * You should have received a copy of the GNU General Public License
 + * along with this program; if not, write to the Free Software
 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307, USA.
 + */
 +
 +#include linux/module.h
 +#include linux/kernel.h
 +#include linux/delay.h
 +#include linux/init.h
 +#include linux/errno.h
 +#include linux/i2c.h
 +#include linux/fs.h
 +#include linux/io.h
 +#include linux/types.h
 +#include linux/interrupt.h
 +#include linux/jiffies.h
 +#include linux/pci.h
 +#include linux/mutex.h
 +#include linux/ktime.h
 +
 +#define PCH_EVENT_SET 0 /* I2C Interrupt Event Set Status */
 +#define PCH_EVENT_NONE 1 /* I2C Interrupt Event Clear Status */
 +#define PCH_MAX_CLK 10 /* Maximum Clock speed in MHz */
 +#define PCH_BUFFER_MODE_ENABLE 0x0002 /* flag for Buffer mode enable */
 +#define PCH_EEPROM_SW_RST_MODE_ENABLE 0x0008 /* EEPROM SW RST enable flag */
 +
 +#define PCH_I2CSADR 0x00 /* I2C slave address register */
 +#define PCH_I2CCTL 0x04 /* I2C control register */
 +#define PCH_I2CSR 0x08 /* I2C status register */
 +#define PCH_I2CDR 0x0C /* I2C data register */
 +#define PCH_I2CMON 0x10 /* I2C bus monitor register */
 +#define PCH_I2CBC 0x14 /* I2C bus transfer rate setup counter */
 +#define PCH_I2CMOD 0x18 /* I2C mode register */
 +#define PCH_I2CBUFSLV 0x1C /* I2C buffer mode slave

[MeeGo-Dev][PATCH v2] Topcliff: Update PCH_I2C driver to 2.6.35

2010-09-16 Thread Masayuki Ohtak
I2C driver of Topcliff PCH

Topcliff PCH is the platform controller hub that is going to be used in
Intel's upcoming general embedded platform. All IO peripherals in
Topcliff PCH are actually devices sitting on AMBA bus. 
Topcliff PCH has I2C I/F. Using this I/F, it is able to access system
devices connected to I2C.

Signed-off-by: Masayuki Ohtake masa-k...@dsn.okisemi.com
Reviewed-by: Linus Walleij linus.wall...@stericsson.com
---
 drivers/i2c/busses/Kconfig   |8 +
 drivers/i2c/busses/Makefile  |1 +
 drivers/i2c/busses/i2c-pch.c |  908 ++
 3 files changed, 917 insertions(+), 0 deletions(-)
 create mode 100644 drivers/i2c/busses/i2c-pch.c

diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
index bceafbf..b7b132d 100644
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
@@ -613,6 +613,14 @@ config I2C_XILINX
  This driver can also be built as a module.  If so, the module
  will be called xilinx_i2c.
 
+config PCH_I2C
+   tristate PCH I2C of Intel Topcliff
+   depends on PCI
+   help
+ This driver is for PCH(Platform controller Hub) I2C of Topcliff which
+ is an IOH(Input/Output Hub) for x86 embedded processor.
+ This driver can access PCH I2C bus device.
+
 comment External I2C/SMBus adapter drivers
 
 config I2C_PARPORT
diff --git a/drivers/i2c/busses/Makefile b/drivers/i2c/busses/Makefile
index 936880b..aa04135 100644
--- a/drivers/i2c/busses/Makefile
+++ b/drivers/i2c/busses/Makefile
@@ -59,6 +59,7 @@ obj-$(CONFIG_I2C_STU300)  += i2c-stu300.o
 obj-$(CONFIG_I2C_VERSATILE)+= i2c-versatile.o
 obj-$(CONFIG_I2C_OCTEON)   += i2c-octeon.o
 obj-$(CONFIG_I2C_XILINX)   += i2c-xiic.o
+obj-$(CONFIG_PCH_I2C)  += i2c-pch.o
 
 # External I2C/SMBus adapter drivers
 obj-$(CONFIG_I2C_PARPORT)  += i2c-parport.o
diff --git a/drivers/i2c/busses/i2c-pch.c b/drivers/i2c/busses/i2c-pch.c
new file mode 100644
index 000..37491d7
--- /dev/null
+++ b/drivers/i2c/busses/i2c-pch.c
@@ -0,0 +1,908 @@
+/*
+ * Copyright (C) 2010 OKI SEMICONDUCTOR Co., LTD.
+ *
+ * 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; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+#include linux/module.h
+#include linux/kernel.h
+#include linux/delay.h
+#include linux/init.h
+#include linux/errno.h
+#include linux/i2c.h
+#include linux/fs.h
+#include linux/io.h
+#include linux/types.h
+#include linux/interrupt.h
+#include linux/jiffies.h
+#include linux/pci.h
+#include linux/mutex.h
+#include linux/ktime.h
+
+#define PCH_EVENT_SET  0   /* I2C Interrupt Event Set Status */
+#define PCH_EVENT_NONE 1   /* I2C Interrupt Event Clear Status */
+#define PCH_MAX_CLK10  /* Maximum Clock speed in MHz */
+#define PCH_BUFFER_MODE_ENABLE 0x0002  /* flag for Buffer mode enable */
+#define PCH_EEPROM_SW_RST_MODE_ENABLE  0x0008  /* EEPROM SW RST enable flag */
+
+#define PCH_I2CSADR0x00/* I2C slave address register */
+#define PCH_I2CCTL 0x04/* I2C control register */
+#define PCH_I2CSR  0x08/* I2C status register */
+#define PCH_I2CDR  0x0C/* I2C data register */
+#define PCH_I2CMON 0x10/* I2C bus monitor register */
+#define PCH_I2CBC  0x14/* I2C bus transfer rate setup counter */
+#define PCH_I2CMOD 0x18/* I2C mode register */
+#define PCH_I2CBUFSLV  0x1C/* I2C buffer mode slave address register */
+#define PCH_I2CBUFSUB  0x20/* I2C buffer mode subaddress register */
+#define PCH_I2CBUFFOR  0x24/* I2C buffer mode format register */
+#define PCH_I2CBUFCTL  0x28/* I2C buffer mode control register */
+#define PCH_I2CBUFMSK  0x2C/* I2C buffer mode interrupt mask register */
+#define PCH_I2CBUFSTA  0x30/* I2C buffer mode status register */
+#define PCH_I2CBUFLEV  0x34/* I2C buffer mode level register */
+#define PCH_I2CESRFOR  0x38/* EEPROM software reset mode format register */
+#define PCH_I2CESRCTL  0x3C/* EEPROM software reset mode ctrl register */
+#define PCH_I2CESRMSK  0x40/* EEPROM software reset mode */
+#define PCH_I2CESRSTA  0x44/* EEPROM software reset mode status register */
+#define PCH_I2CTMR 0x48/* I2C timer register */
+#define PCH_I2CSRST0xFC/* I2C reset register */
+#define PCH_I2CNF  0xF8/* I2C noise filter register */
+
+#define BUS_IDLE_TIMEOUT   20
+#define