<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/include/linux/tegra_audio.h, branch tegra-10.11.4</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>[tegra alsa] Add routing support</title>
<updated>2011-01-10T13:58:51+00:00</updated>
<author>
<name>Sumit Bhattacharya</name>
<email>sumitb@nvidia.com</email>
</author>
<published>2010-12-30T14:21:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ef56099b6ed6d0548e7f569f42e94e09e39ef916'/>
<id>ef56099b6ed6d0548e7f569f42e94e09e39ef916</id>
<content type='text'>
Add three alsa controls to expose selection of playback
device, capture device and call mode.Alsa kernel will
route pcm data to the selected output/input port.

bug 771510

Change-Id: Ibdeebbd799b2ae36046a77327ec8b6a3b01553a9
Reviewed-on: http://git-master/r/14729
Tested-by: Sumit Bhattacharya &lt;sumitb@nvidia.com&gt;
Reviewed-by: Sachin Nikam &lt;snikam@nvidia.com&gt;
Reviewed-by: Bharat Nihalani &lt;bnihalani@nvidia.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add three alsa controls to expose selection of playback
device, capture device and call mode.Alsa kernel will
route pcm data to the selected output/input port.

bug 771510

Change-Id: Ibdeebbd799b2ae36046a77327ec8b6a3b01553a9
Reviewed-on: http://git-master/r/14729
Tested-by: Sumit Bhattacharya &lt;sumitb@nvidia.com&gt;
Reviewed-by: Sachin Nikam &lt;snikam@nvidia.com&gt;
Reviewed-by: Bharat Nihalani &lt;bnihalani@nvidia.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[ARM] tegra: i2s: Continuous DMA support</title>
<updated>2010-11-22T23:41:10+00:00</updated>
<author>
<name>Chris Fries</name>
<email>C.Fries@motorola.com</email>
</author>
<published>2010-11-18T18:42:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=230015ed6a5c9c7847b215130b72fe97f77fb459'/>
<id>230015ed6a5c9c7847b215130b72fe97f77fb459</id>
<content type='text'>
- Refactor DMA interactions to handle continuous single-buffered DMA
- Remove PIO support (obsolete, conflicts with new buffer management)
- Remove sample rate conversion (obsolete)
- Remove error-reporting logic
- Remove TEGRA_AUDIO_IN/OUT_GET/SET_BUF_CONFIG
- Add TEGRA_AUDIO_IN/OUT_GET/SET_NUM_BUFS

Change-Id: I8f21a0bb314aac3b7d1bb4918bda9141e58db38d
Signed-off-by: Iliyan Malchev &lt;malchev@google.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Refactor DMA interactions to handle continuous single-buffered DMA
- Remove PIO support (obsolete, conflicts with new buffer management)
- Remove sample rate conversion (obsolete)
- Remove error-reporting logic
- Remove TEGRA_AUDIO_IN/OUT_GET/SET_BUF_CONFIG
- Add TEGRA_AUDIO_IN/OUT_GET/SET_NUM_BUFS

Change-Id: I8f21a0bb314aac3b7d1bb4918bda9141e58db38d
Signed-off-by: Iliyan Malchev &lt;malchev@google.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[ARM] tegra_i2s_audio: fixes</title>
<updated>2010-10-14T02:15:43+00:00</updated>
<author>
<name>Iliyan Malchev</name>
<email>malchev@google.com</email>
</author>
<published>2010-10-12T19:50:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ce3ae8e74bfc4222c74f6355649038cea31c08d7'/>
<id>ce3ae8e74bfc4222c74f6355649038cea31c08d7</id>
<content type='text'>
-- Ignore kfifo thresholds on recording and playback and adjust the delays.
-- Take out the code from TEGRA_AUDIO_IN_STOP into a separate function
   stop_recording_nosync()
-- Rename stop_recording() to wait_for_recording_to_stop().
-- add ioctl(TEGRA_AUDIO_OUT_FLUSH), which blocks the caller until the output
   fifo is drained.  While the caller is blocked, pending write() calls will
   return immediately with whatever data they had managed to queue up.
-- removed ioctl(TEGRA_AUDIO_OUT_PRELOAD_FIFO)
-- since TEGRA_AUDIO_OUT_FLUSH and TEGRA_AUDIO_IN_STOP act similarly, moved
   audio_driver_state::recording_cancelled to audio_stream::stop and changed
   the code accordingly.  Renamed functions wait_for_recording_to_stop() and
   stop_recording_nosync() to wait_till_stopped() and request_stop_nosync()
   since they handle both playback and recording.
