[U-Boot] [PATCH 09/24] mxc_i2c: place imx_start code inline
Marek Vasut
marex at denx.de
Fri Jun 22 19:02:54 CEST 2012
Dear Troy Kisky,
> imx_start is only referenced once so
> move to that location.
>
> Signed-off-by: Troy Kisky <troy.kisky at boundarydevices.com>
Acked-by: Marek Vasut <marex at denx.de>
> ---
> drivers/i2c/mxc_i2c.c | 53
> +++++++++++++++++++------------------------------ 1 file changed, 20
> insertions(+), 33 deletions(-)
>
> diff --git a/drivers/i2c/mxc_i2c.c b/drivers/i2c/mxc_i2c.c
> index 9063d1e..ac91872 100644
> --- a/drivers/i2c/mxc_i2c.c
> +++ b/drivers/i2c/mxc_i2c.c
> @@ -199,37 +199,6 @@ static int tx_byte(struct mxc_i2c_regs *i2c_regs, u8
> byte) }
>
> /*
> - * 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
> */
> void i2c_imx_stop(void)
> @@ -255,10 +224,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)
Best regards,
Marek Vasut
More information about the U-Boot
mailing list