<?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; kernel</title>
	<atom:link href="http://www.sirena.org.uk/log/tag/kernel/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>ASoC updates in 2.6.34</title>
		<link>http://www.sirena.org.uk/log/2010/05/17/asoc-updates-in-2-6-34/</link>
		<comments>http://www.sirena.org.uk/log/2010/05/17/asoc-updates-in-2-6-34/#comments</comments>
		<pubDate>Mon, 17 May 2010 04:03:43 +0000</pubDate>
		<dc:creator>Mark Brown</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Debian]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[ASoC]]></category>
		<category><![CDATA[kernel]]></category>

		<guid isPermaLink="false">http://www.sirena.org.uk/log/?p=251</guid>
		<description><![CDATA[Linux 2.6.34 was released today. This contains a fairly substantial batch of ASoC updates, including: Support for turning CODEC biases off completely when idle, providing power savings for modern devices with ground referenced outputs where this can be done quickly at runtime without pops and clicks. Support for disabling physical writes to the device in [...]]]></description>
			<content:encoded><![CDATA[<p>Linux 2.6.34 was released today. This contains a fairly substantial batch of ASoC updates, including:</p>
<ul>
<li>Support for turning CODEC biases off completely when idle, providing power savings for modern devices with ground referenced outputs where this can be done quickly at runtime without pops and clicks.</li>
<li>Support for disabling physical writes to the device in the generic cache control code, allowing devices to be completely powered off when idle while still providing their control to userspace through the standard register interfaces.</li>
<li>Support for tuning the time ASoC waits before powering things down after playback has finished (in order to involve issues between tracks or similar) at runtime or from the machine driver.</li>
<li>New drivers for DA7210, DB1200 I2S and AC97 controllers, i.MX3x SSI ports, OMAP4 McPDM ports, S3C64xx AC97 controller, SH SIU (Sound Interface Unit), WM2000, WM8904, WM8912, WM8955, WM8978, and WM8994</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.sirena.org.uk/log/2010/05/17/asoc-updates-in-2-6-34/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>Setting up regulator consumers with dev_name</title>
		<link>http://www.sirena.org.uk/log/2009/09/16/setting-up-regulator-consumers-with-dev_name/</link>
		<comments>http://www.sirena.org.uk/log/2009/09/16/setting-up-regulator-consumers-with-dev_name/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 12:29:13 +0000</pubDate>
		<dc:creator>Mark Brown</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Debian]]></category>
		<category><![CDATA[regulator]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[kernel]]></category>

		<guid isPermaLink="false">http://www.sirena.org.uk/log/?p=43</guid>
		<description><![CDATA[The Linux kernel regulator API requires that each system sets up the connections between the various voltage and current regulators in the system and the devices they supply, known as consumers within the regulator API. This is done using the struct device for the consumer device as the key for consumer access. This works well [...]]]></description>
			<content:encoded><![CDATA[<p>The Linux kernel regulator API requires that each system sets up the connections between the various voltage and current regulators in the system and the devices they supply, known as consumers within the regulator API. This is done using the <tt>struct device</tt> for the consumer device as the key for consumer access. This works well for things like platform devices which are generally always allocated at system startup but is not really usable with buses like I2C which only allocate the <tt>struct device</tt> late on during system startup.</p>
<p>To help work with these buses Linux 2.6.32 will follow the clock API and allow the use of the <tt>dev_name()</tt> for the device instead. A new field <tt>dev_name</tt> has been added to <tt>struct regulator_consumer_supply</tt> which should be used instead of <tt>dev</tt> &#8211; this is now the preferred mechanism. It is a simple string and so does not depend on any other initialization.</p>
<p>For those backporting the relevant commit is <a href="http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=history;f=drivers/regulator/core.c;h=744ea1d0b59bf084f19559b8f199b644fbb0899c;hb=master">744ea1d0b59bf084f19559b8f199b644fbb0899c</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sirena.org.uk/log/2009/09/16/setting-up-regulator-consumers-with-dev_name/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASoC updates in 2.6.31</title>
		<link>http://www.sirena.org.uk/log/2009/09/10/asoc-updates-in-2-6-31/</link>
		<comments>http://www.sirena.org.uk/log/2009/09/10/asoc-updates-in-2-6-31/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 10:33:07 +0000</pubDate>
		<dc:creator>Mark Brown</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Debian]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[ASoC]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://www.sirena.org.uk/log/?p=138</guid>
		<description><![CDATA[Linux 2.6.31 was released today. This was a fairly busy release for the ASoC subsystem, with updates including: DAPM supply widget, for automatically managing things like charge pumps and gateable clocks which may be used by more than one widget. Core support for setting up constraints for symmetric sample rates (for systems with a shared [...]]]></description>
			<content:encoded><![CDATA[<p>Linux 2.6.31 was released today. This was a fairly busy release for the ASoC subsystem, with updates including:</p>
<ul>
<li>DAPM supply widget, for automatically managing things like charge pumps and gateable clocks which may be used by more than one widget.</li>
<li>Core support for setting up constraints for symmetric sample rates (for systems with a shared LRCLK).</li>
<li>Support for a range of new CODECs: STAC9766, WM8940, WM8960, WM8988, and WM9081</li>
<li>New CPU support too: <a href="http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MPC5200">MPC5200</a> AC97 and the I2S interface of the <a href="http://www.stretchinc.com/products/s6000.php">Stretch S6000</a>.</li>
</ul>
<p>Plus lots of updates and fixes to existing code, especially to the OMAP and TWL4030 drivers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sirena.org.uk/log/2009/09/10/asoc-updates-in-2-6-31/feed/</wfw:commentRss>
		<slash:comments>0</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>What&#8217;s the standard Linux audio API?</title>
		<link>http://www.sirena.org.uk/log/2008/09/26/whats-the-standard-linux-audio-api/</link>
		<comments>http://www.sirena.org.uk/log/2008/09/26/whats-the-standard-linux-audio-api/#comments</comments>
		<pubDate>Fri, 26 Sep 2008 11:39:38 +0000</pubDate>
		<dc:creator>Mark Brown</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Debian]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[alsa]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[oss]]></category>

		<guid isPermaLink="false">http://www.sirena.org.uk/log/?p=133</guid>
		<description><![CDATA[Lennart Pottering&#8217;s post about the sound APIs available for Linux appears to have caused some consternation from people working with the modern out of tree OSS drivers who feel that the current, out of tree, OSS drivers are being unfairly maligned. This rather misses the point of his post. The fact that there are improved [...]]]></description>
			<content:encoded><![CDATA[<p>Lennart Pottering&#8217;s post about the <a href="http://0pointer.de/blog/projects/guide-to-sound-apis.html">sound APIs available for Linux</a> appears to have caused some <a href="http://blog.rastageeks.org/spip.php?article14">consternation from people working with the modern out of tree OSS drivers</a> who feel that the current, out of tree, OSS drivers are being unfairly maligned. This rather misses the point of his post. The fact that there are improved versions of the OSS code doesn&#8217;t really help developers who are trying to target current Linux distributions which only ship the old OSS drivers. From this point of view the new OSS drivers are probably best looked at as a completely different product.</p>
<p>Joss is right, though &#8211; <a href="http://np237.livejournal.com/19554.html">most applications should be working with a higher level user space API</a> than either ALSA or OSS. One of the most obvious examples of this is in the embedded space where there are often vast numbers of controls that need to be exported in order to support the complex audio routing that devices like phones can have. Most of these should only be touched very occasionally when changing use case and should therefore be hidden from normal applications where they&#8217;re at best irrelevant and at worst confuse end users. They do, however, need to be exposed by the kernel in order to allow user space the flexibility to manage the audio configuration of the system at run time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sirena.org.uk/log/2008/09/26/whats-the-standard-linux-audio-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Release day churn</title>
		<link>http://www.sirena.org.uk/log/2008/07/15/release-day-churn/</link>
		<comments>http://www.sirena.org.uk/log/2008/07/15/release-day-churn/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 20:03:59 +0000</pubDate>
		<dc:creator>Mark Brown</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Debian]]></category>
		<category><![CDATA[ASoC]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[merge]]></category>
		<category><![CDATA[touch]]></category>

		<guid isPermaLink="false">http://www.sirena.org.uk/log/?p=84</guid>
		<description><![CDATA[The 2.6.27 pull request for ALSA was something of a surprise to read &#8211; a large proportion of the changes in there are for ASoC. Not what I was expecting given how many ASoC changes there are still to be merged, but it&#8217;s nice to see, especially given the general problems with embedded users contributing [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://marc.info/?l=linux-kernel&amp;m=121602662531525&amp;w=2">2.6.27 pull request for ALSA</a> was something of a surprise to read &#8211; a large proportion of the changes in there are for <a href="http://opensource.wolfsonmicro.com/node/6">ASoC</a>. Not what I was expecting given how many ASoC changes there are still to be merged, but it&#8217;s nice to see, especially given the general problems with embedded users contributing code back.</p>
<p>In other kernel release news, I&#8217;m glad to see some of my other work is <a href="http://mikearthur.co.uk/2008/07/two-busy-months/">making people happy</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sirena.org.uk/log/2008/07/15/release-day-churn/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
