]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
staging: iio: ad2s1200: Fix sign extension
authorRasmus Villemoes <linux@rasmusvillemoes.dk>
Thu, 22 Jan 2015 23:09:56 +0000 (00:09 +0100)
committerJonathan Cameron <jic23@kernel.org>
Mon, 26 Jan 2015 21:04:27 +0000 (21:04 +0000)
commitf7067a5ad717d4dbb4faa3ec56744152f6ba97ad
treef1d5da341b0f9d7d8b7a26b1ba0fafd913bb2a13
parent89bb35e200bee745c539a96666e0792301ca40f1
staging: iio: ad2s1200: Fix sign extension

The line above makes vel a 12-bit quantity (st->rx[] is u8). The
intention is to sign-extend vel using bit 11 as the sign bit. But
because of C's promotion rules "vel = (vel << 4) >> 4;" is actually a
no-op, since vel is promoted to int before the inner
shift. sign_extend32 works equally well for 8 and 16 bits types, so
use that.

Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Acked-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/staging/iio/resolver/ad2s1200.c