viafb: fix i2c_transfer error handling
authorFlorian Tobias Schandinat <FlorianSchandinat@gmx.de>
Fri, 17 Sep 2010 01:16:25 +0000 (01:16 +0000)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 9 Dec 2010 21:32:15 +0000 (13:32 -0800)
commited2ee7b151daf20d04cc656069c7196f6163d0dd
tree76edf2f9cd08e73e8299c55528de130c6ae0bf3a
parent2b1d7cd41e0c1566242e5f578d5d6e4e44ecbcc8
viafb: fix i2c_transfer error handling

commit 85c5702ac046b14713f776d59768252d8ed8018f upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/video/via/via_i2c.c