viafb: fix i2c_transfer error handling
authorFlorian Tobias Schandinat <FlorianSchandinat@gmx.de>
Fri, 17 Sep 2010 01:16:25 +0000 (01:16 +0000)
committerFlorian Tobias Schandinat <FlorianSchandinat@gmx.de>
Fri, 24 Sep 2010 02:15:11 +0000 (02:15 +0000)
commit85c5702ac046b14713f776d59768252d8ed8018f
tree0ff48e27730361f9a6b87550766a31605e3cd5eb
parentdbc28098248197e6b58f33ca0685f694a8e03e60
viafb: fix i2c_transfer error handling

i2c_transfer returns negative errno on error and number of messages
processed on success. Just returning this value would give a poor
interface as it is not obvious that you must compare with 2 after reading
1 or n bytes and with 1 after writing 1 byte to determine if it was
successful. To avoid this error prone interface convert the error code
of a successful read/write to zero and all other non-negative values to
an negative error code.
This fixes a regression introduced by
via: Rationalize vt1636 detection
which resulted in no longer detecting a VT1636 chip and therefore has
broken the output in configurations which contain this chip.

Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
Acked-by: Jonathan Corbet <corbet@lwn.net>
Cc: Joseph Chan <JosephChan@via.com.tw>
Cc: stable@kernel.org
drivers/video/via/via_i2c.c