hw/p8-i2c: Rework timeout handling
hw/p8-i2c: Rework timeout handling

Currently we treat a timeout as a hard failure and will automatically
fail any transations that hit their timeout. This results in
unnecessarily failing I2C requests if interrupts are dropped, etc.
Although these are bad things that we should log we can handle them
better by checking the actual hardware status and completing the
transation if there are no real errors. This patch reworks the timeout
handling to check the status and continue the transaction if it can.
if it can while logging an error if it detects a timeout due to a
dropped interrupt.

Signed-off-by: Oliver O'Halloran <3dfaff8fa6ae977f042064a112a6aac576279b9b@gmail.com>
Signed-off-by: Stewart Smith <ec31ab75ddf977353c8f660f92ea8b23f64aef25@linux.vnet.ibm.com>

open-power/skiboot,stewart-ibm/skiboot,stewart-ibm/skiboot,open-power/skiboot,open-power/skiboot,qemu/skiboot,legoater/skiboot,open-power/skiboot,legoater/skiboot,shenki/skiboot,open-power/skiboot,legoater/skiboot,shenki/skiboot,shenki/skiboot,qemu/skiboot,shenki/skiboot,qemu/skiboot,shenki/skiboot,legoater/skiboot,legoater/skiboot,qemu/skiboot,stewart-ibm/skiboot,qemu/skiboot