<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/linux.git/drivers/staging/line6, branch v3.4.55</title>
<subtitle>Linux kernel stable tree (mirror)</subtitle>
<id>https://git.radix-linux.su/kernel/linux.git/atom?h=v3.4.55</id>
<link rel='self' href='https://git.radix-linux.su/kernel/linux.git/atom?h=v3.4.55'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/'/>
<updated>2012-02-09T17:14:35+00:00</updated>
<entry>
<title>staging: line6: separate handling of buffer allocation and stream startup</title>
<updated>2012-02-09T17:14:35+00:00</updated>
<author>
<name>Markus Grabner</name>
<email>grabner@icg.tugraz.at</email>
</author>
<published>2012-01-19T23:09:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=0ca54888060135806d5567f47a6ad54be5297b34'/>
<id>urn:sha1:0ca54888060135806d5567f47a6ad54be5297b34</id>
<content type='text'>
There are several features of the Line6 USB driver which require PCM
data to be exchanged with the device:
*) PCM playback and capture via ALSA
*) software monitoring (for devices without hardware monitoring)
*) optional impulse response measurement
However, from the device's point of view, there is just a single
capture and playback stream, which must be shared between these
subsystems. It is therefore necessary to maintain the state of the
subsystems with respect to PCM usage. We define several constants of
the form LINE6_BIT_PCM_&lt;subsystem&gt;_&lt;direction&gt;_&lt;resource&gt; with the
following meanings:
*) &lt;subsystem&gt; is one of
-) ALSA: PCM playback and capture via ALSA
-) MONITOR: software monitoring
-) IMPULSE: optional impulse response measurement
*) &lt;direction&gt; is one of
-) PLAYBACK: audio output (from host to device)
-) CAPTURE: audio input (from device to host)
*) &lt;resource&gt; is one of
-) BUFFER: buffer required by PCM data stream
-) STREAM: actual PCM data stream

The subsystems call line6_pcm_acquire() to acquire the (shared)
resources needed for a particular operation (e.g., allocate the buffer
for ALSA playback or start the capture stream for software monitoring).
When a resource is no longer needed, it is released by calling
line6_pcm_release(). Buffer allocation and stream startup are handled
separately to allow the ALSA kernel driver to perform them at
appropriate places (since the callback which starts a PCM stream is not
allowed to sleep).

Signed-off-by: Markus Grabner &lt;grabner@icg.tugraz.at&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>staging: line6: use source select control for UX2 devices</title>
<updated>2012-02-09T17:14:35+00:00</updated>
<author>
<name>Markus Grabner</name>
<email>grabner@icg.tugraz.at</email>
</author>
<published>2012-01-19T23:09:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=12177acdecfcb538b86590036a56fc47b443e135'/>
<id>urn:sha1:12177acdecfcb538b86590036a56fc47b443e135</id>
<content type='text'>
Signed-off-by: Markus Grabner &lt;grabner@icg.tugraz.at&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>staging: line6: removed obsolete code</title>
<updated>2012-02-09T17:14:35+00:00</updated>
<author>
<name>Markus Grabner</name>
<email>grabner@icg.tugraz.at</email>
</author>
<published>2012-01-19T23:09:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=3784129a9de3fc33ffe6c6ece906a9caa1c65fab'/>
<id>urn:sha1:3784129a9de3fc33ffe6c6ece906a9caa1c65fab</id>
<content type='text'>
Signed-off-by: Markus Grabner &lt;grabner@icg.tugraz.at&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>staging: line6: fixed ALSA/PCM interaction</title>
<updated>2011-12-10T03:26:09+00:00</updated>
<author>
<name>Markus Grabner</name>
<email>grabner@icg.tugraz.at</email>
</author>
<published>2011-12-10T01:12:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=6b02a17ee5cd5d200dbe4a285a4e750f70884967'/>
<id>urn:sha1:6b02a17ee5cd5d200dbe4a285a4e750f70884967</id>
<content type='text'>
The PCM subsystem in the Line6 driver is mainly used for PCM playback and
capture by ALSA, but also has other tasks, most notably providing a
low-latency software monitor for devices which don't support hardware
monitoring (e.g., the TonePort series). This patch makes ALSA "play nicely"
with the other components, i.e., prevents it from resetting the isochronous
USB transfer while other PCM tasks (software monitoring) are running.

Signed-off-by: Markus Grabner &lt;grabner@icg.tugraz.at&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
<entry>
<title>staging: line6: wait for urbs in snd_line6_prepare()</title>
<updated>2011-12-10T03:26:09+00:00</updated>
<author>
<name>Stefan Hajnoczi</name>
<email>stefanha@gmail.com</email>
</author>
<published>2011-12-10T01:12:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=665f3f506b1c2684d6f78d6d03c038d1712e561d'/>
<id>urn:sha1:665f3f506b1c2684d6f78d6d03c038d1712e561d</id>
<content type='text'>
The .trigger() pcm callbacks are not allowed to block and cannot wait
until urbs have completed.  We need to ensure that stopping, preparing,
and then restarting a stream always works.

