Hi,
Peter Barada wrote:
I'm using an hrtimer in my tsc2004 touch driver to sleep between samples
for 7.5mSec. Here's the essence of the inner loop that grabs samples:
for (;;) {
// Get a point, pass it to input_report_abs...
pen_is_down = tsc2004_get_point(d);
// If pen is up up, then break out
if (!pen_is_down || signal_pending(tsk))
break;
{
struct timespec timeout;
// sleep for 7.5 mSec (giving max 133 touch/sec)
timeout = ns_to_timespec(75 * 100 * 1000);
hrtimer_nanosleep(&timeout, NULL, HRTIMER_MODE_REL, CLOCK_MONOTONIC);
}
}
What's really strange is when I use ts_test to measure sample rate, I
see:
OMAP-Torpedo# export TSLIB_TSDEVICE=/dev/input/event0
OMAP-Torpedo# export TSLIB_CONSOLEDEVICE=none
OMAP-Torpedo# ts_test
717.804687: 176 161 234
717.813446: 176 161 234
717.822265: 176 160 234
717.993255: 178 159 234
718.002014: 179 158 234
718.188537: 180 158 234
719.015441: 181 157 234
719.165100: 181 157 234
719.360412: 182 157 234
719.369079: 182 157 234
719.438537: 182 156 234
719.555725: 182 156 234
719.564392: 182 156 234
719.751037: 180 155 234
719.768432: 179 155 234
719.777099: 178 154 234
719.946350: 174 150 234
720.000976: 175 144 234
720.141662: 184 140 234
720.336975: 189 138 234
720.490722: 195 137 234
720.499420: 198 138 234
720.858123: 198 139 234
720.922912: 198 139 234
721.126922: 198 139 234
721.135620: 198 139 234
721.144317: 198 139 234
721.152984: 198 139 234
721.161682: 198 139 234
721.313537: 198 139 234
721.438537: 198 138 0
Which shows over 3.63 seconds 33 samples, or only 9.08 samples/second,
including a max delay of .827 seconds (719.015441 - 718.188537).
But if I "ifup eth0" to bring the networking up (and nothing else is
running), I get:
Not sure,
but I think that you have introduced a new interrupt source and you have
a pickahed of hrtimer in the irq_exit path that run sofirq.
Michael
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html