diff options
author | Tom Rini <trini@konsulko.com> | 2025-10-06 13:20:24 -0600 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2025-10-06 13:20:24 -0600 |
commit | 0eaa4b337336dbbe93395d1f2ccc18937eaafea2 (patch) | |
tree | c01e661d69181dceca68f56a4849a9bd04608521 /drivers/i2c/npcm_i2c.c | |
parent | e50b1e8715011def8aff1588081a2649a2c6cd47 (diff) | |
parent | 4e4a9de31de2a5f395ee25c59e4026422fbcb27e (diff) |
Merge branch 'next'
Merge the outstanding changes from the 'next' branch to master.
Diffstat (limited to 'drivers/i2c/npcm_i2c.c')
-rw-r--r-- | drivers/i2c/npcm_i2c.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/i2c/npcm_i2c.c b/drivers/i2c/npcm_i2c.c index c64752e1467..bff0d04f1a5 100644 --- a/drivers/i2c/npcm_i2c.c +++ b/drivers/i2c/npcm_i2c.c @@ -34,6 +34,7 @@ #define SMBCTL3_SDA_LVL BIT(6) /* SMBCST */ +#define SMBCST_BUSY BIT(0) #define SMBCST_BB BIT(1) #define SMBCST_TGSCL BIT(5) @@ -479,11 +480,17 @@ static int npcm_i2c_xfer(struct udevice *dev, struct npcm_i2c_bus *bus = dev_get_priv(dev); struct npcm_i2c_regs *reg = bus->reg; int ret = 0, err = 0; + u8 val; if (nmsgs < 1 || nmsgs > 2) { printf("%s: commands not support\n", __func__); return -EREMOTEIO; } + + /* Wait for module out of busy */ + if (readb_poll_timeout(®->cst, val, !(val & SMBCST_BUSY), 1000)) + return -EBUSY; + /* clear ST register */ writeb(0xFF, ®->st); |