Re: [PATCH 2/3] i2c: uniphier_f: add UniPhier FIFO-builtin I2C driver

2015-10-23 Thread Masahiro Yamada
2015-10-23 6:06 GMT+09:00 Wolfram Sang :
> On Thu, Jul 30, 2015 at 05:12:21PM +0900, Masahiro Yamada wrote:
>> Add support for on-chip I2C controller used on newer UniPhier SoCs
>> such as PH1-Pro4, PH1-Pro5, etc.  This adapter is equipped with
>> 8-depth TX/RX FIFOs.
>>
>> Signed-off-by: Masahiro Yamada 
>
> Same comments as for the other driver.

Fixed in v2.

> And quite some debug messages left. Could you check if you still want
> them or if they were mostly useful during development of the driver?

Yes, I want to keep them.  I do not think they are too much.


I will probably come back to these drivers when I find some time
in order to implement further features such as the slave mode.   :)

dev_dbg() might be useful for the new development
as well as for checking something when hardware went wrong for some reason.


-- 
Best Regards
Masahiro Yamada
--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/3] i2c: uniphier_f: add UniPhier FIFO-builtin I2C driver

2015-10-22 Thread Wolfram Sang
On Thu, Jul 30, 2015 at 05:12:21PM +0900, Masahiro Yamada wrote:
> Add support for on-chip I2C controller used on newer UniPhier SoCs
> such as PH1-Pro4, PH1-Pro5, etc.  This adapter is equipped with
> 8-depth TX/RX FIFOs.
> 
> Signed-off-by: Masahiro Yamada 

Same comments as for the other driver.

And quite some debug messages left. Could you check if you still want
them or if they were mostly useful during development of the driver?

Thanks,

   Wolfram



signature.asc
Description: Digital signature


[PATCH 2/3] i2c: uniphier_f: add UniPhier FIFO-builtin I2C driver

2015-07-30 Thread Masahiro Yamada
Add support for on-chip I2C controller used on newer UniPhier SoCs
such as PH1-Pro4, PH1-Pro5, etc.  This adapter is equipped with
8-depth TX/RX FIFOs.

Signed-off-by: Masahiro Yamada yamada.masah...@socionext.com
---

 drivers/i2c/busses/Kconfig  |   8 +
 drivers/i2c/busses/Makefile |   1 +
 drivers/i2c/busses/i2c-uniphier-f.c | 589 
 3 files changed, 598 insertions(+)
 create mode 100644 drivers/i2c/busses/i2c-uniphier-f.c

diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
index 7073a19..5cf2fd5 100644
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
@@ -893,6 +893,14 @@ config I2C_UNIPHIER
  the UniPhier FIFO-less I2C interface embedded in PH1-LD4, PH1-sLD8,
  or older UniPhier SoCs.
 
+config I2C_UNIPHIER_F
+   tristate UniPhier FIFO-builtin I2C controller
+   depends on ARCH_UNIPHIER
+   help
+ If you say yes to this option, support will be included for
+ the UniPhier FIFO-builtin I2C interface embedded in PH1-Pro4,
+ PH1-Pro5, or newer UniPhier SoCs.
+
 config I2C_VERSATILE
tristate ARM Versatile/Realview I2C bus support
depends on ARCH_VERSATILE || ARCH_REALVIEW || ARCH_VEXPRESS
diff --git a/drivers/i2c/busses/Makefile b/drivers/i2c/busses/Makefile
index e89969c..6c5bab1 100644
--- a/drivers/i2c/busses/Makefile
+++ b/drivers/i2c/busses/Makefile
@@ -86,6 +86,7 @@ obj-$(CONFIG_I2C_STU300)  += i2c-stu300.o
 obj-$(CONFIG_I2C_SUN6I_P2WI)   += i2c-sun6i-p2wi.o
 obj-$(CONFIG_I2C_TEGRA)+= i2c-tegra.o
 obj-$(CONFIG_I2C_UNIPHIER) += i2c-uniphier.o
