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"
                /* 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);