diff options
| author | Juha Riihimäki <Juha.Riihimaki@nokia.com> | 2009-06-08 09:27:19 +0300 |
|---|---|---|
| committer | Aurelien Jarno <aurelien@aurel32.net> | 2009-12-02 17:26:19 +0100 |
| commit | b3a219883ebe21f55a8ee5e7e5b38b9eb309e9c0 (patch) | |
| tree | 56e6cc32df8b21b1d8e48a8b0fdeb354280a66bd /hw/i2c.c | |
| parent | 51954d565fc5566897f6a6d90feb62e4944cebc5 (diff) | |
| download | focaccia-qemu-b3a219883ebe21f55a8ee5e7e5b38b9eb309e9c0.tar.gz focaccia-qemu-b3a219883ebe21f55a8ee5e7e5b38b9eb309e9c0.zip | |
fix I2C slave addressing
With the recent device handling changes the I2C slave addressing code was broken. With current code, if a slave with the correct address is not found on the bus the last scanned slave on the bus will be addressed. This is wrong. Please find attached a patch to fix it. Signed-off-by: Juha Riihimäki <juha.riihimaki@nokia.com> Acked-by: Riku Voipio <riku.voipio@iki.fi> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Diffstat (limited to 'hw/i2c.c')
| -rw-r--r-- | hw/i2c.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/hw/i2c.c b/hw/i2c.c index 5c291ce0a9..bee8e88c6b 100644 --- a/hw/i2c.c +++ b/hw/i2c.c @@ -85,9 +85,11 @@ int i2c_start_transfer(i2c_bus *bus, uint8_t address, int recv) i2c_slave *slave = NULL; QLIST_FOREACH(qdev, &bus->qbus.children, sibling) { - slave = I2C_SLAVE_FROM_QDEV(qdev); - if (slave->address == address) + i2c_slave *candidate = I2C_SLAVE_FROM_QDEV(qdev); + if (candidate->address == address) { + slave = candidate; break; + } } if (!slave) |