i2c: Allow I2C devices to NAK start events
commitd307c28ca9dba7a0677035c9244198b05164c873
authorCorey Minyard <cminyard@mvista.com>
Mon, 9 Jan 2017 11:40:20 +0000 (9 11:40 +0000)
committerPeter Maydell <peter.maydell@linaro.org>
Mon, 9 Jan 2017 11:40:20 +0000 (9 11:40 +0000)
treeee942307fac668f7a2d531bf6b86e6db025cdfd0
parentffe22bf51065dd33022cf91f77a821d1f11c250d
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>
14 files changed:
hw/arm/pxa2xx.c
hw/arm/tosa.c
hw/arm/z2.c
hw/audio/wm8750.c
hw/display/ssd0303.c
hw/gpio/max7310.c
hw/i2c/core.c
hw/i2c/i2c-ddc.c
hw/i2c/smbus.c
hw/input/lm832x.c
hw/misc/tmp105.c
hw/timer/ds1338.c
hw/timer/twl92230.c
include/hw/i2c/i2c.h