|
@@ -48,6 +48,30 @@ module_param(recalib_delta, int, 0644);
|
|
MODULE_PARM_DESC(recalib_delta,
|
|
MODULE_PARM_DESC(recalib_delta,
|
|
"packets containing a delta this large will cause a recalibration.");
|
|
"packets containing a delta this large will cause a recalibration.");
|
|
|
|
|
|
|
|
+static int jumpy_delay = 1000;
|
|
|
|
+module_param(jumpy_delay, int, 0644);
|
|
|
|
+MODULE_PARM_DESC(jumpy_delay,
|
|
|
|
+ "delay (ms) before recal after jumpiness detected");
|
|
|
|
+
|
|
|
|
+static int spew_delay = 1000;
|
|
|
|
+module_param(spew_delay, int, 0644);
|
|
|
|
+MODULE_PARM_DESC(spew_delay,
|
|
|
|
+ "delay (ms) before recal after packet spew detected");
|
|
|
|
+
|
|
|
|
+static int recal_guard_time = 2000;
|
|
|
|
+module_param(recal_guard_time, int, 0644);
|
|
|
|
+MODULE_PARM_DESC(recal_guard_time,
|
|
|
|
+ "interval (ms) during which recal will be restarted if packet received");
|
|
|
|
+
|
|
|
|
+static int post_interrupt_delay = 1000;
|
|
|
|
+module_param(post_interrupt_delay, int, 0644);
|
|
|
|
+MODULE_PARM_DESC(post_interrupt_delay,
|
|
|
|
+ "delay (ms) before recal after recal interrupt detected");
|
|
|
|
+
|
|
|
|
+static int autorecal = 1;
|
|
|
|
+module_param(autorecal, int, 0644);
|
|
|
|
+MODULE_PARM_DESC(autorecal, "enable recalibration in the driver");
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* When the touchpad gets ultra-sensitive, one can keep their finger 1/2"
|
|
* When the touchpad gets ultra-sensitive, one can keep their finger 1/2"
|
|
* above the pad and still have it send packets. This causes a jump cursor
|
|
* above the pad and still have it send packets. This causes a jump cursor
|
|
@@ -66,7 +90,7 @@ static void hgpk_jumpy_hack(struct psmouse *psmouse, int x, int y)
|
|
/* My car gets forty rods to the hogshead and that's the
|
|
/* My car gets forty rods to the hogshead and that's the
|
|
* way I likes it! */
|
|
* way I likes it! */
|
|
psmouse_queue_work(psmouse, &priv->recalib_wq,
|
|
psmouse_queue_work(psmouse, &priv->recalib_wq,
|
|
- msecs_to_jiffies(1000));
|
|
|
|
|
|
+ msecs_to_jiffies(jumpy_delay));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -103,7 +127,7 @@ static void hgpk_spewing_hack(struct psmouse *psmouse,
|
|
hgpk_dbg(psmouse, "packet spew detected (%d,%d)\n",
|
|
hgpk_dbg(psmouse, "packet spew detected (%d,%d)\n",
|
|
priv->x_tally, priv->y_tally);
|
|
priv->x_tally, priv->y_tally);
|
|
psmouse_queue_work(psmouse, &priv->recalib_wq,
|
|
psmouse_queue_work(psmouse, &priv->recalib_wq,
|
|
- msecs_to_jiffies(1000));
|
|
|
|
|
|
+ msecs_to_jiffies(spew_delay));
|
|
}
|
|
}
|
|
/* reset every 100 packets */
|
|
/* reset every 100 packets */
|
|
priv->count = 0;
|
|
priv->count = 0;
|
|
@@ -181,7 +205,7 @@ static psmouse_ret_t hgpk_process_byte(struct psmouse *psmouse)
|
|
"packet inside calibration window, "
|
|
"packet inside calibration window, "
|
|
"queueing another recalibration\n");
|
|
"queueing another recalibration\n");
|
|
psmouse_queue_work(psmouse, &priv->recalib_wq,
|
|
psmouse_queue_work(psmouse, &priv->recalib_wq,
|
|
- msecs_to_jiffies(1000));
|
|
|
|
|
|
+ msecs_to_jiffies(post_interrupt_delay));
|
|
}
|
|
}
|
|
priv->recalib_window = 0;
|
|
priv->recalib_window = 0;
|
|
}
|
|
}
|
|
@@ -231,7 +255,7 @@ static int hgpk_force_recalibrate(struct psmouse *psmouse)
|
|
* If someone's finger *was* on the touchpad, it's probably
|
|
* If someone's finger *was* on the touchpad, it's probably
|
|
* miscalibrated. So, we should schedule another recalibration
|
|
* miscalibrated. So, we should schedule another recalibration
|
|
*/
|
|
*/
|
|
- priv->recalib_window = jiffies + msecs_to_jiffies(2000);
|
|
|
|
|
|
+ priv->recalib_window = jiffies + msecs_to_jiffies(recal_guard_time);
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|