struct stb0899_state *state = fe->demodulator_priv;
        struct stb0899_internal *internal = &state->internal;
 
-       u8 div;
+       u8 div, reg;
 
        /* wait for diseqc idle */
        if (stb0899_wait_diseqc_txidle(state, 100) < 0)
                div = (internal->master_clk / 100) / 5632;
                div = (div + 5) / 10;
                stb0899_write_reg(state, STB0899_DISEQCOCFG, 0x66);
-               stb0899_write_reg(state, STB0899_ACRPRESC, 0x31);
+               reg = stb0899_read_reg(state, STB0899_ACRPRESC);
+               STB0899_SETFIELD_VAL(ACRPRESC, reg, 0x03);
+               stb0899_write_reg(state, STB0899_ACRPRESC, reg);
                stb0899_write_reg(state, STB0899_ACRDIV1, div);
                break;
        case SEC_TONE_OFF:
 
 /*     General Purpose */
 #define STB0899_SYSREG                         0xf101
 #define STB0899_ACRPRESC                       0xf110
+#define STB0899_OFFST_RSVD2                    7
+#define STB0899_WIDTH_RSVD2                    1
+#define STB0899_OFFST_ACRPRESC                 4
+#define STB0899_WIDTH_ACRPRESC                 3
+#define STB0899_OFFST_RSVD1                    3
+#define STB0899_WIDTH_RSVD1                    1
+#define STB0899_OFFST_ACRPRESC2                        0
+#define STB0899_WIDTH_ACRPRESC2                        3
+
 #define STB0899_ACRDIV1                                0xf111
 #define STB0899_ACRDIV2                                0xf112
 #define STB0899_DACR1                          0xf113