staging: vt6656: Add formula to the vnt_rf_addpower function
authorOscar Carter <oscar.carter@gmx.com>
Sat, 25 Apr 2020 14:15:14 +0000 (16:15 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 28 Apr 2020 12:19:13 +0000 (14:19 +0200)
Use a formula to calculate the return value of the vnt_rf_addpower
function instead of the "if" statement with literal values for every
case.

Signed-off-by: Oscar Carter <oscar.carter@gmx.com>
Link: https://lore.kernel.org/r/20200425141514.5528-1-oscar.carter@gmx.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/vt6656/rf.c

index 06fa8867cfa3ca55b062f2b2699258357b224c15..05c9d06f84dde84fcd818762ce09b8a7960979ef 100644 (file)
@@ -538,26 +538,19 @@ int vnt_rf_write_embedded(struct vnt_private *priv, u32 data)
 
 static u8 vnt_rf_addpower(struct vnt_private *priv)
 {
+       int base;
        s32 rssi = -priv->current_rssi;
 
        if (!rssi)
                return 7;
 
-       if (priv->rf_type == RF_VT3226D0) {
-               if (rssi < -70)
-                       return 9;
-               else if (rssi < -65)
-                       return 7;
-               else if (rssi < -60)
-                       return 5;
-       } else {
-               if (rssi < -80)
-                       return 9;
-               else if (rssi < -75)
-                       return 7;
-               else if (rssi < -70)
-                       return 5;
-       }
+       if (priv->rf_type == RF_VT3226D0)
+               base = -60;
+       else
+               base = -70;
+
+       if (rssi < base)
+               return ((rssi - base + 1) / -5) * 2 + 5;
 
        return 0;
 }