-- print errors on close() if wakelocks are still held
-- Call request_stop_nosync() on close() of a recording file handle
-- Do not use struct audio_stream::active for playback streams.  Instead,
   where applicable, use kfifo_len().  As a consequence, playback kfifo
   underruns are no longer reported.  These were bogus anyway, as we really
   need the DMA engine to tell us if there are underruns.
-- Because of above item, had to rework tx_fifo_atn_store(),
   rx_fifo_atn_store(), and __attr_fifo_atn_write().
-- Set struct audio_stream::active for a recording stream to true when a
   recording starts, and set it to false when recording get stopped.  Do not
   set/clear it within the body of read(), because just being within read()
   does not mean that recording is in progress.
-- In tegra_audio_read(), check for stop == true before calling
   start_recording_if_necessary(); this makes sure that if a user calls read()
   after calling ioctl(TEGRA_AUDIO_IN_STOP), recording will not resume unless
   ioctl(TEGRA_AUDIO_IN_START) gets called, or the file is closed and
   re-opened.
-- Fixed TEGRA_AUDIO_IN_START
-- In PIO mode, enabled FIFOs before enabling interrupts as specified in the
   TRM.
-- Added missing break in tegra_audio_ioctl().
-- Silenced some debug spew

Signed-off-by: Iliyan Malchev &lt;malchev@google.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
-- Ignore kfifo thresholds on recording and playback and adjust the delays.
-- Take out the code from TEGRA_AUDIO_IN_STOP into a separate function
   stop_recording_nosync()
-- Rename stop_recording() to wait_for_recording_to_stop().
-- add ioctl(TEGRA_AUDIO_OUT_FLUSH), which blocks the caller until the output
   fifo is drained.  While the caller is blocked, pending write() calls will
   return immediately with whatever data they had managed to queue up.
-- removed ioctl(TEGRA_AUDIO_OUT_PRELOAD_FIFO)
-- since TEGRA_AUDIO_OUT_FLUSH and TEGRA_AUDIO_IN_STOP act similarly, moved
   audio_driver_state::recording_cancelled to audio_stream::stop and changed
   the code accordingly.  Renamed functions wait_for_recording_to_stop() and
   stop_recording_nosync() to wait_till_stopped() and request_stop_nosync()
   since they handle both playback and recording.
-- print errors on close() if wakelocks are still held
-- Call request_stop_nosync() on close() of a recording file handle
-- Do not use struct audio_stream::active for playback streams.  Instead,
   where applicable, use kfifo_len().  As a consequence, playback kfifo
   underruns are no longer reported.  These were bogus anyway, as we really
   need the DMA engine to tell us if there are underruns.
-- Because of above item, had to rework tx_fifo_atn_store(),
   rx_fifo_atn_store(), and __attr_fifo_atn_write().
-- Set struct audio_stream::active for a recording stream to true when a
   recording starts, and set it to false when recording get stopped.  Do not
   set/clear it within the body of read(), because just being within read()
   does not mean that recording is in progress.
-- In tegra_audio_read(), check for stop == true before calling
   start_recording_if_necessary(); this makes sure that if a user calls read()
   after calling ioctl(TEGRA_AUDIO_IN_STOP), recording will not resume unless
   ioctl(TEGRA_AUDIO_IN_START) gets called, or the file is closed and
   re-opened.
-- Fixed TEGRA_AUDIO_IN_START
-- In PIO mode, enabled FIFOs before enabling interrupts as specified in the
   TRM.
-- Added missing break in tegra_audio_ioctl().
-- Silenced some debug spew

Signed-off-by: Iliyan Malchev &lt;malchev@google.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[ARM] tegra: i2s: Add I2S ioctl for setting bit format</title>
<updated>2010-10-08T22:41:54+00:00</updated>
<author>
<name>Chris Fries</name>
<email>C.Fries@motorola.com</email>
</author>
<published>2010-10-08T18:54:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=bd3ee16444d6e35e6f2837521c2508fb05dc436d'/>
<id>bd3ee16444d6e35e6f2837521c2508fb05dc436d</id>
<content type='text'>
Added an ioctl to set the bit format for I2S between "DSP"/"PCM" mode and
normal mode (set by board file)

