[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20130625163902.GA2973@katana>
Date: Tue, 25 Jun 2013 18:39:02 +0200
From: Wolfram Sang <wsa@...-dreams.de>
To: Christian Ruppert <christian.ruppert@...lis.com>
Cc: Rob Herring <robherring2@...il.com>,
Mika Westerberg <mika.westerberg@...ux.intel.com>,
linux-i2c@...r.kernel.org,
"Ben Dooks (embedded platforms)" <ben-linux@...ff.org>,
Grant Likely <grant.likely@...retlab.ca>,
Rob Landley <rob@...dley.net>,
devicetree-discuss@...ts.ozlabs.org, linux-doc@...r.kernel.org,
linux-kernel@...r.kernel.org,
Vineet Gupta <Vineet.Gupta1@...opsys.com>,
Pierrick Hascoet <pierrick.hascoet@...lis.com>
Subject: Re: [PATCH v9] i2c-designware: make SDA hold time configurable
Hi,
On Fri, Jun 21, 2013 at 11:53:42AM +0200, Christian Ruppert wrote:
> This patch makes the SDA hold time configurable through device tree.
>
> Signed-off-by: Christian Ruppert <christian.ruppert@...lis.com>
> Signed-off-by: Pierrick Hascoet <pierrick.hascoet@...lis.com>
> ---
> .../devicetree/bindings/i2c/i2c-designware.txt | 14 ++++++++++++++
> arch/arc/boot/dts/abilis_tb100_dvk.dts | 10 +++++-----
> arch/arc/boot/dts/abilis_tb101_dvk.dts | 10 +++++-----
Vineet, an ack for those would be nice since I think it is better if I
take all this via I2C.
> drivers/i2c/busses/i2c-designware-core.c | 13 +++++++++++++
> drivers/i2c/busses/i2c-designware-core.h | 1 +
> drivers/i2c/busses/i2c-designware-platdrv.c | 10 ++++++++++
> 6 files changed, 48 insertions(+), 10 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/i2c/i2c-designware.txt b/Documentation/devicetree/bindings/i2c/i2c-designware.txt
> index e42a2ee..3266cc7 100644
> --- a/Documentation/devicetree/bindings/i2c/i2c-designware.txt
> +++ b/Documentation/devicetree/bindings/i2c/i2c-designware.txt
> @@ -10,6 +10,9 @@ Recommended properties :
>
> - clock-frequency : desired I2C bus clock frequency in Hz.
>
> +Optional properties :
> + - i2c-sda-hold-time-ns : should contain the SDA hold time in nanoseconds.
Not on all versions, should be mentioned here.
> +
> Example :
>
> i2c@...00 {
> @@ -20,3 +23,14 @@ Example :
> interrupts = <11>;
> clock-frequency = <400000>;
> };
> +
> + i2c@...0000 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + compatible = "snps,designware-i2c";
> + reg = <0x1120000 0x1000>;
> + interrupt-parent = <&ictl>;
> + interrupts = <12 1>;
> + clock-frequency = <400000>;
> + i2c-sda-hold-time-ns = <300>;
> + };
> diff --git a/drivers/i2c/busses/i2c-designware-core.c b/drivers/i2c/busses/i2c-designware-core.c
> index c41ca63..66119e2 100644
> --- a/drivers/i2c/busses/i2c-designware-core.c
> +++ b/drivers/i2c/busses/i2c-designware-core.c
> @@ -67,9 +67,12 @@
> #define DW_IC_STATUS 0x70
> #define DW_IC_TXFLR 0x74
> #define DW_IC_RXFLR 0x78
> +#define DW_IC_SDA_HOLD 0x7c
> #define DW_IC_TX_ABRT_SOURCE 0x80
> #define DW_IC_ENABLE_STATUS 0x9c
> #define DW_IC_COMP_PARAM_1 0xf4
> +#define DW_IC_COMP_VERSION 0xf8
> +#define DW_IC_SDA_HOLD_MIN_VERS 0x3131312A
> #define DW_IC_COMP_TYPE 0xfc
> #define DW_IC_COMP_TYPE_VALUE 0x44570140
>
> @@ -332,6 +335,16 @@ int i2c_dw_init(struct dw_i2c_dev *dev)
> dw_writel(dev, lcnt, DW_IC_FS_SCL_LCNT);
> dev_dbg(dev->dev, "Fast-mode HCNT:LCNT = %d:%d\n", hcnt, lcnt);
>
> + /* Configure SDA Hold Time if required */
> + reg = dw_readl(dev, DW_IC_COMP_VERSION);
Why not reading reg inside the if-block?
Thanks,
Wolfram
Download attachment "signature.asc" of type "application/pgp-signature" (837 bytes)
Powered by blists - more mailing lists