<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Technicalities &#187; ASoC</title>
	<atom:link href="http://www.sirena.org.uk/log/category/tech/linux/asoc-linux-tech/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sirena.org.uk/log</link>
	<description>Just another random blog</description>
	<lastBuildDate>Fri, 16 Jul 2010 17:24:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>LPC 2010 &#8211; submit your papers now!</title>
		<link>http://www.sirena.org.uk/log/2010/07/16/lpc-2010-submit-your-papers-now/</link>
		<comments>http://www.sirena.org.uk/log/2010/07/16/lpc-2010-submit-your-papers-now/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 17:24:50 +0000</pubDate>
		<dc:creator>Mark Brown</dc:creator>
				<category><![CDATA[ASoC]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Debian]]></category>
		<category><![CDATA[tech]]></category>

		<guid isPermaLink="false">http://www.sirena.org.uk/log/?p=291</guid>
		<description><![CDATA[As Lennart just posted the Call for Papers for the 2010 Linux Plumbers Conference (LPC)closes this Monday (the 19th of July). The goal of LPC is to get people working on the various projects that make up the key Linux infrastructure where the kernel and application layers meet together so that everyone understands everyone else&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>As <a href="http://0pointer.de/blog/projects/plumbersconf-2010.html">Lennart just posted</a> the <a href="http://www.linuxplumbersconf.org/2010/06/03/linux-plumbers-conference-call-for-papers">Call for Papers</a> for the 2010 <a href="http://www.linuxplumbersconf.org/">Linux Plumbers Conference (LPC)</a>closes <strong>this Monday</strong> (the 19th of July). The goal of LPC is to get people working on the various projects that make up the key Linux infrastructure where the kernel and application layers meet together so that everyone understands everyone else&#8217;s needs and all the components of the system can be made to work together as well as possible. This is the third year the conference has been run, with the previous two years having been very productive, and we hope that the event this year will be equally successful.</p>
<p>This year I&#8217;ll be joining <a href="http://0pointer.de/lennart">Lennart Poettering</a> in helping to organize the <a href="http://www.linuxplumbersconf.org/2010/ocw/events/tracks/53">audio track</a>, with my particular focus being on the needs of embedded systems. Embedded audio is currently undergoing a rapid evolution, especially for mobile phones, so there&#8217;s a lot of exciting work to be done to make sure that the software stack can readily meet the needs of practical applications. Things like the move from analogue to digital audio routing within devices and the increasingly rich audio feature sets provided by systems like smartphones are driving rapid development in this area that has an impact over the full software stack from device drivers up to the application layer.</p>
<p>If you are involved with implementing or deploying the Linux audio infrastructure please join us there to discuss the work that needs doing and help improve the Linux audio experience even further, and please also <a href="http://www.linuxplumbersconf.org/2010/ocw/events/LPC2010/proposals/new">submit a proposal</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sirena.org.uk/log/2010/07/16/lpc-2010-submit-your-papers-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASoC updates in 2.6.33</title>
		<link>http://www.sirena.org.uk/log/2010/02/25/asoc-updates-in-2-6-33/</link>
		<comments>http://www.sirena.org.uk/log/2010/02/25/asoc-updates-in-2-6-33/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 09:32:32 +0000</pubDate>
		<dc:creator>Mark Brown</dc:creator>
				<category><![CDATA[ASoC]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Debian]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[kernel]]></category>

		<guid isPermaLink="false">http://www.sirena.org.uk/log/?p=243</guid>
		<description><![CDATA[This has been another fairly quiet release for ASoC.  Aside from the addition of virtual mux support to DAPM and some further preparatory work for multi-CODEC cards the majority of changes have been driver updates, including: New CODEC drivers for ADS117x, AK4671, TLV320DAC33, TPA6130A2, WM8711 and WM8727. Support for the PCM port on Samsung SoCs. Substantial improvements to [...]]]></description>
			<content:encoded><![CDATA[<p>This has been another fairly quiet release for ASoC.  Aside from the addition of virtual mux support to DAPM and some further preparatory work for multi-CODEC cards the majority of changes have been driver updates, including:</p>
<ul>
<li> New CODEC drivers for ADS117x, AK4671, TLV320DAC33, TPA6130A2, WM8711 and WM8727.</li>
<li>Support for the PCM port on Samsung SoCs.</li>
<li> Substantial improvements to DMA performance and reliability on MPC5200 and DaVinci.</li>
<li> Capture support for the FSI port on SH.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.sirena.org.uk/log/2010/02/25/asoc-updates-in-2-6-33/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASoC updates in 2.6.32</title>
		<link>http://www.sirena.org.uk/log/2009/12/03/asoc-updates-in-2-6-3/</link>
		<comments>http://www.sirena.org.uk/log/2009/12/03/asoc-updates-in-2-6-3/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 10:02:43 +0000</pubDate>
		<dc:creator>Mark Brown</dc:creator>
				<category><![CDATA[ASoC]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Debian]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[kernel]]></category>

		<guid isPermaLink="false">http://www.sirena.org.uk/log/?p=78</guid>
		<description><![CDATA[Linux 2.6.32 was released overnight. This has been a fairly busy release for ASoC, with changes including: Redone power sequencing code, giving shorter power sequences which should reduce the effect of any artifacts that exist. Reporting of power management decisions via debugfs, enabling much easier diagnosis of path setup problems. Beginning of work to factor [...]]]></description>
			<content:encoded><![CDATA[<p>Linux 2.6.32 was released overnight. This has been a fairly busy release for ASoC, with changes including:</p>
<ul>
<li><a href="http://www.sirena.org.uk/log/2009/06/08/dapm-power-sequence-optimisation/">Redone power sequencing code</a>, giving shorter power sequences which<br />
should reduce the effect of any artifacts that exist.</li>
<li>Reporting of power management decisions via debugfs, enabling much<br />
easier diagnosis of path setup problems.</li>
<li>Beginning of work to factor out the register access and caching code<br />
from the individual CODEC drivers into a shared file.  This needs to<br />
be rolled out over more CODEC drivers.</li>
<li>New CODEC drivers for AD1836, AK4642, MAX9877, WM8523, WM8776, WM8961, WM8974 and WM8993</li>
<li>New CPU support for multi-channel Blackfin SPORT, DaVinci McASP, i.MX2x SSI, and OMAP 1510 McBSP.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.sirena.org.uk/log/2009/12/03/asoc-updates-in-2-6-3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>In-kernel audio mixing</title>
		<link>http://www.sirena.org.uk/log/2009/08/15/in-kernel-audio-mixing/</link>
		<comments>http://www.sirena.org.uk/log/2009/08/15/in-kernel-audio-mixing/#comments</comments>
		<pubDate>Sat, 15 Aug 2009 17:31:16 +0000</pubDate>
		<dc:creator>Mark Brown</dc:creator>
				<category><![CDATA[ASoC]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Debian]]></category>
		<category><![CDATA[alsa]]></category>
		<category><![CDATA[DSP]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[PulseAudio]]></category>

		<guid isPermaLink="false">http://www.sirena.org.uk/log/?p=171</guid>
		<description><![CDATA[Ever since PulseAudio started to be deployed by distributions the most common complaint I&#8217;ve seen about ALSA is that unlike current versions of OSS it doesn&#8217;t provide mixing of audio from multiple applications inside the kernel. Of course what it really comes down to is that people want the system to transparently allow multiple applications [...]]]></description>
			<content:encoded><![CDATA[<p>Ever since <a href="http://www.pulseaudio.org/">PulseAudio</a> started to be deployed by distributions the most common complaint I&#8217;ve seen about ALSA is that unlike current versions of <a href="http://www.opensound.com/">OSS</a> it doesn&#8217;t provide mixing of audio from multiple applications inside the kernel. Of course what it really comes down to is that people want the system to transparently allow multiple applications to play audio simultaneously.</p>
<p>The reason <a href="http://alsa-project.org/">ALSA</a> does things the way it does is that the ALSA APIs that applications interact with are actually implemented by a library. This library provides a plugin based way of defining sound cards, one of the options for which is that the audio can be routed to or from some hardware, but sound can also be routed to other places like networked speakers. This architecture also allows plugins to provide signal processing &#8211; mixing is the example most people notice but things like soft volume controls (not all sound hardware provides volume control) or EQ are also possible.</p>
<p>This could all be implemented in kernel space but there&#8217;s some serious drawbacks in doing so. There are some substantial restrictions on what kernel space code is allowed to do, one of the most relevant being the fact that floating point instructions can&#8217;t be used. It&#8217;s harder to develop kernel code, if for no other reason than the fact that kernel code can crash the system. The main benefit that people expect from pushing things into the kernel is performance but with the facilities available in Linux there&#8217;s no real reason why performance would be better with a kernel mode implementation, kernel and user threads are both scheduled together and shared memory is available.</p>
<p>So why are people running into issues with PulseAudio? Obviously some of them are just bugs in PulseAudio &#8211; the much wider deployment that cones with being used as standard in distributions means much wider testing &#8211; but that&#8217;s not all of it, especially now PulseAudio has been in distributions for a while. The other major source of issues is that due to the need to adapt to the different needs of the applications that it is mixing together PulseAudio is a very demanding user of drivers. This means that switching to PulseAudio can expose bugs in the drivers, often bugs that have existed for years. There&#8217;s a natural tendency to blame PluseAudio when this happens but the fixes that are needed are in the drivers.</p>
<p>None of this is terribly helpful if you&#8217;ve been bitten by one of the bugs of course, but hopefully it goes some way towards explaining why this implementation has been chosen and why there have been problems.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sirena.org.uk/log/2009/08/15/in-kernel-audio-mixing/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ASoC changes in 2.6.30</title>
		<link>http://www.sirena.org.uk/log/2009/06/10/asoc-changes-in-2630/</link>
		<comments>http://www.sirena.org.uk/log/2009/06/10/asoc-changes-in-2630/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 08:31:00 +0000</pubDate>
		<dc:creator>Mark Brown</dc:creator>
				<category><![CDATA[ASoC]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Debian]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[DAPM]]></category>
		<category><![CDATA[jack]]></category>
		<category><![CDATA[status]]></category>

		<guid isPermaLink="false">http://www.sirena.org.uk/log/?p=174</guid>
		<description><![CDATA[Linux 2.6.30 was released today. This has been a fairly quiet release from the ASoC point of view with no substantial API changes for drivers but there&#8217;s a few new interfaces which people may find helpful. Highlights include: A simple wrapper for the standard ALSA jack detection interface. This helps makes jacks a bit easier [...]]]></description>
			<content:encoded><![CDATA[<p>Linux 2.6.30 was released today. This has been a fairly quiet release from the ASoC point of view with no substantial API changes for drivers but there&#8217;s a few new interfaces which people may find helpful. Highlights include:</p>
<ul>
<li>A simple wrapper for the standard ALSA jack detection interface. This helps makes jacks a bit easier to use in a multi-component system, providing a framework for using multiple jack detection methods on a single jack (eg, for both headphone and microphone) and automatic integration with DAPM, allowing output paths to be powered up only when a jack is present. See <a href="http://git.kernel.org/?p=linux/kernel/git/broonie/sound-2.6.git;a=blob;f=sound/soc/soc-jack.c;h=28346fb2e70c08033158920f4ae7a35032239762;hb=for-2.6.30">sound/soc/soc-jack.c</a>.</li>
<li>A new SND_SOC_DAPM_PIN_SWITCH helper for machines exposing control of DAPM pins to user applications.</li>
<li>More conversion of ASoC CODEC drivers to use the new device model integrated driver registration methods.</li>
<li>TI DaVinci support now works in mainline, no out of tree patches are required for the DMA code.</li>
</ul>
<p>plus a selection of new drivers and enhancements to existing drivers..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sirena.org.uk/log/2009/06/10/asoc-changes-in-2630/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DAPM power sequence optimisation</title>
		<link>http://www.sirena.org.uk/log/2009/06/08/dapm-power-sequence-optimisation/</link>
		<comments>http://www.sirena.org.uk/log/2009/06/08/dapm-power-sequence-optimisation/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 18:08:26 +0000</pubDate>
		<dc:creator>Mark Brown</dc:creator>
				<category><![CDATA[ASoC]]></category>
		<category><![CDATA[Planet Debian]]></category>
		<category><![CDATA[DAPM]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.sirena.org.uk/log/?p=178</guid>
		<description><![CDATA[I recently implemented some enhancements to DAPM, the part of ASoC which minimizes the power consumption of the embedded audio subsystem by keeping any unused components powered off while avoiding audible artifacts as the power changes. Prior to these changes DAPM used to change the power for each component with an individual register write which [...]]]></description>
			<content:encoded><![CDATA[<p>I recently implemented some enhancements to DAPM, the part of ASoC which minimizes the power consumption of the embedded audio subsystem by keeping any unused components powered off while avoiding audible artifacts as the power changes. Prior to these changes DAPM used to change the power for each component with an individual register write which with many systems would result in a lot of repeated writes to the same register. This can get noticeable on slow or heavily contended buses, especially around resume. With these changes DAPM will try to minimize the number of register writes it does while still trying to avoid audio artifacts. These changes are currently available from the dapm branch of <a href="http://git.kernel.org/?p=linux/kernel/git/broonie/sound-2.6.git;a=summary">my ASoC git repository</a> and should make their way into 2.6.32. Once they are merged the dapm branch is likely to be removed.</p>
<p>As with any substantial change in the power sequencing there is a risk that there may have been some performance regressions on some systems &#8211; my biggest concern is that some thing were being helped by the delays introduced by the repeated register writes and may require special handling to fix. My hope is that this won&#8217;t happen if anything it should fix some problems by ensuring that both left and right channels of stereo paths get powered up together without wide testing that&#8217;s hard to guarantee. Any testing that you can do on your systems would be greatly appreciated.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sirena.org.uk/log/2009/06/08/dapm-power-sequence-optimisation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
