<?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>SlimLogic Ltd &#187; Blogs</title>
	<atom:link href="http://www.slimlogic.co.uk/?cat=7&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.slimlogic.co.uk</link>
	<description>Mobile and Embedded Linux Solutions</description>
	<lastBuildDate>Wed, 03 Feb 2010 14:10:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Multithreaded ALSA capture code with overrun debug</title>
		<link>http://www.slimlogic.co.uk/?p=217</link>
		<comments>http://www.slimlogic.co.uk/?p=217#comments</comments>
		<pubDate>Wed, 03 Feb 2010 14:09:47 +0000</pubDate>
		<dc:creator>lrg</dc:creator>
				<category><![CDATA[Blogs]]></category>

		<guid isPermaLink="false">http://www.slimlogic.co.uk/?p=217</guid>
		<description><![CDATA[I've been working on some ASoC multi channel capture drivers lately and was in need of a nice analysis tool to show PCM data throughput and PCM buffering information when writing to slow-ish asynchronous memory cards.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working on some ASoC multi channel capture drivers lately and was in need of a nice analysis tool to show PCM data throughput and PCM buffering information when writing to slow-ish asynchronous memory cards.</p>
<p>SoC memory card controllers tend to write data in asynchronous bursts and usually compete for SoC CPU IO resources with the audio subsystem. This competition for SoC IO resources between the audio and memory card subsystems can often lead to problems for audio. The two most common audio problems are :-</p>
<ol>
<li>Audio Controller FIFO overruns.</li>
<li>Audio DMA buffer overruns.</li>
</ol>
<p>Audio FIFO overruns are caused when the DMA controller cannot empty the audio FIFO before the next incoming audio PCM sample is shifted into the already full FIFO. This ultimately causes the FIFO to lose some audio PCM data and potentially also lose left+right channel alignment. FIFO overruns can be minimised by using the largest FIFO possible and by setting the FIFO DMA IRQ watermark to a value that can tolerate high latency. This should be done by the driver and may depend on number of channels capture and rate.</p>
<p>Audio DMA buffer overruns can be caused when any userspace process reading (capturing) the PCM audio data from the ALSA driver does not manage to completely read the data (from the DMA circular buffer) before it is overwritten by new new data (by the DMA). DMA buffer overruns can be mostly eliminated by making sure our capture program can read from the ALSA driver without any hinderance. This can be achieved by having separate reader and writer threads.</p>
<p>I&#8217;ve posted some example ALSA multi threaded capture code<a title="ALSA capture source code" href="http://sources.slimlogic.co.uk/misc/capture.c" target="_blank"> here</a>. It&#8217;s by no means complete and is a little rough around the edges but should be helpful to anyone debuging overrun or buffering issues. It can be built as follows:-</p>
<p><code>gcc capture.c -lasound -o capture</code></p>
<p>The program will capture audio data from the default ALSA device until it receives a CTRL-C signal where it dumps the buffering usage data.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.slimlogic.co.uk/?feed=rss2&amp;p=217</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ARM Cortex A9 Angstrom Console Image and Tool Chain</title>
		<link>http://www.slimlogic.co.uk/?p=195</link>
		<comments>http://www.slimlogic.co.uk/?p=195#comments</comments>
		<pubDate>Fri, 22 Jan 2010 18:13:17 +0000</pubDate>
		<dc:creator>lrg</dc:creator>
				<category><![CDATA[Blogs]]></category>

		<guid isPermaLink="false">http://www.slimlogic.co.uk/?p=195</guid>
		<description><![CDATA[I've now managed to successfully build an Angstrom Linux console image and cross gcc tool chain for the ARM Cortex-A9 CPU]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve now managed to successfully build an Angstrom Linux console image and cross gcc tool chain for the ARM Cortex-A9 CPU found on some newer SoC boards. Although unfortunately I&#8217;ve not yet had a chance to test this image yet as I&#8217;m waiting on the delivery of my new Cortex A9 hardware.</p>
<p>The angstrom-2008.1.conf binutils, gcc and glibc versions used are<br />
<code><br />
PREFERRED_VERSION_glibc 		?= "2.10.1"<br />
PREFERRED_VERSION_glibc-initial 	?= "2.10.1"<br />
ANGSTROM_GCC_VERSION_armv7a              ?= "4.4.2"<br />
ANGSTROM_BINUTILS_VERSION_armv7a         ?= "2.20"<br />
</code></p>
<p>Whilst the CPU tuning for Cortex A9 is<br />
<code><br />
# Instead of using -mfpu=vfp[2] we can use -mfpu=neon to make use of gcc intrinsics[1] and vectorize loops with -ftree-vectorize[3]<br />
# [1] http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html<br />
# [2] http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html<br />
# [3] https://support.codesourcery.com/GNUToolchain/kbentry29</p>
<p>TARGET_CC_ARCH = "-march=armv7-a -mtune=cortex-a9 -mfpu=neon -mfloat-abi=softfp"<br />
FEED_ARCH = "armv7a"<br />
PACKAGE_EXTRA_ARCHS += "armv4 armv4t armv5te armv6 armv7 armv7a"<br />
BASE_PACKAGE_ARCH = "armv7a"<br />
</code></p>
<p>All the Openembedded files required to build this too chain and image are available via git in the SlimLogic OE <a href="http://git.slimlogic.co.uk/cgi-bin/cgit.cgi/oe.git/log/?h=omap4">omap4</a> branch. </p>
<p>The repository URL is <code>git://git.slimlogic.co.uk/oe.git</code> for anyone interested in adding it as a remote.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.slimlogic.co.uk/?feed=rss2&amp;p=195</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Updated: Seven new Voltage regulator drivers for Linux</title>
		<link>http://www.slimlogic.co.uk/?p=184</link>
		<comments>http://www.slimlogic.co.uk/?p=184#comments</comments>
		<pubDate>Thu, 27 Aug 2009 18:23:29 +0000</pubDate>
		<dc:creator>lrg</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.slimlogic.co.uk/?p=184</guid>
		<description><![CDATA[New regulator drivers for the Freescale MC13783, Motorola PCAP2, Wolfson WM831x, Texas Instruments TPS65023 and TPS6507x, Marvell 88PM8607 and ST-Ericsson AB3100 have been accepted into the Linux voltage regulator development tree...]]></description>
			<content:encoded><![CDATA[<p><strong>Updated:</strong> New regulator drivers for the Freescale MC13783, Motorola PCAP2, Wolfson WM831x, Texas Instruments TPS65023 and TPS6507x, Marvell 88PM8607 and ST-Ericsson AB3100 have been accepted into the Linux voltage regulator development tree and will be heading for the mainline kernel in the next merge window. This should approximately take place in the next month and mean the drivers will be included in Linux 2.6.32.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.slimlogic.co.uk/?feed=rss2&amp;p=184</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux Voltage Regulator for 2.6.30</title>
		<link>http://www.slimlogic.co.uk/?p=167</link>
		<comments>http://www.slimlogic.co.uk/?p=167#comments</comments>
		<pubDate>Thu, 16 Apr 2009 11:37:55 +0000</pubDate>
		<dc:creator>lrg</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.slimlogic.co.uk/?p=167</guid>
		<description><![CDATA[The following Voltage regulator updates were accepted for Linux 2.6.30....]]></description>
			<content:encoded><![CDATA[<p>The changes for 2.6.30 include a new twl4030 regulator driver, improved regulator init_data<br />
handling, refcount fixes, some new voltage API functions and numerous minor fixes. Full change log:-</p>
<p>Adrian Hunter (1):<br />
      regulator: twl4030 VAUX3 supports 3.0V</p>
<p>Andrew Morton (1):<br />
      regulator: minor cleanup of virtual consumer</p>
<p>David Brownell (10):<br />
      regulator: minor cleanup of virtual consumer<br />
      regulator: add get_status()<br />
      regulator: enumerate voltages (v2)<br />
      regulator: get_status() grows kerneldoc<br />
      regulator: twl4030 regulators<br />
      regulator: twl4030 voltage enumeration (v2)<br />
      MMC: regulator utilities<br />
      twl4030-regulator: list more VAUX4 voltages<br />
      regulator: refcount fixes<br />
      twl4030-regulator: expose VPLL2</p>
<p>Jonathan Cameron (1):<br />
      Regulator: Push lock out of _notifier_call_chain + add voltage change event.</p>
<p>Liam Girdwood (1):<br />
      regulator: email &#8211; update email address and regulator webpage.</p>
<p>Mark Brown (16):<br />
      regulator: Pass regulator init data as explict argument when registering<br />
      regulator: Allow init data to be supplied for bq24022<br />
      regulator: Allow init_data to be passed to fixed voltage regulators<br />
      regulator: Make fixed voltage regulators visible in Kconfig<br />
      regulator: Mark attributes table for virtual regulator static<br />
      regulator: Hoist struct regulator_dev out of core to fix notifiers<br />
      regulator: Suggest use of datasheet supply or pin names for consumers<br />
      regulator: Allow regulators to set the initial operating mode<br />
      regulator: Fix get_mode() for WM835x DCDCs<br />
      regulator: Implement list_voltage() for WM8400 DCDCs and LDOs<br />
      regulator: Don&#8217;t warn on omitted voltage constraints<br />
      regulator: Implement list_voltage for WM835x LDOs and DCDCs<br />
      regulator: Allow boot_on regulators to be disabled by clients<br />
      regulator: Don&#8217;t warn if we failed to get a regulator<br />
      regulator: Don&#8217;t increment use_count for boot_on regulators<br />
      regulator: Support disabling of unused regulators by machines</p>
<p>Mike Rapoport (1):<br />
      regulator: add unset_regulator_supplies to fix regulator_unregister</p>
<p>Randy Dunlap (1):<br />
      regulator: fix header file missing kernel-doc</p>
<p><code> Documentation/ABI/testing/sysfs-class-regulator |   57 +++-<br />
 MAINTAINERS                                     |    2 +-<br />
 drivers/mfd/twl4030-core.c                      |    2 -<br />
 drivers/mmc/core/core.c                         |  100 +++++<br />
 drivers/regulator/Kconfig                       |   13 +-<br />
 drivers/regulator/Makefile                      |    1 +<br />
 drivers/regulator/bq24022.c                     |    3 +-<br />
 drivers/regulator/core.c                        |  386 ++++++++++++++----<br />
 drivers/regulator/da903x.c                      |    3 +-<br />
 drivers/regulator/fixed.c                       |    3 +-<br />
 drivers/regulator/pcf50633-regulator.c          |    3 +-<br />
 drivers/regulator/twl4030-regulator.c           |  500 +++++++++++++++++++++++<br />
 drivers/regulator/virtual.c                     |   14 +-<br />
 drivers/regulator/wm8350-regulator.c            |   57 +++-<br />
 drivers/regulator/wm8400-regulator.c            |   36 ++-<br />
 include/linux/i2c/twl4030.h                     |   47 +++<br />
 include/linux/mmc/host.h                        |    5 +<br />
 include/linux/regulator/bq24022.h               |    3 +<br />
 include/linux/regulator/consumer.h              |    6 +-<br />
 include/linux/regulator/driver.h                |   81 ++++-<br />
 include/linux/regulator/fixed.h                 |    3 +<br />
 include/linux/regulator/machine.h               |   12 +-<br />
 22 files changed, 1220 insertions(+), 117 deletions(-)<br />
 create mode 100644 drivers/regulator/twl4030-regulator.c</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.slimlogic.co.uk/?feed=rss2&amp;p=167</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
