[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <57a4f5352ce6f03bde7aafe8b880f91b52994379.1380550490.git.michal.simek@xilinx.com>
Date: Mon, 30 Sep 2013 16:15:14 +0200
From: Michal Simek <michal.simek@...inx.com>
To: linux-kernel@...r.kernel.org, monstr@...str.eu, wsa@...-dreams.de
Cc: Kedareswara rao Appana <appana.durga.rao@...inx.com>,
Kedareswara rao Appana <appanad@...inx.com>,
Jean Delvare <khali@...ux-fr.org>,
Peter Korsgaard <jacmet@...site.dk>, linux-i2c@...r.kernel.org
Subject: [PATCH v2 2/3] i2c: xilinx: Set tx direction in write operation
From: Kedareswara rao Appana <appana.durga.rao@...inx.com>
The patch fixes the problem with i2c eeprom memories
where controller is not properly setup to transmit mode.
This problem is fixed in write operation, after filling
address byte to tx fifo, set the direction of transfer
to tx using control register.
Signed-off-by: Kedareswara rao Appana <appanad@...inx.com>
Signed-off-by: Michal Simek <michal.simek@...inx.com>
---
Changes in v2:
- Extend patch description as Wolfram asked for.
drivers/i2c/busses/i2c-xiic.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/i2c/busses/i2c-xiic.c b/drivers/i2c/busses/i2c-xiic.c
index 5eb0a8b..44e6ae7 100644
--- a/drivers/i2c/busses/i2c-xiic.c
+++ b/drivers/i2c/busses/i2c-xiic.c
@@ -536,6 +536,7 @@ static void xiic_start_recv(struct xiic_i2c *i2c)
static void xiic_start_send(struct xiic_i2c *i2c)
{
struct i2c_msg *msg = i2c->tx_msg;
+ u32 cr;
xiic_irq_clr(i2c, XIIC_INTR_TX_ERROR_MASK);
@@ -556,6 +557,10 @@ static void xiic_start_send(struct xiic_i2c *i2c)
xiic_setreg16(i2c, XIIC_DTR_REG_OFFSET, data);
}
+ cr = xiic_getreg32(i2c, XIIC_CR_REG_OFFSET);
+ cr |= XIIC_CR_DIR_IS_TX_MASK;
+ xiic_setreg32(i2c, XIIC_CR_REG_OFFSET, cr);
+
xiic_fill_tx_fifo(i2c);
/* Clear any pending Tx empty, Tx Error and then enable them. */
--
1.8.2.3
Content of type "application/pgp-signature" skipped
Powered by blists - more mailing lists