Signed-off-by: Iliyan Malchev &lt;malchev@google.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Added an ioctl to set the bit format for I2S between "DSP"/"PCM" mode and
normal mode (set by board file)

Signed-off-by: Iliyan Malchev &lt;malchev@google.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[ARM] tegra_i2s_audio: add more elaborate error counts</title>
<updated>2010-10-06T23:29:10+00:00</updated>
<author>
<name>Iliyan Malchev</name>
<email>malchev@google.com</email>
</author>
<published>2010-10-04T19:10:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=49c9a88333e015b3494de923f84db6d9e61077a6'/>
<id>49c9a88333e015b3494de923f84db6d9e61077a6</id>
<content type='text'>
This patch replaces the error counter with two separate error counters, one for
late dma callbacks, and another for overruns (during recording) or underruns
(during playback).  The ioctls TEGRA_AUDIO_IN_GET_ERROR_COUNT and
TEGRA_AUDIO_OUT_GET_ERROR_COUNT now take a pointer to a struct containing both
error counters.

Signed-off-by: Iliyan Malchev &lt;malchev@google.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch replaces the error counter with two separate error counters, one for
late dma callbacks, and another for overruns (during recording) or underruns
(during playback).  The ioctls TEGRA_AUDIO_IN_GET_ERROR_COUNT and
TEGRA_AUDIO_OUT_GET_ERROR_COUNT now take a pointer to a struct containing both
error counters.

Signed-off-by: Iliyan Malchev &lt;malchev@google.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[ARM] tegra: tegra_i2s_audio: allow preloading of the tx fifo with data</title>
<updated>2010-10-06T23:27:50+00:00</updated>
<author>
<name>Iliyan Malchev</name>
<email>malchev@google.com</email>
</author>
<published>2010-08-20T22:11:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=a3a03951fd50e2ccbab415bf74234c00654e5c4b'/>
<id>a3a03951fd50e2ccbab415bf74234c00654e5c4b</id>
<content type='text'>
Add an ioctl to allow the TX fifo to be loaded with data before playback
starts.  Playback can then be started by calling write() on the FIFO, even
with a length of 0.  This will cause the pending data to be played out.

Signed-off-by: Iliyan Malchev &lt;malchev@google.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add an ioctl to allow the TX fifo to be loaded with data before playback
starts.  Playback can then be started by calling write() on the FIFO, even
with a length of 0.  This will cause the pending data to be played out.

Signed-off-by: Iliyan Malchev &lt;malchev@google.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[ARM] tegra: tegra_i2s_audio: clean up handling of state</title>
<updated>2010-10-06T23:27:49+00:00</updated>
<author>
<name>Iliyan Malchev</name>
<email>malchev@google.com</email>
</author>
<published>2010-08-18T01:36:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=a69a4cbdc96e2b1ad2d617064c5d8709e5606bbb'/>
<id>a69a4cbdc96e2b1ad2d617064c5d8709e5606bbb</id>
<content type='text'>
-- Use consistently the various state flags:
   -- active is set only when there is a read or write in flight
   -- recording_canncelled is set only when recording is stopped via the ioctl()
   -- dma_has_it is used to determine whether DMA is already in flight; do not
      use the state of the fifos for this (e.g., if the TX fifo is empty, do not
      assume that playback is stopped)
   -- added a stop_completion (implemented for readers only) so that readers
      closing a stream can wait until DMA or PIO transactions are stopped
-- Split /dev/audio0_{in,out} into /dev/audio0_{in,in_ctl,out,out_ctl} where the
   _ctl versions have the ioctl()s
-- Introduced an error count per audio_stream; error count is reset on open, can
   be read back &amp; reset through an ioctl

Signed-off-by: Iliyan Malchev &lt;malchev@google.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
-- Use consistently the various state flags:
   -- active is set only when there is a read or write in flight
   -- recording_canncelled is set only when recording is stopped via the ioctl()
   -- dma_has_it is used to determine whether DMA is already in flight; do not
      use the state of the fifos for this (e.g., if the TX fifo is empty, do not
      assume that playback is stopped)
   -- added a stop_completion (implemented for readers only) so that readers
      closing a stream can wait until DMA or PIO transactions are stopped
-- Split /dev/audio0_{in,out} into /dev/audio0_{in,in_ctl,out,out_ctl} where the
   _ctl versions have the ioctl()s
-- Introduced an error count per audio_stream; error count is reset on open, can
   be read back &amp; reset through an ioctl