Currently the driver will sometimes return -EBUSY when restarting the
stream because urbs have not completed yet.  This can be triggered by
jackd from userspace.

The solution is to wait on urbs in the .prepare() pcm callback since
blocking is allowed in that callback.  This guarantees that all urbs are
quiesced and ready to be submitted when the start trigger callback is
invoked.

Signed-off-by: Stefan Hajnoczi &lt;stefanha@gmail.com&gt;
Signed-off-by: Markus Grabner &lt;grabner@icg.tugraz.at&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
<entry>
<title>staging: line6: eliminate useless NULL checks</title>
<updated>2011-12-10T03:26:09+00:00</updated>
<author>
<name>Stefan Hajnoczi</name>
<email>stefanha@gmail.com</email>
</author>
<published>2011-12-10T01:12:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=188e664502dc47f83775a556e6db52cd8cc0b5fc'/>
<id>urn:sha1:188e664502dc47f83775a556e6db52cd8cc0b5fc</id>
<content type='text'>
The line6 driver checks struct field addresses for NULL where it does
not make sense to do so.  The struct has already been checked for NULL
and there is no value in checking the first field's address too.

Suggested-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Signed-off-by: Stefan Hajnoczi &lt;stefanha@gmail.com&gt;
Signed-off-by: Markus Grabner &lt;grabner@icg.tugraz.at&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
<entry>
<title>staging: line6: eliminate useless index_out variable</title>
<updated>2011-12-10T03:26:09+00:00</updated>
<author>
<name>Stefan Hajnoczi</name>
<email>stefanha@gmail.com</email>
</author>
<published>2011-12-10T01:12:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=153e38761d27f29edf436f11da3dbfb4fb8edcc1'/>
<id>urn:sha1:153e38761d27f29edf436f11da3dbfb4fb8edcc1</id>
<content type='text'>
Playback urbs use the index_out counter to decide which part of the
playback buffer to use.  Since the urb already has a unique index in
range [0, LINE6_ISO_BUFFERS) there is no need to keep a separate
counter.

Use the urb index instead.  This also eliminates the possibility of two
urbs using the same playback buffer space if they ever complete
out-of-order for some reason.

Signed-off-by: Stefan Hajnoczi &lt;stefanha@gmail.com&gt;
Signed-off-by: Markus Grabner &lt;grabner@icg.tugraz.at&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
<entry>
<title>staging: line6: fix playback urb transfer buffer calculation</title>
<updated>2011-12-10T03:26:09+00:00</updated>
<author>
<name>Stefan Hajnoczi</name>
<email>stefanha@gmail.com</email>
</author>
<published>2011-12-10T01:12:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=2f637ee42d4a60e1c3823beff3699354bd4400be'/>
<id>urn:sha1:2f637ee42d4a60e1c3823beff3699354bd4400be</id>
<content type='text'>
The playback urb transfer buffer calculation does not factor in
LINE6_ISO_PACKETS.  Buffer memory is organized like this in the driver:

  Buffer 0                 Buffer 1                 ...
  [Packet 0, Packet 1, ...][Packet 0, Packet 1, ...][Packet 0, ...]

However, we're lucky that LINE6_ISO_PACKETS is currently defined as 1 so
this patch does not change any behavior.  It's still worth including
this fix in case the LINE6_ISO_PACKETS value is changed in the future.

Signed-off-by: Stefan Hajnoczi &lt;stefanha@gmail.com&gt;
Signed-off-by: Markus Grabner &lt;grabner@icg.tugraz.at&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
<entry>
<title>staging: line6: fix memory leak in .hw_params()</title>
<updated>2011-12-10T03:26:09+00:00</updated>
<author>
<name>Stefan Hajnoczi</name>
<email>stefanha@gmail.com</email>
</author>
<published>2011-12-10T01:12:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=60c01a977814788178362ff0e1a22dfbf106eede'/>
<id>urn:sha1:60c01a977814788178362ff0e1a22dfbf106eede</id>
<content type='text'>
The .hw_params() pcm callback can be invoked multiple times in a row.
Ensure that the URB data buffer is only allocated once.

Signed-off-by: Stefan Hajnoczi &lt;stefanha@gmail.com&gt;
Signed-off-by: Markus Grabner &lt;grabner@icg.tugraz.at&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
<entry>
<title>staging/line6: refactor device information and add POD HD 500</title>
<updated>2011-12-08T20:33:49+00:00</updated>
<author>
<name>Markus Grabner</name>
<email>grabner@icg.tugraz.at</email>
</author>
<published>2011-12-05T22:51:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=4c6fb5fc050a4430363d92994132fffa6776c9d4'/>
<id>urn:sha1:4c6fb5fc050a4430363d92994132fffa6776c9d4</id>
<content type='text'>
This patch refactors the device information code and adds preliminary support for the POD HD 500 device.

Signed-off-by: Markus Grabner &lt;grabner@icg.tugraz.at&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
</feed>