+obj-$(CONFIG_I2C_UNIPHIER_F)   += i2c-uniphier-f.o
 obj-$(CONFIG_I2C_VERSATILE)+= i2c-versatile.o
 obj-$(CONFIG_I2C_WMT)  += i2c-wmt.o
 obj-$(CONFIG_I2C_OCTEON)   += i2c-octeon.o
diff --git a/drivers/i2c/busses/i2c-uniphier-f.c 
b/drivers/i2c/busses/i2c-uniphier-f.c
new file mode 100644
index 000..dd7ea6b
--- /dev/null
+++ b/drivers/i2c/busses/i2c-uniphier-f.c
@@ -0,0 +1,589 @@
+/*
+ * Copyright (C) 2015 Masahiro Yamada yamada.masah...@socionext.com
+ *
+ * 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.
+ *
+ * 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.
+ */
+
+#include linux/clk.h
+#include linux/i2c.h
+#include linux/interrupt.h
+#include linux/io.h
+#include linux/module.h
+#include linux/platform_device.h
+
+#define UNIPHIER_FI2C_CR   0x00/* control register */
+#define UNIPHIER_FI2C_CR_MST   BIT(3)  /* master mode */
+#define UNIPHIER_FI2C_CR_STA   BIT(2)  /* start condition */
+#define UNIPHIER_FI2C_CR_STO   BIT(1)  /* stop condition */
+#define UNIPHIER_FI2C_CR_NACK  BIT(0)  /* do not return ACK */
+#define UNIPHIER_FI2C_DTTX 0x04/* TX FIFO */
+#define UNIPHIER_FI2C_DTTX_CMD BIT(8)  /* send command (slave addr) */
+#define UNIPHIER_FI2C_DTTX_RD  BIT(0)  /* read transaction */
+#define UNIPHIER_FI2C_DTRX 0x04/* RX FIFO */
+#define UNIPHIER_FI2C_SLAD 0x0c/* slave address */
+#define UNIPHIER_FI2C_CYC  0x10/* clock cycle control */
+#define UNIPHIER_FI2C_LCTL 0x14/* clock low period control */
+#define UNIPHIER_FI2C_SSUT 0x18/* restart/stop setup time control */
+#define UNIPHIER_FI2C_DSUT 0x1c/* data setup time control */
+#define UNIPHIER_FI2C_INT  0x20/* interrupt status */
+#define UNIPHIER_FI2C_IE   0x24/* interrupt enable */
+#define UNIPHIER_FI2C_IC   0x28/* interrupt clear */
+#define UNIPHIER_FI2C_INT_TE   BIT(9)  /* TX FIFO empty */
+#define UNIPHIER_FI2C_INT_RF   BIT(8)  /* RX FIFO full */
+#define UNIPHIER_FI2C_INT_TC   BIT(7)  /* send complete (STOP) */
+#define UNIPHIER_FI2C_INT_RC   BIT(6)  /* receive complete (STOP) */
+#define UNIPHIER_FI2C_INT_TB   BIT(5)  /* sent specified bytes */
+#define UNIPHIER_FI2C_INT_RB   BIT(4)  /* received specified bytes */
+#define UNIPHIER_FI2C_INT_NA   BIT(2)  /* no ACK */
+#define UNIPHIER_FI2C_INT_AL   BIT(1)  /* arbitration lost */
+#define UNIPHIER_FI2C_SR   0x2c/* status register */
+#define UNIPHIER_FI2C_SR_DBBIT(12) /* device busy */
+#define UNIPHIER_FI2C_SR_STS   BIT(11) /* stop condition detected */
+#define UNIPHIER_FI2C_SR_BBBIT(8)  /* bus busy */
+#define UNIPHIER_FI2C_SR_RFF   BIT(3)  /* RX FIFO full */
+#define UNIPHIER_FI2C_SR_RNE   BIT(2)  /* RX FIFO not empty */
+#define UNIPHIER_FI2C_SR_TNF   BIT(1)  /* TX FIFO not full