Skip to content
Snippets Groups Projects
Commit 27a5da02 authored by Troy Kisky's avatar Troy Kisky Committed by Heiko Schocher
Browse files

mxc_i2c: add i2c_regs argument to i2c_imx_stop


This is prep work for CONFIG_I2C_MULTI_BUS.

Signed-off-by: default avatarTroy Kisky <troy.kisky@boundarydevices.com>
Acked-by: default avatarMarek Vasut <marex@denx.de>
parent a7f1a005
No related branches found
No related tags found
No related merge requests found
...@@ -201,10 +201,9 @@ static int tx_byte(struct mxc_i2c_regs *i2c_regs, u8 byte) ...@@ -201,10 +201,9 @@ static int tx_byte(struct mxc_i2c_regs *i2c_regs, u8 byte)
/* /*
* Stop I2C transaction * Stop I2C transaction
*/ */
void i2c_imx_stop(void) static void i2c_imx_stop(struct mxc_i2c_regs *i2c_regs)
{ {
int ret; int ret;
struct mxc_i2c_regs *i2c_regs = (struct mxc_i2c_regs *)I2C_BASE;
unsigned int temp = readb(&i2c_regs->i2cr); unsigned int temp = readb(&i2c_regs->i2cr);
temp &= ~(I2CR_MSTA | I2CR_MTX); temp &= ~(I2CR_MSTA | I2CR_MTX);
...@@ -271,7 +270,7 @@ static int i2c_init_transfer(struct mxc_i2c_regs *i2c_regs, ...@@ -271,7 +270,7 @@ static int i2c_init_transfer(struct mxc_i2c_regs *i2c_regs,
ret = i2c_init_transfer_(i2c_regs, chip, addr, alen); ret = i2c_init_transfer_(i2c_regs, chip, addr, alen);
if (ret >= 0) if (ret >= 0)
return 0; return 0;
i2c_imx_stop(); i2c_imx_stop(i2c_regs);
if (ret == -ENODEV) if (ret == -ENODEV)
return ret; return ret;
...@@ -305,7 +304,7 @@ int i2c_read(uchar chip, uint addr, int alen, uchar *buf, int len) ...@@ -305,7 +304,7 @@ int i2c_read(uchar chip, uint addr, int alen, uchar *buf, int len)
ret = tx_byte(i2c_regs, (chip << 1) | 1); ret = tx_byte(i2c_regs, (chip << 1) | 1);
if (ret < 0) { if (ret < 0) {
i2c_imx_stop(); i2c_imx_stop(i2c_regs);
return ret; return ret;
} }
...@@ -322,7 +321,7 @@ int i2c_read(uchar chip, uint addr, int alen, uchar *buf, int len) ...@@ -322,7 +321,7 @@ int i2c_read(uchar chip, uint addr, int alen, uchar *buf, int len)
for (i = 0; i < len; i++) { for (i = 0; i < len; i++) {
ret = wait_for_sr_state(i2c_regs, ST_IIF); ret = wait_for_sr_state(i2c_regs, ST_IIF);
if (ret < 0) { if (ret < 0) {
i2c_imx_stop(); i2c_imx_stop(i2c_regs);
return ret; return ret;
} }
...@@ -331,7 +330,7 @@ int i2c_read(uchar chip, uint addr, int alen, uchar *buf, int len) ...@@ -331,7 +330,7 @@ int i2c_read(uchar chip, uint addr, int alen, uchar *buf, int len)
* controller from generating another clock cycle * controller from generating another clock cycle
*/ */
if (i == (len - 1)) { if (i == (len - 1)) {
i2c_imx_stop(); i2c_imx_stop(i2c_regs);
} else if (i == (len - 2)) { } else if (i == (len - 2)) {
temp = readb(&i2c_regs->i2cr); temp = readb(&i2c_regs->i2cr);
temp |= I2CR_TX_NO_AK; temp |= I2CR_TX_NO_AK;
...@@ -340,9 +339,7 @@ int i2c_read(uchar chip, uint addr, int alen, uchar *buf, int len) ...@@ -340,9 +339,7 @@ int i2c_read(uchar chip, uint addr, int alen, uchar *buf, int len)
writeb(0, &i2c_regs->i2sr); writeb(0, &i2c_regs->i2sr);
buf[i] = readb(&i2c_regs->i2dr); buf[i] = readb(&i2c_regs->i2dr);
} }
i2c_imx_stop(i2c_regs);
i2c_imx_stop();
return 0; return 0;
} }
...@@ -364,9 +361,7 @@ int i2c_write(uchar chip, uint addr, int alen, uchar *buf, int len) ...@@ -364,9 +361,7 @@ int i2c_write(uchar chip, uint addr, int alen, uchar *buf, int len)
if (ret < 0) if (ret < 0)
break; break;
} }
i2c_imx_stop(i2c_regs);
i2c_imx_stop();
return ret; return ret;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment