diff options
author | Tom Rini <trini@konsulko.com> | 2023-04-11 09:29:28 -0400 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2023-04-11 09:29:28 -0400 |
commit | 9e804638bfe2693a908abf066ff66c251572afa7 (patch) | |
tree | 20a1953649fdcc25acd2eb5bbb2aecf263d7d025 /drivers/i2c/fsl_i2c.c | |
parent | 11c25c6df0b56ee7eee2c4ddc7f075880daeb8c7 (diff) | |
parent | 5cf008637221ad3b4d4ecdc2befca19b2bdab53d (diff) |
Merge tag 'for-v2023-07-rc1' of https://source.denx.de/u-boot/custodians/u-boot-i2c
i2c updates for v2023-07-rc1
- designware_i2c: remove apparently redundant read of 'i2c, speeds' DT property
from Rasmus Villemoes
- fix: correct I2C deblock logic from Haibo Chen
- imx_lpi2c: Fix misuse the IS_ENABLED for DM clock from Ye Li
- m68k: convert to DM from Angelo Dureghello
Diffstat (limited to 'drivers/i2c/fsl_i2c.c')
-rw-r--r-- | drivers/i2c/fsl_i2c.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/i2c/fsl_i2c.c b/drivers/i2c/fsl_i2c.c index d312f35f044..d9d8ee81d2e 100644 --- a/drivers/i2c/fsl_i2c.c +++ b/drivers/i2c/fsl_i2c.c @@ -278,7 +278,8 @@ static void __i2c_init(const struct fsl_i2c_base *base, int speed, int set_i2c_bus_speed(base, i2c_clk, speed); writeb(slaveadd << 1, &base->adr);/* write slave address */ writeb(0x0, &base->sr); /* clear status register */ - writeb(I2C_CR_MEN, &base->cr); /* start I2C controller */ + /* start I2C controller */ + writeb(I2C_CR_MEN | I2C_CR_MIEN, &base->cr); timeval = get_ticks(); while (readb(&base->sr) & I2C_SR_MBB) { @@ -346,7 +347,7 @@ static int i2c_wait(const struct fsl_i2c_base *base, int write) static int i2c_write_addr(const struct fsl_i2c_base *base, u8 dev, u8 dir, int rsta) { - writeb(I2C_CR_MEN | I2C_CR_MSTA | I2C_CR_MTX + writeb(I2C_CR_MEN | I2C_CR_MIEN | I2C_CR_MSTA | I2C_CR_MTX | (rsta ? I2C_CR_RSTA : 0), &base->cr); @@ -378,7 +379,8 @@ static int __i2c_read_data(const struct fsl_i2c_base *base, u8 *data, { int i; - writeb(I2C_CR_MEN | I2C_CR_MSTA | ((length == 1) ? I2C_CR_TXAK : 0), + writeb(I2C_CR_MEN | I2C_CR_MIEN | + I2C_CR_MSTA | ((length == 1) ? I2C_CR_TXAK : 0), &base->cr); /* dummy read */ @@ -390,13 +392,13 @@ static int __i2c_read_data(const struct fsl_i2c_base *base, u8 *data, /* Generate ack on last next to last byte */ if (i == length - 2) - writeb(I2C_CR_MEN | I2C_CR_MSTA | I2C_CR_TXAK, - &base->cr); + writeb(I2C_CR_MEN | I2C_CR_MIEN | I2C_CR_MSTA | + I2C_CR_TXAK, &base->cr); /* Do not generate stop on last byte */ if (i == length - 1) - writeb(I2C_CR_MEN | I2C_CR_MSTA | I2C_CR_MTX, - &base->cr); + writeb(I2C_CR_MEN | I2C_CR_MIEN | I2C_CR_MSTA | + I2C_CR_MTX, &base->cr); data[i] = readb(&base->dr); } |