Signed-off-by: Iliyan Malchev &lt;malchev@google.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[ARM] tegra: tegra_i2s_audio: configure in/out buffer sizes from user space</title>
<updated>2010-10-06T23:27:49+00:00</updated>
<author>
<name>Iliyan Malchev</name>
<email>malchev@google.com</email>
</author>
<published>2010-08-17T18:34:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=6eb1d61bddb9ddf1bc82aff5ed2093daf88dd3b2'/>
<id>6eb1d61bddb9ddf1bc82aff5ed2093daf88dd3b2</id>
<content type='text'>
-- Add ioctls for configuring buffer, threshold, and DMA-transaction sizes from
   user space.
-- Buffer sizes are provided in orders of magnitude.
-- Allocate max-sized buffers during probe, and allow the user to resize them
   only within the original allocation, to avoid the risk from kmalloc failing
   due to kernel-heap fragmentation, and also to avoid race conditions on DMA
   shut-down.
-- In tegra_audio_write(), moved the call to start_playback_if_necessary()
   immediately after writing to the fifo.  Otherwise, when the fifo size is
   smaller than what the user is trying to write, the user will block before
   playback is started.
-- Silenced printk spew on spinning on i2s registers after transactions are
   completed.
-- Cleaned up a 80-col style violation in downsample()

Signed-off-by: Iliyan Malchev &lt;malchev@google.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
-- Add ioctls for configuring buffer, threshold, and DMA-transaction sizes from
   user space.
-- Buffer sizes are provided in orders of magnitude.
-- Allocate max-sized buffers during probe, and allow the user to resize them
   only within the original allocation, to avoid the risk from kmalloc failing
   due to kernel-heap fragmentation, and also to avoid race conditions on DMA
   shut-down.
-- In tegra_audio_write(), moved the call to start_playback_if_necessary()
   immediately after writing to the fifo.  Otherwise, when the fifo size is
   smaller than what the user is trying to write, the user will block before
   playback is started.
-- Silenced printk spew on spinning on i2s registers after transactions are
   completed.
-- Cleaned up a 80-col style violation in downsample()

Signed-off-by: Iliyan Malchev &lt;malchev@google.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[ARM] tegra_i2s_audio: add software downsampling for recorded data + fixes</title>
<updated>2010-10-06T23:27:38+00:00</updated>
<author>
<name>Iliyan Malchev</name>
<email>malchev@google.com</email>
</author>
<published>2010-08-12T01:19:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=dada76ee1116155b3195c7dee63332ba74be6cb8'/>
<id>dada76ee1116155b3195c7dee63332ba74be6cb8</id>
<content type='text'>
downsampling:
-- add ioctl()s to downsample recorded data
-- supported frequencies are 8kHz, 11.025kHz, 22.05kHz, and 44.1kHz
-- downsamping to stereo and mono
-- default is 11.025kHz mono

fixes:
-- fix crashes from dequeuing DMA requests twice

Signed-off-by: Iliyan Malchev &lt;malchev@google.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
downsampling:
-- add ioctl()s to downsample recorded data
-- supported frequencies are 8kHz, 11.025kHz, 22.05kHz, and 44.1kHz
-- downsamping to stereo and mono
-- default is 11.025kHz mono

fixes:
-- fix crashes from dequeuing DMA requests twice

Signed-off-by: Iliyan Malchev &lt;malchev@google.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[ARM] tegra: audio_i2s_audio: clean up &amp; support for recording audio</title>
<updated>2010-10-06T23:27:33+00:00</updated>
<author>
<name>Iliyan Malchev</name>
<email>malchev@google.com</email>
</author>
<published>2010-08-06T22:41:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=49dfd54af3a831fc5df56a30b2a50d193a243249'/>
<id>49dfd54af3a831fc5df56a30b2a50d193a243249</id>
<content type='text'>
-- add audio_in_stream (identical to audio_out_stream, may merge them later)
-- add support for DMA and PIO recording
-- add ioctls for /dev/audio&lt;n&gt;_in to start and stop recording

Signed-off-by: Iliyan Malchev &lt;malchev@google.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
-- add audio_in_stream (identical to audio_out_stream, may merge them later)
-- add support for DMA and PIO recording
-- add ioctls for /dev/audio&lt;n&gt;_in to start and stop recording

Signed-off-by: Iliyan Malchev &lt;malchev@google.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
