hw/i2c/aspeed_i2c.c: Add a check for dma_read
If aspeed_i2c_dma_read fails in aspeed_i2c_bus_send currently, we get
stuck in an infinite retry loop. Add a check for the return value of
aspeed_i2c_dma_read that will break us out of said loop.
Signed-off-by: Nabih Estefan <nabihestefan@google.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Fixes: 545d6bef70 ("aspeed/i2c: Add support for DMA transfers")
Link: https://lore.kernel.org/qemu-devel/20260120211116.1367476-1-nabihestefan@google.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
(cherry picked from commit 0a1d4770670297a1da52118f84812e4a5ffc7722)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
This commit is contained in:
parent
d4c6c60993
commit
2f46d99451
1 changed files with 5 additions and 1 deletions
|
|
@ -272,7 +272,11 @@ static int aspeed_i2c_bus_send(AspeedI2CBus *bus)
|
|||
}
|
||||
while (bus->regs[reg_dma_len]) {
|
||||
uint8_t data;
|
||||
aspeed_i2c_dma_read(bus, &data);
|
||||
ret = aspeed_i2c_dma_read(bus, &data);
|
||||
/* Check that we were able to read the DMA */
|
||||
if (ret) {
|
||||
break;
|
||||
}
|
||||
trace_aspeed_i2c_bus_send("DMA", bus->regs[reg_dma_len],
|
||||
bus->regs[reg_dma_len], data);
|
||||
ret = i2c_send(bus->bus, data);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue