<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/include/sound, branch v3.13.2</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/include/sound?h=v3.13.2</id>
<link rel='self' href='https://git.amat.us/linux/atom/include/sound?h=v3.13.2'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2013-12-10T14:30:46Z</updated>
<entry>
<title>ALSA: memalloc.h - fix wrong truncation of dma_addr_t</title>
<updated>2013-12-10T14:30:46Z</updated>
<author>
<name>Stefano Panella</name>
<email>stefano.panella@citrix.com</email>
</author>
<published>2013-12-10T14:20:28Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=932e9dec380c67ec15ac3eb073bb55797d8b4801'/>
<id>urn:sha1:932e9dec380c67ec15ac3eb073bb55797d8b4801</id>
<content type='text'>
When running a 32bit kernel the hda_intel driver is still reporting
a 64bit dma_mask if the HW supports it.

From sound/pci/hda/hda_intel.c:

        /* allow 64bit DMA address if supported by H/W */
        if ((gcap &amp; ICH6_GCAP_64OK) &amp;&amp; !pci_set_dma_mask(pci, DMA_BIT_MASK(64)))
                pci_set_consistent_dma_mask(pci, DMA_BIT_MASK(64));
        else {
                pci_set_dma_mask(pci, DMA_BIT_MASK(32));
                pci_set_consistent_dma_mask(pci, DMA_BIT_MASK(32));
        }

which means when there is a call to dma_alloc_coherent from
snd_malloc_dev_pages a machine address bigger than 32bit can be returned.
This can be true in particular if running  the 32bit kernel as a pv dom0
under the Xen Hypervisor or PAE on bare metal.

The problem is that when calling setup_bdle to program the BLE the
dma_addr_t returned from the dma_alloc_coherent is wrongly truncated
from snd_sgbuf_get_addr if running a 32bit kernel:

static inline dma_addr_t snd_sgbuf_get_addr(struct snd_dma_buffer *dmab,
                                           size_t offset)
{
        struct snd_sg_buf *sgbuf = dmab-&gt;private_data;
        dma_addr_t addr = sgbuf-&gt;table[offset &gt;&gt; PAGE_SHIFT].addr;
        addr &amp;= PAGE_MASK;
        return addr + offset % PAGE_SIZE;
}

where PAGE_MASK in a 32bit kernel is zeroing the upper 32bit af addr.

Without this patch the HW will fetch the 32bit truncated address,
which is not the one obtained from dma_alloc_coherent and will result
to a non working audio but can corrupt host memory at a random location.

The current patch apply to v3.13-rc3-74-g6c843f5

Signed-off-by: Stefano Panella &lt;stefano.panella@citrix.com&gt;
Reviewed-by: Frediano Ziglio &lt;frediano.ziglio@citrix.com&gt;
Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
</entry>
<entry>
<title>ASoC: dapm: Use SND_SOC_DAPM_INIT_REG_VAL in SND_SOC_DAPM_MUX</title>
<updated>2013-11-24T13:55:41Z</updated>
<author>
<name>Stephen Warren</name>
<email>swarren@nvidia.com</email>
</author>
<published>2013-11-22T17:29:18Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=faf6615bf05bc5cecc6e22013b9cb21c77784fd1'/>
<id>urn:sha1:faf6615bf05bc5cecc6e22013b9cb21c77784fd1</id>
<content type='text'>
SND_SOC_DAPM_MUX() doesn't currently initialize the .mask field. This
results in the mux never affecting HW, since no bits are ever set or
cleared. Fix SND_SOC_DAPM_MUX() to use SND_SOC_DAPM_INIT_REG_VAL() to
set up the reg, shift, on_val, and off_val fields like almost all other
SND_SOC_xxx() macros. It looks like this was a "typo" in the fixed
commit linked below.

This makes the speakers on the Toshiba AC100 (PAZ00) laptop work again.

Fixes: de9ba98b6d26 ("ASoC: dapm: Make widget power register settings more flexible")
Signed-off-by: Stephen Warren &lt;swarren@nvidia.com&gt;
Signed-off-by: Mark Brown &lt;broonie@linaro.org&gt;
Cc: &lt;stable@vger.kernel.org&gt; # v3.12+
</content>
</entry>
<entry>
<title>ALSA: compress: fix drain calls blocking other compress functions (v6)</title>
<updated>2013-11-07T09:12:27Z</updated>
<author>
<name>Vinod Koul</name>
<email>vinod.koul@intel.com</email>
</author>
<published>2013-11-07T09:08:22Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f44f2a5417b2968a8724b352cc0b2545a6bcb1f4'/>
<id>urn:sha1:f44f2a5417b2968a8724b352cc0b2545a6bcb1f4</id>
<content type='text'>
The drain and drain_notify callback were blocked by low level driver
until the draining was complete. Due to this being invoked with big
fat mutex held, others ops like reading timestamp, calling pause, drop
were blocked.

So to fix this we add a new snd_compr_drain_notify() API. This would
be required to be invoked by low level driver when drain or partial
drain has been completed by the DSP. Thus we make the drain and
partial_drain callback as non blocking and driver returns immediately
after notifying DSP.  The waiting is done while releasing the lock so
that other ops can go ahead.

