misc:cap-prox:remove force-detect after fail-safe check
authormakarand.karvekar <makarand.karvekar@motorola.com>
Thu, 21 Apr 2011 19:27:07 +0000 (14:27 -0500)
committerRebecca Schultz Zavin <rebecca@android.com>
Fri, 22 Apr 2011 22:04:55 +0000 (15:04 -0700)
Change-Id: Ib6410b0909bf9622750d38e7eeed4ecd42f0501f
Signed-off-by: makarand.karvekar <makarand.karvekar@motorola.com>
drivers/misc/cap_prox.c

index c0db5dfd7e5e9f0df8e228739ea7699f74689985..5fdb6324d0e977c538d9a10fbb01854240555daa 100755 (executable)
@@ -223,25 +223,24 @@ static int cap_prox_read_data(struct cap_prox_data *cp)
                        cap_prox_calibrate(cp);
                break;
        case CP_STATUS_KEY1_KEY3_EN_FORCE_DETECT:
-               if ((save_drift_diff < cp->pdata->save_drift_diff_thres) &&
-                        (key1_save_drift < cp->pdata->key1_save_drift_thres) &&
-                        (key3_save_drift < cp->pdata->key3_save_drift_thres)) {
-
-                       /* Key1 sensor has failed, keep in force detect */
-                       if ((key1_key2_signal_drift >
-                                cp->pdata->key1_failsafe_thres) &&
-                                (msg->signal2 > cp->pdata->key2_signal_thres))
-                               break;
-
-                       /* Key3 sensor has failed, keep in force detect */
-                       if ((key3_key4_signal_drift >
-                                cp->pdata->key3_failsafe_thres) &&
-                                (msg->signal4 > cp->pdata->key4_signal_thres))
-                               break;
-
-                       status = msg->status & 0xF0;
-                       cap_prox_write(cp,&status,1);
+               /* Key1 sensor has failed, keep in force detect */
+               if ((key1_key2_signal_drift >
+                        cp->pdata->key1_failsafe_thres) &&
+                        (msg->signal2 > cp->pdata->key2_signal_thres)) {
+                       msg->status = CP_STATUS_NUM_KEYS_ENABLED;
+                       break;
                }
+
+               /* Key3 sensor has failed, keep in force detect */
+               if ((key3_key4_signal_drift >
+                        cp->pdata->key3_failsafe_thres) &&
+                        (msg->signal4 > cp->pdata->key4_signal_thres)) {
+                       msg->status = CP_STATUS_NUM_KEYS_ENABLED;
+                       break;
+               }
+
+               status = msg->status & 0xF0;
+               cap_prox_write(cp,&status,1);
                break;
        case CP_STATUS_KEY1_KEY3_IN_DETECT:
                if ((key3_ref_drift < cp->pdata->key1_ref_drift_thres_h) &&
@@ -254,6 +253,7 @@ static int cap_prox_read_data(struct cap_prox_data *cp)
                        pr_info("%s: Cap-prox message 0x%x\n", __func__,
                                msg->status);
                }
+               msg->status = CP_STATUS_NUM_KEYS_ENABLED;
                break;
        }
        status = msg->status;