提交 71e9f3cb 编写于 作者: T Troy Kisky 提交者: Heiko Schocher

mxc_i2c: place imx_start code inline

imx_start is only referenced once so
move to that location.
Signed-off-by: NTroy Kisky <troy.kisky@boundarydevices.com>
Acked-by: NMarek Vasut <marex@denx.de>
上级 d45e75b1
......@@ -200,37 +200,6 @@ static int tx_byte(struct mxc_i2c_regs *i2c_regs, u8 byte)
return 0;
}
/*
* Start the controller
*/
int i2c_imx_start(void)
{
struct mxc_i2c_regs *i2c_regs = (struct mxc_i2c_regs *)I2C_BASE;
unsigned int temp = 0;
int result;
/* Enable I2C controller */
writeb(0, &i2c_regs->i2sr);
writeb(I2CR_IEN, &i2c_regs->i2cr);
/* Wait controller to be stable */
udelay(50);
/* Start I2C transaction */
temp = readb(&i2c_regs->i2cr);
temp |= I2CR_MSTA;
writeb(temp, &i2c_regs->i2cr);
result = wait_for_sr_state(i2c_regs, ST_BUS_BUSY);
if (result < 0)
return result;
temp |= I2CR_MTX | I2CR_TX_NO_AK;
writeb(temp, &i2c_regs->i2cr);
return 0;
}
/*
* Stop the controller
*/
......@@ -259,10 +228,28 @@ void i2c_imx_stop(void)
static int i2c_init_transfer(struct mxc_i2c_regs *i2c_regs,
uchar chip, uint addr, int alen)
{
int ret = i2c_imx_start();
if (ret)
unsigned int temp;
int ret;
/* Enable I2C controller */
writeb(0, &i2c_regs->i2sr);
writeb(I2CR_IEN, &i2c_regs->i2cr);
/* Wait for controller to be stable */
udelay(50);
/* Start I2C transaction */
temp = readb(&i2c_regs->i2cr);
temp |= I2CR_MSTA;
writeb(temp, &i2c_regs->i2cr);
ret = wait_for_sr_state(i2c_regs, ST_BUS_BUSY);
if (ret < 0)
goto exit;
temp |= I2CR_MTX | I2CR_TX_NO_AK;
writeb(temp, &i2c_regs->i2cr);
/* write slave address */
ret = tx_byte(i2c_regs, chip << 1);
if (ret < 0)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册