[media] stb0899: use sign_extend32() for sign extension
authorMartin Kepplinger <martink@posteo.de>
Sun, 25 Jan 2015 14:51:35 +0000 (11:51 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Tue, 3 Feb 2015 20:16:18 +0000 (18:16 -0200)
Instead of implement its own logic, use the already-defined one.

Signed-off-by: Martin Kepplinger <martink@posteo.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/dvb-frontends/stb0899_algo.c

index 93596e0e640b2a084f65e591c7be6ab3c1107f81..3012f196e9bd91dd2fa60bdab2866cf784e441e7 100644 (file)
@@ -19,6 +19,7 @@
        Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
+#include <linux/bitops.h>
 #include "stb0899_drv.h"
 #include "stb0899_priv.h"
 #include "stb0899_reg.h"
@@ -1490,9 +1491,7 @@ enum stb0899_status stb0899_dvbs2_algo(struct stb0899_state *state)
                /* Store signal parameters      */
                offsetfreq = STB0899_READ_S2REG(STB0899_S2DEMOD, CRL_FREQ);
 
-               /* sign extend 30 bit value before using it in calculations */
-               if (offsetfreq & (1 << 29))
-                       offsetfreq |= -1 << 30;
+               offsetfreq = sign_extend32(offsetfreq, 29);
 
                offsetfreq = offsetfreq / ((1 << 30) / 1000);
                offsetfreq *= (internal->master_clk / 1000000);