diff options
author | Corey Minyard | 2017-01-09 12:40:20 +0100 |
---|---|---|
committer | Peter Maydell | 2017-01-09 12:40:20 +0100 |
commit | d307c28ca9dba7a0677035c9244198b05164c873 (patch) | |
tree | ee942307fac668f7a2d531bf6b86e6db025cdfd0 /hw/input/lm832x.c | |
parent | Merge remote-tracking branch 'remotes/gonglei/tags/cryptodev-next-20161224' i... (diff) | |
download | qemu-d307c28ca9dba7a0677035c9244198b05164c873.tar.gz qemu-d307c28ca9dba7a0677035c9244198b05164c873.tar.xz qemu-d307c28ca9dba7a0677035c9244198b05164c873.zip |
i2c: Allow I2C devices to NAK start events
Add a return value to the event handler. Some I2C devices will
NAK if they have no data, so allow them to do this. This required
the following changes:
Go through all the event handlers and change them to return int
and return 0.
Modify i2c_start_transfer to terminate the transaction on a NAK.
Modify smbus handing to not assert if a NAK occurs on a second
operation, and terminate the transaction and return -1 instead.
Add some information on semantics to I2CSlaveClass.
Signed-off-by: Corey Minyard <cminyard@mvista.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/input/lm832x.c')
-rw-r--r-- | hw/input/lm832x.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/hw/input/lm832x.c b/hw/input/lm832x.c index 539682cac8..2340523da0 100644 --- a/hw/input/lm832x.c +++ b/hw/input/lm832x.c @@ -383,7 +383,7 @@ static void lm_kbd_write(LM823KbdState *s, int reg, int byte, uint8_t value) } } -static void lm_i2c_event(I2CSlave *i2c, enum i2c_event event) +static int lm_i2c_event(I2CSlave *i2c, enum i2c_event event) { LM823KbdState *s = LM8323(i2c); @@ -397,6 +397,8 @@ static void lm_i2c_event(I2CSlave *i2c, enum i2c_event event) default: break; } + + return 0; } static int lm_i2c_rx(I2CSlave *i2c) |