[PATCH] dvb: Fix LNB power switching
authorManu Abraham <manu@kromtek.com>
Sat, 28 May 2005 22:51:51 +0000 (15:51 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Sat, 28 May 2005 23:46:10 +0000 (16:46 -0700)
Signed-off-by: Manu Abraham <manu@kromtek.com>
Cc: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/media/dvb/bt8xx/dst.c

index e5e8c3e869c5b0f224474a39bc5284c71987b7f0..33cca69d67a72907d00787a83de75b4f2e39d50e 100644 (file)
@@ -906,10 +906,7 @@ static int dst_tone_power_cmd(struct dst_state* state)
        if (state->dst_type == DST_TYPE_IS_TERR)
                return 0;
 
-       if (state->voltage == SEC_VOLTAGE_OFF)
-               paket[4] = 0;
-       else
-               paket[4] = 1;
+       paket[4] = state->tx_tuna[4];
 
        if (state->tone == SEC_TONE_ON)
                paket[2] = 0x02;
@@ -1062,7 +1059,6 @@ static int dst_set_diseqc(struct dvb_frontend* fe, struct dvb_diseqc_master_cmd*
 
 static int dst_set_voltage(struct dvb_frontend* fe, fe_sec_voltage_t voltage)
 {
-       u8 *val;
        int need_cmd;
        struct dst_state* state = fe->demodulator_priv;
 
@@ -1072,29 +1068,23 @@ static int dst_set_voltage(struct dvb_frontend* fe, fe_sec_voltage_t voltage)
                return 0;
 
        need_cmd = 0;
-       val = &state->tx_tuna[0];
-       val[8] &= ~0x40;
        switch (voltage) {
-       case SEC_VOLTAGE_13:
-               if ((state->diseq_flags & HAS_POWER) == 0)
-                       need_cmd = 1;
-               state->diseq_flags |= HAS_POWER;
-               break;
+               case SEC_VOLTAGE_13:
+               case SEC_VOLTAGE_18:
+                       if ((state->diseq_flags & HAS_POWER) == 0)
+                               need_cmd = 1;
+                       state->diseq_flags |= HAS_POWER;
+                       state->tx_tuna[4] = 0x01;
+                       break;
 
-       case SEC_VOLTAGE_18:
-               if ((state->diseq_flags & HAS_POWER) == 0)
+               case SEC_VOLTAGE_OFF:
                        need_cmd = 1;
-               state->diseq_flags |= HAS_POWER;
-               val[8] |= 0x40;
-               break;
-
-       case SEC_VOLTAGE_OFF:
-               need_cmd = 1;
-               state->diseq_flags &= ~(HAS_POWER | HAS_LOCK | ATTEMPT_TUNE);
-               break;
+                       state->diseq_flags &= ~(HAS_POWER | HAS_LOCK | ATTEMPT_TUNE);
+                       state->tx_tuna[4] = 0x00;
+                       break;
 
-       default:
-               return -EINVAL;
+               default:
+                       return -EINVAL;
        }
        if (need_cmd)
                dst_tone_power_cmd(state);