zio: new master

Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
kernel and tools: TYPE_TIME channels have 0 sample size

This was not possible with the older zio, but now we have support
for that.

Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
trivial: remove obsolete conditional

Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
fd-zio: input channel is self-timed

Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
tasklet: proceed with data_done even if no block is there

Now that we are self-timed, the only reason white the active input
block is null may be a zio buffer-full situation.  We need to keep
the loop running anyways (by discarding one sample), because we miss
notification when the buffer has new space.

We can't change zio to this aim, as it would be extra code in a hot
path: we'd better loose one block when the buffer is full, we would
loose it soon after anyways, since the system is overloaded.

Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
tasklet: don't ack irq (redundant here)

Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
bugfix: swfifo locking was racy

moreover, I was reading the hardware fifo both at interrupt level and
at tasklet level.  The tasklet read-out is mandatory if we are using
a timer instead of an interrupt (the timer is the tasklet function),
but should be avoided if we have interrupts.

Sometimes I got duplicate samples because the tasklet reading the
hardware fifo was preempted by the interrupt handler.

Now I can stamp 50kHz bursts withouth data loss, provided the zio
buffer is big enough.

Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
input cser: add raw_tdc support

Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
doc: document raw_tdc mode

Meanwhile, turn ZIO to @sc{zio} in the whole manual.

Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
Merge branch 'master', remote-tracking branch 'origin'