[ The commit 917f4b5cba78 was wrongly applied from the preliminary
  patch.  This commit corrects to the final version.
  Sorry for inconvenience!  -- tiwai ]

Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
CC: stable@vger.kernel.org
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
</entry>
<entry>
<title>Merge tag 'asoc-v3.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-next</title>
<updated>2013-11-04T09:05:07Z</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2013-11-04T09:05:07Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=ebfe1068f9ca4d0f25beca7a65d652380c40f226'/>
<id>urn:sha1:ebfe1068f9ca4d0f25beca7a65d652380c40f226</id>
<content type='text'>
ASoC: Final updates for v3.13

A few final updates for v3.13, all driver updates apart from some DPCM
and Coverity fixes which should have minor impact on practical systems.
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'asoc/topic/cs42l52' into asoc-next</title>
<updated>2013-11-04T06:04:16Z</updated>
<author>
<name>Mark Brown</name>
<email>broonie@linaro.org</email>
</author>
<published>2013-11-04T06:04:16Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=05e48b506434c8982816a0876dc2682c983bed7a'/>
<id>urn:sha1:05e48b506434c8982816a0876dc2682c983bed7a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>ALSA: ak4114: Fix wrong register array size</title>
<updated>2013-10-29T15:42:36Z</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2013-10-29T15:37:11Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=e12483e0f3dbc32dad8fa1dc97efac22b6aee94f'/>
<id>urn:sha1:e12483e0f3dbc32dad8fa1dc97efac22b6aee94f</id>
<content type='text'>
The size of the register cache array is actually 6 instead of 7,
as it caches up to AK4114_REG_INT1_MASK.  This resulted in unexpected
access out of array range, although most of them aren't so serious
(just reading one more byte on the stack at snd_ak4114_create()).

Also, the check of cache size was wrongly done by checking with
sizeof() instead of ARRAY_SIZE().  Fixed this together.

(And yes, hardcoded numbers are bad, but I keep the coding style as is
 for making it clear what this patch actually does.)

Spotted by coverity among several CIDs, e.g. 711621.

Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
</entry>
<entry>
<title>ASoC: cs42l52: Add platform data for reset gpio</title>
<updated>2013-10-25T15:37:58Z</updated>
<author>
<name>Brian Austin</name>
<email>brian.austin@cirrus.com</email>
</author>
<published>2013-10-25T15:01:14Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=6dd17757927ba9d23c604fee6fe72b4755c7ea7f'/>
<id>urn:sha1:6dd17757927ba9d23c604fee6fe72b4755c7ea7f</id>
<content type='text'>
This patch adds platform data support for a reset GPIO.
Also uses reset_gpio to toggle reset of the CODEC

Signed-off-by: Brian Austin &lt;brian.austin@cirrus.com&gt;
Signed-off-by: Mark Brown &lt;broonie@linaro.org&gt;
</content>
</entry>
<entry>
<title>Merge tag 'asoc-v3.13' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-next</title>
<updated>2013-10-25T09:43:47Z</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2013-10-25T09:43:47Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=6913a9dbf18f08e3577695032da15812bda92b66'/>
<id>urn:sha1:6913a9dbf18f08e3577695032da15812bda92b66</id>
<content type='text'>
ASoC: Updates for v3.13

 - Further work on the dmaengine helpers, including support for
   configuring the parameters for DMA by reading the capabilities of the
   DMA controller which removes some guesswork and magic numbers fromm
   drivers.
 - A refresh of the documentation.
 - Conversions of many drivers to direct regmap API usage in order to
   allow the ASoC level register I/O code to be removed, this will
   hopefully be completed by v3.14.
 - Support for using async register I/O in DAPM, reducing the time taken
   to implement power transitions on systems that support it.
</content>
</entry>
<entry>
<title>ALSA: compress: fix drain calls blocking other compress functions</title>
<updated>2013-10-24T12:50:37Z</updated>
<author>
<name>Vinod Koul</name>
<email>vinod.koul@intel.com</email>
</author>
<published>2013-10-24T11:07:31Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=917f4b5cba78980a527098a910d94139d3e82c8d'/>
<id>urn:sha1:917f4b5cba78980a527098a910d94139d3e82c8d</id>
<content type='text'>
The drain and drain_notify callback were blocked by low level driver untill the
draining was complete. Due to this being invoked with big fat mutex held, others
ops like reading timestamp, calling pause, drop were blocked.

So to fix this we add a new snd_compr_drain_notify() API. This would be required
to be invoked by low level driver when drain or partial drain has been completed
by the DSP. Thus we make the drain and partial_drain callback as non blocking
and driver returns immediately after notifying DSP.
The waiting is done while relasing the lock so that other ops can go ahead.

Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
CC: stable@vger.kernel.org
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
</entry>
<entry>
<title>ALSA: Add ifdef CONFIG_GENERIC_ALLOCATOR for SNDRV_DMA_TYPE_IRAM code</title>
<updated>2013-10-24T12:36:40Z</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2013-10-24T12:25:32Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=a5606f85611267047206d8ba055bc0e4ba166ad3'/>
<id>urn:sha1:a5606f85611267047206d8ba055bc0e4ba166ad3</id>
<content type='text'>
It turned out that we can't use gen_pool_*() functions on archs
without CONFIG_GENERIC_ALLOCATOR (resulting in missing symbols), since
linux/genalloc.h doesn't provide dummy functions for all.  We'd be
able to fix linux/genalloc.h size, but I take an easier path for
now...

Reported-by: Fengguang Wu &lt;fengguang.wu@intel.com&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
</entry>
</feed>
