From 009eabdc487dd0e65aa617949ef54f6574f4f450 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Thu, 23 Apr 2026 16:15:47 +0100 Subject: [PATCH] HACK: Log the aborted message when I2C transfers fail Signed-off-by: Dave Stevenson --- drivers/i2c/busses/i2c-designware-master.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/i2c/busses/i2c-designware-master.c b/drivers/i2c/busses/i2c-designware-master.c index cb33468b2e3349..dc3c975358f60d 100644 --- a/drivers/i2c/busses/i2c-designware-master.c +++ b/drivers/i2c/busses/i2c-designware-master.c @@ -901,6 +901,9 @@ i2c_dw_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num) ret = i2c_dw_wait_transfer(dev); if (ret) { dev_err(dev->dev, "controller timed out\n"); + dev_err(dev->dev, "%s: message err %d msgs_num %u, addr %02x, flags %04x, len %u, first byte %02x\n", + __func__, ret, num, msgs[0].addr, msgs[0].flags, msgs[0].len, + (!msgs[0].flags & I2C_M_RD) && msgs[0].len >= 1 ? msgs[0].buf[0] : 0); /* i2c_dw_init_master() implicitly disables the adapter */ i2c_recover_bus(&dev->adapter); i2c_dw_init_master(dev); @@ -941,6 +944,9 @@ i2c_dw_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num) /* We have an error */ if (dev->cmd_err == DW_IC_ERR_TX_ABRT) { ret = i2c_dw_handle_tx_abort(dev); + dev_err(dev->dev, "%s: Aborted message err %d msgs_num %u, addr %02x, flags %04x, len %u, first byte %02x\n", + __func__, ret, num, msgs[0].addr, msgs[0].flags, msgs[0].len, + (!msgs[0].flags & I2C_M_RD) && msgs[0].len >= 1 ? msgs[0].buf[0] : 0); goto done; }