<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://alsa-project.org/main/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://alsa-project.org/main/api.php?action=feedcontributions&amp;user=Perex&amp;feedformat=atom</id>
		<title>AlsaProject - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://alsa-project.org/main/api.php?action=feedcontributions&amp;user=Perex&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/Special:Contributions/Perex"/>
		<updated>2013-05-20T01:49:42Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.20alpha</generator>

	<entry>
		<id>http://alsa-project.org/main/index.php/Main_Page_News</id>
		<title>Main Page News</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/Main_Page_News"/>
				<updated>2013-04-12T08:48:19Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; 2013-04-12&lt;br /&gt;
: alsa 1.0.27 release (user space) | [[Changes v1.0.26 v1.0.27]]&lt;br /&gt;
&lt;br /&gt;
; 2012-09-06&lt;br /&gt;
: alsa 1.0.26 release (user space) | [[Changes v1.0.25 v1.0.26]]&lt;br /&gt;
&lt;br /&gt;
; 2012-01-25&lt;br /&gt;
: alsa 1.0.25 release | [[Changes v1.0.24 v1.0.25]]&lt;br /&gt;
&lt;br /&gt;
; 2011-01-31&lt;br /&gt;
: alsa 1.0.24 release | [[Changes v1.0.23 v1.0.24]]&lt;br /&gt;
&lt;br /&gt;
; 2010-04-16&lt;br /&gt;
: alsa 1.0.23 release | [[Changes v1.0.22 v1.0.23]]&lt;br /&gt;
&lt;br /&gt;
; 2009-12-28&lt;br /&gt;
: alsa-driver 1.0.22.1 release | [[Changes v1.0.22 v1.0.22.1]]&lt;br /&gt;
&lt;br /&gt;
; 2009-12-16&lt;br /&gt;
: alsa 1.0.22 release | [[Changes v1.0.21 v1.0.22]]&lt;br /&gt;
&lt;br /&gt;
; 2009-09-09&lt;br /&gt;
: alsa-lib 1.0.21a release | [[Changes v1.0.21 v1.0.21a]]&lt;br /&gt;
&lt;br /&gt;
; 2009-08-31&lt;br /&gt;
: alsa 1.0.21 release | [[Changes v1.0.20 v1.0.21|changes from 1.0.20]]&lt;br /&gt;
&lt;br /&gt;
; 2009-05-06&lt;br /&gt;
: alsa 1.0.20 release | [[Changes v1.0.19 v1.0.20|changes from 1.0.19]]&lt;br /&gt;
&lt;br /&gt;
; 2009-01-19&lt;br /&gt;
: alsa 1.0.19 release | [[Changes v1.0.18 v1.0.19|changes from 1.0.18]]&lt;br /&gt;
&lt;br /&gt;
; 2008-11-12&lt;br /&gt;
: alsa-driver 1.0.18a release | [[Changes v1.0.18 v1.0.18a|changes from 1.0.18]]&lt;br /&gt;
&lt;br /&gt;
; 2008-10-29&lt;br /&gt;
: alsa-driver,alsa-lib,alsa-utils,alsa-tools,alsa-plugins 1.0.18 release | [[Changes v1.0.18rc3 v1.0.18|changes from 1.0.18rc3]] | [[Changes v1.0.17 v1.0.18|changes from 1.0.17]]&lt;br /&gt;
&lt;br /&gt;
; 2008-09-09&lt;br /&gt;
: alsa-driver,alsa-lib,alsa-utils,alsa-plugins 1.0.18rc3 release | [[Changes v1.0.18rc2 v1.0.18rc3|changes from 1.0.18rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2008-08-19&lt;br /&gt;
: alsa-utils,alsa-plugins 1.0.18rc2 release | [[Changes v1.0.18rc1 v1.0.18rc2|changes from 1.0.18rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2008-08-18&lt;br /&gt;
: alsa-driver.alsa-utils,alsa-plugins 1.0.18rc1 release | [[Changes v1.0.17a v1.0.18rc1|changes from 1.0.17a]]&lt;br /&gt;
&lt;br /&gt;
; 2008-08-18&lt;br /&gt;
: alsa-lib 1.0.17a release | [[Changes v1.0.17 v1.0.17a|changes from 1.0.17]]&lt;br /&gt;
&lt;br /&gt;
; 2008-07-14&lt;br /&gt;
: ALSA 1.0.17 release (all packages) | [[Changes v1.0.17rc3 v1.0.17|changes from 1.0.17rc3]] | [[Changes v1.0.16 v1.0.17|changes from 1.0.16]]&lt;br /&gt;
&lt;br /&gt;
; 2008-06-27&lt;br /&gt;
: ALSA 1.0.17rc3 release (driver only) | [[Changes v1.0.17rc2 v1.0.17rc3|changes from 1.0.17rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2008-06-16&lt;br /&gt;
: ALSA 1.0.17rc2 release | [[Changes v1.0.17rc1 v1.0.17rc2|changes from 1.0.17rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2008-06-06&lt;br /&gt;
: ALSA 1.0.17rc1 release | [[Changes v1.0.16 v1.0.17rc1|changes from 1.0.16]]&lt;br /&gt;
&lt;br /&gt;
; 2008-05-20&lt;br /&gt;
: All repositories converted from HG (Mercurial) to GIT&lt;br /&gt;
&lt;br /&gt;
; 2008-02-06&lt;br /&gt;
: ALSA 1.0.16 final release | [[Changes v1.0.15 v1.0.16|changes from 1.0.15]] | [[Changes v1.0.16rc2 v1.0.16|changes from 1.0.16rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2008-01-29&lt;br /&gt;
: ALSA 1.0.16rc2 release | [[Changes v1.0.16rc1 v1.0.16rc2|changes from 1.0.16rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2008-01-22&lt;br /&gt;
: ALSA 1.0.16rc1 release | [[Changes v1.0.15 v1.0.16rc1|changes from 1.0.15]]&lt;br /&gt;
&lt;br /&gt;
; 2007-10-16&lt;br /&gt;
: ALSA 1.0.15 final release | [[Changes v1.0.14 v1.0.15|changes from 1.0.14]]&lt;br /&gt;
&lt;br /&gt;
; 2007-09-26&lt;br /&gt;
: ALSA 1.0.15rc3 release | [[Changes v1.0.15rc2 v1.0.15rc3|changes from 1.0.15rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2007-09-13&lt;br /&gt;
: ALSA 1.0.15rc2 release | [[Changes v1.0.15rc1 v1.0.15rc2|changes from 1.0.15rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2007-08-31&lt;br /&gt;
: ALSA 1.0.15rc1 release | [[Changes v1.0.14 v1.0.15rc1|changes from 1.0.14]]&lt;br /&gt;
&lt;br /&gt;
; 2007-08-09&lt;br /&gt;
: ALSA WWW site switched to [http://www.mediawiki.org MediaWiki]&lt;br /&gt;
&lt;br /&gt;
; 2007-06-11&lt;br /&gt;
: ALSA 1.0.14a library bugfix release | [[Changes v1.0.14 v1.0.14a|changes from 1.0.14]]&lt;br /&gt;
&lt;br /&gt;
; 2007-06-04&lt;br /&gt;
: ALSA 1.0.14 release | [[Changes v1.0.13 v1.0.14|changes from 1.0.13]] | [[Changes v1.0.14rc4 v1.0.14|changes from 1.0.14rc4]]&lt;br /&gt;
&lt;br /&gt;
; 2007-04-03&lt;br /&gt;
: ALSA 1.0.14rc4 release | [[Changes v1.0.14rc3 v1.0.14rc4|changes from 1.0.14rc3]]&lt;br /&gt;
&lt;br /&gt;
; 2007-03-06&lt;br /&gt;
: ALSA 1.0.14rc3 release | [[Changes v1.0.14rc2 v1.0.14rc3|changes from 1.0.14rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2007-01-16&lt;br /&gt;
: ALSA 1.0.14rc2 release | [[Changes v1.0.14rc1 v1.0.14rc2|changes from 1.0.14rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2006-12-11&lt;br /&gt;
: ALSA 1.0.14rc1 release | [[Changes v1.0.13 v1.0.14rc1|changes from 1.0.13]]&lt;br /&gt;
&lt;br /&gt;
; 2006-09-29&lt;br /&gt;
: ALSA 1.0.13 release | [[Changes v1.0.12 v1.0.13|changes from 1.0.12]] | [[Changes 1.0.13rc3 v1.0.13|changes from 1.0.13rc3]]&lt;br /&gt;
&lt;br /&gt;
; 2006-09-26&lt;br /&gt;
: ALSA 1.0.13rc3 release | [[Changes v1.0.13rc2 v1.0.13rc3|changes from 1.0.13rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2006-09-15&lt;br /&gt;
: ALSA 1.0.13rc2 release | [[Changes v1.0.13rc1 v1.0.13rc2|changes from 1.0.13rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2006-09-01&lt;br /&gt;
: ALSA 1.0.13rc1 release | [[Changes v1.0.12 v1.0.13rc1|changes from 1.0.12]]&lt;br /&gt;
&lt;br /&gt;
; 2006-08-24&lt;br /&gt;
: ALSA 1.0.12 release | [[Changes v1.0.11 v1.0.12|changes from 1.0.11]] | [[Changes 1.0.12rc3 v1.0.12|changes from 1.0.12rc3]]&lt;br /&gt;
&lt;br /&gt;
; 2006-08-15&lt;br /&gt;
: ALSA 1.0.12rc3 release (driver only) | [[Changes v1.0.12rc2 v1.0.12rc3|changes from 1.0.12rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2006-08-03&lt;br /&gt;
: ALSA 1.0.12rc2 release | [[Changes v1.0.12rc1 v1.0.12rc2|changes from 1.0.12rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2006-06-23&lt;br /&gt;
: ALSA 1.0.12rc1 release | [[Changes v1.0.11 v1.0.12rc1|changes from 1.0.11]]&lt;br /&gt;
&lt;br /&gt;
; 2006-04-19&lt;br /&gt;
: ALSA 1.0.11 final release | [[Changes v1.0.10 v1.0.11|changes from 1.0.10]]&lt;br /&gt;
&lt;br /&gt;
; 2006-04-11&lt;br /&gt;
: ALSA 1.0.11rc5 release | [[Changes v1.0.11rc4 v1.0.11rc5|changes from 1.0.11rc4]]&lt;br /&gt;
&lt;br /&gt;
; 2006-03-22&lt;br /&gt;
: ALSA 1.0.11rc4 release | [[Changes v1.0.11rc3 v1.0.11rc4|changes from 1.0.11rc3]]&lt;br /&gt;
&lt;br /&gt;
; 2006-01-29&lt;br /&gt;
: ALSA 1.0.11rc3 release | [[Changes v1.0.11rc2 v1.0.11rc3|changes from 1.0.11rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2006-01-02&lt;br /&gt;
: ALSA 1.0.11rc2 release | [[Changes v1.0.11rc1 v1.0.11rc2|changes from 1.0.11rc1]] | Happy New Year 2006&lt;br /&gt;
&lt;br /&gt;
; 2005-12-12&lt;br /&gt;
: ALSA 1.0.11rc1 release | [[Changes v1.0.10 v1.0.11rc1|changes from 1.0.10 final]]&lt;br /&gt;
&lt;br /&gt;
; 2005-11-16&lt;br /&gt;
: ALSA 1.0.10 release | [[Changes v1.0.10rc3 v1.0.10|changes from 1.0.10rc3]] |  [[Changes 1.0.9 v1.0.10|changes from 1.0.9]]&lt;br /&gt;
&lt;br /&gt;
; 2005-11-08&lt;br /&gt;
: ALSA 1.0.10rc3 release | [[Changes v1.0.10rc2 v1.0.10rc3|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-10-10&lt;br /&gt;
: ALSA 1.0.10rc2 release | [[Changes v1.0.10rc1 v1.0.10rc2|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-08-20&lt;br /&gt;
: ALSA 1.0.10rc1 release | [[Changes v1.0.9b v1.0.10rc1|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-06-07&lt;br /&gt;
: ALSA 1.0.9b release | [[Changes v1.0.9a v1.0.9b|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-06-02&lt;br /&gt;
: ALSA 1.0.9a release | [[Changes v1.0.9 v1.0.9a|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-05-27&lt;br /&gt;
: ALSA 1.0.9 final release | [[Changes v1.0.8 v1.0.9|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-05-23&lt;br /&gt;
: ALSA 1.0.9rc4 release&lt;br /&gt;
&lt;br /&gt;
; 2005-05-02&lt;br /&gt;
: ALSA 1.0.9rc3 release&lt;br /&gt;
&lt;br /&gt;
; 2005-03-24&lt;br /&gt;
: ALSA 1.0.9rc2 release&lt;br /&gt;
&lt;br /&gt;
; 2005-03-13&lt;br /&gt;
: ALSA 1.0.9rc1 release&lt;br /&gt;
&lt;br /&gt;
; 2005-01-13&lt;br /&gt;
: ALSA 1.0.8 release | [[Changes v1.0.7 v1.0.8|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-01-06&lt;br /&gt;
: ALSA 1.0.8rc2 release&lt;br /&gt;
&lt;br /&gt;
; 2004-12-22&lt;br /&gt;
: ALSA 1.0.8rc1 release&lt;br /&gt;
&lt;br /&gt;
; 2004-11-15&lt;br /&gt;
: ALSA 1.0.7 release&lt;br /&gt;
&lt;br /&gt;
; 2004-10-13&lt;br /&gt;
: ALSA 1.0.7rc2 release&lt;br /&gt;
&lt;br /&gt;
; 2004-09-08&lt;br /&gt;
: ALSA 1.0.7rc1 release&lt;br /&gt;
&lt;br /&gt;
; 2004-08-15&lt;br /&gt;
: ALSA 1.0.6 release&lt;br /&gt;
&lt;br /&gt;
; 2004-06-11&lt;br /&gt;
: ALSA server software was upgraded.  Anonymous rsync access [[Download|was changed.]]&lt;br /&gt;
&lt;br /&gt;
; 2004-05-31&lt;br /&gt;
: 1.0.5a driver release | bugfix for the &amp;quot;hang-up&amp;quot; problem in the ALSA driver initialization&lt;br /&gt;
&lt;br /&gt;
; 2004-05-28&lt;br /&gt;
: 1.0.5 release | mostly bug-fixes and cleanups&lt;br /&gt;
&lt;br /&gt;
; 2004-04-03&lt;br /&gt;
: 1.0.4 release | mostly bug-fixes and cleanups&lt;br /&gt;
&lt;br /&gt;
; 2004-03-30&lt;br /&gt;
: 1.0.4rc2 driver release | report compilation problems, please&lt;br /&gt;
&lt;br /&gt;
; 2004-03-27&lt;br /&gt;
: 1.0.4rc1 release | report compilation problems, please&lt;br /&gt;
&lt;br /&gt;
; 2004-03-13&lt;br /&gt;
: alsa-lib 1.0.3b released -  it fixes SIGSEGV problem for dmix plugin (when a specific GCC version is used)&lt;br /&gt;
&lt;br /&gt;
; 2004-03-06&lt;br /&gt;
: alsa-lib 1.0.3a released - it fixes again the dmix/dshare/dsnoop poll() problems&lt;br /&gt;
&lt;br /&gt;
; 2004-02-29&lt;br /&gt;
: 1.0.3 packages released | added driver for ATI IXP 150/200/250 chips and HDSP MADI driver&lt;br /&gt;
&lt;br /&gt;
; 2004-02-25&lt;br /&gt;
: 1.0.3rc2 packages released&lt;br /&gt;
&lt;br /&gt;
; 2004-02-04&lt;br /&gt;
: 1.0.2c driver package release | More fixes for compilation problems.&lt;br /&gt;
&lt;br /&gt;
; 2004-02-03&lt;br /&gt;
: 1.0.2b driver package release | It fixes next 2.6 kernel compilation problems.&lt;br /&gt;
&lt;br /&gt;
; 2004-01-30&lt;br /&gt;
: 1.0.2a driver package release | It should fix most of 2.6 kernel compilation problems and adds RME HDSP MADI (hdspm) driver.&lt;br /&gt;
&lt;br /&gt;
; 2004-01-27&lt;br /&gt;
: New ALSA bugtracking system using Mantis is [http://bugtrack.alsa-project.org/alsa-bug/ available].&lt;br /&gt;
&lt;br /&gt;
; 2004-01-26&lt;br /&gt;
: 1.0.2 release | &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;ENJOY!&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; 2004-01-08&lt;br /&gt;
: 1.0.1 release | &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;ENJOY!&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; 2003-12-05&lt;br /&gt;
: 1.0.0rc2 release | &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;ENJOY!&amp;lt;/font&amp;gt; | bt87x driver added, more OSS PCM emulation fixes&lt;br /&gt;
&lt;br /&gt;
; 2003-12-01&lt;br /&gt;
: 1.0.0rc1 release | &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;ENJOY!&amp;lt;/font&amp;gt; | intel8x0 driver fixes, OSS PCM emulation fixes&lt;br /&gt;
&lt;br /&gt;
; 2003-11-25&lt;br /&gt;
: 1.0.0pre3 release | alsa-tools packages is divided now - firmware files are in alsa-firmware package.&lt;br /&gt;
&lt;br /&gt;
; 2003-11-18&lt;br /&gt;
: 1.0.0pre1 release | This release is indented for wide testing.&lt;br /&gt;
&lt;br /&gt;
; 2003-10-21&lt;br /&gt;
: 0.9.8 release&lt;br /&gt;
&lt;br /&gt;
; 2003-10-13&lt;br /&gt;
: 0.9.7c driver release - PDE and vortex driver compilation fixes&lt;br /&gt;
&lt;br /&gt;
; 2003-10-10&lt;br /&gt;
: 0.9.7b driver release - it fixes serious bug in PCM (mutex hangup)&lt;br /&gt;
&lt;br /&gt;
; 2003-10-01&lt;br /&gt;
: 0.9.7a driver release - fixes bugs (including oops) in the OSS PCM emulation layer&lt;br /&gt;
&lt;br /&gt;
; 2003-09-25&lt;br /&gt;
: 0.9.7 release&lt;br /&gt;
&lt;br /&gt;
; 2003-07-28&lt;br /&gt;
: 0.9.6 release&lt;br /&gt;
&lt;br /&gt;
; 2003-07-09&lt;br /&gt;
: 0.9.5 release&lt;br /&gt;
&lt;br /&gt;
; 2003-06-01&lt;br /&gt;
: 0.9.4 release&lt;br /&gt;
&lt;br /&gt;
; 2003-05-20&lt;br /&gt;
: *** 0.9.3c driver maintaince release *** configuration fixes + other updates&lt;br /&gt;
&lt;br /&gt;
; 2003-05-19&lt;br /&gt;
: *** 0.9.3b driver maintaince release *** ISA PnP and other fixes. We removed /proc/asound/dev directory. The 'make install' should create new device files, but in case of problems, the snddevices script should be executed.&lt;br /&gt;
&lt;br /&gt;
; 2003-04-30&lt;br /&gt;
: *** 0.9.3 release *** Moved firmware code from vxpocket and hdsp driver to alsa-tools. Enjoy!&lt;br /&gt;
&lt;br /&gt;
; 2003-03-19&lt;br /&gt;
: *** 0.9.2 release *** Added dsnoop and dshare PCM plugins to alsa-lib. Enjoy!&lt;br /&gt;
&lt;br /&gt;
; 2003-03-11&lt;br /&gt;
: *** 0.9.1 release *** First stable release of the 0.9 serie. Enjoy!&lt;br /&gt;
&lt;br /&gt;
; 2003-03-10&lt;br /&gt;
: alsa-driver 0.9.0rc8d released&lt;br /&gt;
&lt;br /&gt;
; 2003-03-08&lt;br /&gt;
: alsa-driver 0.9.0rc8c released&lt;br /&gt;
&lt;br /&gt;
; 2003-03-07&lt;br /&gt;
: alsa-lib 0.9.0rc8c and alsa-utils 0.9.0rc8a released&lt;br /&gt;
&lt;br /&gt;
; 2003-03-05&lt;br /&gt;
: alsa-lib and alsa-driver 0.9.0rc8b release&lt;br /&gt;
: alsa-driver 0.9.0rc8a released (fixed compilation problem for older kernels)&lt;br /&gt;
&lt;br /&gt;
; 2003-03-03&lt;br /&gt;
: alsa-lib 0.9.0rc8a released (fixed compilation problem)&lt;br /&gt;
&lt;br /&gt;
; 2003-03-02&lt;br /&gt;
: 0.9.0 release candidate #8 (all packages) is available for download. It is probably last release before 0.9.0 final. You will find in the alsa-lib package the dmix plugin which allows mixing of multiple PCM streams together without the client/server mechanism.&lt;br /&gt;
&lt;br /&gt;
; 2003-01-28&lt;br /&gt;
: 0.9.0 release candidate #7 (alsa-driver, alsa-lib, alsa-utils and alsa-tools packages) is available for download.&lt;br /&gt;
&lt;br /&gt;
; 2002-10-25&lt;br /&gt;
: The fix for GCC 3.2 has been integrated into the 0.9.0rc5 package. Please, redownload the updated package from our server when you reached this problem. (New package is dated 2002/10/25&lt;br /&gt;
&lt;br /&gt;
; 2002-10-24&lt;br /&gt;
: 0.9.0 release candidate #5 (alsa-driver, alsa-lib, alsa-utils and alsa-tools packages) is available for download. This &amp;quot;quick&amp;quot; release should fix the build problems for alsa-lib and alsa-utils packages.&lt;br /&gt;
: Note#2: Please, notice that we merged snd-via686 and snd-via8233 into the snd-via82xx module. Also, the snd-usb-midi module users should use the snd-usb-audio module which has integrated support for both USB audio and MIDI.&lt;br /&gt;
: Note: We have changed the kernel module symbol names (module parameter names). We removed prefix 'snd_'. Please, update your /etc/modules.conf files by hand or use our alsa-driver/utils/module-options script which does this job. Please, notice that 'snd_' prefix is not equal to 'snd-' prefix (module name) which is left unchanged.&lt;br /&gt;
&lt;br /&gt;
; 2002-10-22&lt;br /&gt;
: 0.9.0 release candidate #4 (alsa-driver, alsa-lib, alsa-utils and alsa-tools packages) is available for download.&lt;br /&gt;
&lt;br /&gt;
; 2002-08-22&lt;br /&gt;
: Note for compiling  alsa-driver-0.9.0rc3: Please remove the file - alsa-driver-0.9.0rc3/include/linux/isapnp.h - before running the configure script.&lt;br /&gt;
&lt;br /&gt;
; 2002-08-15&lt;br /&gt;
: 0.9.0 release candidate #3 (alsa-driver, alsa-lib and alsa-utils packages) is available for download.&lt;br /&gt;
&lt;br /&gt;
; 2002-08-09&lt;br /&gt;
: The new online user documentation is now public. Access is through the soundcard matrix. PHP is used to automatically provide the necessary parameters needed to set up a module and required scripts. Users are encouraged to add notes via the notes additions form.&lt;br /&gt;
&lt;br /&gt;
; 2002-06-19&lt;br /&gt;
: Release Candidate #2 is available to download. ALSA packages 0.9.0rc2 were released.&lt;br /&gt;
&lt;br /&gt;
; 2002-04-24&lt;br /&gt;
: Release Candidate #1 is available to download. ALSA packages 0.9.0rc1 were released.&lt;br /&gt;
&lt;br /&gt;
; 2002-02-26&lt;br /&gt;
: ALSA packages 0.9.0beta12 were released.&lt;br /&gt;
&lt;br /&gt;
; 2002-02-17&lt;br /&gt;
: ALSA packages 0.9.0beta11 were released. The driver package contains a new directory tree synced with the Linux 2.5 kernel.&lt;br /&gt;
&lt;br /&gt;
; 2002-02-13&lt;br /&gt;
: ALSA has been integrated to the official Linux 2.5 tree! The initial merge is in patch-2.5.5-pre1.&lt;br /&gt;
&lt;br /&gt;
; 2001-11-30&lt;br /&gt;
: The 0.5.12a driver was released. It's maintaince release to fix problems with 2.4.14+ kernels. &amp;lt;BR&amp;gt; The 0.9.0beta10 packages were released.&lt;br /&gt;
&lt;br /&gt;
; 2001-11-05&lt;br /&gt;
: The 0.9.0beta9 packages were released.  &amp;lt;hr /&amp;gt; The 0.5.12 driver was released.&lt;br /&gt;
&lt;br /&gt;
; 2001-09-27&lt;br /&gt;
: The 0.9.0beta8 packages were released.&lt;br /&gt;
&lt;br /&gt;
; 2001-08-23&lt;br /&gt;
: The 0.9.0beta7 packages were released.&lt;br /&gt;
&lt;br /&gt;
; 2001-07-22&lt;br /&gt;
: The 0.9.0beta6 alsa-driver and alsa-lib packages have fixed compilation bugs. Please, download these packages again.&lt;br /&gt;
&lt;br /&gt;
; 2001-07-20&lt;br /&gt;
: The 0.9.0beta6 packages were released for public.&lt;br /&gt;
&lt;br /&gt;
; 2001-06-28&lt;br /&gt;
: The 0.9.0beta5 packages were released for public with uniform support for multichannel cards and raw IEC958 (S/PDIF).&lt;br /&gt;
&lt;br /&gt;
; 2001-05-25&lt;br /&gt;
: Mailing lists are moved to SourceForge. Please, check [[Mailing-lists|this page]] for the subscription details.&lt;br /&gt;
: The 0.9.0beta4 packages were released for public.&lt;br /&gt;
&lt;br /&gt;
; 2001-05-14&lt;br /&gt;
: The driver 0.5.11 was released. Changes: IA64 arch support, ALi 5451 driver added, AWACS driver added (for PPC), AC'97, PCM OSS emulation, sequencer OSS emulation, AD1816A, ALS4000, AZT2320, CMIPCI, CS4236, CS4281, CS461X, ES1968, Maestro 3, NM256, OPL3SA2, SB16, SB-AWE, YMFPCI.&lt;br /&gt;
&lt;br /&gt;
; 2001-03-20&lt;br /&gt;
: The 0.9.0beta3 packages were released for public.&lt;br /&gt;
&lt;br /&gt;
; 2001-03-02&lt;br /&gt;
: The 0.9.0beta2 packages were released for public.&lt;br /&gt;
&lt;br /&gt;
; 2001-02-21&lt;br /&gt;
: The 0.9.0beta1 packages were released for public. Please, check out our FTP site to obtain them.&lt;br /&gt;
&lt;br /&gt;
; 2001-01-23&lt;br /&gt;
: The ALSA driver package version 0.5.10b was released. New driver: VIA VT8233 South Bridge. Bugfixes: NM256, AC'97.&lt;br /&gt;
&lt;br /&gt;
; 2001-01-07&lt;br /&gt;
: The ALSA driver package version 0.5.10a was released. New driver: NeoMagic NM256AV/ZX. Bugfixes: Maestro3, MPU401 UART, AZT2320, RME96, CS461x, timer, YMFPCI, CMI8330, FM801, CS4232, ENS1371, 2.4.0-prerelease kernel support.&lt;br /&gt;
&lt;br /&gt;
; 2000-12-07&lt;br /&gt;
: The ALSA packages version 0.5.10 were released. New drivers: ALS4000, Maestro3 (Allegro), CS4281. Bugfixes: AC'97 code, SB16, EMUX000 MIDI, CMIPCI, SB8, CS4236, Intel8x0, CS461x, YMFPCI, MPU401, AD1816A, 2.2.18pre kernels, man pages.&lt;br /&gt;
&lt;br /&gt;
; 2000-10-10&lt;br /&gt;
: ALSA driver package version 0.5.9d was released. Bugfixes:  2.2.18pre kernels, YMFPCI, CMIPCI, EMU10K1, OSS sequencer emulator, CS4236, RME9652, rawmidi, intel8x0.&lt;br /&gt;
&lt;br /&gt;
; 2000-09-22&lt;br /&gt;
: ALSA project helps to realize the unique demonstration prepared by the Audio Engineering Society's (AES) Technical Committee on Network Audio Systems. Recording Engineers in Los Angeles will mix 12 high quality audio channels streamed live over the Internet from Montreal. [http://www.aes.org/events/109/events.cfm Event description.] [http://www.cim.mcgill.ca/~jer/projects/aes/ Demo description.]&lt;br /&gt;
&lt;br /&gt;
; 2000-09-02&lt;br /&gt;
: ALSA driver package version 0.5.9c was released. Bugfixes:  SB16, AD1816A, AZT2320, EMU8000/EMU10K1, CMIPCI, YMFPCI, intel-i8x0, general. &amp;lt;hr&amp;gt; ALSA package with utilities version 0.5.9b was released. Updated programs: aplay, aseqnet.&lt;br /&gt;
&lt;br /&gt;
; 2000-08-18&lt;br /&gt;
: ALSA driver package version 0.5.9b was released. More bugfixes: CS4236, EMU10K1, OSS mmap() for non-x86 platforms, ENS1370, ENS1371.&lt;br /&gt;
&lt;br /&gt;
; 2000-08-11&lt;br /&gt;
: ALSA driver package version 0.5.9a was released. It contains more 64-bit cleanaups and support for 2.4.0-test6 kernel.&lt;br /&gt;
&lt;br /&gt;
; 2000-08-07&lt;br /&gt;
: Packages 0.5.9 were released. These packages contain cleanups for alpha linux platform. Changed drivers: OPTi92x/93x, VIA686A, YMFPCI, MPU-401, EMU10K1, SB16, SB8, seq_virmidi, ENS1370/1, rawmidi.&lt;br /&gt;
&lt;br /&gt;
; 2000-06-25&lt;br /&gt;
: The driver 0.5.8b was released containing bugfixes for these drivers: sequencer, YMFPCI, CS4236, ES1968, ICE1712, Opti92x/93x, EMU10K1.&lt;br /&gt;
&lt;br /&gt;
; 2000-06-06&lt;br /&gt;
: The driver 0.5.8a was released. It contains compilation bugfix for latest 2.3 and 2.4-test kernels. The Yamaha driver was fixed for YMF724F.&lt;br /&gt;
&lt;br /&gt;
; 2000-06-05&lt;br /&gt;
: Stable packages 0.5.8 were released. Two new drivers were added: the C-Media CMI8338 and 8738 PCI driver and the Yamaha YMF72x,74x,75x driver. Also, APM is supported for CS4231 &amp;amp; CS4235,6,7,8,9 chips. Otherwise, this release contains mostly bug-fixes backported from the ALSA development tree including the support for latest Linux kernels. Affected drivers: AZT2320, CMI8330, CS4236, ESS ES18xx, InterWave (GUS PnP), Opti 92x, Sound Blaster 16, AD1816A. &amp;lt;b&amp;gt;&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Upgrade is recommended for all soundcards.&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; 2000-04-06&lt;br /&gt;
: Stable packages 0.5.7 were released. This release is a bug-fix release only. The support for MidiMan Delta 44 and 66 cards was added. Other changes - sequencer fixes, rawmidi fixes, AC'97 code updates, other minor cleanups.&lt;br /&gt;
&lt;br /&gt;
; 2000-03-17&lt;br /&gt;
: New ALSA [[Mailing-lists|announce mailing list]] was created.&lt;br /&gt;
&lt;br /&gt;
; 2000-03-11&lt;br /&gt;
: ALSA 0.5.6 packages were released (new drivers: RME Digi 96, VIA 82C686A AC'97 bridge | bugfixes: Intel i8x0/440MX, EMU10K1, AZT2320, RawMidi code + lowlevel drivers, alsamixer).&lt;br /&gt;
&lt;br /&gt;
; 2000-03-01&lt;br /&gt;
: ALSA 0.5.5 packages were released (API cleanups).&lt;br /&gt;
&lt;br /&gt;
; 2000-02-28&lt;br /&gt;
: ALSA 0.5.4b driver package was released (Intel i8x0/MX440 driver fixes).&lt;br /&gt;
: ALSA 0.5.4 packages were released (added alpha ESS Maestro 1/2/2E driver, improved Intel i8x0/440MX driver, AC'97 updates).&lt;br /&gt;
&lt;br /&gt;
; 2000-02-27&lt;br /&gt;
: ALSA 0.5.4a driver package was released (2.3.48 compilation fixed, PCM OSS Oops fixed). Upgrade is strongly recommended.&lt;br /&gt;
&lt;br /&gt;
; 2000-02-16&lt;br /&gt;
: The 0.5.3 packages were released (RME Hammerfall/Light updates, ES1938 - Solo1 driver improved, AC'97 updates, Intel i8x0/440MX alpha driver added, sequencer updates, MTPAV updates, better SMP support for 2.3.x kernels, virmidi code added to EMU8000 &amp;amp; EMU10K1 synth drivers, snd-card-virmidi updates, AK4531 updates - ES1370, EMU10K1 rear volume fixed, ICE1712 updates).&lt;br /&gt;
&lt;br /&gt;
; 2000-02-14&lt;br /&gt;
: The ALSA server was upgraded. You may now enjoy the HtDig search engine for whole Web server plus mailing list archives.&lt;br /&gt;
&lt;br /&gt;
; 2000-02-04&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/ ALSA 0.5.2 packages] were released (added ICE1712 {Envy24} driver and AD1816A driver, RME9652 updates, EMU10K1 updates, SB8, ES18xx, serial MIDI driver updates, PCM API updates, AC'97 bugfixes). The [ftp://ftp.alsa-project.org/pub/others/envy24control GTK Envy24 control utility] is also available with some screenshots. Note: The current Envy24 driver may work only with the MidiMan soundcards (Delta serie). The driver supports only professional PCM at this time.&lt;br /&gt;
&lt;br /&gt;
; 2000-01-22&lt;br /&gt;
: ALSA [ftp://ftp.alsa-project.org/pub packages 0.5.1] were released (PCM OSS emulation, EMU10K1 synth, ES1938, ENS1370).&lt;br /&gt;
&lt;br /&gt;
; 2000-01-16&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/ Final ALSA 0.5.0 packages] were released (added RME9652 -Hammerfall- driver, final API cleanups).&lt;br /&gt;
&lt;br /&gt;
; 2000-01-12&lt;br /&gt;
: The alsa-driver and alsa-lib [ftp://ftp.alsa-project.org/pub packages 0.5.0pre3] were released (trident driver, compilation trouble).&lt;br /&gt;
&lt;br /&gt;
; 2000-01-11&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.5.0pre2] was released (enhanced EMU10K1 code, a compilation bugfix). Other [ftp://ftp.alsa-project.org/pub 0.5.0pre2 packages] were also released.&lt;br /&gt;
&lt;br /&gt;
; 2000-01-10&lt;br /&gt;
: All [ftp://ftp.alsa-project.org/pub packages 0.5.0pre1] were were released. The final API freeze is expected at 14th January 2000.&lt;br /&gt;
&lt;br /&gt;
; 1999-12-20&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1i] was released with the bugfix for the generic code for AC'97. The problems with CS4297A volume levels are away.&lt;br /&gt;
&lt;br /&gt;
; 1999-12-16&lt;br /&gt;
: The final ALSA API dead line is 10th January 2000.&lt;br /&gt;
&lt;br /&gt;
; 1999-12-07&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1h] was released with the bugfix for the ENS1370/ENS1371 drivers.&lt;br /&gt;
&lt;br /&gt;
; 1999-12-06&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1g1] was released with minor bugfixes (mixer, rawmidi, CS461X).&lt;br /&gt;
&lt;br /&gt;
; 1999-12-02&lt;br /&gt;
: [http://www.alsa-project.org/announce.html The ALSA professional team] has been founded.&lt;br /&gt;
&lt;br /&gt;
; 1999-12-01&lt;br /&gt;
: [http://www.alsa-project.org/cgi-bin/cvsweb.cgi CVS Web interface] is available. Created [[Mailing-lists|new mailing lists]]: alsa-doc, alsa-conf, alsa-howto and alsa-cvs. Mailing lists are archived through MHonArc. Web is now searchable through Ht://Dig.&lt;br /&gt;
&lt;br /&gt;
; 1999-11-26&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1f2] was released with minor bugfixes (CS4231, CS4236, AC'97, 2.3.29 kernel).&lt;br /&gt;
&lt;br /&gt;
; 1999-11-18&lt;br /&gt;
: Alpha EMU10K1 (Sound Blaster Live!) driver is available in CVS.&lt;br /&gt;
&lt;br /&gt;
; 1999-11-03&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1e] was released with minor bugfixes (isapnp, CS4236+, Gallant SC-70P, 2.3.25 kernel).&lt;br /&gt;
&lt;br /&gt;
; 1999-11-02&lt;br /&gt;
: Creative released their [http://opensource.creative.com/ source code for SB Live driver]. The ALSA SB Live driver will be available this month.&lt;br /&gt;
&lt;br /&gt;
; 1999-10-24&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1d] was released with minor bugfixes (CMI8330, 2+ soundcards, modules.conf handling, documentation files). Upgrade is recommended if your system has 2+ soundcards. [ftp://ftp.alsa-project.org/pub/lib ALSA library 0.4.1d&amp;lt;/A&amp;gt; was released (PCM cleanup fixes).]A library 0.4.1d&amp;lt;/A&amp;gt; was released (PCM cleanup fixes).&lt;br /&gt;
&lt;br /&gt;
; 1999-10-20&lt;br /&gt;
: Upgrade your modutils package, if you encounter 'segmentation fault' problems. Get fixed [ftp://ftp.ocs.com.au/pub/modutils/v2.3/modutils-2.3.6.tar.gz modutils-2.3.6.tar.gz] or an upgrade [ftp://ftp.alsa-project.org/pub/driver/misc/modules-2.2.2-44.i386.rpm package for SuSE 6.2].&lt;br /&gt;
&lt;br /&gt;
; 1999-10-07&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1c] was released with minor bugfixes (GUS, OPL3-SA2/3, RedHat 6.1). Upgrade is recommended for all soundcards.&lt;br /&gt;
&lt;br /&gt;
; 1999-09-16&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1b] was released with next minor bugfixes.&lt;br /&gt;
&lt;br /&gt;
; 1999-09-01&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1a] was released with minor bugfixes.&lt;br /&gt;
&lt;br /&gt;
; 1999-08-26&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/ ALSA packages version 0.4.1] were released. This is mostly bug-fix release.&lt;br /&gt;
: Statistics for WWW and FTP server are now available.&lt;br /&gt;
&lt;br /&gt;
; 1999-08-15&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/ ALSA packages version 0.4.0] were released. Older packages are not supported from this time.&lt;br /&gt;
&lt;br /&gt;
; 1999-08-01&lt;br /&gt;
: The ALSA bug reporting system is up and going. To report bugs in ALSA packages, please go here and follow the instructions carefully.&lt;br /&gt;
&lt;br /&gt;
; 1999-06-17&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver/ ALSA driver version 0.3.2] released. This is a bug-fix release. If you have had any troubles with 0.3.1 or 0.3.0, please, try this version. Remember to upgrade [ftp://ftp.alsa-project.org/pub/lib/ lib] and [ftp://ftp.alsa-project.org/pub/utils/ utils] too. 0.3.x-series are the last to support 2.0.x kernels.&lt;br /&gt;
&lt;br /&gt;
; 1999-05-23&lt;br /&gt;
: The alpha driver for the [http://www.crystal.com/ Cirrus Logic Sound Fusion CS461x (CS4280) PCI chips] is available on the [[Download|CVS]].&lt;br /&gt;
&lt;br /&gt;
; 1999-05-14&lt;br /&gt;
: [[Mailing-lists|Mailing lists]] are now managed with the alsa.alsa-project.org machine.&lt;br /&gt;
&lt;br /&gt;
; 1999-05-11&lt;br /&gt;
: The alpha driver for the [http://www.fortemedia.com/products/ ForteMedia FM801 PCI soundcard] is available on the [[Download|CVS]].&lt;br /&gt;
&lt;br /&gt;
; 1999-04-29&lt;br /&gt;
: New page with the ALSA schedule is available.&lt;br /&gt;
&lt;br /&gt;
; 1999-04-23&lt;br /&gt;
: The call to hardware vendors was [[ALSA_Soundcard_Vendor_Information|updated]].&lt;br /&gt;
&lt;br /&gt;
; 1999-04-20&lt;br /&gt;
: The ALSA project has got own domain - alsa-project.org. Services (WWW/FTP/CVS) are running on the independent machine now.&lt;br /&gt;
&lt;br /&gt;
; 1999-03-16&lt;br /&gt;
: The releasing of 0.3.0pre5 packages is very delayed. We are working on new mixer API which will not be compatible with previous versions of ALSA packages. It seems that that this work needs a lot of our time. There are many changes in the current development tree (Trident 4DWave DX/NX driver &amp;lt;b&amp;gt;- thanks to Tridentfor their support -&amp;lt;/b&amp;gt;, timer interface, EMU8000 driver, OSS sequencer emulator), If you want to test or use the current code, you may get the sources directly from the [[Download|CVS server]] or there are also available [[Download|CVS snapshots]].&lt;br /&gt;
&lt;br /&gt;
; 1999-02-10&lt;br /&gt;
: Two alsa-driver and alsa-lib packages with version 0.3.0-pre4 [ftp://ftp.alsa-project.org/pub released]. The driver contains better support for 2.2.0+ kernels and allows mixing of ALSA and OSS/Lite modules.&lt;br /&gt;
&lt;br /&gt;
; 1999-02-05&lt;br /&gt;
: [[Download|CVS snapshots]] are available now.&lt;br /&gt;
&lt;br /&gt;
; 1999-01-29&lt;br /&gt;
: Temporary AWE64 [http://ds.dial.pipex.com/sterat/alsa EMU8000 synth driver] for ALSA.&lt;br /&gt;
&lt;br /&gt;
; 1999-01-24&lt;br /&gt;
: All packages with version 0.3.0-pre3 [ftp://ftp.alsa-project.org/pub released].&lt;br /&gt;
: [[ALSA_Library_API|New ALSA API description for 0.2.0 packages.]]&lt;br /&gt;
&lt;br /&gt;
; 1999-01-19&lt;br /&gt;
: [http://huizen.dds.nl/~valentyn/Alsa-sound-mini-HOWTO.html Alsa-sound-mini-HOWTO]&lt;br /&gt;
: Version 0.2.0-pre10p3 of driver [ftp://ftp.alsa-project.org/pub/driver released] which includes support for 2.2.0-pre1 kernel.&lt;br /&gt;
: Version 0.3.0-pre2 of alsa-lib [ftp://ftp.alsa-project.org/pub/lib released] which includes support for sequencer.&lt;br /&gt;
: Version 0.3.0-pre2 of driver [ftp://ftp.alsa-project.org/pub/driver released] which includes native support for ISA Plug &amp;amp;amp; Play cards, first version of sequencer and support for 2.2.0-pre1 kernel.&lt;br /&gt;
&lt;br /&gt;
; 1998-12-30&lt;br /&gt;
: [[ALSA_Soundcard_Vendor_Information|A call to sound card hardware vendors.]]&lt;br /&gt;
&lt;br /&gt;
; 1998-12-28&lt;br /&gt;
: [[ALSA Blacklist|Black List]]; Sound Blaster Live! [[ALSA_Blacklist|support]] (sorry)&lt;br /&gt;
&lt;br /&gt;
; 1998-11-10&lt;br /&gt;
: Version 0.1.3 of C library and Version 0.2.0-pre10 of driver [ftp://ftp.alsa-project.org/pub/driver released] which supports Cirrus Logic CS4232+/CS4236+, Ensoniq AudioPCI (ES1370/1371), and S3 SonicVibes.&lt;br /&gt;
&lt;br /&gt;
; 1998-11-04&lt;br /&gt;
: Version 0.0.7 of ALSA utilities [ftp://ftp.alsa-project.org/pub/lib released]&lt;br /&gt;
&lt;br /&gt;
; 1998-08-13&lt;br /&gt;
: [[Download|CVS is up]]&lt;br /&gt;
[http://www.example.com link title]&lt;br /&gt;
[http://www.example.com link title]&lt;br /&gt;
[http://www.example.com link title]&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/Template:ALSA_download_version</id>
		<title>Template:ALSA download version</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/Template:ALSA_download_version"/>
				<updated>2013-04-12T08:47:45Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ #switch: {{{module}}}&lt;br /&gt;
| driver={{ #switch: {{{release}}} | stable=1.0.25 | development=none }}&lt;br /&gt;
| lib={{ #switch: {{{release}}} | stable=1.0.27 | development=none }}&lt;br /&gt;
| utils={{ #switch: {{{release}}} | stable=1.0.27 | development=none }}&lt;br /&gt;
| tools={{ #switch: {{{release}}} | stable=1.0.27 | development=none }}&lt;br /&gt;
| firmware={{ #switch: {{{release}}} | stable=1.0.27 | development=none }}&lt;br /&gt;
| plugins={{ #switch: {{{release}}} | stable=1.0.27 | development=none }}&lt;br /&gt;
| oss={{ #switch: {{{release}}} | stable=1.0.25 | development=none }}&lt;br /&gt;
| python={{ #switch: {{{release}}} | stable=1.0.26 | development=none }}&lt;br /&gt;
| Unknown please edit!&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/Detailed_changes_v1.0.26_v1.0.27</id>
		<title>Detailed changes v1.0.26 v1.0.27</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/Detailed_changes_v1.0.26_v1.0.27"/>
				<updated>2013-04-12T08:46:34Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
=Detailed changelog between 1.0.25 and 1.0.27 releases=&lt;br /&gt;
=Changelog between 1.0.26 and 1.0.27 releases=&lt;br /&gt;
==alsa-firmware==&lt;br /&gt;
===Core===&lt;br /&gt;
: - Release v1.0.27&lt;br /&gt;
:   &lt;br /&gt;
: - configure.in: Remove emi_26_62 reference&lt;br /&gt;
:   &lt;br /&gt;
: - Remove emi_26_62 firmwares&lt;br /&gt;
:   &lt;br /&gt;
:   These are incldued in kernel-firmware for long time, and they are anyway&lt;br /&gt;
:   wrongly generated / installed (the firmware loader driver reads the&lt;br /&gt;
:   binary ihex format files *.fw)&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Karl Grill &amp;amp;lt;kgrill@chello.at&amp;amp;gt;&lt;br /&gt;
: - Add firmware for CA0132 DSP&lt;br /&gt;
:   &lt;br /&gt;
===Emagic EMI 2|6 Audio Interface Firmware===&lt;br /&gt;
: - Remove emi_26_62 firmwares&lt;br /&gt;
:   &lt;br /&gt;
:   These are incldued in kernel-firmware for long time, and they are anyway&lt;br /&gt;
:   wrongly generated / installed (the firmware loader driver reads the&lt;br /&gt;
:   binary ihex format files *.fw)&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Karl Grill &amp;amp;lt;kgrill@chello.at&amp;amp;gt;&lt;br /&gt;
===Sound Blaster HDA CA0132 Firmware===&lt;br /&gt;
: - Update ca0132 firmware files&lt;br /&gt;
:   &lt;br /&gt;
:   ctefx.bin:&lt;br /&gt;
:   Update the CA0132 DSP image firmware file. This version:&lt;br /&gt;
:   - Includes key-click reduction feature.&lt;br /&gt;
:   - Fixes noisy output when GraphicEQ and SpeakerEQ are both turned on.&lt;br /&gt;
:   &lt;br /&gt;
:   ctspeq.bin:&lt;br /&gt;
:   Add firmware file containing coefficient preset for SpeakerEQ&lt;br /&gt;
:   DSP feature. This preset has been tuned for Chromebook Pixel hardware.&lt;br /&gt;
:   Other CA0132 systems will run without loading this binary.&lt;br /&gt;
:   &lt;br /&gt;
: - Add firmware for CA0132 DSP&lt;br /&gt;
:   &lt;br /&gt;
=Detailed changelog between 1.0.26 and 1.0.27 releases=&lt;br /&gt;
=Changelog between 1.0.26 and 1.0.27 releases=&lt;br /&gt;
==alsa-lib==&lt;br /&gt;
===Core===&lt;br /&gt;
: - Release v1.0.27&lt;br /&gt;
:   &lt;br /&gt;
: - all places: doxygen cleanups&lt;br /&gt;
:   &lt;br /&gt;
:   I see no errors with these changes using doxygen 1.8.1.1 .&lt;br /&gt;
:   &lt;br /&gt;
: - Add sys/types.h to include list&lt;br /&gt;
:   &lt;br /&gt;
:   This is needed by snd_pcm_format_silence* functions which&lt;br /&gt;
:   return u_int*_t. It was discovered while trying to compile ALSA&lt;br /&gt;
:   programs with eglibc 2.17.&lt;br /&gt;
:   &lt;br /&gt;
:   Credits to Richard Shaw, Gary Buhrmaster, Matthieu Baerts and&lt;br /&gt;
:   Adam Conrad for this fix.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: https://bugs.launchpad.net/bugs/1109298&lt;br /&gt;
:   BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=885306&lt;br /&gt;
: - Add snd_lib_error_set_local() to install a thread-local error handler.&lt;br /&gt;
:   &lt;br /&gt;
:   This is required so we can make other functions reentrant (such as&lt;br /&gt;
:   snd_device_name_hint()).&lt;br /&gt;
:   The default error handling function snd_lib_error_default() now checks&lt;br /&gt;
:   if a local handler exists, and if so, calls it. Otherwise, the previous&lt;br /&gt;
:   behavior is unchanged.&lt;br /&gt;
:   &lt;br /&gt;
: - configure: do not detect incorrect cross-compiler&lt;br /&gt;
:   &lt;br /&gt;
:   On Ubuntu 11.04, configuring with --build=x86_64-unknown-linux-gnu&lt;br /&gt;
:   --host=x86_64-linux-gnu finds a wrong cross-compiler:&lt;br /&gt;
:   checking for cross-compiler... x86_64-x86_64-pc-linux-gnu-gcc&lt;br /&gt;
:   &lt;br /&gt;
:   This happens because of a dash vs underscore inconsistency in configure.in:&lt;br /&gt;
:   host=x86_64-pc-linux-gnu&lt;br /&gt;
:   host_cpu=x86_64&lt;br /&gt;
:   host_os=linux-gnu&lt;br /&gt;
:   which ${host_cpu}-${host_os}-gcc &amp;amp;gt;/dev/null 2&amp;amp;gt;&amp;amp;1 &amp;amp;&amp;amp; echo ${host_cpu}-${host-os}-gcc&lt;br /&gt;
:   &lt;br /&gt;
:   This bug has been introduced in the initial --with-host support from&lt;br /&gt;
:   2002, commit eb267ade29c9a49c07b1c33dc9bf7a6790217400&lt;br /&gt;
:   &lt;br /&gt;
:   This configure command is about &amp;quot;cross-compiling for i586&amp;quot;, where the&lt;br /&gt;
:   system compiler is used, which just -m32 additional options.&lt;br /&gt;
:   The --build value comes from config.guess.&lt;br /&gt;
: - Fix endian check in local.h&lt;br /&gt;
:   &lt;br /&gt;
:   SNDRV_LITTLE_ENDIAN and SNDRV_BIG_ENDIAN checks have been removed from&lt;br /&gt;
:   sound/asound.h during UAPI header move, and this resulted in a wrong&lt;br /&gt;
:   detected endian.&lt;br /&gt;
:   &lt;br /&gt;
:   Move together with the similar check for SND_*_ENDIAN at the earlier&lt;br /&gt;
:   place in local.h.&lt;br /&gt;
:   &lt;br /&gt;
: - configure: Quite AM_CONDITIONAL() arguments&lt;br /&gt;
:   &lt;br /&gt;
:   Otherwise it won't be processed properly with the recent automake.&lt;br /&gt;
:   &lt;br /&gt;
: - Add workaround for conflicting snd_seq_event_t definitions&lt;br /&gt;
:   &lt;br /&gt;
: - Merge kernel uapi/sound/asound.h and asequencer.h&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of keeping modified asound.h and asequencer.h, copy the files&lt;br /&gt;
:   in the kernel include/uapi/sound as is, and give some renames for&lt;br /&gt;
:   avoiding conflicts with alsa-lib's definitions.&lt;br /&gt;
:   &lt;br /&gt;
:   Some structs, unions and typedefs in asound.h and asequencer.h are&lt;br /&gt;
:   once renamed in local.h before inclusion, then renamed back again.&lt;br /&gt;
:   &lt;br /&gt;
:   A bonus by this action is that some local codes don't have to refer to&lt;br /&gt;
:   sndrv_xxx any longer.  However, some codes like src/seq/seq.c need&lt;br /&gt;
:   explicit cast because of unavoidable conflicts of struct types.&lt;br /&gt;
:   &lt;br /&gt;
:   Another significant change is that now snd_pcm_sw_params.period_event&lt;br /&gt;
:   field is removed.  Instead, try to access the last reserved field&lt;br /&gt;
:   internally.&lt;br /&gt;
:   &lt;br /&gt;
===Control API===&lt;br /&gt;
: - control: enhance doc for snd_ctl_ascii_value_parse() function&lt;br /&gt;
:   &lt;br /&gt;
: - control, pcm: implement snd_ctl_abort() and snd_pcm_abort() functions&lt;br /&gt;
:   &lt;br /&gt;
:   Upon an interrupt, it is necessary to abort the wait loops with the EINTR&lt;br /&gt;
:   error code. Introduce snd_*_abort() functions to handle this case.&lt;br /&gt;
:   &lt;br /&gt;
: - Add workaround for conflicting IEC958 controls for HD-audio&lt;br /&gt;
:   &lt;br /&gt;
:   When both an SPDIF and an HDMI output are present on HD-audio, both&lt;br /&gt;
:   try to access IEC958 controls with index=0 although one of them must&lt;br /&gt;
:   be wrong.  For avoiding this conflict, the recent kernel code (3.9 and&lt;br /&gt;
:   3.8 stable) moves the IEC958 controls of an SPDIF with index=16 once&lt;br /&gt;
:   when the conflict happens.&lt;br /&gt;
:   &lt;br /&gt;
:   In this patch, the corresponding support is added in alsa-lib side.&lt;br /&gt;
:   The new &amp;quot;skip_rest&amp;quot; boolean flag is added to the hooked element&lt;br /&gt;
:   definition which indicates that the rest of element array will be&lt;br /&gt;
:   ignored once when this element is present and evaluated.  With this&lt;br /&gt;
:   new flag, the HD-audio config takes index=16 primarily, then take&lt;br /&gt;
:   index=0 as fallback.&lt;br /&gt;
:   &lt;br /&gt;
: - control: Simplify using snd_config_get_bool()&lt;br /&gt;
:   &lt;br /&gt;
:   snd_config_get_bool() was improved to parse also ASCII strings now,&lt;br /&gt;
:   so we don't have to open-code the boolean parser in&lt;br /&gt;
:   src/control/setup.c any longer.&lt;br /&gt;
:   &lt;br /&gt;
: - snd_device_name_hint(): do not use global snd_config.&lt;br /&gt;
:   &lt;br /&gt;
:   This commit and its parent make the function reentrant.&lt;br /&gt;
:   &lt;br /&gt;
: - snd_device_name_hint(): do not change the global error handler.&lt;br /&gt;
:   &lt;br /&gt;
:   This is the first step towards making this function reentrant.&lt;br /&gt;
:   &lt;br /&gt;
: - Merge kernel uapi/sound/asound.h and asequencer.h&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of keeping modified asound.h and asequencer.h, copy the files&lt;br /&gt;
:   in the kernel include/uapi/sound as is, and give some renames for&lt;br /&gt;
:   avoiding conflicts with alsa-lib's definitions.&lt;br /&gt;
:   &lt;br /&gt;
:   Some structs, unions and typedefs in asound.h and asequencer.h are&lt;br /&gt;
:   once renamed in local.h before inclusion, then renamed back again.&lt;br /&gt;
:   &lt;br /&gt;
:   A bonus by this action is that some local codes don't have to refer to&lt;br /&gt;
:   sndrv_xxx any longer.  However, some codes like src/seq/seq.c need&lt;br /&gt;
:   explicit cast because of unavoidable conflicts of struct types.&lt;br /&gt;
:   &lt;br /&gt;
:   Another significant change is that now snd_pcm_sw_params.period_event&lt;br /&gt;
:   field is removed.  Instead, try to access the last reserved field&lt;br /&gt;
:   internally.&lt;br /&gt;
:   &lt;br /&gt;
: - Implement the channel mapping API&lt;br /&gt;
:   &lt;br /&gt;
:   Added new channel-mapping API functions.&lt;br /&gt;
:   Not all plugins are covered, especially the route, multi and external&lt;br /&gt;
:   plugins don't work yet.&lt;br /&gt;
:   &lt;br /&gt;
===Mixer API===&lt;br /&gt;
: - all places: doxygen cleanups&lt;br /&gt;
:   &lt;br /&gt;
:   I see no errors with these changes using doxygen 1.8.1.1 .&lt;br /&gt;
:   &lt;br /&gt;
: - snd_mixer_poll_descriptors_revents should loop over pollfd&lt;br /&gt;
:   &lt;br /&gt;
: - mixer: Don't build simple_abst when no libdl is available&lt;br /&gt;
:   &lt;br /&gt;
:   Check BUILD_MODULES conditional not to compile simple_abst.c.&lt;br /&gt;
:   Also return -ENXIO to caller statically in that case.&lt;br /&gt;
:   &lt;br /&gt;
: - Reduce compilation warnings&lt;br /&gt;
:   &lt;br /&gt;
===PCM API===&lt;br /&gt;
: - pcm: direct plugins: do more safe IPC semaphore handling&lt;br /&gt;
:   &lt;br /&gt;
:   As reported dead-lock, do local lock counting and invoke abort() when&lt;br /&gt;
:   the lock counts do not match at close() time.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: &amp;amp;lt;mateen abdulmateen.shaikh@gmail.com&amp;amp;gt;&lt;br /&gt;
: - all places: doxygen cleanups&lt;br /&gt;
:   &lt;br /&gt;
:   I see no errors with these changes using doxygen 1.8.1.1 .&lt;br /&gt;
:   &lt;br /&gt;
: - control, pcm: implement snd_ctl_abort() and snd_pcm_abort() functions&lt;br /&gt;
:   &lt;br /&gt;
:   Upon an interrupt, it is necessary to abort the wait loops with the EINTR&lt;br /&gt;
:   error code. Introduce snd_*_abort() functions to handle this case.&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: fix typo, should be SND_PCM_STATE_PREPARED.&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: fix and optimize snd_pcm_areas_copy function&lt;br /&gt;
:   &lt;br /&gt;
:   The memcpy() function in snd_pcm_area_copy() should not be called&lt;br /&gt;
:   with the overlapped areas. Alex discovered - using own LD_PRELOAD checked&lt;br /&gt;
:   for memcpy() input - that the memcpy() is called with src == dst.&lt;br /&gt;
:   &lt;br /&gt;
:   For some special plugin combos (rate+softvol+hw for example), the same&lt;br /&gt;
:   areas with same offsets can be asked to be copied (softvol). The collapse&lt;br /&gt;
:   check uses own areas created on heap, causing dst_area == src_area &amp;amp;&amp;amp;&lt;br /&gt;
:   dst_offset == src_offset check bypassed.&lt;br /&gt;
:   &lt;br /&gt;
:   Two fixes are in this patch:&lt;br /&gt;
:   &lt;br /&gt;
:   - use assert to check the memcpy() input for future triggers&lt;br /&gt;
:   - bypass the snd_pcm_area_copy() call for collapsed identical areas&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Alexander Kruppa &amp;amp;lt;akruppa@gmail.com&amp;amp;gt;&lt;br /&gt;
: - snd_pcm_direct_parse_open_conf(): use thread-safe getgrnam_r()&lt;br /&gt;
:   &lt;br /&gt;
:   Fixes a thread safety issue with snd_pcm_open().&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Fix conflict of _snd_pcm_hw_params definitions&lt;br /&gt;
:   &lt;br /&gt;
:   Fix the call of _snd_pcm_hw_params() to _snd_pcm_hw_params_internal().&lt;br /&gt;
:   The build passed wrongly because of _snd_pcm_hw_params define.&lt;br /&gt;
:   Having the same function name as the struct name is is simply&lt;br /&gt;
:   confusing...&lt;br /&gt;
:   &lt;br /&gt;
:   Also, to be sure, _snd_pcm_hw_params is undef'ed in pcm_local.h, too.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: shut up a compile &amp;quot;unused parameter&amp;quot; compile warning in pcm_multi.c&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Add more chmap definitions for UAC2&lt;br /&gt;
:   &lt;br /&gt;
:   The new PCM chmap positions have been added in (to be) 3.8-rc1 kernel,&lt;br /&gt;
:   and now updated alsa-lib, too.&lt;br /&gt;
:   &lt;br /&gt;
: - Merge kernel uapi/sound/asound.h and asequencer.h&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of keeping modified asound.h and asequencer.h, copy the files&lt;br /&gt;
:   in the kernel include/uapi/sound as is, and give some renames for&lt;br /&gt;
:   avoiding conflicts with alsa-lib's definitions.&lt;br /&gt;
:   &lt;br /&gt;
:   Some structs, unions and typedefs in asound.h and asequencer.h are&lt;br /&gt;
:   once renamed in local.h before inclusion, then renamed back again.&lt;br /&gt;
:   &lt;br /&gt;
:   A bonus by this action is that some local codes don't have to refer to&lt;br /&gt;
:   sndrv_xxx any longer.  However, some codes like src/seq/seq.c need&lt;br /&gt;
:   explicit cast because of unavoidable conflicts of struct types.&lt;br /&gt;
:   &lt;br /&gt;
:   Another significant change is that now snd_pcm_sw_params.period_event&lt;br /&gt;
:   field is removed.  Instead, try to access the last reserved field&lt;br /&gt;
:   internally.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Avoid busy loop in snd_pcm_write_areas() with rate plugin&lt;br /&gt;
:   &lt;br /&gt;
:   snd_pcm_write_areas() tries to wait until avail &amp;amp;gt;= avail_min condition&lt;br /&gt;
:   is satisfied.  This doesn't work always well when a rate plugin is in&lt;br /&gt;
:   the play.&lt;br /&gt;
:   &lt;br /&gt;
:   When a partial data with a smaller size than a period is written, the&lt;br /&gt;
:   rate plugin doesn't transfer the data immediately to the slave PCM,&lt;br /&gt;
:   but kept in an internal buffer and it changes only the hwptr of the&lt;br /&gt;
:   plugin.  Thus, the condition &amp;quot;avail &amp;amp;lt; avail_min&amp;quot; is triggered for a&lt;br /&gt;
:   wait check although the underlying slave PCM has enough room.  This&lt;br /&gt;
:   results in a call of snd_pcm_wait() which returns immediately after&lt;br /&gt;
:   poll() call, and the snd_pcm_write_areas() loop continues.  As a&lt;br /&gt;
:   consequence, it falls into a CPU hog.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch fixes that busy loop by introducing a new fast_ops to check&lt;br /&gt;
:   the availability for wait of avail_min.  Then a plugin can ask the&lt;br /&gt;
:   slave PCM whether the wait is required (or possible).&lt;br /&gt;
:   &lt;br /&gt;
:   A few plugins like multi plugin need a special handling.  Otherwise a&lt;br /&gt;
:   generic plugin function can be used.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Trent Piepho &amp;amp;lt;tpiepho@gmail.com&amp;amp;gt;&lt;br /&gt;
: - Reduce compilation warnings&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Fix memory leak for pcm empty and asym plugins&lt;br /&gt;
:   &lt;br /&gt;
:   The init-only plugins do not have own pcm handle, so free the references&lt;br /&gt;
:   to open function immediately after open.&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: support for audio timestamps&lt;br /&gt;
:   &lt;br /&gt;
:   add new snd_pcm_status_get_audio_htstamp() routine to&lt;br /&gt;
:   query the audio timestamps provided by the kernel.&lt;br /&gt;
:   &lt;br /&gt;
:   This change provides applications with better ways&lt;br /&gt;
:   to track elapsed time. Before this patch, applications&lt;br /&gt;
:   would subtract queued samples (delay) from written samples,&lt;br /&gt;
:   resulting in a 1-2 sample error.&lt;br /&gt;
:   &lt;br /&gt;
:   Also add snd_pcm_hw_params_supports_audio_wallclock_ts()&lt;br /&gt;
:   to query what the hardware supports.&lt;br /&gt;
:   &lt;br /&gt;
:   TODO: check protocol compatibility?&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Fix the invalid snd_pcm_close() calls in rate plugin&lt;br /&gt;
:   &lt;br /&gt;
:   It happens in the error path, should call snd_pcm_free() instead.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Fix infinite loop in htimestamp of dmix, dsnoop and dshare plugins&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Fill SND_CHMAP_NA to silent channels in route plugin&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of SND_CHMAP_UNKNOWN, fill SND_CHMAP_NA to the silent channels.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: A few doxygen fixes for chmap stuff&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Fix the conversion from string to chmap position&lt;br /&gt;
:   &lt;br /&gt;
:   Use strncasecmp() to allow lower cases, and also evaluate the inverted&lt;br /&gt;
:   phase suffix, too.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Define MONO and other channel map positions&lt;br /&gt;
:   &lt;br /&gt;
:   Follow the new definitions in the kernel side.  MONO and others have&lt;br /&gt;
:   been added, and the order of position table was changed again.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Use compounds for overriding / enhancing chmaps&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of a single channel map, multiple channel maps can be provided&lt;br /&gt;
:   in a form of compound (array) to hw and null plugins.  In null&lt;br /&gt;
:   get_chmap, the channel map corresponding to the current channels is&lt;br /&gt;
:   copied from the given channel maps.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Add the missing query_chmaps for route plugin&lt;br /&gt;
:   &lt;br /&gt;
:   Also fix the channel count in get_chmap for route plugin.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Add chmap options to hw and null plugins&lt;br /&gt;
:   &lt;br /&gt;
:   Add a config definition &amp;quot;chmap&amp;quot; to override (or enhance) the channel&lt;br /&gt;
:   maps.  So far, only a single channel map can be provided, and the&lt;br /&gt;
:   channel count consistency isn't strictly tested at all.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Add query_chmaps support to multi plugin&lt;br /&gt;
:   &lt;br /&gt;
:   Also fix some bugs in get_chmap().&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Add snd_pcm_chmap_long_name()&lt;br /&gt;
:   &lt;br /&gt;
:   Just return a more verbose name than snd_pcm_chmap_name(), but&lt;br /&gt;
:   including white spaces.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Add SND_CHMAP_API_VERSION definition&lt;br /&gt;
:   &lt;br /&gt;
:   Just to make it easier for apps to support chmap conditionally via&lt;br /&gt;
:   simple ifdefs.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Add string conversion helper functions for chmap&lt;br /&gt;
:   &lt;br /&gt;
:   Added a few helper functions between chmap and string.&lt;br /&gt;
:   snd_pcm_chmap_type_name() -- a string of the given chmap type&lt;br /&gt;
:   snd_pcm_chmap_name() -- a string of the given channel position&lt;br /&gt;
:   snd_pcm_chmap_print() -- print channel map on the given buffer&lt;br /&gt;
:   snd_pcm_chmap_from_string() -- get a channel position from string&lt;br /&gt;
:   snd_pcm_parse_string() -- parse the whole channel map from string&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Fix prefix for snd_pcm_chmap_type enum members&lt;br /&gt;
:   &lt;br /&gt;
:   Add _TYPE prefix to distinguish from the channel position.&lt;br /&gt;
:   Also add SND_CHMAP_TYPE_LAST entry pointing the last one like other&lt;br /&gt;
:   enums.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Implement snd_pcm_query_chmaps_from_hw()&lt;br /&gt;
:   &lt;br /&gt;
:   This is a function similar like snd_pcm_query_chmaps() but performs&lt;br /&gt;
:   the query without a PCM handle.  The card, device and substream&lt;br /&gt;
:   numbers are passed as well as stream direction.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Introduce snd_pcm_chmap_t and snd_pcm_chmap_query_t&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of passing ambiguous integer array, define snd_pcm_chmap_t and&lt;br /&gt;
:   snd_pcm_chmap_query_t so that user can understand more easily which&lt;br /&gt;
:   element is for what.&lt;br /&gt;
:   &lt;br /&gt;
: - Add SND_CHMAP_NA and bit flag definitions&lt;br /&gt;
:   &lt;br /&gt;
: - Follow channel position definitions to mixer channel in mixer.h&lt;br /&gt;
:   &lt;br /&gt;
:   mixer.h already contains some channel position definitions.&lt;br /&gt;
:   To be more consistent over all systems, better to follow the same&lt;br /&gt;
:   order for the new channel map, too.  But since UNKNOWN channel must be&lt;br /&gt;
:   zero but the definition in mixer.h contains -1 as UNKNOWN, simply&lt;br /&gt;
:   shift the value with 1.&lt;br /&gt;
:   &lt;br /&gt;
:   If the conversion is required between SND_CHMAP and SND_MIXER_SCHN,&lt;br /&gt;
:   just increment/decrement 1.  Eventually I'll provide helper functions&lt;br /&gt;
:   for that...&lt;br /&gt;
:   &lt;br /&gt;
: - Define channel map position enum in pcm.h&lt;br /&gt;
:   &lt;br /&gt;
:   The original definition is in sound/asound.h, but we need to export to&lt;br /&gt;
:   alsa-lib users, too.&lt;br /&gt;
:   &lt;br /&gt;
: - Cache the chmap operation errors&lt;br /&gt;
:   &lt;br /&gt;
:   ... not to retry the same error again.&lt;br /&gt;
:   &lt;br /&gt;
: - Implement get_chmap/set_chmap for PCM extplug/ioplug plugins&lt;br /&gt;
:   &lt;br /&gt;
:   Added the new ops for both external plugins, so the protocol numbers&lt;br /&gt;
:   are incremented.&lt;br /&gt;
:   &lt;br /&gt;
: - Implement get_chmap/set_chmap for PCM plug, route and multi plugins&lt;br /&gt;
:   &lt;br /&gt;
:   Still incomplete implementations.  The query and set ops are missing&lt;br /&gt;
:   for route and multi plugins.&lt;br /&gt;
:   &lt;br /&gt;
: - Implement the channel mapping API&lt;br /&gt;
:   &lt;br /&gt;
:   Added new channel-mapping API functions.&lt;br /&gt;
:   Not all plugins are covered, especially the route, multi and external&lt;br /&gt;
:   plugins don't work yet.&lt;br /&gt;
:   &lt;br /&gt;
===Sequencer API===&lt;br /&gt;
: - Merge kernel uapi/sound/asound.h and asequencer.h&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of keeping modified asound.h and asequencer.h, copy the files&lt;br /&gt;
:   in the kernel include/uapi/sound as is, and give some renames for&lt;br /&gt;
:   avoiding conflicts with alsa-lib's definitions.&lt;br /&gt;
:   &lt;br /&gt;
:   Some structs, unions and typedefs in asound.h and asequencer.h are&lt;br /&gt;
:   once renamed in local.h before inclusion, then renamed back again.&lt;br /&gt;
:   &lt;br /&gt;
:   A bonus by this action is that some local codes don't have to refer to&lt;br /&gt;
:   sndrv_xxx any longer.  However, some codes like src/seq/seq.c need&lt;br /&gt;
:   explicit cast because of unavoidable conflicts of struct types.&lt;br /&gt;
:   &lt;br /&gt;
:   Another significant change is that now snd_pcm_sw_params.period_event&lt;br /&gt;
:   field is removed.  Instead, try to access the last reserved field&lt;br /&gt;
:   internally.&lt;br /&gt;
:   &lt;br /&gt;
: - Reduce compilation warnings&lt;br /&gt;
:   &lt;br /&gt;
===Timer API===&lt;br /&gt;
: - Merge kernel uapi/sound/asound.h and asequencer.h&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of keeping modified asound.h and asequencer.h, copy the files&lt;br /&gt;
:   in the kernel include/uapi/sound as is, and give some renames for&lt;br /&gt;
:   avoiding conflicts with alsa-lib's definitions.&lt;br /&gt;
:   &lt;br /&gt;
:   Some structs, unions and typedefs in asound.h and asequencer.h are&lt;br /&gt;
:   once renamed in local.h before inclusion, then renamed back again.&lt;br /&gt;
:   &lt;br /&gt;
:   A bonus by this action is that some local codes don't have to refer to&lt;br /&gt;
:   sndrv_xxx any longer.  However, some codes like src/seq/seq.c need&lt;br /&gt;
:   explicit cast because of unavoidable conflicts of struct types.&lt;br /&gt;
:   &lt;br /&gt;
:   Another significant change is that now snd_pcm_sw_params.period_event&lt;br /&gt;
:   field is removed.  Instead, try to access the last reserved field&lt;br /&gt;
:   internally.&lt;br /&gt;
:   &lt;br /&gt;
===Use Case Manager API===&lt;br /&gt;
: - ucm: Set uc_mgr-&amp;amp;gt;ctl to NULL after closing it.&lt;br /&gt;
:   &lt;br /&gt;
:   Fixes a double-free bug.&lt;br /&gt;
:   &lt;br /&gt;
===ALSA Lisp===&lt;br /&gt;
: - Reduce compilation warnings&lt;br /&gt;
:   &lt;br /&gt;
===Configuration===&lt;br /&gt;
: - USB-audio: Add &amp;quot;HP Digital Stereo Headset&amp;quot; to SPDIF blacklist&lt;br /&gt;
:   &lt;br /&gt;
:   Yet another headset without digital I/O.&lt;br /&gt;
:   &lt;br /&gt;
: - Add workaround for conflicting IEC958 controls for HD-audio&lt;br /&gt;
:   &lt;br /&gt;
:   When both an SPDIF and an HDMI output are present on HD-audio, both&lt;br /&gt;
:   try to access IEC958 controls with index=0 although one of them must&lt;br /&gt;
:   be wrong.  For avoiding this conflict, the recent kernel code (3.9 and&lt;br /&gt;
:   3.8 stable) moves the IEC958 controls of an SPDIF with index=16 once&lt;br /&gt;
:   when the conflict happens.&lt;br /&gt;
:   &lt;br /&gt;
:   In this patch, the corresponding support is added in alsa-lib side.&lt;br /&gt;
:   The new &amp;quot;skip_rest&amp;quot; boolean flag is added to the hooked element&lt;br /&gt;
:   definition which indicates that the rest of element array will be&lt;br /&gt;
:   ignored once when this element is present and evaluated.  With this&lt;br /&gt;
:   new flag, the HD-audio config takes index=16 primarily, then take&lt;br /&gt;
:   index=0 as fallback.&lt;br /&gt;
:   &lt;br /&gt;
: - conf: Fix a memory access violation resulting from improper error propogation&lt;br /&gt;
:   &lt;br /&gt;
:   Fixes an issue where a variable is used undeclared, which can cause seg&lt;br /&gt;
:   faults on some systems if the configuration file is not formatted&lt;br /&gt;
:   properly.&lt;br /&gt;
:   &lt;br /&gt;
: - conf: Add chmap definitions to TRIDENT and SI7018 configurations&lt;br /&gt;
:   &lt;br /&gt;
:   Manually add the channel map definitions as the channel front/rear is&lt;br /&gt;
:   determined dynamically.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Use compounds for overriding / enhancing chmaps&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of a single channel map, multiple channel maps can be provided&lt;br /&gt;
:   in a form of compound (array) to hw and null plugins.  In null&lt;br /&gt;
:   get_chmap, the channel map corresponding to the current channels is&lt;br /&gt;
:   copied from the given channel maps.&lt;br /&gt;
:   &lt;br /&gt;
: - Add chmap override definitions for Emu10k1, Audigy and Audigy2 cards&lt;br /&gt;
:   &lt;br /&gt;
:   These cards won't provide the channel maps from the driver itself&lt;br /&gt;
:   because of the dynamic routing.  For simplicity, define chmaps in the&lt;br /&gt;
:   configurations, so that chmap querying of individual stereo streams&lt;br /&gt;
:   and combined multi streams works properly.&lt;br /&gt;
:   &lt;br /&gt;
===Documentation===&lt;br /&gt;
: - all places: doxygen cleanups&lt;br /&gt;
:   &lt;br /&gt;
:   I see no errors with these changes using doxygen 1.8.1.1 .&lt;br /&gt;
:   &lt;br /&gt;
===Dynamic Loader helpers===&lt;br /&gt;
: - Optimize NULL check in snd_dlobj_cache_put()&lt;br /&gt;
:   &lt;br /&gt;
: - Clean up dlobj cache only when no user is present&lt;br /&gt;
:   &lt;br /&gt;
:   Cleaning up the dlobj cache seems crashing some cases when the library&lt;br /&gt;
:   is used from another plugin like openal-soft.  A simple workaround is&lt;br /&gt;
:   to do the cleanup only when really no user is left, i.e. after all&lt;br /&gt;
:   close calls.&lt;br /&gt;
:   &lt;br /&gt;
:   Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=814250&lt;br /&gt;
:   &lt;br /&gt;
===Error handler===&lt;br /&gt;
: - Add snd_lib_error_set_local() to install a thread-local error handler.&lt;br /&gt;
:   &lt;br /&gt;
:   This is required so we can make other functions reentrant (such as&lt;br /&gt;
:   snd_device_name_hint()).&lt;br /&gt;
:   The default error handling function snd_lib_error_default() now checks&lt;br /&gt;
:   if a local handler exists, and if so, calls it. Otherwise, the previous&lt;br /&gt;
:   behavior is unchanged.&lt;br /&gt;
:   &lt;br /&gt;
===External Control Plugin SDK===&lt;br /&gt;
: - all places: doxygen cleanups&lt;br /&gt;
:   &lt;br /&gt;
:   I see no errors with these changes using doxygen 1.8.1.1 .&lt;br /&gt;
:   &lt;br /&gt;
===External PCM Filter Plugin SDK===&lt;br /&gt;
: - PCM: Introduce snd_pcm_chmap_t and snd_pcm_chmap_query_t&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of passing ambiguous integer array, define snd_pcm_chmap_t and&lt;br /&gt;
:   snd_pcm_chmap_query_t so that user can understand more easily which&lt;br /&gt;
:   element is for what.&lt;br /&gt;
:   &lt;br /&gt;
: - Implement get_chmap/set_chmap for PCM extplug/ioplug plugins&lt;br /&gt;
:   &lt;br /&gt;
:   Added the new ops for both external plugins, so the protocol numbers&lt;br /&gt;
:   are incremented.&lt;br /&gt;
:   &lt;br /&gt;
===External PCM I/O Plugin SDK===&lt;br /&gt;
: - PCM: Introduce snd_pcm_chmap_t and snd_pcm_chmap_query_t&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of passing ambiguous integer array, define snd_pcm_chmap_t and&lt;br /&gt;
:   snd_pcm_chmap_query_t so that user can understand more easily which&lt;br /&gt;
:   element is for what.&lt;br /&gt;
:   &lt;br /&gt;
: - Implement get_chmap/set_chmap for PCM extplug/ioplug plugins&lt;br /&gt;
:   &lt;br /&gt;
:   Added the new ops for both external plugins, so the protocol numbers&lt;br /&gt;
:   are incremented.&lt;br /&gt;
:   &lt;br /&gt;
===Kernel Headers===&lt;br /&gt;
: - PCM: Add more chmap definitions for UAC2&lt;br /&gt;
:   &lt;br /&gt;
:   The new PCM chmap positions have been added in (to be) 3.8-rc1 kernel,&lt;br /&gt;
:   and now updated alsa-lib, too.&lt;br /&gt;
:   &lt;br /&gt;
: - Merge kernel uapi/sound/asound.h and asequencer.h&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of keeping modified asound.h and asequencer.h, copy the files&lt;br /&gt;
:   in the kernel include/uapi/sound as is, and give some renames for&lt;br /&gt;
:   avoiding conflicts with alsa-lib's definitions.&lt;br /&gt;
:   &lt;br /&gt;
:   Some structs, unions and typedefs in asound.h and asequencer.h are&lt;br /&gt;
:   once renamed in local.h before inclusion, then renamed back again.&lt;br /&gt;
:   &lt;br /&gt;
:   A bonus by this action is that some local codes don't have to refer to&lt;br /&gt;
:   sndrv_xxx any longer.  However, some codes like src/seq/seq.c need&lt;br /&gt;
:   explicit cast because of unavoidable conflicts of struct types.&lt;br /&gt;
:   &lt;br /&gt;
:   Another significant change is that now snd_pcm_sw_params.period_event&lt;br /&gt;
:   field is removed.  Instead, try to access the last reserved field&lt;br /&gt;
:   internally.&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: fix 64-bit SNDRV_PCM_IOCTL_STATUS ABI breakage&lt;br /&gt;
:   &lt;br /&gt;
:   Commit cf40ea169aad (pcm: support for audio timestamps) added the new&lt;br /&gt;
:   audio_tstamp field to struct sndrv_pcm_status.  However, struct timespec&lt;br /&gt;
:   requires 64-bit alignment, so the 64-bit compiler would insert&lt;br /&gt;
:   32 bits of padding before this field, which broke SNDRV_PCM_IOCTL_STATUS&lt;br /&gt;
:   with error messages like this:&lt;br /&gt;
:   &lt;br /&gt;
:   kernel: unknown ioctl = 0x80984120&lt;br /&gt;
:   &lt;br /&gt;
:   To solve this, insert the padding explicitly so that it can be taken&lt;br /&gt;
:   into account when calculating the ABI structure size.&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: support for audio timestamps&lt;br /&gt;
:   &lt;br /&gt;
:   add new snd_pcm_status_get_audio_htstamp() routine to&lt;br /&gt;
:   query the audio timestamps provided by the kernel.&lt;br /&gt;
:   &lt;br /&gt;
:   This change provides applications with better ways&lt;br /&gt;
:   to track elapsed time. Before this patch, applications&lt;br /&gt;
:   would subtract queued samples (delay) from written samples,&lt;br /&gt;
:   resulting in a 1-2 sample error.&lt;br /&gt;
:   &lt;br /&gt;
:   Also add snd_pcm_hw_params_supports_audio_wallclock_ts()&lt;br /&gt;
:   to query what the hardware supports.&lt;br /&gt;
:   &lt;br /&gt;
:   TODO: check protocol compatibility?&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Define MONO and other channel map positions&lt;br /&gt;
:   &lt;br /&gt;
:   Follow the new definitions in the kernel side.  MONO and others have&lt;br /&gt;
:   been added, and the order of position table was changed again.&lt;br /&gt;
:   &lt;br /&gt;
: - Add SND_CHMAP_NA and bit flag definitions&lt;br /&gt;
:   &lt;br /&gt;
: - Follow channel position definitions to mixer channel in mixer.h&lt;br /&gt;
:   &lt;br /&gt;
:   mixer.h already contains some channel position definitions.&lt;br /&gt;
:   To be more consistent over all systems, better to follow the same&lt;br /&gt;
:   order for the new channel map, too.  But since UNKNOWN channel must be&lt;br /&gt;
:   zero but the definition in mixer.h contains -1 as UNKNOWN, simply&lt;br /&gt;
:   shift the value with 1.&lt;br /&gt;
:   &lt;br /&gt;
:   If the conversion is required between SND_CHMAP and SND_MIXER_SCHN,&lt;br /&gt;
:   just increment/decrement 1.  Eventually I'll provide helper functions&lt;br /&gt;
:   for that...&lt;br /&gt;
:   &lt;br /&gt;
: - Implement the channel mapping API&lt;br /&gt;
:   &lt;br /&gt;
:   Added new channel-mapping API functions.&lt;br /&gt;
:   Not all plugins are covered, especially the route, multi and external&lt;br /&gt;
:   plugins don't work yet.&lt;br /&gt;
:   &lt;br /&gt;
===Test/Example code===&lt;br /&gt;
: - pcm: support for audio timestamps&lt;br /&gt;
:   &lt;br /&gt;
:   add new snd_pcm_status_get_audio_htstamp() routine to&lt;br /&gt;
:   query the audio timestamps provided by the kernel.&lt;br /&gt;
:   &lt;br /&gt;
:   This change provides applications with better ways&lt;br /&gt;
:   to track elapsed time. Before this patch, applications&lt;br /&gt;
:   would subtract queued samples (delay) from written samples,&lt;br /&gt;
:   resulting in a 1-2 sample error.&lt;br /&gt;
:   &lt;br /&gt;
:   Also add snd_pcm_hw_params_supports_audio_wallclock_ts()&lt;br /&gt;
:   to query what the hardware supports.&lt;br /&gt;
:   &lt;br /&gt;
:   TODO: check protocol compatibility?&lt;br /&gt;
:   &lt;br /&gt;
: - test: add audio_time&lt;br /&gt;
:   &lt;br /&gt;
:   Simple test to create playback and capture streams, and&lt;br /&gt;
:   check elapsed time vs. sample counts reported by driver.&lt;br /&gt;
:   This should be helpful for driver developers and anyone&lt;br /&gt;
:   interested in system/audio time drift.&lt;br /&gt;
:   &lt;br /&gt;
:   tested only on HDAudio&lt;br /&gt;
:   &lt;br /&gt;
:   [added Makefile.am change by tiwai]&lt;br /&gt;
:   &lt;br /&gt;
:   TODO:&lt;br /&gt;
:   - make period configurable&lt;br /&gt;
:   - better output messages&lt;br /&gt;
:   - support for wall clock when it's in the mainline&lt;br /&gt;
:   &lt;br /&gt;
: - test/chmap: Fix wrong malloc size&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Add string conversion helper functions for chmap&lt;br /&gt;
:   &lt;br /&gt;
:   Added a few helper functions between chmap and string.&lt;br /&gt;
:   snd_pcm_chmap_type_name() -- a string of the given chmap type&lt;br /&gt;
:   snd_pcm_chmap_name() -- a string of the given channel position&lt;br /&gt;
:   snd_pcm_chmap_print() -- print channel map on the given buffer&lt;br /&gt;
:   snd_pcm_chmap_from_string() -- get a channel position from string&lt;br /&gt;
:   snd_pcm_parse_string() -- parse the whole channel map from string&lt;br /&gt;
:   &lt;br /&gt;
: - Fix duplicated channel entry in test/chmap.c&lt;br /&gt;
:   &lt;br /&gt;
: - Add SND_CHMAP_NA and bit flag definitions&lt;br /&gt;
:   &lt;br /&gt;
: - Follow channel position definitions to mixer channel in mixer.h&lt;br /&gt;
:   &lt;br /&gt;
:   mixer.h already contains some channel position definitions.&lt;br /&gt;
:   To be more consistent over all systems, better to follow the same&lt;br /&gt;
:   order for the new channel map, too.  But since UNKNOWN channel must be&lt;br /&gt;
:   zero but the definition in mixer.h contains -1 as UNKNOWN, simply&lt;br /&gt;
:   shift the value with 1.&lt;br /&gt;
:   &lt;br /&gt;
:   If the conversion is required between SND_CHMAP and SND_MIXER_SCHN,&lt;br /&gt;
:   just increment/decrement 1.  Eventually I'll provide helper functions&lt;br /&gt;
:   for that...&lt;br /&gt;
:   &lt;br /&gt;
: - Add test/chmap program&lt;br /&gt;
:   &lt;br /&gt;
==alsa-utils==&lt;br /&gt;
===Core===&lt;br /&gt;
: - Release v1.0.27&lt;br /&gt;
:   &lt;br /&gt;
: - alsactl: add --with-alsactl-daemonswitch=FILE to the global configure.in&lt;br /&gt;
:   &lt;br /&gt;
:   It may be useful to have the file location configurable.&lt;br /&gt;
:   &lt;br /&gt;
: - alsactl: move systemd config to the daemon mode&lt;br /&gt;
:   &lt;br /&gt;
: - configure: Fix obsolete AM_CONFIG_HEADER macro&lt;br /&gt;
:   &lt;br /&gt;
:   Automake-1.13 removed long obsolete AM_CONFIG_HEADER completely (&lt;br /&gt;
:   http://lists.gnu.org/archive/html/automake/2012-12/msg00038.html )&lt;br /&gt;
:   and errors out upon seeing it.&lt;br /&gt;
:   &lt;br /&gt;
:   Attached patch replaces it with proper AC_CONFIG_HEADERS.&lt;br /&gt;
:   &lt;br /&gt;
===ALSA Control (alsactl)===&lt;br /&gt;
: - alsactl: add --with-alsactl-daemonswitch=FILE to the global configure.in&lt;br /&gt;
:   &lt;br /&gt;
:   It may be useful to have the file location configurable.&lt;br /&gt;
:   &lt;br /&gt;
: - alsactl: revert back old systemd static units with the /etc/alsa/state-daemon.conf switch&lt;br /&gt;
:   &lt;br /&gt;
: - alsactl: add --nice and --sched-idle options&lt;br /&gt;
:   &lt;br /&gt;
:   The state management can run at low priority, add --nice and --sched-idle&lt;br /&gt;
:   options to set the scheduler.&lt;br /&gt;
:   &lt;br /&gt;
: - alsactl: daemon mode - remove disconnected cards&lt;br /&gt;
:   &lt;br /&gt;
: - alsactl: move systemd config to the daemon mode&lt;br /&gt;
:   &lt;br /&gt;
: - alsactl: add event filter and cache for the daemon mode&lt;br /&gt;
:   &lt;br /&gt;
: - alsactl: Improved command line argument handling...&lt;br /&gt;
:   &lt;br /&gt;
:   Improve command line argument handling for future extensions.&lt;br /&gt;
:   &lt;br /&gt;
: - alsactl: add the daemon mode&lt;br /&gt;
:   &lt;br /&gt;
:   For the plug-and-play hardware, like USB devices, it may be helpful&lt;br /&gt;
:   to manage the sound state periodically, before the devices are removed.&lt;br /&gt;
:   &lt;br /&gt;
:   This change implements new commands 'daemon' and 'rdaemon' to save&lt;br /&gt;
:   the sound state in defined intervals when the sound controls are changed.&lt;br /&gt;
:   &lt;br /&gt;
:   The udev rules can notify the daemon using the 'kill' or 'nrestore'&lt;br /&gt;
:   commands to rescan available cards in the system.&lt;br /&gt;
:   &lt;br /&gt;
: - alsactl: small code reorder to avoid memory leaks&lt;br /&gt;
:   &lt;br /&gt;
: - alsactl: safe state store and memory allocation cleanups&lt;br /&gt;
:   &lt;br /&gt;
:   - store new configuration to file + &amp;quot;.new&amp;quot; extension, rename later&lt;br /&gt;
:   - free the configuration tree on exit from load_state()/save_state()&lt;br /&gt;
:   - call snd_config_update_free_global() at the end of command blocks&lt;br /&gt;
:   &lt;br /&gt;
===Speaker Test===&lt;br /&gt;
: - speaker-test: change the interrupt handling logic to follow aplay/arecord&lt;br /&gt;
:   &lt;br /&gt;
: - speaker-test: try to call snd_pcm_close() when a signal is received&lt;br /&gt;
:   &lt;br /&gt;
: - speaker-test: increase the maximum supported rate to 384000&lt;br /&gt;
:   &lt;br /&gt;
:   There are some devices around supporting this sample rate so let's make&lt;br /&gt;
:   speaker-test capable to deal with them.&lt;br /&gt;
:   &lt;br /&gt;
: - speaker-test: Update man page for chmap option&lt;br /&gt;
:   &lt;br /&gt;
: - speaker-test: Add support for channel mapping API&lt;br /&gt;
:   &lt;br /&gt;
:   The surround channel map follows the given channel map from the&lt;br /&gt;
:   driver if available.&lt;br /&gt;
:   &lt;br /&gt;
:   Also, the channels can be specified manually via -m option.&lt;br /&gt;
:   Pass the channel map like &amp;quot;FL,FR,FC,LFE&amp;quot;.&lt;br /&gt;
:   &lt;br /&gt;
===alsaloop===&lt;br /&gt;
: - alsaloop: Fix missing #endif&lt;br /&gt;
:   &lt;br /&gt;
:   Sorry, forgotten.&lt;br /&gt;
:   &lt;br /&gt;
: - alsaloop: Make alsaloop working without libsamplerate&lt;br /&gt;
:   &lt;br /&gt;
:   When alsaloop is built with libsamplerate, it quits immediately with&lt;br /&gt;
:   No libsamplerate suppor&lt;br /&gt;
:   message.  It's because the check of -A option and it's set as default&lt;br /&gt;
:   non-zero value.&lt;br /&gt;
:   &lt;br /&gt;
===alsamixer===&lt;br /&gt;
: - alsamixer: Use isatty() to check the terminal (interactive) availability&lt;br /&gt;
:   &lt;br /&gt;
: - alsamixer: fix handling of removed controls&lt;br /&gt;
:   &lt;br /&gt;
:   When we get a notification that an element has been removed, we have to&lt;br /&gt;
:   recreate our internal control representation to avoid accessing freed&lt;br /&gt;
:   memory.  (And the checking for SND_CTL_EVENT_MASK_REMOVE should actually&lt;br /&gt;
:   be done correctly while we're at it.)&lt;br /&gt;
:   &lt;br /&gt;
===amixer===&lt;br /&gt;
: - amixer: Use the alsa-lib functions for id print and parse and value parse&lt;br /&gt;
:   &lt;br /&gt;
: - amixer: Fix dB value outputs in amixer contents&lt;br /&gt;
:   &lt;br /&gt;
:   Add missing cast to signed int for DB_MINMAX* types.&lt;br /&gt;
:   &lt;br /&gt;
: - amixer: Fix parsing container TLV entries&lt;br /&gt;
:   &lt;br /&gt;
:   Fix the wrong calculation of the size of a container TLV entry, which&lt;br /&gt;
:   resulted in &amp;quot;TLV size error&amp;quot; messages.&lt;br /&gt;
:   &lt;br /&gt;
: - amixer: fix rounding of relative changes&lt;br /&gt;
:   &lt;br /&gt;
:   When doing control changes by a relative amount, amixer used the wrong&lt;br /&gt;
:   rounding direction, which would make it possible to stay at the same raw&lt;br /&gt;
:   value if the step was not big enough to reach the next value.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Honza Javorek &amp;amp;lt;jan.javorek@gmail.com&amp;amp;gt;&lt;br /&gt;
===aplay/arecord===&lt;br /&gt;
: - aplay/arecord: change the interrupt handling using snd_pcm_abort()&lt;br /&gt;
:   &lt;br /&gt;
:   It is required (exclude the fatal SIGABRT) to call snd_pcm_close() and&lt;br /&gt;
:   the end of work (outside of the interrupt handler). Use new snd_pcm_abort()&lt;br /&gt;
:   function to inform alsa-lib to not ignore EINTR and move the in_aborting&lt;br /&gt;
:   variable to the global scope to be checked in the i/o loops.&lt;br /&gt;
:   &lt;br /&gt;
: - aplay/arecord: added isatty() check (interactive mode)&lt;br /&gt;
:   &lt;br /&gt;
:   Turn off the interactive mode when stdin is not a tty.&lt;br /&gt;
:   &lt;br /&gt;
: - aplay: Add the support for big-endian WAV format (RIFX)&lt;br /&gt;
:   &lt;br /&gt;
: - aplay: Show usage if no parameter is passed&lt;br /&gt;
:   &lt;br /&gt;
:   When aplay/arecord are called without any argument the application hangs forever.&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of hanging, print the usage and exit.&lt;br /&gt;
:   &lt;br /&gt;
: - aplay: fix typo &amp;amp; silence warning..&lt;br /&gt;
:   &lt;br /&gt;
: - aplay: More support for channel map option&lt;br /&gt;
:   &lt;br /&gt;
:   Now aplay tries to follow the given channel map by rearranging the&lt;br /&gt;
:   channels even when the channel map override isn't allowed but if the&lt;br /&gt;
:   device is still capable to return a channel map.&lt;br /&gt;
:   &lt;br /&gt;
:   Also update the man page appropriately.&lt;br /&gt;
:   &lt;br /&gt;
: - aplay: Add support for channel mapping&lt;br /&gt;
:   &lt;br /&gt;
:   With -m option, user can specify the order of channel map.&lt;br /&gt;
:   As of this commit, it just tries to override the channel map, thus it&lt;br /&gt;
:   works only on devices that support the channel map override like HDMI.&lt;br /&gt;
:   Adjusting the channel order in aplay itself will be added later.&lt;br /&gt;
:   &lt;br /&gt;
==alsa-tools==&lt;br /&gt;
===Core===&lt;br /&gt;
: - Release v1.0.27&lt;br /&gt;
:   &lt;br /&gt;
: - ac3dec: Remove the ac3dec tool&lt;br /&gt;
:   &lt;br /&gt;
:   There may be some licencing issues for the name and decoder (it is not&lt;br /&gt;
:   build in the Fedora distro anyway).&lt;br /&gt;
:   &lt;br /&gt;
:   Sources will stay in repos, but almost all current players are able&lt;br /&gt;
:   to handle DD AC-3.&lt;br /&gt;
:   &lt;br /&gt;
: - Release v1.0.26.1&lt;br /&gt;
:   &lt;br /&gt;
===HDA Jack Retask===&lt;br /&gt;
: - hdajackretask: Some more UI fixes&lt;br /&gt;
:   &lt;br /&gt;
:   - don't overwrite a set advanced override unless necessary&lt;br /&gt;
:   - fix &amp;quot;not present&amp;quot; never selected&lt;br /&gt;
:   - remove some trailing whitespaces&lt;br /&gt;
:   &lt;br /&gt;
: - hdajackretask: Fix &amp;quot;advanced override&amp;quot; bug&lt;br /&gt;
:   &lt;br /&gt;
:   The values were not correctly retreived from the comboboxes.&lt;br /&gt;
:   &lt;br /&gt;
: - Add foreign automake option to hdajackretask/Makefile.am&lt;br /&gt;
:   &lt;br /&gt;
: - hdajackretask: Add missing header files to tar-ball distribution&lt;br /&gt;
:   &lt;br /&gt;
===ac3dec (Dolby Digital Decoder)===&lt;br /&gt;
: - ac3dec: Remove the ac3dec tool&lt;br /&gt;
:   &lt;br /&gt;
:   There may be some licencing issues for the name and decoder (it is not&lt;br /&gt;
:   build in the Fedora distro anyway).&lt;br /&gt;
:   &lt;br /&gt;
:   Sources will stay in repos, but almost all current players are able&lt;br /&gt;
:   to handle DD AC-3.&lt;br /&gt;
:   &lt;br /&gt;
: - ac3dec: Show usage if no parameter is passed&lt;br /&gt;
:   &lt;br /&gt;
:   When ac3dec is called without any argument the application hangs forever.&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of hanging, print the usage and exit.&lt;br /&gt;
:   &lt;br /&gt;
===ld10k1 (EMU10K1+ DSP Code Loader)===&lt;br /&gt;
: - (q)lo10k1: updated INSTALL files&lt;br /&gt;
:   &lt;br /&gt;
===qlo10k1===&lt;br /&gt;
: - (q)lo10k1: updated INSTALL files&lt;br /&gt;
:   &lt;br /&gt;
==alsa-plugins==&lt;br /&gt;
===Core===&lt;br /&gt;
: - Release v1.0.27&lt;br /&gt;
:   &lt;br /&gt;
===A52 Output plugin===&lt;br /&gt;
: - a52: Fix build errors&lt;br /&gt;
:   &lt;br /&gt;
:   I merged somehow a half-baked patch mistakenly.  Fixed now.&lt;br /&gt;
:   &lt;br /&gt;
: - a52: Add the support of recent libavcodec / libavutil&lt;br /&gt;
:   &lt;br /&gt;
:   The recent avcodec requires the planar support, which is essentially&lt;br /&gt;
:   non-interleaved formats.  We need to limit the accepted access types&lt;br /&gt;
:   depending on it.&lt;br /&gt;
:   &lt;br /&gt;
===PulseAudio -&amp;amp;gt; ALSA plugin===&lt;br /&gt;
: - pulse: pulse_pcm_poll_revents should return 0 on success&lt;br /&gt;
:   &lt;br /&gt;
: - pcm_pulse: set prebuf parameter according to software parameters&lt;br /&gt;
:   &lt;br /&gt;
:   The current default value for prebuf is very high, almost the full&lt;br /&gt;
:   virtual ALSA buffer. This breaks some application especially where&lt;br /&gt;
:   low latency is involved.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch makes pcm_pulse implement the sw_params callback and get&lt;br /&gt;
:   the prebuf value from the ALSA software parameters. Thus the&lt;br /&gt;
:   trigger latency is much more like what an ALSA application should&lt;br /&gt;
:   expect from an ALSA PCM device.&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/Detailed_changes_v1.0.26_v1.0.27</id>
		<title>Detailed changes v1.0.26 v1.0.27</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/Detailed_changes_v1.0.26_v1.0.27"/>
				<updated>2013-04-12T08:46:33Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
=Detailed changelog between 1.0.25 and 1.0.27 releases=&lt;br /&gt;
=Changelog between 1.0.26 and 1.0.27 releases=&lt;br /&gt;
==alsa-firmware==&lt;br /&gt;
===Core===&lt;br /&gt;
: - Release v1.0.27&lt;br /&gt;
:   &lt;br /&gt;
: - configure.in: Remove emi_26_62 reference&lt;br /&gt;
:   &lt;br /&gt;
: - Remove emi_26_62 firmwares&lt;br /&gt;
:   &lt;br /&gt;
:   These are incldued in kernel-firmware for long time, and they are anyway&lt;br /&gt;
:   wrongly generated / installed (the firmware loader driver reads the&lt;br /&gt;
:   binary ihex format files *.fw)&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Karl Grill &amp;amp;lt;kgrill@chello.at&amp;amp;gt;&lt;br /&gt;
: - Add firmware for CA0132 DSP&lt;br /&gt;
:   &lt;br /&gt;
===Emagic EMI 2|6 Audio Interface Firmware===&lt;br /&gt;
: - Remove emi_26_62 firmwares&lt;br /&gt;
:   &lt;br /&gt;
:   These are incldued in kernel-firmware for long time, and they are anyway&lt;br /&gt;
:   wrongly generated / installed (the firmware loader driver reads the&lt;br /&gt;
:   binary ihex format files *.fw)&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Karl Grill &amp;amp;lt;kgrill@chello.at&amp;amp;gt;&lt;br /&gt;
===Sound Blaster HDA CA0132 Firmware===&lt;br /&gt;
: - Update ca0132 firmware files&lt;br /&gt;
:   &lt;br /&gt;
:   ctefx.bin:&lt;br /&gt;
:   Update the CA0132 DSP image firmware file. This version:&lt;br /&gt;
:   - Includes key-click reduction feature.&lt;br /&gt;
:   - Fixes noisy output when GraphicEQ and SpeakerEQ are both turned on.&lt;br /&gt;
:   &lt;br /&gt;
:   ctspeq.bin:&lt;br /&gt;
:   Add firmware file containing coefficient preset for SpeakerEQ&lt;br /&gt;
:   DSP feature. This preset has been tuned for Chromebook Pixel hardware.&lt;br /&gt;
:   Other CA0132 systems will run without loading this binary.&lt;br /&gt;
:   &lt;br /&gt;
: - Add firmware for CA0132 DSP&lt;br /&gt;
:   &lt;br /&gt;
=Detailed changelog between 1.0.26 and 1.0.27 releases=&lt;br /&gt;
=Changelog between 1.0.26 and 1.0.27 releases=&lt;br /&gt;
==alsa-lib==&lt;br /&gt;
===Core===&lt;br /&gt;
: - Release v1.0.27&lt;br /&gt;
:   &lt;br /&gt;
: - all places: doxygen cleanups&lt;br /&gt;
:   &lt;br /&gt;
:   I see no errors with these changes using doxygen 1.8.1.1 .&lt;br /&gt;
:   &lt;br /&gt;
: - Add sys/types.h to include list&lt;br /&gt;
:   &lt;br /&gt;
:   This is needed by snd_pcm_format_silence* functions which&lt;br /&gt;
:   return u_int*_t. It was discovered while trying to compile ALSA&lt;br /&gt;
:   programs with eglibc 2.17.&lt;br /&gt;
:   &lt;br /&gt;
:   Credits to Richard Shaw, Gary Buhrmaster, Matthieu Baerts and&lt;br /&gt;
:   Adam Conrad for this fix.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: https://bugs.launchpad.net/bugs/1109298&lt;br /&gt;
:   BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=885306&lt;br /&gt;
: - Add snd_lib_error_set_local() to install a thread-local error handler.&lt;br /&gt;
:   &lt;br /&gt;
:   This is required so we can make other functions reentrant (such as&lt;br /&gt;
:   snd_device_name_hint()).&lt;br /&gt;
:   The default error handling function snd_lib_error_default() now checks&lt;br /&gt;
:   if a local handler exists, and if so, calls it. Otherwise, the previous&lt;br /&gt;
:   behavior is unchanged.&lt;br /&gt;
:   &lt;br /&gt;
: - configure: do not detect incorrect cross-compiler&lt;br /&gt;
:   &lt;br /&gt;
:   On Ubuntu 11.04, configuring with --build=x86_64-unknown-linux-gnu&lt;br /&gt;
:   --host=x86_64-linux-gnu finds a wrong cross-compiler:&lt;br /&gt;
:   checking for cross-compiler... x86_64-x86_64-pc-linux-gnu-gcc&lt;br /&gt;
:   &lt;br /&gt;
:   This happens because of a dash vs underscore inconsistency in configure.in:&lt;br /&gt;
:   host=x86_64-pc-linux-gnu&lt;br /&gt;
:   host_cpu=x86_64&lt;br /&gt;
:   host_os=linux-gnu&lt;br /&gt;
:   which ${host_cpu}-${host_os}-gcc &amp;amp;gt;/dev/null 2&amp;amp;gt;&amp;amp;1 &amp;amp;&amp;amp; echo ${host_cpu}-${host-os}-gcc&lt;br /&gt;
:   &lt;br /&gt;
:   This bug has been introduced in the initial --with-host support from&lt;br /&gt;
:   2002, commit eb267ade29c9a49c07b1c33dc9bf7a6790217400&lt;br /&gt;
:   &lt;br /&gt;
:   This configure command is about &amp;quot;cross-compiling for i586&amp;quot;, where the&lt;br /&gt;
:   system compiler is used, which just -m32 additional options.&lt;br /&gt;
:   The --build value comes from config.guess.&lt;br /&gt;
: - Fix endian check in local.h&lt;br /&gt;
:   &lt;br /&gt;
:   SNDRV_LITTLE_ENDIAN and SNDRV_BIG_ENDIAN checks have been removed from&lt;br /&gt;
:   sound/asound.h during UAPI header move, and this resulted in a wrong&lt;br /&gt;
:   detected endian.&lt;br /&gt;
:   &lt;br /&gt;
:   Move together with the similar check for SND_*_ENDIAN at the earlier&lt;br /&gt;
:   place in local.h.&lt;br /&gt;
:   &lt;br /&gt;
: - configure: Quite AM_CONDITIONAL() arguments&lt;br /&gt;
:   &lt;br /&gt;
:   Otherwise it won't be processed properly with the recent automake.&lt;br /&gt;
:   &lt;br /&gt;
: - Add workaround for conflicting snd_seq_event_t definitions&lt;br /&gt;
:   &lt;br /&gt;
: - Merge kernel uapi/sound/asound.h and asequencer.h&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of keeping modified asound.h and asequencer.h, copy the files&lt;br /&gt;
:   in the kernel include/uapi/sound as is, and give some renames for&lt;br /&gt;
:   avoiding conflicts with alsa-lib's definitions.&lt;br /&gt;
:   &lt;br /&gt;
:   Some structs, unions and typedefs in asound.h and asequencer.h are&lt;br /&gt;
:   once renamed in local.h before inclusion, then renamed back again.&lt;br /&gt;
:   &lt;br /&gt;
:   A bonus by this action is that some local codes don't have to refer to&lt;br /&gt;
:   sndrv_xxx any longer.  However, some codes like src/seq/seq.c need&lt;br /&gt;
:   explicit cast because of unavoidable conflicts of struct types.&lt;br /&gt;
:   &lt;br /&gt;
:   Another significant change is that now snd_pcm_sw_params.period_event&lt;br /&gt;
:   field is removed.  Instead, try to access the last reserved field&lt;br /&gt;
:   internally.&lt;br /&gt;
:   &lt;br /&gt;
===Control API===&lt;br /&gt;
: - control: enhance doc for snd_ctl_ascii_value_parse() function&lt;br /&gt;
:   &lt;br /&gt;
: - control, pcm: implement snd_ctl_abort() and snd_pcm_abort() functions&lt;br /&gt;
:   &lt;br /&gt;
:   Upon an interrupt, it is necessary to abort the wait loops with the EINTR&lt;br /&gt;
:   error code. Introduce snd_*_abort() functions to handle this case.&lt;br /&gt;
:   &lt;br /&gt;
: - Add workaround for conflicting IEC958 controls for HD-audio&lt;br /&gt;
:   &lt;br /&gt;
:   When both an SPDIF and an HDMI output are present on HD-audio, both&lt;br /&gt;
:   try to access IEC958 controls with index=0 although one of them must&lt;br /&gt;
:   be wrong.  For avoiding this conflict, the recent kernel code (3.9 and&lt;br /&gt;
:   3.8 stable) moves the IEC958 controls of an SPDIF with index=16 once&lt;br /&gt;
:   when the conflict happens.&lt;br /&gt;
:   &lt;br /&gt;
:   In this patch, the corresponding support is added in alsa-lib side.&lt;br /&gt;
:   The new &amp;quot;skip_rest&amp;quot; boolean flag is added to the hooked element&lt;br /&gt;
:   definition which indicates that the rest of element array will be&lt;br /&gt;
:   ignored once when this element is present and evaluated.  With this&lt;br /&gt;
:   new flag, the HD-audio config takes index=16 primarily, then take&lt;br /&gt;
:   index=0 as fallback.&lt;br /&gt;
:   &lt;br /&gt;
: - control: Simplify using snd_config_get_bool()&lt;br /&gt;
:   &lt;br /&gt;
:   snd_config_get_bool() was improved to parse also ASCII strings now,&lt;br /&gt;
:   so we don't have to open-code the boolean parser in&lt;br /&gt;
:   src/control/setup.c any longer.&lt;br /&gt;
:   &lt;br /&gt;
: - snd_device_name_hint(): do not use global snd_config.&lt;br /&gt;
:   &lt;br /&gt;
:   This commit and its parent make the function reentrant.&lt;br /&gt;
:   &lt;br /&gt;
: - snd_device_name_hint(): do not change the global error handler.&lt;br /&gt;
:   &lt;br /&gt;
:   This is the first step towards making this function reentrant.&lt;br /&gt;
:   &lt;br /&gt;
: - Merge kernel uapi/sound/asound.h and asequencer.h&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of keeping modified asound.h and asequencer.h, copy the files&lt;br /&gt;
:   in the kernel include/uapi/sound as is, and give some renames for&lt;br /&gt;
:   avoiding conflicts with alsa-lib's definitions.&lt;br /&gt;
:   &lt;br /&gt;
:   Some structs, unions and typedefs in asound.h and asequencer.h are&lt;br /&gt;
:   once renamed in local.h before inclusion, then renamed back again.&lt;br /&gt;
:   &lt;br /&gt;
:   A bonus by this action is that some local codes don't have to refer to&lt;br /&gt;
:   sndrv_xxx any longer.  However, some codes like src/seq/seq.c need&lt;br /&gt;
:   explicit cast because of unavoidable conflicts of struct types.&lt;br /&gt;
:   &lt;br /&gt;
:   Another significant change is that now snd_pcm_sw_params.period_event&lt;br /&gt;
:   field is removed.  Instead, try to access the last reserved field&lt;br /&gt;
:   internally.&lt;br /&gt;
:   &lt;br /&gt;
: - Implement the channel mapping API&lt;br /&gt;
:   &lt;br /&gt;
:   Added new channel-mapping API functions.&lt;br /&gt;
:   Not all plugins are covered, especially the route, multi and external&lt;br /&gt;
:   plugins don't work yet.&lt;br /&gt;
:   &lt;br /&gt;
===Mixer API===&lt;br /&gt;
: - all places: doxygen cleanups&lt;br /&gt;
:   &lt;br /&gt;
:   I see no errors with these changes using doxygen 1.8.1.1 .&lt;br /&gt;
:   &lt;br /&gt;
: - snd_mixer_poll_descriptors_revents should loop over pollfd&lt;br /&gt;
:   &lt;br /&gt;
: - mixer: Don't build simple_abst when no libdl is available&lt;br /&gt;
:   &lt;br /&gt;
:   Check BUILD_MODULES conditional not to compile simple_abst.c.&lt;br /&gt;
:   Also return -ENXIO to caller statically in that case.&lt;br /&gt;
:   &lt;br /&gt;
: - Reduce compilation warnings&lt;br /&gt;
:   &lt;br /&gt;
===PCM API===&lt;br /&gt;
: - pcm: direct plugins: do more safe IPC semaphore handling&lt;br /&gt;
:   &lt;br /&gt;
:   As reported dead-lock, do local lock counting and invoke abort() when&lt;br /&gt;
:   the lock counts do not match at close() time.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: &amp;amp;lt;mateen abdulmateen.shaikh@gmail.com&amp;amp;gt;&lt;br /&gt;
: - all places: doxygen cleanups&lt;br /&gt;
:   &lt;br /&gt;
:   I see no errors with these changes using doxygen 1.8.1.1 .&lt;br /&gt;
:   &lt;br /&gt;
: - control, pcm: implement snd_ctl_abort() and snd_pcm_abort() functions&lt;br /&gt;
:   &lt;br /&gt;
:   Upon an interrupt, it is necessary to abort the wait loops with the EINTR&lt;br /&gt;
:   error code. Introduce snd_*_abort() functions to handle this case.&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: fix typo, should be SND_PCM_STATE_PREPARED.&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: fix and optimize snd_pcm_areas_copy function&lt;br /&gt;
:   &lt;br /&gt;
:   The memcpy() function in snd_pcm_area_copy() should not be called&lt;br /&gt;
:   with the overlapped areas. Alex discovered - using own LD_PRELOAD checked&lt;br /&gt;
:   for memcpy() input - that the memcpy() is called with src == dst.&lt;br /&gt;
:   &lt;br /&gt;
:   For some special plugin combos (rate+softvol+hw for example), the same&lt;br /&gt;
:   areas with same offsets can be asked to be copied (softvol). The collapse&lt;br /&gt;
:   check uses own areas created on heap, causing dst_area == src_area &amp;amp;&amp;amp;&lt;br /&gt;
:   dst_offset == src_offset check bypassed.&lt;br /&gt;
:   &lt;br /&gt;
:   Two fixes are in this patch:&lt;br /&gt;
:   &lt;br /&gt;
:   - use assert to check the memcpy() input for future triggers&lt;br /&gt;
:   - bypass the snd_pcm_area_copy() call for collapsed identical areas&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Alexander Kruppa &amp;amp;lt;akruppa@gmail.com&amp;amp;gt;&lt;br /&gt;
: - snd_pcm_direct_parse_open_conf(): use thread-safe getgrnam_r()&lt;br /&gt;
:   &lt;br /&gt;
:   Fixes a thread safety issue with snd_pcm_open().&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Fix conflict of _snd_pcm_hw_params definitions&lt;br /&gt;
:   &lt;br /&gt;
:   Fix the call of _snd_pcm_hw_params() to _snd_pcm_hw_params_internal().&lt;br /&gt;
:   The build passed wrongly because of _snd_pcm_hw_params define.&lt;br /&gt;
:   Having the same function name as the struct name is is simply&lt;br /&gt;
:   confusing...&lt;br /&gt;
:   &lt;br /&gt;
:   Also, to be sure, _snd_pcm_hw_params is undef'ed in pcm_local.h, too.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: shut up a compile &amp;quot;unused parameter&amp;quot; compile warning in pcm_multi.c&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Add more chmap definitions for UAC2&lt;br /&gt;
:   &lt;br /&gt;
:   The new PCM chmap positions have been added in (to be) 3.8-rc1 kernel,&lt;br /&gt;
:   and now updated alsa-lib, too.&lt;br /&gt;
:   &lt;br /&gt;
: - Merge kernel uapi/sound/asound.h and asequencer.h&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of keeping modified asound.h and asequencer.h, copy the files&lt;br /&gt;
:   in the kernel include/uapi/sound as is, and give some renames for&lt;br /&gt;
:   avoiding conflicts with alsa-lib's definitions.&lt;br /&gt;
:   &lt;br /&gt;
:   Some structs, unions and typedefs in asound.h and asequencer.h are&lt;br /&gt;
:   once renamed in local.h before inclusion, then renamed back again.&lt;br /&gt;
:   &lt;br /&gt;
:   A bonus by this action is that some local codes don't have to refer to&lt;br /&gt;
:   sndrv_xxx any longer.  However, some codes like src/seq/seq.c need&lt;br /&gt;
:   explicit cast because of unavoidable conflicts of struct types.&lt;br /&gt;
:   &lt;br /&gt;
:   Another significant change is that now snd_pcm_sw_params.period_event&lt;br /&gt;
:   field is removed.  Instead, try to access the last reserved field&lt;br /&gt;
:   internally.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Avoid busy loop in snd_pcm_write_areas() with rate plugin&lt;br /&gt;
:   &lt;br /&gt;
:   snd_pcm_write_areas() tries to wait until avail &amp;amp;gt;= avail_min condition&lt;br /&gt;
:   is satisfied.  This doesn't work always well when a rate plugin is in&lt;br /&gt;
:   the play.&lt;br /&gt;
:   &lt;br /&gt;
:   When a partial data with a smaller size than a period is written, the&lt;br /&gt;
:   rate plugin doesn't transfer the data immediately to the slave PCM,&lt;br /&gt;
:   but kept in an internal buffer and it changes only the hwptr of the&lt;br /&gt;
:   plugin.  Thus, the condition &amp;quot;avail &amp;amp;lt; avail_min&amp;quot; is triggered for a&lt;br /&gt;
:   wait check although the underlying slave PCM has enough room.  This&lt;br /&gt;
:   results in a call of snd_pcm_wait() which returns immediately after&lt;br /&gt;
:   poll() call, and the snd_pcm_write_areas() loop continues.  As a&lt;br /&gt;
:   consequence, it falls into a CPU hog.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch fixes that busy loop by introducing a new fast_ops to check&lt;br /&gt;
:   the availability for wait of avail_min.  Then a plugin can ask the&lt;br /&gt;
:   slave PCM whether the wait is required (or possible).&lt;br /&gt;
:   &lt;br /&gt;
:   A few plugins like multi plugin need a special handling.  Otherwise a&lt;br /&gt;
:   generic plugin function can be used.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Trent Piepho &amp;amp;lt;tpiepho@gmail.com&amp;amp;gt;&lt;br /&gt;
: - Reduce compilation warnings&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Fix memory leak for pcm empty and asym plugins&lt;br /&gt;
:   &lt;br /&gt;
:   The init-only plugins do not have own pcm handle, so free the references&lt;br /&gt;
:   to open function immediately after open.&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: support for audio timestamps&lt;br /&gt;
:   &lt;br /&gt;
:   add new snd_pcm_status_get_audio_htstamp() routine to&lt;br /&gt;
:   query the audio timestamps provided by the kernel.&lt;br /&gt;
:   &lt;br /&gt;
:   This change provides applications with better ways&lt;br /&gt;
:   to track elapsed time. Before this patch, applications&lt;br /&gt;
:   would subtract queued samples (delay) from written samples,&lt;br /&gt;
:   resulting in a 1-2 sample error.&lt;br /&gt;
:   &lt;br /&gt;
:   Also add snd_pcm_hw_params_supports_audio_wallclock_ts()&lt;br /&gt;
:   to query what the hardware supports.&lt;br /&gt;
:   &lt;br /&gt;
:   TODO: check protocol compatibility?&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Fix the invalid snd_pcm_close() calls in rate plugin&lt;br /&gt;
:   &lt;br /&gt;
:   It happens in the error path, should call snd_pcm_free() instead.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Fix infinite loop in htimestamp of dmix, dsnoop and dshare plugins&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Fill SND_CHMAP_NA to silent channels in route plugin&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of SND_CHMAP_UNKNOWN, fill SND_CHMAP_NA to the silent channels.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: A few doxygen fixes for chmap stuff&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Fix the conversion from string to chmap position&lt;br /&gt;
:   &lt;br /&gt;
:   Use strncasecmp() to allow lower cases, and also evaluate the inverted&lt;br /&gt;
:   phase suffix, too.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Define MONO and other channel map positions&lt;br /&gt;
:   &lt;br /&gt;
:   Follow the new definitions in the kernel side.  MONO and others have&lt;br /&gt;
:   been added, and the order of position table was changed again.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Use compounds for overriding / enhancing chmaps&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of a single channel map, multiple channel maps can be provided&lt;br /&gt;
:   in a form of compound (array) to hw and null plugins.  In null&lt;br /&gt;
:   get_chmap, the channel map corresponding to the current channels is&lt;br /&gt;
:   copied from the given channel maps.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Add the missing query_chmaps for route plugin&lt;br /&gt;
:   &lt;br /&gt;
:   Also fix the channel count in get_chmap for route plugin.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Add chmap options to hw and null plugins&lt;br /&gt;
:   &lt;br /&gt;
:   Add a config definition &amp;quot;chmap&amp;quot; to override (or enhance) the channel&lt;br /&gt;
:   maps.  So far, only a single channel map can be provided, and the&lt;br /&gt;
:   channel count consistency isn't strictly tested at all.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Add query_chmaps support to multi plugin&lt;br /&gt;
:   &lt;br /&gt;
:   Also fix some bugs in get_chmap().&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Add snd_pcm_chmap_long_name()&lt;br /&gt;
:   &lt;br /&gt;
:   Just return a more verbose name than snd_pcm_chmap_name(), but&lt;br /&gt;
:   including white spaces.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Add SND_CHMAP_API_VERSION definition&lt;br /&gt;
:   &lt;br /&gt;
:   Just to make it easier for apps to support chmap conditionally via&lt;br /&gt;
:   simple ifdefs.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Add string conversion helper functions for chmap&lt;br /&gt;
:   &lt;br /&gt;
:   Added a few helper functions between chmap and string.&lt;br /&gt;
:   snd_pcm_chmap_type_name() -- a string of the given chmap type&lt;br /&gt;
:   snd_pcm_chmap_name() -- a string of the given channel position&lt;br /&gt;
:   snd_pcm_chmap_print() -- print channel map on the given buffer&lt;br /&gt;
:   snd_pcm_chmap_from_string() -- get a channel position from string&lt;br /&gt;
:   snd_pcm_parse_string() -- parse the whole channel map from string&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Fix prefix for snd_pcm_chmap_type enum members&lt;br /&gt;
:   &lt;br /&gt;
:   Add _TYPE prefix to distinguish from the channel position.&lt;br /&gt;
:   Also add SND_CHMAP_TYPE_LAST entry pointing the last one like other&lt;br /&gt;
:   enums.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Implement snd_pcm_query_chmaps_from_hw()&lt;br /&gt;
:   &lt;br /&gt;
:   This is a function similar like snd_pcm_query_chmaps() but performs&lt;br /&gt;
:   the query without a PCM handle.  The card, device and substream&lt;br /&gt;
:   numbers are passed as well as stream direction.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Introduce snd_pcm_chmap_t and snd_pcm_chmap_query_t&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of passing ambiguous integer array, define snd_pcm_chmap_t and&lt;br /&gt;
:   snd_pcm_chmap_query_t so that user can understand more easily which&lt;br /&gt;
:   element is for what.&lt;br /&gt;
:   &lt;br /&gt;
: - Add SND_CHMAP_NA and bit flag definitions&lt;br /&gt;
:   &lt;br /&gt;
: - Follow channel position definitions to mixer channel in mixer.h&lt;br /&gt;
:   &lt;br /&gt;
:   mixer.h already contains some channel position definitions.&lt;br /&gt;
:   To be more consistent over all systems, better to follow the same&lt;br /&gt;
:   order for the new channel map, too.  But since UNKNOWN channel must be&lt;br /&gt;
:   zero but the definition in mixer.h contains -1 as UNKNOWN, simply&lt;br /&gt;
:   shift the value with 1.&lt;br /&gt;
:   &lt;br /&gt;
:   If the conversion is required between SND_CHMAP and SND_MIXER_SCHN,&lt;br /&gt;
:   just increment/decrement 1.  Eventually I'll provide helper functions&lt;br /&gt;
:   for that...&lt;br /&gt;
:   &lt;br /&gt;
: - Define channel map position enum in pcm.h&lt;br /&gt;
:   &lt;br /&gt;
:   The original definition is in sound/asound.h, but we need to export to&lt;br /&gt;
:   alsa-lib users, too.&lt;br /&gt;
:   &lt;br /&gt;
: - Cache the chmap operation errors&lt;br /&gt;
:   &lt;br /&gt;
:   ... not to retry the same error again.&lt;br /&gt;
:   &lt;br /&gt;
: - Implement get_chmap/set_chmap for PCM extplug/ioplug plugins&lt;br /&gt;
:   &lt;br /&gt;
:   Added the new ops for both external plugins, so the protocol numbers&lt;br /&gt;
:   are incremented.&lt;br /&gt;
:   &lt;br /&gt;
: - Implement get_chmap/set_chmap for PCM plug, route and multi plugins&lt;br /&gt;
:   &lt;br /&gt;
:   Still incomplete implementations.  The query and set ops are missing&lt;br /&gt;
:   for route and multi plugins.&lt;br /&gt;
:   &lt;br /&gt;
: - Implement the channel mapping API&lt;br /&gt;
:   &lt;br /&gt;
:   Added new channel-mapping API functions.&lt;br /&gt;
:   Not all plugins are covered, especially the route, multi and external&lt;br /&gt;
:   plugins don't work yet.&lt;br /&gt;
:   &lt;br /&gt;
===Sequencer API===&lt;br /&gt;
: - Merge kernel uapi/sound/asound.h and asequencer.h&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of keeping modified asound.h and asequencer.h, copy the files&lt;br /&gt;
:   in the kernel include/uapi/sound as is, and give some renames for&lt;br /&gt;
:   avoiding conflicts with alsa-lib's definitions.&lt;br /&gt;
:   &lt;br /&gt;
:   Some structs, unions and typedefs in asound.h and asequencer.h are&lt;br /&gt;
:   once renamed in local.h before inclusion, then renamed back again.&lt;br /&gt;
:   &lt;br /&gt;
:   A bonus by this action is that some local codes don't have to refer to&lt;br /&gt;
:   sndrv_xxx any longer.  However, some codes like src/seq/seq.c need&lt;br /&gt;
:   explicit cast because of unavoidable conflicts of struct types.&lt;br /&gt;
:   &lt;br /&gt;
:   Another significant change is that now snd_pcm_sw_params.period_event&lt;br /&gt;
:   field is removed.  Instead, try to access the last reserved field&lt;br /&gt;
:   internally.&lt;br /&gt;
:   &lt;br /&gt;
: - Reduce compilation warnings&lt;br /&gt;
:   &lt;br /&gt;
===Timer API===&lt;br /&gt;
: - Merge kernel uapi/sound/asound.h and asequencer.h&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of keeping modified asound.h and asequencer.h, copy the files&lt;br /&gt;
:   in the kernel include/uapi/sound as is, and give some renames for&lt;br /&gt;
:   avoiding conflicts with alsa-lib's definitions.&lt;br /&gt;
:   &lt;br /&gt;
:   Some structs, unions and typedefs in asound.h and asequencer.h are&lt;br /&gt;
:   once renamed in local.h before inclusion, then renamed back again.&lt;br /&gt;
:   &lt;br /&gt;
:   A bonus by this action is that some local codes don't have to refer to&lt;br /&gt;
:   sndrv_xxx any longer.  However, some codes like src/seq/seq.c need&lt;br /&gt;
:   explicit cast because of unavoidable conflicts of struct types.&lt;br /&gt;
:   &lt;br /&gt;
:   Another significant change is that now snd_pcm_sw_params.period_event&lt;br /&gt;
:   field is removed.  Instead, try to access the last reserved field&lt;br /&gt;
:   internally.&lt;br /&gt;
:   &lt;br /&gt;
===Use Case Manager API===&lt;br /&gt;
: - ucm: Set uc_mgr-&amp;amp;gt;ctl to NULL after closing it.&lt;br /&gt;
:   &lt;br /&gt;
:   Fixes a double-free bug.&lt;br /&gt;
:   &lt;br /&gt;
===ALSA Lisp===&lt;br /&gt;
: - Reduce compilation warnings&lt;br /&gt;
:   &lt;br /&gt;
===Configuration===&lt;br /&gt;
: - USB-audio: Add &amp;quot;HP Digital Stereo Headset&amp;quot; to SPDIF blacklist&lt;br /&gt;
:   &lt;br /&gt;
:   Yet another headset without digital I/O.&lt;br /&gt;
:   &lt;br /&gt;
: - Add workaround for conflicting IEC958 controls for HD-audio&lt;br /&gt;
:   &lt;br /&gt;
:   When both an SPDIF and an HDMI output are present on HD-audio, both&lt;br /&gt;
:   try to access IEC958 controls with index=0 although one of them must&lt;br /&gt;
:   be wrong.  For avoiding this conflict, the recent kernel code (3.9 and&lt;br /&gt;
:   3.8 stable) moves the IEC958 controls of an SPDIF with index=16 once&lt;br /&gt;
:   when the conflict happens.&lt;br /&gt;
:   &lt;br /&gt;
:   In this patch, the corresponding support is added in alsa-lib side.&lt;br /&gt;
:   The new &amp;quot;skip_rest&amp;quot; boolean flag is added to the hooked element&lt;br /&gt;
:   definition which indicates that the rest of element array will be&lt;br /&gt;
:   ignored once when this element is present and evaluated.  With this&lt;br /&gt;
:   new flag, the HD-audio config takes index=16 primarily, then take&lt;br /&gt;
:   index=0 as fallback.&lt;br /&gt;
:   &lt;br /&gt;
: - conf: Fix a memory access violation resulting from improper error propogation&lt;br /&gt;
:   &lt;br /&gt;
:   Fixes an issue where a variable is used undeclared, which can cause seg&lt;br /&gt;
:   faults on some systems if the configuration file is not formatted&lt;br /&gt;
:   properly.&lt;br /&gt;
:   &lt;br /&gt;
: - conf: Add chmap definitions to TRIDENT and SI7018 configurations&lt;br /&gt;
:   &lt;br /&gt;
:   Manually add the channel map definitions as the channel front/rear is&lt;br /&gt;
:   determined dynamically.&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Use compounds for overriding / enhancing chmaps&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of a single channel map, multiple channel maps can be provided&lt;br /&gt;
:   in a form of compound (array) to hw and null plugins.  In null&lt;br /&gt;
:   get_chmap, the channel map corresponding to the current channels is&lt;br /&gt;
:   copied from the given channel maps.&lt;br /&gt;
:   &lt;br /&gt;
: - Add chmap override definitions for Emu10k1, Audigy and Audigy2 cards&lt;br /&gt;
:   &lt;br /&gt;
:   These cards won't provide the channel maps from the driver itself&lt;br /&gt;
:   because of the dynamic routing.  For simplicity, define chmaps in the&lt;br /&gt;
:   configurations, so that chmap querying of individual stereo streams&lt;br /&gt;
:   and combined multi streams works properly.&lt;br /&gt;
:   &lt;br /&gt;
===Documentation===&lt;br /&gt;
: - all places: doxygen cleanups&lt;br /&gt;
:   &lt;br /&gt;
:   I see no errors with these changes using doxygen 1.8.1.1 .&lt;br /&gt;
:   &lt;br /&gt;
===Dynamic Loader helpers===&lt;br /&gt;
: - Optimize NULL check in snd_dlobj_cache_put()&lt;br /&gt;
:   &lt;br /&gt;
: - Clean up dlobj cache only when no user is present&lt;br /&gt;
:   &lt;br /&gt;
:   Cleaning up the dlobj cache seems crashing some cases when the library&lt;br /&gt;
:   is used from another plugin like openal-soft.  A simple workaround is&lt;br /&gt;
:   to do the cleanup only when really no user is left, i.e. after all&lt;br /&gt;
:   close calls.&lt;br /&gt;
:   &lt;br /&gt;
:   Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=814250&lt;br /&gt;
:   &lt;br /&gt;
===Error handler===&lt;br /&gt;
: - Add snd_lib_error_set_local() to install a thread-local error handler.&lt;br /&gt;
:   &lt;br /&gt;
:   This is required so we can make other functions reentrant (such as&lt;br /&gt;
:   snd_device_name_hint()).&lt;br /&gt;
:   The default error handling function snd_lib_error_default() now checks&lt;br /&gt;
:   if a local handler exists, and if so, calls it. Otherwise, the previous&lt;br /&gt;
:   behavior is unchanged.&lt;br /&gt;
:   &lt;br /&gt;
===External Control Plugin SDK===&lt;br /&gt;
: - all places: doxygen cleanups&lt;br /&gt;
:   &lt;br /&gt;
:   I see no errors with these changes using doxygen 1.8.1.1 .&lt;br /&gt;
:   &lt;br /&gt;
===External PCM Filter Plugin SDK===&lt;br /&gt;
: - PCM: Introduce snd_pcm_chmap_t and snd_pcm_chmap_query_t&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of passing ambiguous integer array, define snd_pcm_chmap_t and&lt;br /&gt;
:   snd_pcm_chmap_query_t so that user can understand more easily which&lt;br /&gt;
:   element is for what.&lt;br /&gt;
:   &lt;br /&gt;
: - Implement get_chmap/set_chmap for PCM extplug/ioplug plugins&lt;br /&gt;
:   &lt;br /&gt;
:   Added the new ops for both external plugins, so the protocol numbers&lt;br /&gt;
:   are incremented.&lt;br /&gt;
:   &lt;br /&gt;
===External PCM I/O Plugin SDK===&lt;br /&gt;
: - PCM: Introduce snd_pcm_chmap_t and snd_pcm_chmap_query_t&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of passing ambiguous integer array, define snd_pcm_chmap_t and&lt;br /&gt;
:   snd_pcm_chmap_query_t so that user can understand more easily which&lt;br /&gt;
:   element is for what.&lt;br /&gt;
:   &lt;br /&gt;
: - Implement get_chmap/set_chmap for PCM extplug/ioplug plugins&lt;br /&gt;
:   &lt;br /&gt;
:   Added the new ops for both external plugins, so the protocol numbers&lt;br /&gt;
:   are incremented.&lt;br /&gt;
:   &lt;br /&gt;
===Kernel Headers===&lt;br /&gt;
: - PCM: Add more chmap definitions for UAC2&lt;br /&gt;
:   &lt;br /&gt;
:   The new PCM chmap positions have been added in (to be) 3.8-rc1 kernel,&lt;br /&gt;
:   and now updated alsa-lib, too.&lt;br /&gt;
:   &lt;br /&gt;
: - Merge kernel uapi/sound/asound.h and asequencer.h&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of keeping modified asound.h and asequencer.h, copy the files&lt;br /&gt;
:   in the kernel include/uapi/sound as is, and give some renames for&lt;br /&gt;
:   avoiding conflicts with alsa-lib's definitions.&lt;br /&gt;
:   &lt;br /&gt;
:   Some structs, unions and typedefs in asound.h and asequencer.h are&lt;br /&gt;
:   once renamed in local.h before inclusion, then renamed back again.&lt;br /&gt;
:   &lt;br /&gt;
:   A bonus by this action is that some local codes don't have to refer to&lt;br /&gt;
:   sndrv_xxx any longer.  However, some codes like src/seq/seq.c need&lt;br /&gt;
:   explicit cast because of unavoidable conflicts of struct types.&lt;br /&gt;
:   &lt;br /&gt;
:   Another significant change is that now snd_pcm_sw_params.period_event&lt;br /&gt;
:   field is removed.  Instead, try to access the last reserved field&lt;br /&gt;
:   internally.&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: fix 64-bit SNDRV_PCM_IOCTL_STATUS ABI breakage&lt;br /&gt;
:   &lt;br /&gt;
:   Commit cf40ea169aad (pcm: support for audio timestamps) added the new&lt;br /&gt;
:   audio_tstamp field to struct sndrv_pcm_status.  However, struct timespec&lt;br /&gt;
:   requires 64-bit alignment, so the 64-bit compiler would insert&lt;br /&gt;
:   32 bits of padding before this field, which broke SNDRV_PCM_IOCTL_STATUS&lt;br /&gt;
:   with error messages like this:&lt;br /&gt;
:   &lt;br /&gt;
:   kernel: unknown ioctl = 0x80984120&lt;br /&gt;
:   &lt;br /&gt;
:   To solve this, insert the padding explicitly so that it can be taken&lt;br /&gt;
:   into account when calculating the ABI structure size.&lt;br /&gt;
:   &lt;br /&gt;
: - pcm: support for audio timestamps&lt;br /&gt;
:   &lt;br /&gt;
:   add new snd_pcm_status_get_audio_htstamp() routine to&lt;br /&gt;
:   query the audio timestamps provided by the kernel.&lt;br /&gt;
:   &lt;br /&gt;
:   This change provides applications with better ways&lt;br /&gt;
:   to track elapsed time. Before this patch, applications&lt;br /&gt;
:   would subtract queued samples (delay) from written samples,&lt;br /&gt;
:   resulting in a 1-2 sample error.&lt;br /&gt;
:   &lt;br /&gt;
:   Also add snd_pcm_hw_params_supports_audio_wallclock_ts()&lt;br /&gt;
:   to query what the hardware supports.&lt;br /&gt;
:   &lt;br /&gt;
:   TODO: check protocol compatibility?&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Define MONO and other channel map positions&lt;br /&gt;
:   &lt;br /&gt;
:   Follow the new definitions in the kernel side.  MONO and others have&lt;br /&gt;
:   been added, and the order of position table was changed again.&lt;br /&gt;
:   &lt;br /&gt;
: - Add SND_CHMAP_NA and bit flag definitions&lt;br /&gt;
:   &lt;br /&gt;
: - Follow channel position definitions to mixer channel in mixer.h&lt;br /&gt;
:   &lt;br /&gt;
:   mixer.h already contains some channel position definitions.&lt;br /&gt;
:   To be more consistent over all systems, better to follow the same&lt;br /&gt;
:   order for the new channel map, too.  But since UNKNOWN channel must be&lt;br /&gt;
:   zero but the definition in mixer.h contains -1 as UNKNOWN, simply&lt;br /&gt;
:   shift the value with 1.&lt;br /&gt;
:   &lt;br /&gt;
:   If the conversion is required between SND_CHMAP and SND_MIXER_SCHN,&lt;br /&gt;
:   just increment/decrement 1.  Eventually I'll provide helper functions&lt;br /&gt;
:   for that...&lt;br /&gt;
:   &lt;br /&gt;
: - Implement the channel mapping API&lt;br /&gt;
:   &lt;br /&gt;
:   Added new channel-mapping API functions.&lt;br /&gt;
:   Not all plugins are covered, especially the route, multi and external&lt;br /&gt;
:   plugins don't work yet.&lt;br /&gt;
:   &lt;br /&gt;
===Test/Example code===&lt;br /&gt;
: - pcm: support for audio timestamps&lt;br /&gt;
:   &lt;br /&gt;
:   add new snd_pcm_status_get_audio_htstamp() routine to&lt;br /&gt;
:   query the audio timestamps provided by the kernel.&lt;br /&gt;
:   &lt;br /&gt;
:   This change provides applications with better ways&lt;br /&gt;
:   to track elapsed time. Before this patch, applications&lt;br /&gt;
:   would subtract queued samples (delay) from written samples,&lt;br /&gt;
:   resulting in a 1-2 sample error.&lt;br /&gt;
:   &lt;br /&gt;
:   Also add snd_pcm_hw_params_supports_audio_wallclock_ts()&lt;br /&gt;
:   to query what the hardware supports.&lt;br /&gt;
:   &lt;br /&gt;
:   TODO: check protocol compatibility?&lt;br /&gt;
:   &lt;br /&gt;
: - test: add audio_time&lt;br /&gt;
:   &lt;br /&gt;
:   Simple test to create playback and capture streams, and&lt;br /&gt;
:   check elapsed time vs. sample counts reported by driver.&lt;br /&gt;
:   This should be helpful for driver developers and anyone&lt;br /&gt;
:   interested in system/audio time drift.&lt;br /&gt;
:   &lt;br /&gt;
:   tested only on HDAudio&lt;br /&gt;
:   &lt;br /&gt;
:   [added Makefile.am change by tiwai]&lt;br /&gt;
:   &lt;br /&gt;
:   TODO:&lt;br /&gt;
:   - make period configurable&lt;br /&gt;
:   - better output messages&lt;br /&gt;
:   - support for wall clock when it's in the mainline&lt;br /&gt;
:   &lt;br /&gt;
: - test/chmap: Fix wrong malloc size&lt;br /&gt;
:   &lt;br /&gt;
: - PCM: Add string conversion helper functions for chmap&lt;br /&gt;
:   &lt;br /&gt;
:   Added a few helper functions between chmap and string.&lt;br /&gt;
:   snd_pcm_chmap_type_name() -- a string of the given chmap type&lt;br /&gt;
:   snd_pcm_chmap_name() -- a string of the given channel position&lt;br /&gt;
:   snd_pcm_chmap_print() -- print channel map on the given buffer&lt;br /&gt;
:   snd_pcm_chmap_from_string() -- get a channel position from string&lt;br /&gt;
:   snd_pcm_parse_string() -- parse the whole channel map from string&lt;br /&gt;
:   &lt;br /&gt;
: - Fix duplicated channel entry in test/chmap.c&lt;br /&gt;
:   &lt;br /&gt;
: - Add SND_CHMAP_NA and bit flag definitions&lt;br /&gt;
:   &lt;br /&gt;
: - Follow channel position definitions to mixer channel in mixer.h&lt;br /&gt;
:   &lt;br /&gt;
:   mixer.h already contains some channel position definitions.&lt;br /&gt;
:   To be more consistent over all systems, better to follow the same&lt;br /&gt;
:   order for the new channel map, too.  But since UNKNOWN channel must be&lt;br /&gt;
:   zero but the definition in mixer.h contains -1 as UNKNOWN, simply&lt;br /&gt;
:   shift the value with 1.&lt;br /&gt;
:   &lt;br /&gt;
:   If the conversion is required between SND_CHMAP and SND_MIXER_SCHN,&lt;br /&gt;
:   just increment/decrement 1.  Eventually I'll provide helper functions&lt;br /&gt;
:   for that...&lt;br /&gt;
:   &lt;br /&gt;
: - Add test/chmap program&lt;br /&gt;
:   &lt;br /&gt;
==alsa-utils==&lt;br /&gt;
===Core===&lt;br /&gt;
: - Release v1.0.27&lt;br /&gt;
:   &lt;br /&gt;
: - alsactl: add --with-alsactl-daemonswitch=FILE to the global configure.in&lt;br /&gt;
:   &lt;br /&gt;
:   It may be useful to have the file location configurable.&lt;br /&gt;
:   &lt;br /&gt;
: - alsactl: move systemd config to the daemon mode&lt;br /&gt;
:   &lt;br /&gt;
: - configure: Fix obsolete AM_CONFIG_HEADER macro&lt;br /&gt;
:   &lt;br /&gt;
:   Automake-1.13 removed long obsolete AM_CONFIG_HEADER completely (&lt;br /&gt;
:   http://lists.gnu.org/archive/html/automake/2012-12/msg00038.html )&lt;br /&gt;
:   and errors out upon seeing it.&lt;br /&gt;
:   &lt;br /&gt;
:   Attached patch replaces it with proper AC_CONFIG_HEADERS.&lt;br /&gt;
:   &lt;br /&gt;
===ALSA Control (alsactl)===&lt;br /&gt;
: - alsactl: add --with-alsactl-daemonswitch=FILE to the global configure.in&lt;br /&gt;
:   &lt;br /&gt;
:   It may be useful to have the file location configurable.&lt;br /&gt;
:   &lt;br /&gt;
: - alsactl: revert back old systemd static units with the /etc/alsa/state-daemon.conf switch&lt;br /&gt;
:   &lt;br /&gt;
: - alsactl: add --nice and --sched-idle options&lt;br /&gt;
:   &lt;br /&gt;
:   The state management can run at low priority, add --nice and --sched-idle&lt;br /&gt;
:   options to set the scheduler.&lt;br /&gt;
:   &lt;br /&gt;
: - alsactl: daemon mode - remove disconnected cards&lt;br /&gt;
:   &lt;br /&gt;
: - alsactl: move systemd config to the daemon mode&lt;br /&gt;
:   &lt;br /&gt;
: - alsactl: add event filter and cache for the daemon mode&lt;br /&gt;
:   &lt;br /&gt;
: - alsactl: Improved command line argument handling...&lt;br /&gt;
:   &lt;br /&gt;
:   Improve command line argument handling for future extensions.&lt;br /&gt;
:   &lt;br /&gt;
: - alsactl: add the daemon mode&lt;br /&gt;
:   &lt;br /&gt;
:   For the plug-and-play hardware, like USB devices, it may be helpful&lt;br /&gt;
:   to manage the sound state periodically, before the devices are removed.&lt;br /&gt;
:   &lt;br /&gt;
:   This change implements new commands 'daemon' and 'rdaemon' to save&lt;br /&gt;
:   the sound state in defined intervals when the sound controls are changed.&lt;br /&gt;
:   &lt;br /&gt;
:   The udev rules can notify the daemon using the 'kill' or 'nrestore'&lt;br /&gt;
:   commands to rescan available cards in the system.&lt;br /&gt;
:   &lt;br /&gt;
: - alsactl: small code reorder to avoid memory leaks&lt;br /&gt;
:   &lt;br /&gt;
: - alsactl: safe state store and memory allocation cleanups&lt;br /&gt;
:   &lt;br /&gt;
:   - store new configuration to file + &amp;quot;.new&amp;quot; extension, rename later&lt;br /&gt;
:   - free the configuration tree on exit from load_state()/save_state()&lt;br /&gt;
:   - call snd_config_update_free_global() at the end of command blocks&lt;br /&gt;
:   &lt;br /&gt;
===Speaker Test===&lt;br /&gt;
: - speaker-test: change the interrupt handling logic to follow aplay/arecord&lt;br /&gt;
:   &lt;br /&gt;
: - speaker-test: try to call snd_pcm_close() when a signal is received&lt;br /&gt;
:   &lt;br /&gt;
: - speaker-test: increase the maximum supported rate to 384000&lt;br /&gt;
:   &lt;br /&gt;
:   There are some devices around supporting this sample rate so let's make&lt;br /&gt;
:   speaker-test capable to deal with them.&lt;br /&gt;
:   &lt;br /&gt;
: - speaker-test: Update man page for chmap option&lt;br /&gt;
:   &lt;br /&gt;
: - speaker-test: Add support for channel mapping API&lt;br /&gt;
:   &lt;br /&gt;
:   The surround channel map follows the given channel map from the&lt;br /&gt;
:   driver if available.&lt;br /&gt;
:   &lt;br /&gt;
:   Also, the channels can be specified manually via -m option.&lt;br /&gt;
:   Pass the channel map like &amp;quot;FL,FR,FC,LFE&amp;quot;.&lt;br /&gt;
:   &lt;br /&gt;
===alsaloop===&lt;br /&gt;
: - alsaloop: Fix missing #endif&lt;br /&gt;
:   &lt;br /&gt;
:   Sorry, forgotten.&lt;br /&gt;
:   &lt;br /&gt;
: - alsaloop: Make alsaloop working without libsamplerate&lt;br /&gt;
:   &lt;br /&gt;
:   When alsaloop is built with libsamplerate, it quits immediately with&lt;br /&gt;
:   No libsamplerate suppor&lt;br /&gt;
:   message.  It's because the check of -A option and it's set as default&lt;br /&gt;
:   non-zero value.&lt;br /&gt;
:   &lt;br /&gt;
===alsamixer===&lt;br /&gt;
: - alsamixer: Use isatty() to check the terminal (interactive) availability&lt;br /&gt;
:   &lt;br /&gt;
: - alsamixer: fix handling of removed controls&lt;br /&gt;
:   &lt;br /&gt;
:   When we get a notification that an element has been removed, we have to&lt;br /&gt;
:   recreate our internal control representation to avoid accessing freed&lt;br /&gt;
:   memory.  (And the checking for SND_CTL_EVENT_MASK_REMOVE should actually&lt;br /&gt;
:   be done correctly while we're at it.)&lt;br /&gt;
:   &lt;br /&gt;
===amixer===&lt;br /&gt;
: - amixer: Use the alsa-lib functions for id print and parse and value parse&lt;br /&gt;
:   &lt;br /&gt;
: - amixer: Fix dB value outputs in amixer contents&lt;br /&gt;
:   &lt;br /&gt;
:   Add missing cast to signed int for DB_MINMAX* types.&lt;br /&gt;
:   &lt;br /&gt;
: - amixer: Fix parsing container TLV entries&lt;br /&gt;
:   &lt;br /&gt;
:   Fix the wrong calculation of the size of a container TLV entry, which&lt;br /&gt;
:   resulted in &amp;quot;TLV size error&amp;quot; messages.&lt;br /&gt;
:   &lt;br /&gt;
: - amixer: fix rounding of relative changes&lt;br /&gt;
:   &lt;br /&gt;
:   When doing control changes by a relative amount, amixer used the wrong&lt;br /&gt;
:   rounding direction, which would make it possible to stay at the same raw&lt;br /&gt;
:   value if the step was not big enough to reach the next value.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Honza Javorek &amp;amp;lt;jan.javorek@gmail.com&amp;amp;gt;&lt;br /&gt;
===aplay/arecord===&lt;br /&gt;
: - aplay/arecord: change the interrupt handling using snd_pcm_abort()&lt;br /&gt;
:   &lt;br /&gt;
:   It is required (exclude the fatal SIGABRT) to call snd_pcm_close() and&lt;br /&gt;
:   the end of work (outside of the interrupt handler). Use new snd_pcm_abort()&lt;br /&gt;
:   function to inform alsa-lib to not ignore EINTR and move the in_aborting&lt;br /&gt;
:   variable to the global scope to be checked in the i/o loops.&lt;br /&gt;
:   &lt;br /&gt;
: - aplay/arecord: added isatty() check (interactive mode)&lt;br /&gt;
:   &lt;br /&gt;
:   Turn off the interactive mode when stdin is not a tty.&lt;br /&gt;
:   &lt;br /&gt;
: - aplay: Add the support for big-endian WAV format (RIFX)&lt;br /&gt;
:   &lt;br /&gt;
: - aplay: Show usage if no parameter is passed&lt;br /&gt;
:   &lt;br /&gt;
:   When aplay/arecord are called without any argument the application hangs forever.&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of hanging, print the usage and exit.&lt;br /&gt;
:   &lt;br /&gt;
: - aplay: fix typo &amp;amp; silence warning..&lt;br /&gt;
:   &lt;br /&gt;
: - aplay: More support for channel map option&lt;br /&gt;
:   &lt;br /&gt;
:   Now aplay tries to follow the given channel map by rearranging the&lt;br /&gt;
:   channels even when the channel map override isn't allowed but if the&lt;br /&gt;
:   device is still capable to return a channel map.&lt;br /&gt;
:   &lt;br /&gt;
:   Also update the man page appropriately.&lt;br /&gt;
:   &lt;br /&gt;
: - aplay: Add support for channel mapping&lt;br /&gt;
:   &lt;br /&gt;
:   With -m option, user can specify the order of channel map.&lt;br /&gt;
:   As of this commit, it just tries to override the channel map, thus it&lt;br /&gt;
:   works only on devices that support the channel map override like HDMI.&lt;br /&gt;
:   Adjusting the channel order in aplay itself will be added later.&lt;br /&gt;
:   &lt;br /&gt;
==alsa-tools==&lt;br /&gt;
===Core===&lt;br /&gt;
: - Release v1.0.27&lt;br /&gt;
:   &lt;br /&gt;
: - ac3dec: Remove the ac3dec tool&lt;br /&gt;
:   &lt;br /&gt;
:   There may be some licencing issues for the name and decoder (it is not&lt;br /&gt;
:   build in the Fedora distro anyway).&lt;br /&gt;
:   &lt;br /&gt;
:   Sources will stay in repos, but almost all current players are able&lt;br /&gt;
:   to handle DD AC-3.&lt;br /&gt;
:   &lt;br /&gt;
: - Release v1.0.26.1&lt;br /&gt;
:   &lt;br /&gt;
===HDA Jack Retask===&lt;br /&gt;
: - hdajackretask: Some more UI fixes&lt;br /&gt;
:   &lt;br /&gt;
:   - don't overwrite a set advanced override unless necessary&lt;br /&gt;
:   - fix &amp;quot;not present&amp;quot; never selected&lt;br /&gt;
:   - remove some trailing whitespaces&lt;br /&gt;
:   &lt;br /&gt;
: - hdajackretask: Fix &amp;quot;advanced override&amp;quot; bug&lt;br /&gt;
:   &lt;br /&gt;
:   The values were not correctly retreived from the comboboxes.&lt;br /&gt;
:   &lt;br /&gt;
: - Add foreign automake option to hdajackretask/Makefile.am&lt;br /&gt;
:   &lt;br /&gt;
: - hdajackretask: Add missing header files to tar-ball distribution&lt;br /&gt;
:   &lt;br /&gt;
===ac3dec (Dolby Digital Decoder)===&lt;br /&gt;
: - ac3dec: Remove the ac3dec tool&lt;br /&gt;
:   &lt;br /&gt;
:   There may be some licencing issues for the name and decoder (it is not&lt;br /&gt;
:   build in the Fedora distro anyway).&lt;br /&gt;
:   &lt;br /&gt;
:   Sources will stay in repos, but almost all current players are able&lt;br /&gt;
:   to handle DD AC-3.&lt;br /&gt;
:   &lt;br /&gt;
: - ac3dec: Show usage if no parameter is passed&lt;br /&gt;
:   &lt;br /&gt;
:   When ac3dec is called without any argument the application hangs forever.&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of hanging, print the usage and exit.&lt;br /&gt;
:   &lt;br /&gt;
===ld10k1 (EMU10K1+ DSP Code Loader)===&lt;br /&gt;
: - (q)lo10k1: updated INSTALL files&lt;br /&gt;
:   &lt;br /&gt;
===qlo10k1===&lt;br /&gt;
: - (q)lo10k1: updated INSTALL files&lt;br /&gt;
:   &lt;br /&gt;
==alsa-plugins==&lt;br /&gt;
===Core===&lt;br /&gt;
: - Release v1.0.27&lt;br /&gt;
:   &lt;br /&gt;
===A52 Output plugin===&lt;br /&gt;
: - a52: Fix build errors&lt;br /&gt;
:   &lt;br /&gt;
:   I merged somehow a half-baked patch mistakenly.  Fixed now.&lt;br /&gt;
:   &lt;br /&gt;
: - a52: Add the support of recent libavcodec / libavutil&lt;br /&gt;
:   &lt;br /&gt;
:   The recent avcodec requires the planar support, which is essentially&lt;br /&gt;
:   non-interleaved formats.  We need to limit the accepted access types&lt;br /&gt;
:   depending on it.&lt;br /&gt;
:   &lt;br /&gt;
===PulseAudio -&amp;amp;gt; ALSA plugin===&lt;br /&gt;
: - pulse: pulse_pcm_poll_revents should return 0 on success&lt;br /&gt;
:   &lt;br /&gt;
: - pcm_pulse: set prebuf parameter according to software parameters&lt;br /&gt;
:   &lt;br /&gt;
:   The current default value for prebuf is very high, almost the full&lt;br /&gt;
:   virtual ALSA buffer. This breaks some application especially where&lt;br /&gt;
:   low latency is involved.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch makes pcm_pulse implement the sw_params callback and get&lt;br /&gt;
:   the prebuf value from the ALSA software parameters. Thus the&lt;br /&gt;
:   trigger latency is much more like what an ALSA application should&lt;br /&gt;
:   expect from an ALSA PCM device.&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/Changes_v1.0.26_v1.0.27</id>
		<title>Changes v1.0.26 v1.0.27</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/Changes_v1.0.26_v1.0.27"/>
				<updated>2013-04-12T08:46:22Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
[[Detailed changes v1.0.26 v1.0.27]]&lt;br /&gt;
=Changelog between 1.0.25 and 1.0.27 releases=&lt;br /&gt;
==alsa-firmware==&lt;br /&gt;
===Core===&lt;br /&gt;
: Release v1.0.27&lt;br /&gt;
: configure.in: Remove emi_26_62 reference&lt;br /&gt;
: Remove emi_26_62 firmwares&lt;br /&gt;
: Add firmware for CA0132 DSP&lt;br /&gt;
===Emagic EMI 2|6 Audio Interface Firmware===&lt;br /&gt;
: Remove emi_26_62 firmwares&lt;br /&gt;
===Sound Blaster HDA CA0132 Firmware===&lt;br /&gt;
: Update ca0132 firmware files&lt;br /&gt;
: Add firmware for CA0132 DSP&lt;br /&gt;
=Changelog between 1.0.26 and 1.0.27 releases=&lt;br /&gt;
==alsa-lib==&lt;br /&gt;
===Core===&lt;br /&gt;
: Release v1.0.27&lt;br /&gt;
: all places: doxygen cleanups&lt;br /&gt;
: Add sys/types.h to include list&lt;br /&gt;
: Add snd_lib_error_set_local() to install a thread-local error handler.&lt;br /&gt;
: configure: do not detect incorrect cross-compiler&lt;br /&gt;
: Fix endian check in local.h&lt;br /&gt;
: configure: Quite AM_CONDITIONAL() arguments&lt;br /&gt;
: Add workaround for conflicting snd_seq_event_t definitions&lt;br /&gt;
: Merge kernel uapi/sound/asound.h and asequencer.h&lt;br /&gt;
===Control API===&lt;br /&gt;
: control: enhance doc for snd_ctl_ascii_value_parse() function&lt;br /&gt;
: control, pcm: implement snd_ctl_abort() and snd_pcm_abort() functions&lt;br /&gt;
: Add workaround for conflicting IEC958 controls for HD-audio&lt;br /&gt;
: control: Simplify using snd_config_get_bool()&lt;br /&gt;
: snd_device_name_hint(): do not use global snd_config.&lt;br /&gt;
: snd_device_name_hint(): do not change the global error handler.&lt;br /&gt;
: Merge kernel uapi/sound/asound.h and asequencer.h&lt;br /&gt;
: Implement the channel mapping API&lt;br /&gt;
===Mixer API===&lt;br /&gt;
: all places: doxygen cleanups&lt;br /&gt;
: snd_mixer_poll_descriptors_revents should loop over pollfd&lt;br /&gt;
: mixer: Don't build simple_abst when no libdl is available&lt;br /&gt;
: Reduce compilation warnings&lt;br /&gt;
===PCM API===&lt;br /&gt;
: pcm: direct plugins: do more safe IPC semaphore handling&lt;br /&gt;
: all places: doxygen cleanups&lt;br /&gt;
: control, pcm: implement snd_ctl_abort() and snd_pcm_abort() functions&lt;br /&gt;
: pcm: fix typo, should be SND_PCM_STATE_PREPARED.&lt;br /&gt;
: pcm: fix and optimize snd_pcm_areas_copy function&lt;br /&gt;
: snd_pcm_direct_parse_open_conf(): use thread-safe getgrnam_r()&lt;br /&gt;
: PCM: Fix conflict of _snd_pcm_hw_params definitions&lt;br /&gt;
: PCM: shut up a compile &amp;quot;unused parameter&amp;quot; compile warning in pcm_multi.c&lt;br /&gt;
: PCM: Add more chmap definitions for UAC2&lt;br /&gt;
: Merge kernel uapi/sound/asound.h and asequencer.h&lt;br /&gt;
: PCM: Avoid busy loop in snd_pcm_write_areas() with rate plugin&lt;br /&gt;
: Reduce compilation warnings&lt;br /&gt;
: PCM: Fix memory leak for pcm empty and asym plugins&lt;br /&gt;
: pcm: support for audio timestamps&lt;br /&gt;
: PCM: Fix the invalid snd_pcm_close() calls in rate plugin&lt;br /&gt;
: PCM: Fix infinite loop in htimestamp of dmix, dsnoop and dshare plugins&lt;br /&gt;
: PCM: Fill SND_CHMAP_NA to silent channels in route plugin&lt;br /&gt;
: PCM: A few doxygen fixes for chmap stuff&lt;br /&gt;
: PCM: Fix the conversion from string to chmap position&lt;br /&gt;
: PCM: Define MONO and other channel map positions&lt;br /&gt;
: PCM: Use compounds for overriding / enhancing chmaps&lt;br /&gt;
: PCM: Add the missing query_chmaps for route plugin&lt;br /&gt;
: PCM: Add chmap options to hw and null plugins&lt;br /&gt;
: PCM: Add query_chmaps support to multi plugin&lt;br /&gt;
: PCM: Add snd_pcm_chmap_long_name()&lt;br /&gt;
: PCM: Add SND_CHMAP_API_VERSION definition&lt;br /&gt;
: PCM: Add string conversion helper functions for chmap&lt;br /&gt;
: PCM: Fix prefix for snd_pcm_chmap_type enum members&lt;br /&gt;
: PCM: Implement snd_pcm_query_chmaps_from_hw()&lt;br /&gt;
: PCM: Introduce snd_pcm_chmap_t and snd_pcm_chmap_query_t&lt;br /&gt;
: Add SND_CHMAP_NA and bit flag definitions&lt;br /&gt;
: Follow channel position definitions to mixer channel in mixer.h&lt;br /&gt;
: Define channel map position enum in pcm.h&lt;br /&gt;
: Cache the chmap operation errors&lt;br /&gt;
: Implement get_chmap/set_chmap for PCM extplug/ioplug plugins&lt;br /&gt;
: Implement get_chmap/set_chmap for PCM plug, route and multi plugins&lt;br /&gt;
: Implement the channel mapping API&lt;br /&gt;
===Sequencer API===&lt;br /&gt;
: Merge kernel uapi/sound/asound.h and asequencer.h&lt;br /&gt;
: Reduce compilation warnings&lt;br /&gt;
===Timer API===&lt;br /&gt;
: Merge kernel uapi/sound/asound.h and asequencer.h&lt;br /&gt;
===Use Case Manager API===&lt;br /&gt;
: ucm: Set uc_mgr-&amp;amp;gt;ctl to NULL after closing it.&lt;br /&gt;
===ALSA Lisp===&lt;br /&gt;
: Reduce compilation warnings&lt;br /&gt;
===Configuration===&lt;br /&gt;
: USB-audio: Add &amp;quot;HP Digital Stereo Headset&amp;quot; to SPDIF blacklist&lt;br /&gt;
: Add workaround for conflicting IEC958 controls for HD-audio&lt;br /&gt;
: conf: Fix a memory access violation resulting from improper error propogation&lt;br /&gt;
: conf: Add chmap definitions to TRIDENT and SI7018 configurations&lt;br /&gt;
: PCM: Use compounds for overriding / enhancing chmaps&lt;br /&gt;
: Add chmap override definitions for Emu10k1, Audigy and Audigy2 cards&lt;br /&gt;
===Documentation===&lt;br /&gt;
: all places: doxygen cleanups&lt;br /&gt;
===Dynamic Loader helpers===&lt;br /&gt;
: Optimize NULL check in snd_dlobj_cache_put()&lt;br /&gt;
: Clean up dlobj cache only when no user is present&lt;br /&gt;
===Error handler===&lt;br /&gt;
: Add snd_lib_error_set_local() to install a thread-local error handler.&lt;br /&gt;
===External Control Plugin SDK===&lt;br /&gt;
: all places: doxygen cleanups&lt;br /&gt;
===External PCM Filter Plugin SDK===&lt;br /&gt;
: PCM: Introduce snd_pcm_chmap_t and snd_pcm_chmap_query_t&lt;br /&gt;
: Implement get_chmap/set_chmap for PCM extplug/ioplug plugins&lt;br /&gt;
===External PCM I/O Plugin SDK===&lt;br /&gt;
: PCM: Introduce snd_pcm_chmap_t and snd_pcm_chmap_query_t&lt;br /&gt;
: Implement get_chmap/set_chmap for PCM extplug/ioplug plugins&lt;br /&gt;
===Kernel Headers===&lt;br /&gt;
: PCM: Add more chmap definitions for UAC2&lt;br /&gt;
: Merge kernel uapi/sound/asound.h and asequencer.h&lt;br /&gt;
: pcm: fix 64-bit SNDRV_PCM_IOCTL_STATUS ABI breakage&lt;br /&gt;
: pcm: support for audio timestamps&lt;br /&gt;
: PCM: Define MONO and other channel map positions&lt;br /&gt;
: Add SND_CHMAP_NA and bit flag definitions&lt;br /&gt;
: Follow channel position definitions to mixer channel in mixer.h&lt;br /&gt;
: Implement the channel mapping API&lt;br /&gt;
===Test/Example code===&lt;br /&gt;
: pcm: support for audio timestamps&lt;br /&gt;
: test: add audio_time&lt;br /&gt;
: test/chmap: Fix wrong malloc size&lt;br /&gt;
: PCM: Add string conversion helper functions for chmap&lt;br /&gt;
: Fix duplicated channel entry in test/chmap.c&lt;br /&gt;
: Add SND_CHMAP_NA and bit flag definitions&lt;br /&gt;
: Follow channel position definitions to mixer channel in mixer.h&lt;br /&gt;
: Add test/chmap program&lt;br /&gt;
==alsa-utils==&lt;br /&gt;
===Core===&lt;br /&gt;
: Release v1.0.27&lt;br /&gt;
: alsactl: add --with-alsactl-daemonswitch=FILE to the global configure.in&lt;br /&gt;
: alsactl: move systemd config to the daemon mode&lt;br /&gt;
: configure: Fix obsolete AM_CONFIG_HEADER macro&lt;br /&gt;
===ALSA Control (alsactl)===&lt;br /&gt;
: alsactl: add --with-alsactl-daemonswitch=FILE to the global configure.in&lt;br /&gt;
: alsactl: revert back old systemd static units with the /etc/alsa/state-daemon.conf switch&lt;br /&gt;
: alsactl: add --nice and --sched-idle options&lt;br /&gt;
: alsactl: daemon mode - remove disconnected cards&lt;br /&gt;
: alsactl: move systemd config to the daemon mode&lt;br /&gt;
: alsactl: add event filter and cache for the daemon mode&lt;br /&gt;
: alsactl: Improved command line argument handling...&lt;br /&gt;
: alsactl: add the daemon mode&lt;br /&gt;
: alsactl: small code reorder to avoid memory leaks&lt;br /&gt;
: alsactl: safe state store and memory allocation cleanups&lt;br /&gt;
===Speaker Test===&lt;br /&gt;
: speaker-test: change the interrupt handling logic to follow aplay/arecord&lt;br /&gt;
: speaker-test: try to call snd_pcm_close() when a signal is received&lt;br /&gt;
: speaker-test: increase the maximum supported rate to 384000&lt;br /&gt;
: speaker-test: Update man page for chmap option&lt;br /&gt;
: speaker-test: Add support for channel mapping API&lt;br /&gt;
===alsaloop===&lt;br /&gt;
: alsaloop: Fix missing #endif&lt;br /&gt;
: alsaloop: Make alsaloop working without libsamplerate&lt;br /&gt;
===alsamixer===&lt;br /&gt;
: alsamixer: Use isatty() to check the terminal (interactive) availability&lt;br /&gt;
: alsamixer: fix handling of removed controls&lt;br /&gt;
===amixer===&lt;br /&gt;
: amixer: Use the alsa-lib functions for id print and parse and value parse&lt;br /&gt;
: amixer: Fix dB value outputs in amixer contents&lt;br /&gt;
: amixer: Fix parsing container TLV entries&lt;br /&gt;
: amixer: fix rounding of relative changes&lt;br /&gt;
===aplay/arecord===&lt;br /&gt;
: aplay/arecord: change the interrupt handling using snd_pcm_abort()&lt;br /&gt;
: aplay/arecord: added isatty() check (interactive mode)&lt;br /&gt;
: aplay: Add the support for big-endian WAV format (RIFX)&lt;br /&gt;
: aplay: Show usage if no parameter is passed&lt;br /&gt;
: aplay: fix typo &amp;amp; silence warning..&lt;br /&gt;
: aplay: More support for channel map option&lt;br /&gt;
: aplay: Add support for channel mapping&lt;br /&gt;
==alsa-tools==&lt;br /&gt;
===Core===&lt;br /&gt;
: Release v1.0.27&lt;br /&gt;
: ac3dec: Remove the ac3dec tool&lt;br /&gt;
: Release v1.0.26.1&lt;br /&gt;
===HDA Jack Retask===&lt;br /&gt;
: hdajackretask: Some more UI fixes&lt;br /&gt;
: hdajackretask: Fix &amp;quot;advanced override&amp;quot; bug&lt;br /&gt;
: Add foreign automake option to hdajackretask/Makefile.am&lt;br /&gt;
: hdajackretask: Add missing header files to tar-ball distribution&lt;br /&gt;
===ac3dec (Dolby Digital Decoder)===&lt;br /&gt;
: ac3dec: Remove the ac3dec tool&lt;br /&gt;
: ac3dec: Show usage if no parameter is passed&lt;br /&gt;
===ld10k1 (EMU10K1+ DSP Code Loader)===&lt;br /&gt;
: (q)lo10k1: updated INSTALL files&lt;br /&gt;
===qlo10k1===&lt;br /&gt;
: (q)lo10k1: updated INSTALL files&lt;br /&gt;
==alsa-plugins==&lt;br /&gt;
===Core===&lt;br /&gt;
: Release v1.0.27&lt;br /&gt;
===A52 Output plugin===&lt;br /&gt;
: a52: Fix build errors&lt;br /&gt;
: a52: Add the support of recent libavcodec / libavutil&lt;br /&gt;
===PulseAudio -&amp;amp;gt; ALSA plugin===&lt;br /&gt;
: pulse: pulse_pcm_poll_revents should return 0 on success&lt;br /&gt;
: pcm_pulse: set prebuf parameter according to software parameters&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/Changes_v1.0.26_v1.0.27</id>
		<title>Changes v1.0.26 v1.0.27</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/Changes_v1.0.26_v1.0.27"/>
				<updated>2013-04-12T08:46:22Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
[[Detailed changes v1.0.26 v1.0.27]]&lt;br /&gt;
=Changelog between 1.0.25 and 1.0.27 releases=&lt;br /&gt;
==alsa-firmware==&lt;br /&gt;
===Core===&lt;br /&gt;
: Release v1.0.27&lt;br /&gt;
: configure.in: Remove emi_26_62 reference&lt;br /&gt;
: Remove emi_26_62 firmwares&lt;br /&gt;
: Add firmware for CA0132 DSP&lt;br /&gt;
===Emagic EMI 2|6 Audio Interface Firmware===&lt;br /&gt;
: Remove emi_26_62 firmwares&lt;br /&gt;
===Sound Blaster HDA CA0132 Firmware===&lt;br /&gt;
: Update ca0132 firmware files&lt;br /&gt;
: Add firmware for CA0132 DSP&lt;br /&gt;
=Changelog between 1.0.26 and 1.0.27 releases=&lt;br /&gt;
==alsa-lib==&lt;br /&gt;
===Core===&lt;br /&gt;
: Release v1.0.27&lt;br /&gt;
: all places: doxygen cleanups&lt;br /&gt;
: Add sys/types.h to include list&lt;br /&gt;
: Add snd_lib_error_set_local() to install a thread-local error handler.&lt;br /&gt;
: configure: do not detect incorrect cross-compiler&lt;br /&gt;
: Fix endian check in local.h&lt;br /&gt;
: configure: Quite AM_CONDITIONAL() arguments&lt;br /&gt;
: Add workaround for conflicting snd_seq_event_t definitions&lt;br /&gt;
: Merge kernel uapi/sound/asound.h and asequencer.h&lt;br /&gt;
===Control API===&lt;br /&gt;
: control: enhance doc for snd_ctl_ascii_value_parse() function&lt;br /&gt;
: control, pcm: implement snd_ctl_abort() and snd_pcm_abort() functions&lt;br /&gt;
: Add workaround for conflicting IEC958 controls for HD-audio&lt;br /&gt;
: control: Simplify using snd_config_get_bool()&lt;br /&gt;
: snd_device_name_hint(): do not use global snd_config.&lt;br /&gt;
: snd_device_name_hint(): do not change the global error handler.&lt;br /&gt;
: Merge kernel uapi/sound/asound.h and asequencer.h&lt;br /&gt;
: Implement the channel mapping API&lt;br /&gt;
===Mixer API===&lt;br /&gt;
: all places: doxygen cleanups&lt;br /&gt;
: snd_mixer_poll_descriptors_revents should loop over pollfd&lt;br /&gt;
: mixer: Don't build simple_abst when no libdl is available&lt;br /&gt;
: Reduce compilation warnings&lt;br /&gt;
===PCM API===&lt;br /&gt;
: pcm: direct plugins: do more safe IPC semaphore handling&lt;br /&gt;
: all places: doxygen cleanups&lt;br /&gt;
: control, pcm: implement snd_ctl_abort() and snd_pcm_abort() functions&lt;br /&gt;
: pcm: fix typo, should be SND_PCM_STATE_PREPARED.&lt;br /&gt;
: pcm: fix and optimize snd_pcm_areas_copy function&lt;br /&gt;
: snd_pcm_direct_parse_open_conf(): use thread-safe getgrnam_r()&lt;br /&gt;
: PCM: Fix conflict of _snd_pcm_hw_params definitions&lt;br /&gt;
: PCM: shut up a compile &amp;quot;unused parameter&amp;quot; compile warning in pcm_multi.c&lt;br /&gt;
: PCM: Add more chmap definitions for UAC2&lt;br /&gt;
: Merge kernel uapi/sound/asound.h and asequencer.h&lt;br /&gt;
: PCM: Avoid busy loop in snd_pcm_write_areas() with rate plugin&lt;br /&gt;
: Reduce compilation warnings&lt;br /&gt;
: PCM: Fix memory leak for pcm empty and asym plugins&lt;br /&gt;
: pcm: support for audio timestamps&lt;br /&gt;
: PCM: Fix the invalid snd_pcm_close() calls in rate plugin&lt;br /&gt;
: PCM: Fix infinite loop in htimestamp of dmix, dsnoop and dshare plugins&lt;br /&gt;
: PCM: Fill SND_CHMAP_NA to silent channels in route plugin&lt;br /&gt;
: PCM: A few doxygen fixes for chmap stuff&lt;br /&gt;
: PCM: Fix the conversion from string to chmap position&lt;br /&gt;
: PCM: Define MONO and other channel map positions&lt;br /&gt;
: PCM: Use compounds for overriding / enhancing chmaps&lt;br /&gt;
: PCM: Add the missing query_chmaps for route plugin&lt;br /&gt;
: PCM: Add chmap options to hw and null plugins&lt;br /&gt;
: PCM: Add query_chmaps support to multi plugin&lt;br /&gt;
: PCM: Add snd_pcm_chmap_long_name()&lt;br /&gt;
: PCM: Add SND_CHMAP_API_VERSION definition&lt;br /&gt;
: PCM: Add string conversion helper functions for chmap&lt;br /&gt;
: PCM: Fix prefix for snd_pcm_chmap_type enum members&lt;br /&gt;
: PCM: Implement snd_pcm_query_chmaps_from_hw()&lt;br /&gt;
: PCM: Introduce snd_pcm_chmap_t and snd_pcm_chmap_query_t&lt;br /&gt;
: Add SND_CHMAP_NA and bit flag definitions&lt;br /&gt;
: Follow channel position definitions to mixer channel in mixer.h&lt;br /&gt;
: Define channel map position enum in pcm.h&lt;br /&gt;
: Cache the chmap operation errors&lt;br /&gt;
: Implement get_chmap/set_chmap for PCM extplug/ioplug plugins&lt;br /&gt;
: Implement get_chmap/set_chmap for PCM plug, route and multi plugins&lt;br /&gt;
: Implement the channel mapping API&lt;br /&gt;
===Sequencer API===&lt;br /&gt;
: Merge kernel uapi/sound/asound.h and asequencer.h&lt;br /&gt;
: Reduce compilation warnings&lt;br /&gt;
===Timer API===&lt;br /&gt;
: Merge kernel uapi/sound/asound.h and asequencer.h&lt;br /&gt;
===Use Case Manager API===&lt;br /&gt;
: ucm: Set uc_mgr-&amp;amp;gt;ctl to NULL after closing it.&lt;br /&gt;
===ALSA Lisp===&lt;br /&gt;
: Reduce compilation warnings&lt;br /&gt;
===Configuration===&lt;br /&gt;
: USB-audio: Add &amp;quot;HP Digital Stereo Headset&amp;quot; to SPDIF blacklist&lt;br /&gt;
: Add workaround for conflicting IEC958 controls for HD-audio&lt;br /&gt;
: conf: Fix a memory access violation resulting from improper error propogation&lt;br /&gt;
: conf: Add chmap definitions to TRIDENT and SI7018 configurations&lt;br /&gt;
: PCM: Use compounds for overriding / enhancing chmaps&lt;br /&gt;
: Add chmap override definitions for Emu10k1, Audigy and Audigy2 cards&lt;br /&gt;
===Documentation===&lt;br /&gt;
: all places: doxygen cleanups&lt;br /&gt;
===Dynamic Loader helpers===&lt;br /&gt;
: Optimize NULL check in snd_dlobj_cache_put()&lt;br /&gt;
: Clean up dlobj cache only when no user is present&lt;br /&gt;
===Error handler===&lt;br /&gt;
: Add snd_lib_error_set_local() to install a thread-local error handler.&lt;br /&gt;
===External Control Plugin SDK===&lt;br /&gt;
: all places: doxygen cleanups&lt;br /&gt;
===External PCM Filter Plugin SDK===&lt;br /&gt;
: PCM: Introduce snd_pcm_chmap_t and snd_pcm_chmap_query_t&lt;br /&gt;
: Implement get_chmap/set_chmap for PCM extplug/ioplug plugins&lt;br /&gt;
===External PCM I/O Plugin SDK===&lt;br /&gt;
: PCM: Introduce snd_pcm_chmap_t and snd_pcm_chmap_query_t&lt;br /&gt;
: Implement get_chmap/set_chmap for PCM extplug/ioplug plugins&lt;br /&gt;
===Kernel Headers===&lt;br /&gt;
: PCM: Add more chmap definitions for UAC2&lt;br /&gt;
: Merge kernel uapi/sound/asound.h and asequencer.h&lt;br /&gt;
: pcm: fix 64-bit SNDRV_PCM_IOCTL_STATUS ABI breakage&lt;br /&gt;
: pcm: support for audio timestamps&lt;br /&gt;
: PCM: Define MONO and other channel map positions&lt;br /&gt;
: Add SND_CHMAP_NA and bit flag definitions&lt;br /&gt;
: Follow channel position definitions to mixer channel in mixer.h&lt;br /&gt;
: Implement the channel mapping API&lt;br /&gt;
===Test/Example code===&lt;br /&gt;
: pcm: support for audio timestamps&lt;br /&gt;
: test: add audio_time&lt;br /&gt;
: test/chmap: Fix wrong malloc size&lt;br /&gt;
: PCM: Add string conversion helper functions for chmap&lt;br /&gt;
: Fix duplicated channel entry in test/chmap.c&lt;br /&gt;
: Add SND_CHMAP_NA and bit flag definitions&lt;br /&gt;
: Follow channel position definitions to mixer channel in mixer.h&lt;br /&gt;
: Add test/chmap program&lt;br /&gt;
==alsa-utils==&lt;br /&gt;
===Core===&lt;br /&gt;
: Release v1.0.27&lt;br /&gt;
: alsactl: add --with-alsactl-daemonswitch=FILE to the global configure.in&lt;br /&gt;
: alsactl: move systemd config to the daemon mode&lt;br /&gt;
: configure: Fix obsolete AM_CONFIG_HEADER macro&lt;br /&gt;
===ALSA Control (alsactl)===&lt;br /&gt;
: alsactl: add --with-alsactl-daemonswitch=FILE to the global configure.in&lt;br /&gt;
: alsactl: revert back old systemd static units with the /etc/alsa/state-daemon.conf switch&lt;br /&gt;
: alsactl: add --nice and --sched-idle options&lt;br /&gt;
: alsactl: daemon mode - remove disconnected cards&lt;br /&gt;
: alsactl: move systemd config to the daemon mode&lt;br /&gt;
: alsactl: add event filter and cache for the daemon mode&lt;br /&gt;
: alsactl: Improved command line argument handling...&lt;br /&gt;
: alsactl: add the daemon mode&lt;br /&gt;
: alsactl: small code reorder to avoid memory leaks&lt;br /&gt;
: alsactl: safe state store and memory allocation cleanups&lt;br /&gt;
===Speaker Test===&lt;br /&gt;
: speaker-test: change the interrupt handling logic to follow aplay/arecord&lt;br /&gt;
: speaker-test: try to call snd_pcm_close() when a signal is received&lt;br /&gt;
: speaker-test: increase the maximum supported rate to 384000&lt;br /&gt;
: speaker-test: Update man page for chmap option&lt;br /&gt;
: speaker-test: Add support for channel mapping API&lt;br /&gt;
===alsaloop===&lt;br /&gt;
: alsaloop: Fix missing #endif&lt;br /&gt;
: alsaloop: Make alsaloop working without libsamplerate&lt;br /&gt;
===alsamixer===&lt;br /&gt;
: alsamixer: Use isatty() to check the terminal (interactive) availability&lt;br /&gt;
: alsamixer: fix handling of removed controls&lt;br /&gt;
===amixer===&lt;br /&gt;
: amixer: Use the alsa-lib functions for id print and parse and value parse&lt;br /&gt;
: amixer: Fix dB value outputs in amixer contents&lt;br /&gt;
: amixer: Fix parsing container TLV entries&lt;br /&gt;
: amixer: fix rounding of relative changes&lt;br /&gt;
===aplay/arecord===&lt;br /&gt;
: aplay/arecord: change the interrupt handling using snd_pcm_abort()&lt;br /&gt;
: aplay/arecord: added isatty() check (interactive mode)&lt;br /&gt;
: aplay: Add the support for big-endian WAV format (RIFX)&lt;br /&gt;
: aplay: Show usage if no parameter is passed&lt;br /&gt;
: aplay: fix typo &amp;amp; silence warning..&lt;br /&gt;
: aplay: More support for channel map option&lt;br /&gt;
: aplay: Add support for channel mapping&lt;br /&gt;
==alsa-tools==&lt;br /&gt;
===Core===&lt;br /&gt;
: Release v1.0.27&lt;br /&gt;
: ac3dec: Remove the ac3dec tool&lt;br /&gt;
: Release v1.0.26.1&lt;br /&gt;
===HDA Jack Retask===&lt;br /&gt;
: hdajackretask: Some more UI fixes&lt;br /&gt;
: hdajackretask: Fix &amp;quot;advanced override&amp;quot; bug&lt;br /&gt;
: Add foreign automake option to hdajackretask/Makefile.am&lt;br /&gt;
: hdajackretask: Add missing header files to tar-ball distribution&lt;br /&gt;
===ac3dec (Dolby Digital Decoder)===&lt;br /&gt;
: ac3dec: Remove the ac3dec tool&lt;br /&gt;
: ac3dec: Show usage if no parameter is passed&lt;br /&gt;
===ld10k1 (EMU10K1+ DSP Code Loader)===&lt;br /&gt;
: (q)lo10k1: updated INSTALL files&lt;br /&gt;
===qlo10k1===&lt;br /&gt;
: (q)lo10k1: updated INSTALL files&lt;br /&gt;
==alsa-plugins==&lt;br /&gt;
===Core===&lt;br /&gt;
: Release v1.0.27&lt;br /&gt;
===A52 Output plugin===&lt;br /&gt;
: a52: Fix build errors&lt;br /&gt;
: a52: Add the support of recent libavcodec / libavutil&lt;br /&gt;
===PulseAudio -&amp;amp;gt; ALSA plugin===&lt;br /&gt;
: pulse: pulse_pcm_poll_revents should return 0 on success&lt;br /&gt;
: pcm_pulse: set prebuf parameter according to software parameters&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/Template:ALSA_download</id>
		<title>Template:ALSA download</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/Template:ALSA_download"/>
				<updated>2013-04-09T08:57:53Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#f9f9f9; margin-top: 5px; margin-left:5px; margin-bottom:5px; padding:0px; border:1px solid #aaaaaa; width:27em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Crystal Clear action build.png|right|18px|Download icon]] '''[[Download]] a package'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#ffffff; padding:0.4em; font-size: 95%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
; Current versions&lt;br /&gt;
* [http://www.kernel.org stable linux kernel]&lt;br /&gt;
* {{ALSA download file|module=lib|release=stable}}&lt;br /&gt;
* {{ALSA download file|module=utils|release=stable}}&lt;br /&gt;
* {{ALSA download file|module=tools|release=stable}}&lt;br /&gt;
* {{ALSA download file|module=firmware|release=stable}}&lt;br /&gt;
* {{ALSA download file|module=plugins|release=stable}}&lt;br /&gt;
* {{ALSA download file|module=oss|release=stable}}&lt;br /&gt;
* {{ALSA download file|module=python|release=stable}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
; Development versions&lt;br /&gt;
* {{ALSA download file|module=driver|release=development}}&lt;br /&gt;
* {{ALSA download file|module=lib|release=development}}&lt;br /&gt;
* {{ALSA download file|module=utils|release=development}}&lt;br /&gt;
* {{ALSA download file|module=tools|release=development}}&lt;br /&gt;
* {{ALSA download file|module=firmware|release=development}}&lt;br /&gt;
* {{ALSA download file|module=plugins|release=development}}&lt;br /&gt;
* {{ALSA download file|module=oss|release=development}}&lt;br /&gt;
* {{ALSA download file|module=python|release=development}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Info templates|{{PAGENAME}}]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/SMP_Design</id>
		<title>SMP Design</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/SMP_Design"/>
				<updated>2013-01-31T11:14:15Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The SMP / multithread design has several levels in the ALSA project codebase. The kernel drivers are fully SMP / thread safe. The alsa-lib was designed to allow grouping of commands for returned handle to optimize pthread locking. The snd_*_open() calls are thread safe. The use of returned handles must be serialized in the application using own locking scheme. Standalone (not handle related) functions in alsa-lib should be fully thread safe.&lt;br /&gt;
&lt;br /&gt;
There are a few global variables that are used in alsa-lib, such as the global error handler pointer and the global root config pointer.&lt;br /&gt;
Accessing / modifying these would be thread-unsafe.&lt;br /&gt;
&lt;br /&gt;
If you find a bug in kernel or alsa-lib which breaks these rules, please, let us know.&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/GIT_Server</id>
		<title>GIT Server</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/GIT_Server"/>
				<updated>2012-12-17T15:37:34Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: /* Syncing the branch release in alsa-driver.git */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==ALSA Repositories==&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.git&lt;br /&gt;
: contains compatibility and build code for older 2.6 kernels with mirrored latest kernel code&lt;br /&gt;
; alsa-kernel.git&lt;br /&gt;
: contains linux 2.6 kernel tree&lt;br /&gt;
&lt;br /&gt;
; alsa-kprivate.git&lt;br /&gt;
: contains linux 2.6 kernel tree - for private branches for alsa developers&lt;br /&gt;
&lt;br /&gt;
; alsa-lib.git&lt;br /&gt;
: library&lt;br /&gt;
; alsa-utils.git;&lt;br /&gt;
: utilities&lt;br /&gt;
; alsa-firmware.git&lt;br /&gt;
: firmware&lt;br /&gt;
; alsa-tools.git&lt;br /&gt;
: tools&lt;br /&gt;
; alsa-plugins.git&lt;br /&gt;
: plugins&lt;br /&gt;
; alsa-oss.git&lt;br /&gt;
: oss compatibility&lt;br /&gt;
; alsa-python.git&lt;br /&gt;
: official python binding&lt;br /&gt;
; alsa-ucm-conf.git&lt;br /&gt;
: ALSA Use-Case-Manager configuration library&lt;br /&gt;
; tinycompress.git&lt;br /&gt;
: Compressed formats support library&lt;br /&gt;
&lt;br /&gt;
; alsa.git&lt;br /&gt;
: ALSA service repo (misc files)&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.nomirror.git&lt;br /&gt;
: old ALSA driver repository without the mirrored kernel code&lt;br /&gt;
; alsa-kmirror.git&lt;br /&gt;
: alsa kernel mirror tree for continuous development (contains ALSA parts from alsa-kernel.git tree)&lt;br /&gt;
&lt;br /&gt;
==Anonymous access==&lt;br /&gt;
&lt;br /&gt;
===Read only GIT server===&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.git alsa-driver&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kprivate.git alsa-kprivate&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-lib.git alsa-lib&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-utils.git alsa-utils&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-firmware.git alsa-firmware&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-tools.git alsa-tools&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-plugins.git alsa-plugins&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-oss.git alsa-oss&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-python.git alsa-python&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-ucm-conf.git alsa-ucm-conf&lt;br /&gt;
: git clone git://git.alsa-project.org/tinycompress.git tinycompress&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa.git alsa&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.nomirror.git alsa&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
===Web interface===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/?p=tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
===HTTP access===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/http/tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
==For developers - kernel drivers==&lt;br /&gt;
&lt;br /&gt;
===Common rules===&lt;br /&gt;
&lt;br /&gt;
: 1) be very very very carefull when you use '--force' for 'git push', you can broke whole repository, you should notify other developers on alsa-devel mailing list that you will do this change for 'master' branch&lt;br /&gt;
: 2) valid 'Signed-off-by:' line must be in the commit text&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kernel.git and the mirror branch in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
: 1) subject (first commit text line) must start with '[ALSA] ' or 'ALSA: ' or '[sound] ' or 'sound: '&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kprivate.git===&lt;br /&gt;
&lt;br /&gt;
No rules. Just do not overwrite branches created by someone else. The 'master' branch is equal to linux-2.6 official tree from &lt;br /&gt;
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git (do sync if necessary):&lt;br /&gt;
&lt;br /&gt;
  git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
  git checkout master&lt;br /&gt;
  git pull linux-2.6 master&lt;br /&gt;
  git push --tags origin master&lt;br /&gt;
&lt;br /&gt;
===Syncing the branch release in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
  Please, use --log for the git merge command to show the &amp;quot;subject&amp;quot; of commits.&lt;br /&gt;
  It might be handy to define these git aliases in your .git/config file:&lt;br /&gt;
&lt;br /&gt;
  [alias]&lt;br /&gt;
        apull = !git checkout release &amp;amp;&amp;amp; git pull origin release &amp;amp;&amp;amp; \&lt;br /&gt;
                 git checkout build &amp;amp;&amp;amp; git pull origin build &amp;amp;&amp;amp; \&lt;br /&gt;
                 git checkout mirror &amp;amp;&amp;amp; git pull origin mirror &amp;amp;&amp;amp; \&lt;br /&gt;
                 git checkout release&lt;br /&gt;
        apush = !git push --tags origin release &amp;amp;&amp;amp; git push origin build &amp;amp;&amp;amp; \&lt;br /&gt;
                 git push origin mirror&lt;br /&gt;
        bmerge = !git checkout release &amp;amp;&amp;amp; git merge --log build&lt;br /&gt;
        mmerge = !git checkout release &amp;amp;&amp;amp; git merge --log mirror&lt;br /&gt;
&lt;br /&gt;
===Clone repositories===&lt;br /&gt;
&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-driver.git alsa-driver&lt;br /&gt;
 cd alsa-driver&lt;br /&gt;
 git branch build remotes/origin/build&lt;br /&gt;
 git branch mirror remotes/origin/mirror&lt;br /&gt;
 git branch release remotes/origin/release&lt;br /&gt;
&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
To show all branches (includes remote ones):&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To make a remote branch local:&lt;br /&gt;
&lt;br /&gt;
 git checkout -b for-linus remotes/origin/for-linus&lt;br /&gt;
 git checkout -b linux-2.6 remotes/origin/linux-2.6&lt;br /&gt;
&lt;br /&gt;
===Update and rebase using Linus's 2.6 kernel tree===&lt;br /&gt;
&lt;br /&gt;
Add remote URL:&lt;br /&gt;
&lt;br /&gt;
 git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
&lt;br /&gt;
Checkout linux-2.6 branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout linux-2.6&lt;br /&gt;
&lt;br /&gt;
Pull Linus's 2.6 changes:&lt;br /&gt;
&lt;br /&gt;
 git pull linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
Rebase our main ALSA development master branch with linux-2.6:&lt;br /&gt;
&lt;br /&gt;
 git rebase linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
===Push branch changes to ALSA GIT repository===&lt;br /&gt;
&lt;br /&gt;
 git push --tags origin master&lt;br /&gt;
 git push --tags origin linux-2.6&lt;br /&gt;
 git push --tags origin for-linus&lt;br /&gt;
&lt;br /&gt;
Note: Especially after 'git rebase' the repository on server is not consistent with local repository (remote ref is not ancestor of the local ref for master branch), so you have to use --force parameter for 'git push' command. Note that this might be dangerous - please, ask Jaroslav Kysela &amp;lt; perex at perex . cz &amp;gt; if you can do this for branch 'master'.&lt;br /&gt;
&lt;br /&gt;
===Branches===&lt;br /&gt;
&lt;br /&gt;
; master&lt;br /&gt;
: this branch is for main development, managed by Jaroslav Kysela, it is rebased before ALSA releases&lt;br /&gt;
: the contents is synced to alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
; linux-next&lt;br /&gt;
: this branch is for linux next testing tree (originaly maintaned by Andrew Morton), rebased &lt;br /&gt;
&lt;br /&gt;
; for-linus&lt;br /&gt;
: this branch is for mainstream tree (for Linus Torvalds), just temporary branch&lt;br /&gt;
&lt;br /&gt;
; linux-2.6&lt;br /&gt;
: this is official linux 2.6 mainstream tree&lt;br /&gt;
&lt;br /&gt;
; stable-2.6.&amp;lt;number&amp;gt;&lt;br /&gt;
: patches for stable 2.6 kernels&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
&lt;br /&gt;
Private tags are not allowed. Only branches identifying ALSA version (alsa-driver.git) or official linux kernel version (alsa-kernel.git) are allowed.&lt;br /&gt;
&lt;br /&gt;
===Maintenance===&lt;br /&gt;
&lt;br /&gt;
GIT server is maintaned by [[User:Perex]].&lt;br /&gt;
&lt;br /&gt;
==Occasional Developers==&lt;br /&gt;
This section is for developers without write access to ALSA git. i.e., who will clone repos and send in patches&lt;br /&gt;
&lt;br /&gt;
===clone the repository===&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
If you live behind a firewall that blocks the git protocol, you can do this instead:&lt;br /&gt;
&lt;br /&gt;
 git clone http://git.alsa-project.org/http/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
Create local branches:&lt;br /&gt;
&lt;br /&gt;
 cd alsa-driver&lt;br /&gt;
 git branch build remotes/origin/build&lt;br /&gt;
 git branch mirror remotes/origin/mirror&lt;br /&gt;
 git branch release remotes/origin/release&lt;br /&gt;
&lt;br /&gt;
Note: You may do changes directly in the Linus's kernel GIT tree and send the patches from it.&lt;br /&gt;
&lt;br /&gt;
===configure git===&lt;br /&gt;
Set your email address correctly otherwise commits get spurious email address for Author and Commiter&lt;br /&gt;
 git config --add user.email me@domain.com&lt;br /&gt;
&lt;br /&gt;
Make sure it knows how to send email (for patches)&lt;br /&gt;
 git config --add sendemail.smtpserver smtp.domain.com&lt;br /&gt;
&lt;br /&gt;
===save current===&lt;br /&gt;
in case you want to roll back&lt;br /&gt;
 git branch save&lt;br /&gt;
&lt;br /&gt;
===do your work===&lt;br /&gt;
edit, compile, test, sweat&lt;br /&gt;
&lt;br /&gt;
If it didn't work out and you want to get back to the old tree&lt;br /&gt;
 git reset --hard save&lt;br /&gt;
&lt;br /&gt;
===generate patches===&lt;br /&gt;
Want to get patch against latest, so rebase &lt;br /&gt;
 git rebase origin/master&lt;br /&gt;
 git diff remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
Then do this to generate the patchset&lt;br /&gt;
 git format-patch -s -n -p --subject-prefix=&amp;quot;PATCH - my module&amp;quot; remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
===check the patches===&lt;br /&gt;
 /lib/modules/`uname -r`/build/scripts/checkpatch.pl --no-tree *.patch&lt;br /&gt;
&lt;br /&gt;
===sending the patches===&lt;br /&gt;
&lt;br /&gt;
 git send-email --from=me --to=patch@alsa-project.org --cc=alsa-devel@alsa-project.org  000*.patch&lt;br /&gt;
&lt;br /&gt;
===get up to date===&lt;br /&gt;
&lt;br /&gt;
 cd alsa-driver&lt;br /&gt;
 git checkout build&lt;br /&gt;
 git pull origin build&lt;br /&gt;
 git checkout mirror&lt;br /&gt;
 git pull origin mirror&lt;br /&gt;
 git checkout release&lt;br /&gt;
 git pull origin release&lt;br /&gt;
&lt;br /&gt;
Sometimes you can just make and things will be fine. However, when there have been changes to the build system etc, its best to do a make clean; ./gitcompile to get the tree properly up to date.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/GIT_Server</id>
		<title>GIT Server</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/GIT_Server"/>
				<updated>2012-12-17T15:37:11Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: /* Syncing the branch release in alsa-driver.git */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==ALSA Repositories==&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.git&lt;br /&gt;
: contains compatibility and build code for older 2.6 kernels with mirrored latest kernel code&lt;br /&gt;
; alsa-kernel.git&lt;br /&gt;
: contains linux 2.6 kernel tree&lt;br /&gt;
&lt;br /&gt;
; alsa-kprivate.git&lt;br /&gt;
: contains linux 2.6 kernel tree - for private branches for alsa developers&lt;br /&gt;
&lt;br /&gt;
; alsa-lib.git&lt;br /&gt;
: library&lt;br /&gt;
; alsa-utils.git;&lt;br /&gt;
: utilities&lt;br /&gt;
; alsa-firmware.git&lt;br /&gt;
: firmware&lt;br /&gt;
; alsa-tools.git&lt;br /&gt;
: tools&lt;br /&gt;
; alsa-plugins.git&lt;br /&gt;
: plugins&lt;br /&gt;
; alsa-oss.git&lt;br /&gt;
: oss compatibility&lt;br /&gt;
; alsa-python.git&lt;br /&gt;
: official python binding&lt;br /&gt;
; alsa-ucm-conf.git&lt;br /&gt;
: ALSA Use-Case-Manager configuration library&lt;br /&gt;
; tinycompress.git&lt;br /&gt;
: Compressed formats support library&lt;br /&gt;
&lt;br /&gt;
; alsa.git&lt;br /&gt;
: ALSA service repo (misc files)&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.nomirror.git&lt;br /&gt;
: old ALSA driver repository without the mirrored kernel code&lt;br /&gt;
; alsa-kmirror.git&lt;br /&gt;
: alsa kernel mirror tree for continuous development (contains ALSA parts from alsa-kernel.git tree)&lt;br /&gt;
&lt;br /&gt;
==Anonymous access==&lt;br /&gt;
&lt;br /&gt;
===Read only GIT server===&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.git alsa-driver&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kprivate.git alsa-kprivate&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-lib.git alsa-lib&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-utils.git alsa-utils&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-firmware.git alsa-firmware&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-tools.git alsa-tools&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-plugins.git alsa-plugins&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-oss.git alsa-oss&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-python.git alsa-python&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-ucm-conf.git alsa-ucm-conf&lt;br /&gt;
: git clone git://git.alsa-project.org/tinycompress.git tinycompress&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa.git alsa&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.nomirror.git alsa&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
===Web interface===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/?p=tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
===HTTP access===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/http/tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
==For developers - kernel drivers==&lt;br /&gt;
&lt;br /&gt;
===Common rules===&lt;br /&gt;
&lt;br /&gt;
: 1) be very very very carefull when you use '--force' for 'git push', you can broke whole repository, you should notify other developers on alsa-devel mailing list that you will do this change for 'master' branch&lt;br /&gt;
: 2) valid 'Signed-off-by:' line must be in the commit text&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kernel.git and the mirror branch in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
: 1) subject (first commit text line) must start with '[ALSA] ' or 'ALSA: ' or '[sound] ' or 'sound: '&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kprivate.git===&lt;br /&gt;
&lt;br /&gt;
No rules. Just do not overwrite branches created by someone else. The 'master' branch is equal to linux-2.6 official tree from &lt;br /&gt;
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git (do sync if necessary):&lt;br /&gt;
&lt;br /&gt;
  git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
  git checkout master&lt;br /&gt;
  git pull linux-2.6 master&lt;br /&gt;
  git push --tags origin master&lt;br /&gt;
&lt;br /&gt;
===Syncing the branch release in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
  Please, use --log for the git merge command to show the &amp;quot;subject&amp;quot; of commits.&lt;br /&gt;
  It might be handy to define these git aliases in your .git/config file:&lt;br /&gt;
&lt;br /&gt;
  [alias]&lt;br /&gt;
        apull = !git checkout release &amp;amp;&amp;amp; git pull origin release &amp;amp;&amp;amp; \&lt;br /&gt;
                 git checkout build &amp;amp;&amp;amp; git pull origin build &amp;amp;&amp;amp; \&lt;br /&gt;
                 git checkout mirror &amp;amp;&amp;amp; git pull origin mirror &amp;amp;&amp;amp; \&lt;br /&gt;
                 git checkout release&lt;br /&gt;
	apush = !git push --tags origin release &amp;amp;&amp;amp; git push origin build &amp;amp;&amp;amp; \&lt;br /&gt;
		 git push origin mirror&lt;br /&gt;
        bmerge = !git checkout release &amp;amp;&amp;amp; git merge --log build&lt;br /&gt;
        mmerge = !git checkout release &amp;amp;&amp;amp; git merge --log mirror&lt;br /&gt;
&lt;br /&gt;
===Clone repositories===&lt;br /&gt;
&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-driver.git alsa-driver&lt;br /&gt;
 cd alsa-driver&lt;br /&gt;
 git branch build remotes/origin/build&lt;br /&gt;
 git branch mirror remotes/origin/mirror&lt;br /&gt;
 git branch release remotes/origin/release&lt;br /&gt;
&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
To show all branches (includes remote ones):&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To make a remote branch local:&lt;br /&gt;
&lt;br /&gt;
 git checkout -b for-linus remotes/origin/for-linus&lt;br /&gt;
 git checkout -b linux-2.6 remotes/origin/linux-2.6&lt;br /&gt;
&lt;br /&gt;
===Update and rebase using Linus's 2.6 kernel tree===&lt;br /&gt;
&lt;br /&gt;
Add remote URL:&lt;br /&gt;
&lt;br /&gt;
 git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
&lt;br /&gt;
Checkout linux-2.6 branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout linux-2.6&lt;br /&gt;
&lt;br /&gt;
Pull Linus's 2.6 changes:&lt;br /&gt;
&lt;br /&gt;
 git pull linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
Rebase our main ALSA development master branch with linux-2.6:&lt;br /&gt;
&lt;br /&gt;
 git rebase linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
===Push branch changes to ALSA GIT repository===&lt;br /&gt;
&lt;br /&gt;
 git push --tags origin master&lt;br /&gt;
 git push --tags origin linux-2.6&lt;br /&gt;
 git push --tags origin for-linus&lt;br /&gt;
&lt;br /&gt;
Note: Especially after 'git rebase' the repository on server is not consistent with local repository (remote ref is not ancestor of the local ref for master branch), so you have to use --force parameter for 'git push' command. Note that this might be dangerous - please, ask Jaroslav Kysela &amp;lt; perex at perex . cz &amp;gt; if you can do this for branch 'master'.&lt;br /&gt;
&lt;br /&gt;
===Branches===&lt;br /&gt;
&lt;br /&gt;
; master&lt;br /&gt;
: this branch is for main development, managed by Jaroslav Kysela, it is rebased before ALSA releases&lt;br /&gt;
: the contents is synced to alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
; linux-next&lt;br /&gt;
: this branch is for linux next testing tree (originaly maintaned by Andrew Morton), rebased &lt;br /&gt;
&lt;br /&gt;
; for-linus&lt;br /&gt;
: this branch is for mainstream tree (for Linus Torvalds), just temporary branch&lt;br /&gt;
&lt;br /&gt;
; linux-2.6&lt;br /&gt;
: this is official linux 2.6 mainstream tree&lt;br /&gt;
&lt;br /&gt;
; stable-2.6.&amp;lt;number&amp;gt;&lt;br /&gt;
: patches for stable 2.6 kernels&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
&lt;br /&gt;
Private tags are not allowed. Only branches identifying ALSA version (alsa-driver.git) or official linux kernel version (alsa-kernel.git) are allowed.&lt;br /&gt;
&lt;br /&gt;
===Maintenance===&lt;br /&gt;
&lt;br /&gt;
GIT server is maintaned by [[User:Perex]].&lt;br /&gt;
&lt;br /&gt;
==Occasional Developers==&lt;br /&gt;
This section is for developers without write access to ALSA git. i.e., who will clone repos and send in patches&lt;br /&gt;
&lt;br /&gt;
===clone the repository===&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
If you live behind a firewall that blocks the git protocol, you can do this instead:&lt;br /&gt;
&lt;br /&gt;
 git clone http://git.alsa-project.org/http/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
Create local branches:&lt;br /&gt;
&lt;br /&gt;
 cd alsa-driver&lt;br /&gt;
 git branch build remotes/origin/build&lt;br /&gt;
 git branch mirror remotes/origin/mirror&lt;br /&gt;
 git branch release remotes/origin/release&lt;br /&gt;
&lt;br /&gt;
Note: You may do changes directly in the Linus's kernel GIT tree and send the patches from it.&lt;br /&gt;
&lt;br /&gt;
===configure git===&lt;br /&gt;
Set your email address correctly otherwise commits get spurious email address for Author and Commiter&lt;br /&gt;
 git config --add user.email me@domain.com&lt;br /&gt;
&lt;br /&gt;
Make sure it knows how to send email (for patches)&lt;br /&gt;
 git config --add sendemail.smtpserver smtp.domain.com&lt;br /&gt;
&lt;br /&gt;
===save current===&lt;br /&gt;
in case you want to roll back&lt;br /&gt;
 git branch save&lt;br /&gt;
&lt;br /&gt;
===do your work===&lt;br /&gt;
edit, compile, test, sweat&lt;br /&gt;
&lt;br /&gt;
If it didn't work out and you want to get back to the old tree&lt;br /&gt;
 git reset --hard save&lt;br /&gt;
&lt;br /&gt;
===generate patches===&lt;br /&gt;
Want to get patch against latest, so rebase &lt;br /&gt;
 git rebase origin/master&lt;br /&gt;
 git diff remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
Then do this to generate the patchset&lt;br /&gt;
 git format-patch -s -n -p --subject-prefix=&amp;quot;PATCH - my module&amp;quot; remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
===check the patches===&lt;br /&gt;
 /lib/modules/`uname -r`/build/scripts/checkpatch.pl --no-tree *.patch&lt;br /&gt;
&lt;br /&gt;
===sending the patches===&lt;br /&gt;
&lt;br /&gt;
 git send-email --from=me --to=patch@alsa-project.org --cc=alsa-devel@alsa-project.org  000*.patch&lt;br /&gt;
&lt;br /&gt;
===get up to date===&lt;br /&gt;
&lt;br /&gt;
 cd alsa-driver&lt;br /&gt;
 git checkout build&lt;br /&gt;
 git pull origin build&lt;br /&gt;
 git checkout mirror&lt;br /&gt;
 git pull origin mirror&lt;br /&gt;
 git checkout release&lt;br /&gt;
 git pull origin release&lt;br /&gt;
&lt;br /&gt;
Sometimes you can just make and things will be fine. However, when there have been changes to the build system etc, its best to do a make clean; ./gitcompile to get the tree properly up to date.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/Main_Page"/>
				<updated>2012-11-13T14:42:19Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__ __NOTOC__&lt;br /&gt;
=Advanced Linux Sound Architecture (ALSA) project homepage=&lt;br /&gt;
{| cellpadding=0 cellspacing=1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;border: 1px solid gray;padding-left:1em;padding-right:0.5em;background:#FFEFF0;&amp;quot; class=&amp;quot;plainlinks&amp;quot; colspan=&amp;quot;2&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right;&amp;quot;&amp;gt;{{ALSA download|layout=new}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 130%;&amp;quot;&amp;gt;'''[[Introduction]]'''&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The Advanced Linux Sound Architecture (ALSA) provides audio and MIDI functionality to the Linux operating system. ALSA has the following significant features:&lt;br /&gt;
* Efficient support for all types of audio interfaces, from consumer sound cards to professional multichannel audio interfaces.&lt;br /&gt;
* Fully modularized sound drivers.&lt;br /&gt;
* SMP and thread-safe design ([[SMP_Design|PLEASE READ THIS]]).&lt;br /&gt;
* User space library (alsa-lib) to simplify application programming and provide higher level functionality.&lt;br /&gt;
* Support for the older Open Sound System (OSS) API, providing binary compatibility for most OSS programs.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;border: 1px solid gray;padding-left:1em;padding-right:0.5em;background:#FFFFFF;&amp;quot; class=&amp;quot;plainlinks&amp;quot; colspan=&amp;quot;2&amp;quot;|&lt;br /&gt;
'''Please, help us''' to provide better content and organisation on this wiki. Read the [[AlsaProject:Community_Portal|Community Portal]] for more details.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;border: 1px solid gray;padding-left:1em;padding-right:0.5em;background:#E4FFDF;padding-bottom:0.5em;&amp;quot; width=&amp;quot;50%&amp;quot;|&lt;br /&gt;
==New ALSA Users==&lt;br /&gt;
We need users to use, test and provide feedback on drivers and applications using ALSA. If you are interested, please subscribe to a [[mailing-lists|mailing list]].&lt;br /&gt;
&lt;br /&gt;
* [[Matrix:Main|Is my soundcard supported?]]&lt;br /&gt;
* [[SoundcardTesting|How do I test my soundcard?]]&lt;br /&gt;
* [[Help To Debug|Help to debug]] | [https://bugtrack.alsa-project.org/alsa-bug/ I found a bug!]&lt;br /&gt;
&lt;br /&gt;
===Other information===&lt;br /&gt;
* [http://alsa.opensrc.org/ Unofficial wiki]&lt;br /&gt;
&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; bgcolor=&amp;quot;#E8F1FF&amp;quot; style=&amp;quot;border-style:solid;border-width:1px;border-color:gray;padding-left:1em;padding-right:0.5em; padding-bottom:0.5em;&amp;quot; width=&amp;quot;50%&amp;quot;|&lt;br /&gt;
{{ALSA Project News}}&lt;br /&gt;
|-&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;border: 1px solid gray;padding-left:1em;padding-right:0.5em;background:#E4FFDF;padding-bottom:0.5em;&amp;quot; width=&amp;quot;50%&amp;quot;|&lt;br /&gt;
==Advanced ALSA Users==&lt;br /&gt;
We need users to use, test and provide feedback on drivers and applications using ALSA. If you are interested, please subscribe to a [[mailing-lists|mailing list]].&lt;br /&gt;
&lt;br /&gt;
* [[Help To Debug|Help to debug]] | [https://bugtrack.alsa-project.org/alsa-bug/ I found a bug!]&lt;br /&gt;
* [[Download|How do I install the ALSA driver from source]]&lt;br /&gt;
&lt;br /&gt;
===Other information===&lt;br /&gt;
* [http://alsa.opensrc.org/ Unofficial wiki]&lt;br /&gt;
&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; bgcolor=&amp;quot;#E8F1FF&amp;quot; style=&amp;quot;border-style:solid;border-width:1px;border-color:gray;padding-left:1em;padding-right:0.5em; padding-bottom:0.5em;&amp;quot; width=&amp;quot;50%&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==ALSA Developers==&lt;br /&gt;
We need application developers who choose to use ALSA as the basis for their programs, programmers to work on low level drivers, writers to extend and improve our documentation. If you are interested, please subscribe to a [[mailing-lists|mailing list]].&lt;br /&gt;
&lt;br /&gt;
* [[ALSA Library API|ALSA Library API]]&lt;br /&gt;
* [[Tutorials_and_Presentations|Tutorials for application developers]]&lt;br /&gt;
* [[Developer_Zone|Developers area on this wiki]]&lt;br /&gt;
* [[ALSA_Driver_Documentation|Writing a driver?]]&lt;br /&gt;
* [[ALSA_Soundcard_Vendor_Information|Information for soundcard manufacturers]]&lt;br /&gt;
* [[Alsa_Team|ALSA Team - People]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/SMP_Design</id>
		<title>SMP Design</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/SMP_Design"/>
				<updated>2012-11-13T14:07:40Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The SMP / multithread design has several levels in the ALSA project codebase. The kernel drivers are fully SMP / thread safe. The alsa-lib was designed to allow grouping of commands for returned handle to optimize pthread locking. The snd_*_open() calls are thread safe. The use of returned handles must be serialized in the application using own locking scheme. Standalone (not handle related) functions in alsa-lib should be fully thread safe.&lt;br /&gt;
&lt;br /&gt;
If you find a bug in kernel or alsa-lib which breaks these rules, please, let us know.&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/SMP_Design</id>
		<title>SMP Design</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/SMP_Design"/>
				<updated>2012-11-13T14:03:12Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: Created page with &amp;quot;The SMP / multithread design has several levels in the ALSA project codebase. The kernel drivers are fully SMP / thread safe. The alsa-lib was designed to allow grouping of co...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The SMP / multithread design has several levels in the ALSA project codebase. The kernel drivers are fully SMP / thread safe. The alsa-lib was designed to allow grouping of commands for returned handle to optimize pthread locking - so the serialization should be done inside an application. The snd_*_open() calls are thread safe. The use of returned handles must be serialized in the application using own locking scheme.&lt;br /&gt;
&lt;br /&gt;
If you find a bug in kernel or alsa-lib which breaks these rules, please, let us know.&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/Main_Page"/>
				<updated>2012-11-13T13:56:39Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__ __NOTOC__&lt;br /&gt;
=Advanced Linux Sound Architecture (ALSA) project homepage=&lt;br /&gt;
{| cellpadding=0 cellspacing=1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;border: 1px solid gray;padding-left:1em;padding-right:0.5em;background:#FFEFF0;&amp;quot; class=&amp;quot;plainlinks&amp;quot; colspan=&amp;quot;2&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right;&amp;quot;&amp;gt;{{ALSA download|layout=new}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 130%;&amp;quot;&amp;gt;'''[[Introduction]]'''&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The Advanced Linux Sound Architecture (ALSA) provides audio and MIDI functionality to the Linux operating system. ALSA has the following significant features:&lt;br /&gt;
* Efficient support for all types of audio interfaces, from consumer sound cards to professional multichannel audio interfaces.&lt;br /&gt;
* Fully modularized sound drivers.&lt;br /&gt;
* SMP and thread-safe design ([[SMP_Design|see these notes]]).&lt;br /&gt;
* User space library (alsa-lib) to simplify application programming and provide higher level functionality.&lt;br /&gt;
* Support for the older Open Sound System (OSS) API, providing binary compatibility for most OSS programs.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;border: 1px solid gray;padding-left:1em;padding-right:0.5em;background:#FFFFFF;&amp;quot; class=&amp;quot;plainlinks&amp;quot; colspan=&amp;quot;2&amp;quot;|&lt;br /&gt;
'''Please, help us''' to provide better content and organisation on this wiki. Read the [[AlsaProject:Community_Portal|Community Portal]] for more details.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;border: 1px solid gray;padding-left:1em;padding-right:0.5em;background:#E4FFDF;padding-bottom:0.5em;&amp;quot; width=&amp;quot;50%&amp;quot;|&lt;br /&gt;
==New ALSA Users==&lt;br /&gt;
We need users to use, test and provide feedback on drivers and applications using ALSA. If you are interested, please subscribe to a [[mailing-lists|mailing list]].&lt;br /&gt;
&lt;br /&gt;
* [[Matrix:Main|Is my soundcard supported?]]&lt;br /&gt;
* [[SoundcardTesting|How do I test my soundcard?]]&lt;br /&gt;
* [[Help To Debug|Help to debug]] | [https://bugtrack.alsa-project.org/alsa-bug/ I found a bug!]&lt;br /&gt;
&lt;br /&gt;
===Other information===&lt;br /&gt;
* [http://alsa.opensrc.org/ Unofficial wiki]&lt;br /&gt;
&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; bgcolor=&amp;quot;#E8F1FF&amp;quot; style=&amp;quot;border-style:solid;border-width:1px;border-color:gray;padding-left:1em;padding-right:0.5em; padding-bottom:0.5em;&amp;quot; width=&amp;quot;50%&amp;quot;|&lt;br /&gt;
{{ALSA Project News}}&lt;br /&gt;
|-&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;border: 1px solid gray;padding-left:1em;padding-right:0.5em;background:#E4FFDF;padding-bottom:0.5em;&amp;quot; width=&amp;quot;50%&amp;quot;|&lt;br /&gt;
==Advanced ALSA Users==&lt;br /&gt;
We need users to use, test and provide feedback on drivers and applications using ALSA. If you are interested, please subscribe to a [[mailing-lists|mailing list]].&lt;br /&gt;
&lt;br /&gt;
* [[Help To Debug|Help to debug]] | [https://bugtrack.alsa-project.org/alsa-bug/ I found a bug!]&lt;br /&gt;
* [[Download|How do I install the ALSA driver from source]]&lt;br /&gt;
&lt;br /&gt;
===Other information===&lt;br /&gt;
* [http://alsa.opensrc.org/ Unofficial wiki]&lt;br /&gt;
&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; bgcolor=&amp;quot;#E8F1FF&amp;quot; style=&amp;quot;border-style:solid;border-width:1px;border-color:gray;padding-left:1em;padding-right:0.5em; padding-bottom:0.5em;&amp;quot; width=&amp;quot;50%&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==ALSA Developers==&lt;br /&gt;
We need application developers who choose to use ALSA as the basis for their programs, programmers to work on low level drivers, writers to extend and improve our documentation. If you are interested, please subscribe to a [[mailing-lists|mailing list]].&lt;br /&gt;
&lt;br /&gt;
* [[ALSA Library API|ALSA Library API]]&lt;br /&gt;
* [[Tutorials_and_Presentations|Tutorials for application developers]]&lt;br /&gt;
* [[Developer_Zone|Developers area on this wiki]]&lt;br /&gt;
* [[ALSA_Driver_Documentation|Writing a driver?]]&lt;br /&gt;
* [[ALSA_Soundcard_Vendor_Information|Information for soundcard manufacturers]]&lt;br /&gt;
* [[Alsa_Team|ALSA Team - People]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/GIT_Server</id>
		<title>GIT Server</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/GIT_Server"/>
				<updated>2012-09-25T10:34:44Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: /* Clone repositories */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==ALSA Repositories==&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.git&lt;br /&gt;
: contains compatibility and build code for older 2.6 kernels with mirrored latest kernel code&lt;br /&gt;
; alsa-kernel.git&lt;br /&gt;
: contains linux 2.6 kernel tree&lt;br /&gt;
&lt;br /&gt;
; alsa-kprivate.git&lt;br /&gt;
: contains linux 2.6 kernel tree - for private branches for alsa developers&lt;br /&gt;
&lt;br /&gt;
; alsa-lib.git&lt;br /&gt;
: library&lt;br /&gt;
; alsa-utils.git;&lt;br /&gt;
: utilities&lt;br /&gt;
; alsa-firmware.git&lt;br /&gt;
: firmware&lt;br /&gt;
; alsa-tools.git&lt;br /&gt;
: tools&lt;br /&gt;
; alsa-plugins.git&lt;br /&gt;
: plugins&lt;br /&gt;
; alsa-oss.git&lt;br /&gt;
: oss compatibility&lt;br /&gt;
; alsa-python.git&lt;br /&gt;
: official python binding&lt;br /&gt;
; alsa-ucm-conf.git&lt;br /&gt;
: ALSA Use-Case-Manager configuration library&lt;br /&gt;
; tinycompress.git&lt;br /&gt;
: Compressed formats support library&lt;br /&gt;
&lt;br /&gt;
; alsa.git&lt;br /&gt;
: ALSA service repo (misc files)&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.nomirror.git&lt;br /&gt;
: old ALSA driver repository without the mirrored kernel code&lt;br /&gt;
; alsa-kmirror.git&lt;br /&gt;
: alsa kernel mirror tree for continuous development (contains ALSA parts from alsa-kernel.git tree)&lt;br /&gt;
&lt;br /&gt;
==Anonymous access==&lt;br /&gt;
&lt;br /&gt;
===Read only GIT server===&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.git alsa-driver&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kprivate.git alsa-kprivate&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-lib.git alsa-lib&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-utils.git alsa-utils&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-firmware.git alsa-firmware&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-tools.git alsa-tools&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-plugins.git alsa-plugins&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-oss.git alsa-oss&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-python.git alsa-python&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-ucm-conf.git alsa-ucm-conf&lt;br /&gt;
: git clone git://git.alsa-project.org/tinycompress.git tinycompress&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa.git alsa&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.nomirror.git alsa&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
===Web interface===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/?p=tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
===HTTP access===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/http/tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
==For developers - kernel drivers==&lt;br /&gt;
&lt;br /&gt;
===Common rules===&lt;br /&gt;
&lt;br /&gt;
: 1) be very very very carefull when you use '--force' for 'git push', you can broke whole repository, you should notify other developers on alsa-devel mailing list that you will do this change for 'master' branch&lt;br /&gt;
: 2) valid 'Signed-off-by:' line must be in the commit text&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kernel.git and the mirror branch in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
: 1) subject (first commit text line) must start with '[ALSA] ' or 'ALSA: ' or '[sound] ' or 'sound: '&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kprivate.git===&lt;br /&gt;
&lt;br /&gt;
No rules. Just do not overwrite branches created by someone else. The 'master' branch is equal to linux-2.6 official tree from &lt;br /&gt;
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git (do sync if necessary):&lt;br /&gt;
&lt;br /&gt;
  git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
  git checkout master&lt;br /&gt;
  git pull linux-2.6 master&lt;br /&gt;
  git push --tags origin master&lt;br /&gt;
&lt;br /&gt;
===Syncing the branch release in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
  Please, use --log for the git merge command to show the &amp;quot;subject&amp;quot; of commits.&lt;br /&gt;
  It might be handy to define these git aliases in your .git/config file:&lt;br /&gt;
&lt;br /&gt;
  [alias]&lt;br /&gt;
        apull = !git checkout release &amp;amp;&amp;amp; git pull origin release &amp;amp;&amp;amp; \&lt;br /&gt;
                 git checkout build &amp;amp;&amp;amp; git pull origin build &amp;amp;&amp;amp; \&lt;br /&gt;
                 git checkout mirror &amp;amp;&amp;amp; git pull origin mirror &amp;amp;&amp;amp; \&lt;br /&gt;
                 git checkout release&lt;br /&gt;
        bmerge = !git checkout release &amp;amp;&amp;amp; git merge --log build&lt;br /&gt;
        mmerge = !git checkout release &amp;amp;&amp;amp; git merge --log mirror&lt;br /&gt;
&lt;br /&gt;
===Clone repositories===&lt;br /&gt;
&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-driver.git alsa-driver&lt;br /&gt;
 cd alsa-driver&lt;br /&gt;
 git branch build remotes/origin/build&lt;br /&gt;
 git branch mirror remotes/origin/mirror&lt;br /&gt;
 git branch release remotes/origin/release&lt;br /&gt;
&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
To show all branches (includes remote ones):&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To make a remote branch local:&lt;br /&gt;
&lt;br /&gt;
 git checkout -b for-linus remotes/origin/for-linus&lt;br /&gt;
 git checkout -b linux-2.6 remotes/origin/linux-2.6&lt;br /&gt;
&lt;br /&gt;
===Update and rebase using Linus's 2.6 kernel tree===&lt;br /&gt;
&lt;br /&gt;
Add remote URL:&lt;br /&gt;
&lt;br /&gt;
 git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
&lt;br /&gt;
Checkout linux-2.6 branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout linux-2.6&lt;br /&gt;
&lt;br /&gt;
Pull Linus's 2.6 changes:&lt;br /&gt;
&lt;br /&gt;
 git pull linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
Rebase our main ALSA development master branch with linux-2.6:&lt;br /&gt;
&lt;br /&gt;
 git rebase linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
===Push branch changes to ALSA GIT repository===&lt;br /&gt;
&lt;br /&gt;
 git push --tags origin master&lt;br /&gt;
 git push --tags origin linux-2.6&lt;br /&gt;
 git push --tags origin for-linus&lt;br /&gt;
&lt;br /&gt;
Note: Especially after 'git rebase' the repository on server is not consistent with local repository (remote ref is not ancestor of the local ref for master branch), so you have to use --force parameter for 'git push' command. Note that this might be dangerous - please, ask Jaroslav Kysela &amp;lt; perex at perex . cz &amp;gt; if you can do this for branch 'master'.&lt;br /&gt;
&lt;br /&gt;
===Branches===&lt;br /&gt;
&lt;br /&gt;
; master&lt;br /&gt;
: this branch is for main development, managed by Jaroslav Kysela, it is rebased before ALSA releases&lt;br /&gt;
: the contents is synced to alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
; linux-next&lt;br /&gt;
: this branch is for linux next testing tree (originaly maintaned by Andrew Morton), rebased &lt;br /&gt;
&lt;br /&gt;
; for-linus&lt;br /&gt;
: this branch is for mainstream tree (for Linus Torvalds), just temporary branch&lt;br /&gt;
&lt;br /&gt;
; linux-2.6&lt;br /&gt;
: this is official linux 2.6 mainstream tree&lt;br /&gt;
&lt;br /&gt;
; stable-2.6.&amp;lt;number&amp;gt;&lt;br /&gt;
: patches for stable 2.6 kernels&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
&lt;br /&gt;
Private tags are not allowed. Only branches identifying ALSA version (alsa-driver.git) or official linux kernel version (alsa-kernel.git) are allowed.&lt;br /&gt;
&lt;br /&gt;
===Maintenance===&lt;br /&gt;
&lt;br /&gt;
GIT server is maintaned by [[User:Perex]].&lt;br /&gt;
&lt;br /&gt;
==Occasional Developers==&lt;br /&gt;
This section is for developers without write access to ALSA git. i.e., who will clone repos and send in patches&lt;br /&gt;
&lt;br /&gt;
===clone the repository===&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
If you live behind a firewall that blocks the git protocol, you can do this instead:&lt;br /&gt;
&lt;br /&gt;
 git clone http://git.alsa-project.org/http/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
Create local branches:&lt;br /&gt;
&lt;br /&gt;
 cd alsa-driver&lt;br /&gt;
 git branch build remotes/origin/build&lt;br /&gt;
 git branch mirror remotes/origin/mirror&lt;br /&gt;
 git branch release remotes/origin/release&lt;br /&gt;
&lt;br /&gt;
Note: You may do changes directly in the Linus's kernel GIT tree and send the patches from it.&lt;br /&gt;
&lt;br /&gt;
===configure git===&lt;br /&gt;
Set your email address correctly otherwise commits get spurious email address for Author and Commiter&lt;br /&gt;
 git config --add user.email me@domain.com&lt;br /&gt;
&lt;br /&gt;
Make sure it knows how to send email (for patches)&lt;br /&gt;
 git config --add sendemail.smtpserver smtp.domain.com&lt;br /&gt;
&lt;br /&gt;
===save current===&lt;br /&gt;
in case you want to roll back&lt;br /&gt;
 git branch save&lt;br /&gt;
&lt;br /&gt;
===do your work===&lt;br /&gt;
edit, compile, test, sweat&lt;br /&gt;
&lt;br /&gt;
If it didn't work out and you want to get back to the old tree&lt;br /&gt;
 git reset --hard save&lt;br /&gt;
&lt;br /&gt;
===generate patches===&lt;br /&gt;
Want to get patch against latest, so rebase &lt;br /&gt;
 git rebase origin/master&lt;br /&gt;
 git diff remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
Then do this to generate the patchset&lt;br /&gt;
 git format-patch -s -n -p --subject-prefix=&amp;quot;PATCH - my module&amp;quot; remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
===check the patches===&lt;br /&gt;
 /lib/modules/`uname -r`/build/scripts/checkpatch.pl --no-tree *.patch&lt;br /&gt;
&lt;br /&gt;
===sending the patches===&lt;br /&gt;
&lt;br /&gt;
 git send-email --from=me --to=patch@alsa-project.org --cc=alsa-devel@alsa-project.org  000*.patch&lt;br /&gt;
&lt;br /&gt;
===get up to date===&lt;br /&gt;
&lt;br /&gt;
 cd alsa-driver&lt;br /&gt;
 git checkout build&lt;br /&gt;
 git pull origin build&lt;br /&gt;
 git checkout mirror&lt;br /&gt;
 git pull origin mirror&lt;br /&gt;
 git checkout release&lt;br /&gt;
 git pull origin release&lt;br /&gt;
&lt;br /&gt;
Sometimes you can just make and things will be fine. However, when there have been changes to the build system etc, its best to do a make clean; ./gitcompile to get the tree properly up to date.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/GIT_Server</id>
		<title>GIT Server</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/GIT_Server"/>
				<updated>2012-09-25T09:57:49Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: /* Syncing the branch release in alsa-driver.git */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==ALSA Repositories==&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.git&lt;br /&gt;
: contains compatibility and build code for older 2.6 kernels with mirrored latest kernel code&lt;br /&gt;
; alsa-kernel.git&lt;br /&gt;
: contains linux 2.6 kernel tree&lt;br /&gt;
&lt;br /&gt;
; alsa-kprivate.git&lt;br /&gt;
: contains linux 2.6 kernel tree - for private branches for alsa developers&lt;br /&gt;
&lt;br /&gt;
; alsa-lib.git&lt;br /&gt;
: library&lt;br /&gt;
; alsa-utils.git;&lt;br /&gt;
: utilities&lt;br /&gt;
; alsa-firmware.git&lt;br /&gt;
: firmware&lt;br /&gt;
; alsa-tools.git&lt;br /&gt;
: tools&lt;br /&gt;
; alsa-plugins.git&lt;br /&gt;
: plugins&lt;br /&gt;
; alsa-oss.git&lt;br /&gt;
: oss compatibility&lt;br /&gt;
; alsa-python.git&lt;br /&gt;
: official python binding&lt;br /&gt;
; alsa-ucm-conf.git&lt;br /&gt;
: ALSA Use-Case-Manager configuration library&lt;br /&gt;
; tinycompress.git&lt;br /&gt;
: Compressed formats support library&lt;br /&gt;
&lt;br /&gt;
; alsa.git&lt;br /&gt;
: ALSA service repo (misc files)&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.nomirror.git&lt;br /&gt;
: old ALSA driver repository without the mirrored kernel code&lt;br /&gt;
; alsa-kmirror.git&lt;br /&gt;
: alsa kernel mirror tree for continuous development (contains ALSA parts from alsa-kernel.git tree)&lt;br /&gt;
&lt;br /&gt;
==Anonymous access==&lt;br /&gt;
&lt;br /&gt;
===Read only GIT server===&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.git alsa-driver&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kprivate.git alsa-kprivate&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-lib.git alsa-lib&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-utils.git alsa-utils&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-firmware.git alsa-firmware&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-tools.git alsa-tools&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-plugins.git alsa-plugins&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-oss.git alsa-oss&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-python.git alsa-python&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-ucm-conf.git alsa-ucm-conf&lt;br /&gt;
: git clone git://git.alsa-project.org/tinycompress.git tinycompress&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa.git alsa&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.nomirror.git alsa&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
===Web interface===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/?p=tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
===HTTP access===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/http/tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
==For developers - kernel drivers==&lt;br /&gt;
&lt;br /&gt;
===Common rules===&lt;br /&gt;
&lt;br /&gt;
: 1) be very very very carefull when you use '--force' for 'git push', you can broke whole repository, you should notify other developers on alsa-devel mailing list that you will do this change for 'master' branch&lt;br /&gt;
: 2) valid 'Signed-off-by:' line must be in the commit text&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kernel.git and the mirror branch in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
: 1) subject (first commit text line) must start with '[ALSA] ' or 'ALSA: ' or '[sound] ' or 'sound: '&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kprivate.git===&lt;br /&gt;
&lt;br /&gt;
No rules. Just do not overwrite branches created by someone else. The 'master' branch is equal to linux-2.6 official tree from &lt;br /&gt;
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git (do sync if necessary):&lt;br /&gt;
&lt;br /&gt;
  git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
  git checkout master&lt;br /&gt;
  git pull linux-2.6 master&lt;br /&gt;
  git push --tags origin master&lt;br /&gt;
&lt;br /&gt;
===Syncing the branch release in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
  Please, use --log for the git merge command to show the &amp;quot;subject&amp;quot; of commits.&lt;br /&gt;
  It might be handy to define these git aliases in your .git/config file:&lt;br /&gt;
&lt;br /&gt;
  [alias]&lt;br /&gt;
        apull = !git checkout release &amp;amp;&amp;amp; git pull origin release &amp;amp;&amp;amp; \&lt;br /&gt;
                 git checkout build &amp;amp;&amp;amp; git pull origin build &amp;amp;&amp;amp; \&lt;br /&gt;
                 git checkout mirror &amp;amp;&amp;amp; git pull origin mirror &amp;amp;&amp;amp; \&lt;br /&gt;
                 git checkout release&lt;br /&gt;
        bmerge = !git checkout release &amp;amp;&amp;amp; git merge --log build&lt;br /&gt;
        mmerge = !git checkout release &amp;amp;&amp;amp; git merge --log mirror&lt;br /&gt;
&lt;br /&gt;
===Clone repositories===&lt;br /&gt;
&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-driver.git alsa-driver&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
To show all branches (includes remote ones):&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To make a remote branch local:&lt;br /&gt;
&lt;br /&gt;
 git checkout -b for-linus origin/for-linus&lt;br /&gt;
 git checkout -b linux-2.6 origin/linux-2.6&lt;br /&gt;
&lt;br /&gt;
===Update and rebase using Linus's 2.6 kernel tree===&lt;br /&gt;
&lt;br /&gt;
Add remote URL:&lt;br /&gt;
&lt;br /&gt;
 git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
&lt;br /&gt;
Checkout linux-2.6 branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout linux-2.6&lt;br /&gt;
&lt;br /&gt;
Pull Linus's 2.6 changes:&lt;br /&gt;
&lt;br /&gt;
 git pull linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
Rebase our main ALSA development master branch with linux-2.6:&lt;br /&gt;
&lt;br /&gt;
 git rebase linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
===Push branch changes to ALSA GIT repository===&lt;br /&gt;
&lt;br /&gt;
 git push --tags origin master&lt;br /&gt;
 git push --tags origin linux-2.6&lt;br /&gt;
 git push --tags origin for-linus&lt;br /&gt;
&lt;br /&gt;
Note: Especially after 'git rebase' the repository on server is not consistent with local repository (remote ref is not ancestor of the local ref for master branch), so you have to use --force parameter for 'git push' command. Note that this might be dangerous - please, ask Jaroslav Kysela &amp;lt; perex at perex . cz &amp;gt; if you can do this for branch 'master'.&lt;br /&gt;
&lt;br /&gt;
===Branches===&lt;br /&gt;
&lt;br /&gt;
; master&lt;br /&gt;
: this branch is for main development, managed by Jaroslav Kysela, it is rebased before ALSA releases&lt;br /&gt;
: the contents is synced to alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
; linux-next&lt;br /&gt;
: this branch is for linux next testing tree (originaly maintaned by Andrew Morton), rebased &lt;br /&gt;
&lt;br /&gt;
; for-linus&lt;br /&gt;
: this branch is for mainstream tree (for Linus Torvalds), just temporary branch&lt;br /&gt;
&lt;br /&gt;
; linux-2.6&lt;br /&gt;
: this is official linux 2.6 mainstream tree&lt;br /&gt;
&lt;br /&gt;
; stable-2.6.&amp;lt;number&amp;gt;&lt;br /&gt;
: patches for stable 2.6 kernels&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
&lt;br /&gt;
Private tags are not allowed. Only branches identifying ALSA version (alsa-driver.git) or official linux kernel version (alsa-kernel.git) are allowed.&lt;br /&gt;
&lt;br /&gt;
===Maintenance===&lt;br /&gt;
&lt;br /&gt;
GIT server is maintaned by [[User:Perex]].&lt;br /&gt;
&lt;br /&gt;
==Occasional Developers==&lt;br /&gt;
This section is for developers without write access to ALSA git. i.e., who will clone repos and send in patches&lt;br /&gt;
&lt;br /&gt;
===clone the repository===&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
If you live behind a firewall that blocks the git protocol, you can do this instead:&lt;br /&gt;
&lt;br /&gt;
 git clone http://git.alsa-project.org/http/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
Create local branches:&lt;br /&gt;
&lt;br /&gt;
 cd alsa-driver&lt;br /&gt;
 git branch build remotes/origin/build&lt;br /&gt;
 git branch mirror remotes/origin/mirror&lt;br /&gt;
 git branch release remotes/origin/release&lt;br /&gt;
&lt;br /&gt;
Note: You may do changes directly in the Linus's kernel GIT tree and send the patches from it.&lt;br /&gt;
&lt;br /&gt;
===configure git===&lt;br /&gt;
Set your email address correctly otherwise commits get spurious email address for Author and Commiter&lt;br /&gt;
 git config --add user.email me@domain.com&lt;br /&gt;
&lt;br /&gt;
Make sure it knows how to send email (for patches)&lt;br /&gt;
 git config --add sendemail.smtpserver smtp.domain.com&lt;br /&gt;
&lt;br /&gt;
===save current===&lt;br /&gt;
in case you want to roll back&lt;br /&gt;
 git branch save&lt;br /&gt;
&lt;br /&gt;
===do your work===&lt;br /&gt;
edit, compile, test, sweat&lt;br /&gt;
&lt;br /&gt;
If it didn't work out and you want to get back to the old tree&lt;br /&gt;
 git reset --hard save&lt;br /&gt;
&lt;br /&gt;
===generate patches===&lt;br /&gt;
Want to get patch against latest, so rebase &lt;br /&gt;
 git rebase origin/master&lt;br /&gt;
 git diff remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
Then do this to generate the patchset&lt;br /&gt;
 git format-patch -s -n -p --subject-prefix=&amp;quot;PATCH - my module&amp;quot; remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
===check the patches===&lt;br /&gt;
 /lib/modules/`uname -r`/build/scripts/checkpatch.pl --no-tree *.patch&lt;br /&gt;
&lt;br /&gt;
===sending the patches===&lt;br /&gt;
&lt;br /&gt;
 git send-email --from=me --to=patch@alsa-project.org --cc=alsa-devel@alsa-project.org  000*.patch&lt;br /&gt;
&lt;br /&gt;
===get up to date===&lt;br /&gt;
&lt;br /&gt;
 cd alsa-driver&lt;br /&gt;
 git checkout build&lt;br /&gt;
 git pull origin build&lt;br /&gt;
 git checkout mirror&lt;br /&gt;
 git pull origin mirror&lt;br /&gt;
 git checkout release&lt;br /&gt;
 git pull origin release&lt;br /&gt;
&lt;br /&gt;
Sometimes you can just make and things will be fine. However, when there have been changes to the build system etc, its best to do a make clean; ./gitcompile to get the tree properly up to date.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/GIT_Server</id>
		<title>GIT Server</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/GIT_Server"/>
				<updated>2012-09-25T09:55:57Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: /* get up to date */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==ALSA Repositories==&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.git&lt;br /&gt;
: contains compatibility and build code for older 2.6 kernels with mirrored latest kernel code&lt;br /&gt;
; alsa-kernel.git&lt;br /&gt;
: contains linux 2.6 kernel tree&lt;br /&gt;
&lt;br /&gt;
; alsa-kprivate.git&lt;br /&gt;
: contains linux 2.6 kernel tree - for private branches for alsa developers&lt;br /&gt;
&lt;br /&gt;
; alsa-lib.git&lt;br /&gt;
: library&lt;br /&gt;
; alsa-utils.git;&lt;br /&gt;
: utilities&lt;br /&gt;
; alsa-firmware.git&lt;br /&gt;
: firmware&lt;br /&gt;
; alsa-tools.git&lt;br /&gt;
: tools&lt;br /&gt;
; alsa-plugins.git&lt;br /&gt;
: plugins&lt;br /&gt;
; alsa-oss.git&lt;br /&gt;
: oss compatibility&lt;br /&gt;
; alsa-python.git&lt;br /&gt;
: official python binding&lt;br /&gt;
; alsa-ucm-conf.git&lt;br /&gt;
: ALSA Use-Case-Manager configuration library&lt;br /&gt;
; tinycompress.git&lt;br /&gt;
: Compressed formats support library&lt;br /&gt;
&lt;br /&gt;
; alsa.git&lt;br /&gt;
: ALSA service repo (misc files)&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.nomirror.git&lt;br /&gt;
: old ALSA driver repository without the mirrored kernel code&lt;br /&gt;
; alsa-kmirror.git&lt;br /&gt;
: alsa kernel mirror tree for continuous development (contains ALSA parts from alsa-kernel.git tree)&lt;br /&gt;
&lt;br /&gt;
==Anonymous access==&lt;br /&gt;
&lt;br /&gt;
===Read only GIT server===&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.git alsa-driver&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kprivate.git alsa-kprivate&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-lib.git alsa-lib&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-utils.git alsa-utils&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-firmware.git alsa-firmware&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-tools.git alsa-tools&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-plugins.git alsa-plugins&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-oss.git alsa-oss&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-python.git alsa-python&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-ucm-conf.git alsa-ucm-conf&lt;br /&gt;
: git clone git://git.alsa-project.org/tinycompress.git tinycompress&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa.git alsa&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.nomirror.git alsa&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
===Web interface===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/?p=tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
===HTTP access===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/http/tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
==For developers - kernel drivers==&lt;br /&gt;
&lt;br /&gt;
===Common rules===&lt;br /&gt;
&lt;br /&gt;
: 1) be very very very carefull when you use '--force' for 'git push', you can broke whole repository, you should notify other developers on alsa-devel mailing list that you will do this change for 'master' branch&lt;br /&gt;
: 2) valid 'Signed-off-by:' line must be in the commit text&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kernel.git and the mirror branch in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
: 1) subject (first commit text line) must start with '[ALSA] ' or 'ALSA: ' or '[sound] ' or 'sound: '&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kprivate.git===&lt;br /&gt;
&lt;br /&gt;
No rules. Just do not overwrite branches created by someone else. The 'master' branch is equal to linux-2.6 official tree from &lt;br /&gt;
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git (do sync if necessary):&lt;br /&gt;
&lt;br /&gt;
  git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
  git checkout master&lt;br /&gt;
  git pull linux-2.6 master&lt;br /&gt;
  git push --tags origin master&lt;br /&gt;
&lt;br /&gt;
===Syncing the branch release in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
  Please, use --log for the git merge command to show the &amp;quot;subject&amp;quot; of commits.&lt;br /&gt;
  It might be handy to define these git aliases in your .git/config file:&lt;br /&gt;
&lt;br /&gt;
  [alias]&lt;br /&gt;
        bmerge = !git checkout release &amp;amp;&amp;amp; git merge --log build&lt;br /&gt;
        mmerge = !git checkout release &amp;amp;&amp;amp; git merge --log mirror&lt;br /&gt;
&lt;br /&gt;
===Clone repositories===&lt;br /&gt;
&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-driver.git alsa-driver&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
To show all branches (includes remote ones):&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To make a remote branch local:&lt;br /&gt;
&lt;br /&gt;
 git checkout -b for-linus origin/for-linus&lt;br /&gt;
 git checkout -b linux-2.6 origin/linux-2.6&lt;br /&gt;
&lt;br /&gt;
===Update and rebase using Linus's 2.6 kernel tree===&lt;br /&gt;
&lt;br /&gt;
Add remote URL:&lt;br /&gt;
&lt;br /&gt;
 git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
&lt;br /&gt;
Checkout linux-2.6 branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout linux-2.6&lt;br /&gt;
&lt;br /&gt;
Pull Linus's 2.6 changes:&lt;br /&gt;
&lt;br /&gt;
 git pull linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
Rebase our main ALSA development master branch with linux-2.6:&lt;br /&gt;
&lt;br /&gt;
 git rebase linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
===Push branch changes to ALSA GIT repository===&lt;br /&gt;
&lt;br /&gt;
 git push --tags origin master&lt;br /&gt;
 git push --tags origin linux-2.6&lt;br /&gt;
 git push --tags origin for-linus&lt;br /&gt;
&lt;br /&gt;
Note: Especially after 'git rebase' the repository on server is not consistent with local repository (remote ref is not ancestor of the local ref for master branch), so you have to use --force parameter for 'git push' command. Note that this might be dangerous - please, ask Jaroslav Kysela &amp;lt; perex at perex . cz &amp;gt; if you can do this for branch 'master'.&lt;br /&gt;
&lt;br /&gt;
===Branches===&lt;br /&gt;
&lt;br /&gt;
; master&lt;br /&gt;
: this branch is for main development, managed by Jaroslav Kysela, it is rebased before ALSA releases&lt;br /&gt;
: the contents is synced to alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
; linux-next&lt;br /&gt;
: this branch is for linux next testing tree (originaly maintaned by Andrew Morton), rebased &lt;br /&gt;
&lt;br /&gt;
; for-linus&lt;br /&gt;
: this branch is for mainstream tree (for Linus Torvalds), just temporary branch&lt;br /&gt;
&lt;br /&gt;
; linux-2.6&lt;br /&gt;
: this is official linux 2.6 mainstream tree&lt;br /&gt;
&lt;br /&gt;
; stable-2.6.&amp;lt;number&amp;gt;&lt;br /&gt;
: patches for stable 2.6 kernels&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
&lt;br /&gt;
Private tags are not allowed. Only branches identifying ALSA version (alsa-driver.git) or official linux kernel version (alsa-kernel.git) are allowed.&lt;br /&gt;
&lt;br /&gt;
===Maintenance===&lt;br /&gt;
&lt;br /&gt;
GIT server is maintaned by [[User:Perex]].&lt;br /&gt;
&lt;br /&gt;
==Occasional Developers==&lt;br /&gt;
This section is for developers without write access to ALSA git. i.e., who will clone repos and send in patches&lt;br /&gt;
&lt;br /&gt;
===clone the repository===&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
If you live behind a firewall that blocks the git protocol, you can do this instead:&lt;br /&gt;
&lt;br /&gt;
 git clone http://git.alsa-project.org/http/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
Create local branches:&lt;br /&gt;
&lt;br /&gt;
 cd alsa-driver&lt;br /&gt;
 git branch build remotes/origin/build&lt;br /&gt;
 git branch mirror remotes/origin/mirror&lt;br /&gt;
 git branch release remotes/origin/release&lt;br /&gt;
&lt;br /&gt;
Note: You may do changes directly in the Linus's kernel GIT tree and send the patches from it.&lt;br /&gt;
&lt;br /&gt;
===configure git===&lt;br /&gt;
Set your email address correctly otherwise commits get spurious email address for Author and Commiter&lt;br /&gt;
 git config --add user.email me@domain.com&lt;br /&gt;
&lt;br /&gt;
Make sure it knows how to send email (for patches)&lt;br /&gt;
 git config --add sendemail.smtpserver smtp.domain.com&lt;br /&gt;
&lt;br /&gt;
===save current===&lt;br /&gt;
in case you want to roll back&lt;br /&gt;
 git branch save&lt;br /&gt;
&lt;br /&gt;
===do your work===&lt;br /&gt;
edit, compile, test, sweat&lt;br /&gt;
&lt;br /&gt;
If it didn't work out and you want to get back to the old tree&lt;br /&gt;
 git reset --hard save&lt;br /&gt;
&lt;br /&gt;
===generate patches===&lt;br /&gt;
Want to get patch against latest, so rebase &lt;br /&gt;
 git rebase origin/master&lt;br /&gt;
 git diff remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
Then do this to generate the patchset&lt;br /&gt;
 git format-patch -s -n -p --subject-prefix=&amp;quot;PATCH - my module&amp;quot; remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
===check the patches===&lt;br /&gt;
 /lib/modules/`uname -r`/build/scripts/checkpatch.pl --no-tree *.patch&lt;br /&gt;
&lt;br /&gt;
===sending the patches===&lt;br /&gt;
&lt;br /&gt;
 git send-email --from=me --to=patch@alsa-project.org --cc=alsa-devel@alsa-project.org  000*.patch&lt;br /&gt;
&lt;br /&gt;
===get up to date===&lt;br /&gt;
&lt;br /&gt;
 cd alsa-driver&lt;br /&gt;
 git checkout build&lt;br /&gt;
 git pull origin build&lt;br /&gt;
 git checkout mirror&lt;br /&gt;
 git pull origin mirror&lt;br /&gt;
 git checkout release&lt;br /&gt;
 git pull origin release&lt;br /&gt;
&lt;br /&gt;
Sometimes you can just make and things will be fine. However, when there have been changes to the build system etc, its best to do a make clean; ./gitcompile to get the tree properly up to date.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/GIT_Server</id>
		<title>GIT Server</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/GIT_Server"/>
				<updated>2012-09-25T09:55:34Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: /* get up to date */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==ALSA Repositories==&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.git&lt;br /&gt;
: contains compatibility and build code for older 2.6 kernels with mirrored latest kernel code&lt;br /&gt;
; alsa-kernel.git&lt;br /&gt;
: contains linux 2.6 kernel tree&lt;br /&gt;
&lt;br /&gt;
; alsa-kprivate.git&lt;br /&gt;
: contains linux 2.6 kernel tree - for private branches for alsa developers&lt;br /&gt;
&lt;br /&gt;
; alsa-lib.git&lt;br /&gt;
: library&lt;br /&gt;
; alsa-utils.git;&lt;br /&gt;
: utilities&lt;br /&gt;
; alsa-firmware.git&lt;br /&gt;
: firmware&lt;br /&gt;
; alsa-tools.git&lt;br /&gt;
: tools&lt;br /&gt;
; alsa-plugins.git&lt;br /&gt;
: plugins&lt;br /&gt;
; alsa-oss.git&lt;br /&gt;
: oss compatibility&lt;br /&gt;
; alsa-python.git&lt;br /&gt;
: official python binding&lt;br /&gt;
; alsa-ucm-conf.git&lt;br /&gt;
: ALSA Use-Case-Manager configuration library&lt;br /&gt;
; tinycompress.git&lt;br /&gt;
: Compressed formats support library&lt;br /&gt;
&lt;br /&gt;
; alsa.git&lt;br /&gt;
: ALSA service repo (misc files)&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.nomirror.git&lt;br /&gt;
: old ALSA driver repository without the mirrored kernel code&lt;br /&gt;
; alsa-kmirror.git&lt;br /&gt;
: alsa kernel mirror tree for continuous development (contains ALSA parts from alsa-kernel.git tree)&lt;br /&gt;
&lt;br /&gt;
==Anonymous access==&lt;br /&gt;
&lt;br /&gt;
===Read only GIT server===&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.git alsa-driver&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kprivate.git alsa-kprivate&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-lib.git alsa-lib&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-utils.git alsa-utils&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-firmware.git alsa-firmware&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-tools.git alsa-tools&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-plugins.git alsa-plugins&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-oss.git alsa-oss&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-python.git alsa-python&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-ucm-conf.git alsa-ucm-conf&lt;br /&gt;
: git clone git://git.alsa-project.org/tinycompress.git tinycompress&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa.git alsa&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.nomirror.git alsa&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
===Web interface===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/?p=tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
===HTTP access===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/http/tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
==For developers - kernel drivers==&lt;br /&gt;
&lt;br /&gt;
===Common rules===&lt;br /&gt;
&lt;br /&gt;
: 1) be very very very carefull when you use '--force' for 'git push', you can broke whole repository, you should notify other developers on alsa-devel mailing list that you will do this change for 'master' branch&lt;br /&gt;
: 2) valid 'Signed-off-by:' line must be in the commit text&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kernel.git and the mirror branch in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
: 1) subject (first commit text line) must start with '[ALSA] ' or 'ALSA: ' or '[sound] ' or 'sound: '&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kprivate.git===&lt;br /&gt;
&lt;br /&gt;
No rules. Just do not overwrite branches created by someone else. The 'master' branch is equal to linux-2.6 official tree from &lt;br /&gt;
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git (do sync if necessary):&lt;br /&gt;
&lt;br /&gt;
  git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
  git checkout master&lt;br /&gt;
  git pull linux-2.6 master&lt;br /&gt;
  git push --tags origin master&lt;br /&gt;
&lt;br /&gt;
===Syncing the branch release in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
  Please, use --log for the git merge command to show the &amp;quot;subject&amp;quot; of commits.&lt;br /&gt;
  It might be handy to define these git aliases in your .git/config file:&lt;br /&gt;
&lt;br /&gt;
  [alias]&lt;br /&gt;
        bmerge = !git checkout release &amp;amp;&amp;amp; git merge --log build&lt;br /&gt;
        mmerge = !git checkout release &amp;amp;&amp;amp; git merge --log mirror&lt;br /&gt;
&lt;br /&gt;
===Clone repositories===&lt;br /&gt;
&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-driver.git alsa-driver&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
To show all branches (includes remote ones):&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To make a remote branch local:&lt;br /&gt;
&lt;br /&gt;
 git checkout -b for-linus origin/for-linus&lt;br /&gt;
 git checkout -b linux-2.6 origin/linux-2.6&lt;br /&gt;
&lt;br /&gt;
===Update and rebase using Linus's 2.6 kernel tree===&lt;br /&gt;
&lt;br /&gt;
Add remote URL:&lt;br /&gt;
&lt;br /&gt;
 git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
&lt;br /&gt;
Checkout linux-2.6 branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout linux-2.6&lt;br /&gt;
&lt;br /&gt;
Pull Linus's 2.6 changes:&lt;br /&gt;
&lt;br /&gt;
 git pull linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
Rebase our main ALSA development master branch with linux-2.6:&lt;br /&gt;
&lt;br /&gt;
 git rebase linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
===Push branch changes to ALSA GIT repository===&lt;br /&gt;
&lt;br /&gt;
 git push --tags origin master&lt;br /&gt;
 git push --tags origin linux-2.6&lt;br /&gt;
 git push --tags origin for-linus&lt;br /&gt;
&lt;br /&gt;
Note: Especially after 'git rebase' the repository on server is not consistent with local repository (remote ref is not ancestor of the local ref for master branch), so you have to use --force parameter for 'git push' command. Note that this might be dangerous - please, ask Jaroslav Kysela &amp;lt; perex at perex . cz &amp;gt; if you can do this for branch 'master'.&lt;br /&gt;
&lt;br /&gt;
===Branches===&lt;br /&gt;
&lt;br /&gt;
; master&lt;br /&gt;
: this branch is for main development, managed by Jaroslav Kysela, it is rebased before ALSA releases&lt;br /&gt;
: the contents is synced to alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
; linux-next&lt;br /&gt;
: this branch is for linux next testing tree (originaly maintaned by Andrew Morton), rebased &lt;br /&gt;
&lt;br /&gt;
; for-linus&lt;br /&gt;
: this branch is for mainstream tree (for Linus Torvalds), just temporary branch&lt;br /&gt;
&lt;br /&gt;
; linux-2.6&lt;br /&gt;
: this is official linux 2.6 mainstream tree&lt;br /&gt;
&lt;br /&gt;
; stable-2.6.&amp;lt;number&amp;gt;&lt;br /&gt;
: patches for stable 2.6 kernels&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
&lt;br /&gt;
Private tags are not allowed. Only branches identifying ALSA version (alsa-driver.git) or official linux kernel version (alsa-kernel.git) are allowed.&lt;br /&gt;
&lt;br /&gt;
===Maintenance===&lt;br /&gt;
&lt;br /&gt;
GIT server is maintaned by [[User:Perex]].&lt;br /&gt;
&lt;br /&gt;
==Occasional Developers==&lt;br /&gt;
This section is for developers without write access to ALSA git. i.e., who will clone repos and send in patches&lt;br /&gt;
&lt;br /&gt;
===clone the repository===&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
If you live behind a firewall that blocks the git protocol, you can do this instead:&lt;br /&gt;
&lt;br /&gt;
 git clone http://git.alsa-project.org/http/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
Create local branches:&lt;br /&gt;
&lt;br /&gt;
 cd alsa-driver&lt;br /&gt;
 git branch build remotes/origin/build&lt;br /&gt;
 git branch mirror remotes/origin/mirror&lt;br /&gt;
 git branch release remotes/origin/release&lt;br /&gt;
&lt;br /&gt;
Note: You may do changes directly in the Linus's kernel GIT tree and send the patches from it.&lt;br /&gt;
&lt;br /&gt;
===configure git===&lt;br /&gt;
Set your email address correctly otherwise commits get spurious email address for Author and Commiter&lt;br /&gt;
 git config --add user.email me@domain.com&lt;br /&gt;
&lt;br /&gt;
Make sure it knows how to send email (for patches)&lt;br /&gt;
 git config --add sendemail.smtpserver smtp.domain.com&lt;br /&gt;
&lt;br /&gt;
===save current===&lt;br /&gt;
in case you want to roll back&lt;br /&gt;
 git branch save&lt;br /&gt;
&lt;br /&gt;
===do your work===&lt;br /&gt;
edit, compile, test, sweat&lt;br /&gt;
&lt;br /&gt;
If it didn't work out and you want to get back to the old tree&lt;br /&gt;
 git reset --hard save&lt;br /&gt;
&lt;br /&gt;
===generate patches===&lt;br /&gt;
Want to get patch against latest, so rebase &lt;br /&gt;
 git rebase origin/master&lt;br /&gt;
 git diff remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
Then do this to generate the patchset&lt;br /&gt;
 git format-patch -s -n -p --subject-prefix=&amp;quot;PATCH - my module&amp;quot; remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
===check the patches===&lt;br /&gt;
 /lib/modules/`uname -r`/build/scripts/checkpatch.pl --no-tree *.patch&lt;br /&gt;
&lt;br /&gt;
===sending the patches===&lt;br /&gt;
&lt;br /&gt;
 git send-email --from=me --to=patch@alsa-project.org --cc=alsa-devel@alsa-project.org  000*.patch&lt;br /&gt;
&lt;br /&gt;
===get up to date===&lt;br /&gt;
&lt;br /&gt;
 cd alsa-driver&lt;br /&gt;
 git checkout build&lt;br /&gt;
 git pull origin build&lt;br /&gt;
 git checkout release&lt;br /&gt;
 git pull origin release&lt;br /&gt;
 git checkout &lt;br /&gt;
 git pull origin release&lt;br /&gt;
&lt;br /&gt;
Sometimes you can just make and things will be fine. However, when there have been changes to the build system etc, its best to do a make clean; ./gitcompile to get the tree properly up to date.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/GIT_Server</id>
		<title>GIT Server</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/GIT_Server"/>
				<updated>2012-09-25T09:51:16Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: /* clone the repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==ALSA Repositories==&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.git&lt;br /&gt;
: contains compatibility and build code for older 2.6 kernels with mirrored latest kernel code&lt;br /&gt;
; alsa-kernel.git&lt;br /&gt;
: contains linux 2.6 kernel tree&lt;br /&gt;
&lt;br /&gt;
; alsa-kprivate.git&lt;br /&gt;
: contains linux 2.6 kernel tree - for private branches for alsa developers&lt;br /&gt;
&lt;br /&gt;
; alsa-lib.git&lt;br /&gt;
: library&lt;br /&gt;
; alsa-utils.git;&lt;br /&gt;
: utilities&lt;br /&gt;
; alsa-firmware.git&lt;br /&gt;
: firmware&lt;br /&gt;
; alsa-tools.git&lt;br /&gt;
: tools&lt;br /&gt;
; alsa-plugins.git&lt;br /&gt;
: plugins&lt;br /&gt;
; alsa-oss.git&lt;br /&gt;
: oss compatibility&lt;br /&gt;
; alsa-python.git&lt;br /&gt;
: official python binding&lt;br /&gt;
; alsa-ucm-conf.git&lt;br /&gt;
: ALSA Use-Case-Manager configuration library&lt;br /&gt;
; tinycompress.git&lt;br /&gt;
: Compressed formats support library&lt;br /&gt;
&lt;br /&gt;
; alsa.git&lt;br /&gt;
: ALSA service repo (misc files)&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.nomirror.git&lt;br /&gt;
: old ALSA driver repository without the mirrored kernel code&lt;br /&gt;
; alsa-kmirror.git&lt;br /&gt;
: alsa kernel mirror tree for continuous development (contains ALSA parts from alsa-kernel.git tree)&lt;br /&gt;
&lt;br /&gt;
==Anonymous access==&lt;br /&gt;
&lt;br /&gt;
===Read only GIT server===&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.git alsa-driver&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kprivate.git alsa-kprivate&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-lib.git alsa-lib&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-utils.git alsa-utils&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-firmware.git alsa-firmware&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-tools.git alsa-tools&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-plugins.git alsa-plugins&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-oss.git alsa-oss&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-python.git alsa-python&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-ucm-conf.git alsa-ucm-conf&lt;br /&gt;
: git clone git://git.alsa-project.org/tinycompress.git tinycompress&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa.git alsa&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.nomirror.git alsa&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
===Web interface===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/?p=tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
===HTTP access===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/http/tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
==For developers - kernel drivers==&lt;br /&gt;
&lt;br /&gt;
===Common rules===&lt;br /&gt;
&lt;br /&gt;
: 1) be very very very carefull when you use '--force' for 'git push', you can broke whole repository, you should notify other developers on alsa-devel mailing list that you will do this change for 'master' branch&lt;br /&gt;
: 2) valid 'Signed-off-by:' line must be in the commit text&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kernel.git and the mirror branch in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
: 1) subject (first commit text line) must start with '[ALSA] ' or 'ALSA: ' or '[sound] ' or 'sound: '&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kprivate.git===&lt;br /&gt;
&lt;br /&gt;
No rules. Just do not overwrite branches created by someone else. The 'master' branch is equal to linux-2.6 official tree from &lt;br /&gt;
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git (do sync if necessary):&lt;br /&gt;
&lt;br /&gt;
  git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
  git checkout master&lt;br /&gt;
  git pull linux-2.6 master&lt;br /&gt;
  git push --tags origin master&lt;br /&gt;
&lt;br /&gt;
===Syncing the branch release in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
  Please, use --log for the git merge command to show the &amp;quot;subject&amp;quot; of commits.&lt;br /&gt;
  It might be handy to define these git aliases in your .git/config file:&lt;br /&gt;
&lt;br /&gt;
  [alias]&lt;br /&gt;
        bmerge = !git checkout release &amp;amp;&amp;amp; git merge --log build&lt;br /&gt;
        mmerge = !git checkout release &amp;amp;&amp;amp; git merge --log mirror&lt;br /&gt;
&lt;br /&gt;
===Clone repositories===&lt;br /&gt;
&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-driver.git alsa-driver&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
To show all branches (includes remote ones):&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To make a remote branch local:&lt;br /&gt;
&lt;br /&gt;
 git checkout -b for-linus origin/for-linus&lt;br /&gt;
 git checkout -b linux-2.6 origin/linux-2.6&lt;br /&gt;
&lt;br /&gt;
===Update and rebase using Linus's 2.6 kernel tree===&lt;br /&gt;
&lt;br /&gt;
Add remote URL:&lt;br /&gt;
&lt;br /&gt;
 git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
&lt;br /&gt;
Checkout linux-2.6 branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout linux-2.6&lt;br /&gt;
&lt;br /&gt;
Pull Linus's 2.6 changes:&lt;br /&gt;
&lt;br /&gt;
 git pull linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
Rebase our main ALSA development master branch with linux-2.6:&lt;br /&gt;
&lt;br /&gt;
 git rebase linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
===Push branch changes to ALSA GIT repository===&lt;br /&gt;
&lt;br /&gt;
 git push --tags origin master&lt;br /&gt;
 git push --tags origin linux-2.6&lt;br /&gt;
 git push --tags origin for-linus&lt;br /&gt;
&lt;br /&gt;
Note: Especially after 'git rebase' the repository on server is not consistent with local repository (remote ref is not ancestor of the local ref for master branch), so you have to use --force parameter for 'git push' command. Note that this might be dangerous - please, ask Jaroslav Kysela &amp;lt; perex at perex . cz &amp;gt; if you can do this for branch 'master'.&lt;br /&gt;
&lt;br /&gt;
===Branches===&lt;br /&gt;
&lt;br /&gt;
; master&lt;br /&gt;
: this branch is for main development, managed by Jaroslav Kysela, it is rebased before ALSA releases&lt;br /&gt;
: the contents is synced to alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
; linux-next&lt;br /&gt;
: this branch is for linux next testing tree (originaly maintaned by Andrew Morton), rebased &lt;br /&gt;
&lt;br /&gt;
; for-linus&lt;br /&gt;
: this branch is for mainstream tree (for Linus Torvalds), just temporary branch&lt;br /&gt;
&lt;br /&gt;
; linux-2.6&lt;br /&gt;
: this is official linux 2.6 mainstream tree&lt;br /&gt;
&lt;br /&gt;
; stable-2.6.&amp;lt;number&amp;gt;&lt;br /&gt;
: patches for stable 2.6 kernels&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
&lt;br /&gt;
Private tags are not allowed. Only branches identifying ALSA version (alsa-driver.git) or official linux kernel version (alsa-kernel.git) are allowed.&lt;br /&gt;
&lt;br /&gt;
===Maintenance===&lt;br /&gt;
&lt;br /&gt;
GIT server is maintaned by [[User:Perex]].&lt;br /&gt;
&lt;br /&gt;
==Occasional Developers==&lt;br /&gt;
This section is for developers without write access to ALSA git. i.e., who will clone repos and send in patches&lt;br /&gt;
&lt;br /&gt;
===clone the repository===&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
If you live behind a firewall that blocks the git protocol, you can do this instead:&lt;br /&gt;
&lt;br /&gt;
 git clone http://git.alsa-project.org/http/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
Create local branches:&lt;br /&gt;
&lt;br /&gt;
 cd alsa-driver&lt;br /&gt;
 git branch build remotes/origin/build&lt;br /&gt;
 git branch mirror remotes/origin/mirror&lt;br /&gt;
 git branch release remotes/origin/release&lt;br /&gt;
&lt;br /&gt;
Note: You may do changes directly in the Linus's kernel GIT tree and send the patches from it.&lt;br /&gt;
&lt;br /&gt;
===configure git===&lt;br /&gt;
Set your email address correctly otherwise commits get spurious email address for Author and Commiter&lt;br /&gt;
 git config --add user.email me@domain.com&lt;br /&gt;
&lt;br /&gt;
Make sure it knows how to send email (for patches)&lt;br /&gt;
 git config --add sendemail.smtpserver smtp.domain.com&lt;br /&gt;
&lt;br /&gt;
===save current===&lt;br /&gt;
in case you want to roll back&lt;br /&gt;
 git branch save&lt;br /&gt;
&lt;br /&gt;
===do your work===&lt;br /&gt;
edit, compile, test, sweat&lt;br /&gt;
&lt;br /&gt;
If it didn't work out and you want to get back to the old tree&lt;br /&gt;
 git reset --hard save&lt;br /&gt;
&lt;br /&gt;
===generate patches===&lt;br /&gt;
Want to get patch against latest, so rebase &lt;br /&gt;
 git rebase origin/master&lt;br /&gt;
 git diff remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
Then do this to generate the patchset&lt;br /&gt;
 git format-patch -s -n -p --subject-prefix=&amp;quot;PATCH - my module&amp;quot; remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
===check the patches===&lt;br /&gt;
 /lib/modules/`uname -r`/build/scripts/checkpatch.pl --no-tree *.patch&lt;br /&gt;
&lt;br /&gt;
===sending the patches===&lt;br /&gt;
&lt;br /&gt;
 git send-email --from=me --to=patch@alsa-project.org --cc=alsa-devel@alsa-project.org  000*.patch&lt;br /&gt;
&lt;br /&gt;
===get up to date===&lt;br /&gt;
For both alsa-kmirror and alsa-driver&lt;br /&gt;
 git pull&lt;br /&gt;
&lt;br /&gt;
Sometimes you can just make and things will be fine. However, when there have been changes to the build system etc, its best to do a make clean; ./gitcompile to get the tree properly up to date.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/GIT_Server</id>
		<title>GIT Server</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/GIT_Server"/>
				<updated>2012-09-25T09:50:34Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: /* clone the repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==ALSA Repositories==&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.git&lt;br /&gt;
: contains compatibility and build code for older 2.6 kernels with mirrored latest kernel code&lt;br /&gt;
; alsa-kernel.git&lt;br /&gt;
: contains linux 2.6 kernel tree&lt;br /&gt;
&lt;br /&gt;
; alsa-kprivate.git&lt;br /&gt;
: contains linux 2.6 kernel tree - for private branches for alsa developers&lt;br /&gt;
&lt;br /&gt;
; alsa-lib.git&lt;br /&gt;
: library&lt;br /&gt;
; alsa-utils.git;&lt;br /&gt;
: utilities&lt;br /&gt;
; alsa-firmware.git&lt;br /&gt;
: firmware&lt;br /&gt;
; alsa-tools.git&lt;br /&gt;
: tools&lt;br /&gt;
; alsa-plugins.git&lt;br /&gt;
: plugins&lt;br /&gt;
; alsa-oss.git&lt;br /&gt;
: oss compatibility&lt;br /&gt;
; alsa-python.git&lt;br /&gt;
: official python binding&lt;br /&gt;
; alsa-ucm-conf.git&lt;br /&gt;
: ALSA Use-Case-Manager configuration library&lt;br /&gt;
; tinycompress.git&lt;br /&gt;
: Compressed formats support library&lt;br /&gt;
&lt;br /&gt;
; alsa.git&lt;br /&gt;
: ALSA service repo (misc files)&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.nomirror.git&lt;br /&gt;
: old ALSA driver repository without the mirrored kernel code&lt;br /&gt;
; alsa-kmirror.git&lt;br /&gt;
: alsa kernel mirror tree for continuous development (contains ALSA parts from alsa-kernel.git tree)&lt;br /&gt;
&lt;br /&gt;
==Anonymous access==&lt;br /&gt;
&lt;br /&gt;
===Read only GIT server===&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.git alsa-driver&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kprivate.git alsa-kprivate&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-lib.git alsa-lib&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-utils.git alsa-utils&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-firmware.git alsa-firmware&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-tools.git alsa-tools&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-plugins.git alsa-plugins&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-oss.git alsa-oss&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-python.git alsa-python&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-ucm-conf.git alsa-ucm-conf&lt;br /&gt;
: git clone git://git.alsa-project.org/tinycompress.git tinycompress&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa.git alsa&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.nomirror.git alsa&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
===Web interface===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/?p=tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
===HTTP access===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/http/tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
==For developers - kernel drivers==&lt;br /&gt;
&lt;br /&gt;
===Common rules===&lt;br /&gt;
&lt;br /&gt;
: 1) be very very very carefull when you use '--force' for 'git push', you can broke whole repository, you should notify other developers on alsa-devel mailing list that you will do this change for 'master' branch&lt;br /&gt;
: 2) valid 'Signed-off-by:' line must be in the commit text&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kernel.git and the mirror branch in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
: 1) subject (first commit text line) must start with '[ALSA] ' or 'ALSA: ' or '[sound] ' or 'sound: '&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kprivate.git===&lt;br /&gt;
&lt;br /&gt;
No rules. Just do not overwrite branches created by someone else. The 'master' branch is equal to linux-2.6 official tree from &lt;br /&gt;
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git (do sync if necessary):&lt;br /&gt;
&lt;br /&gt;
  git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
  git checkout master&lt;br /&gt;
  git pull linux-2.6 master&lt;br /&gt;
  git push --tags origin master&lt;br /&gt;
&lt;br /&gt;
===Syncing the branch release in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
  Please, use --log for the git merge command to show the &amp;quot;subject&amp;quot; of commits.&lt;br /&gt;
  It might be handy to define these git aliases in your .git/config file:&lt;br /&gt;
&lt;br /&gt;
  [alias]&lt;br /&gt;
        bmerge = !git checkout release &amp;amp;&amp;amp; git merge --log build&lt;br /&gt;
        mmerge = !git checkout release &amp;amp;&amp;amp; git merge --log mirror&lt;br /&gt;
&lt;br /&gt;
===Clone repositories===&lt;br /&gt;
&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-driver.git alsa-driver&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
To show all branches (includes remote ones):&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To make a remote branch local:&lt;br /&gt;
&lt;br /&gt;
 git checkout -b for-linus origin/for-linus&lt;br /&gt;
 git checkout -b linux-2.6 origin/linux-2.6&lt;br /&gt;
&lt;br /&gt;
===Update and rebase using Linus's 2.6 kernel tree===&lt;br /&gt;
&lt;br /&gt;
Add remote URL:&lt;br /&gt;
&lt;br /&gt;
 git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
&lt;br /&gt;
Checkout linux-2.6 branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout linux-2.6&lt;br /&gt;
&lt;br /&gt;
Pull Linus's 2.6 changes:&lt;br /&gt;
&lt;br /&gt;
 git pull linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
Rebase our main ALSA development master branch with linux-2.6:&lt;br /&gt;
&lt;br /&gt;
 git rebase linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
===Push branch changes to ALSA GIT repository===&lt;br /&gt;
&lt;br /&gt;
 git push --tags origin master&lt;br /&gt;
 git push --tags origin linux-2.6&lt;br /&gt;
 git push --tags origin for-linus&lt;br /&gt;
&lt;br /&gt;
Note: Especially after 'git rebase' the repository on server is not consistent with local repository (remote ref is not ancestor of the local ref for master branch), so you have to use --force parameter for 'git push' command. Note that this might be dangerous - please, ask Jaroslav Kysela &amp;lt; perex at perex . cz &amp;gt; if you can do this for branch 'master'.&lt;br /&gt;
&lt;br /&gt;
===Branches===&lt;br /&gt;
&lt;br /&gt;
; master&lt;br /&gt;
: this branch is for main development, managed by Jaroslav Kysela, it is rebased before ALSA releases&lt;br /&gt;
: the contents is synced to alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
; linux-next&lt;br /&gt;
: this branch is for linux next testing tree (originaly maintaned by Andrew Morton), rebased &lt;br /&gt;
&lt;br /&gt;
; for-linus&lt;br /&gt;
: this branch is for mainstream tree (for Linus Torvalds), just temporary branch&lt;br /&gt;
&lt;br /&gt;
; linux-2.6&lt;br /&gt;
: this is official linux 2.6 mainstream tree&lt;br /&gt;
&lt;br /&gt;
; stable-2.6.&amp;lt;number&amp;gt;&lt;br /&gt;
: patches for stable 2.6 kernels&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
&lt;br /&gt;
Private tags are not allowed. Only branches identifying ALSA version (alsa-driver.git) or official linux kernel version (alsa-kernel.git) are allowed.&lt;br /&gt;
&lt;br /&gt;
===Maintenance===&lt;br /&gt;
&lt;br /&gt;
GIT server is maintaned by [[User:Perex]].&lt;br /&gt;
&lt;br /&gt;
==Occasional Developers==&lt;br /&gt;
This section is for developers without write access to ALSA git. i.e., who will clone repos and send in patches&lt;br /&gt;
&lt;br /&gt;
===clone the repository===&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-driver.git alsa-driver &lt;br /&gt;
 cd alsa-driver&lt;br /&gt;
 git branch build remotes/origin/build&lt;br /&gt;
 git branch mirror remotes/origin/mirror&lt;br /&gt;
 git branch release remotes/origin/release&lt;br /&gt;
&lt;br /&gt;
If you live behind a firewall that blocks the git protocol, you can do this instead:&lt;br /&gt;
&lt;br /&gt;
 git clone http://git.alsa-project.org/http/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
Note: You may do changes directly in the Linus's kernel GIT tree and send the patches from it.&lt;br /&gt;
&lt;br /&gt;
===configure git===&lt;br /&gt;
Set your email address correctly otherwise commits get spurious email address for Author and Commiter&lt;br /&gt;
 git config --add user.email me@domain.com&lt;br /&gt;
&lt;br /&gt;
Make sure it knows how to send email (for patches)&lt;br /&gt;
 git config --add sendemail.smtpserver smtp.domain.com&lt;br /&gt;
&lt;br /&gt;
===save current===&lt;br /&gt;
in case you want to roll back&lt;br /&gt;
 git branch save&lt;br /&gt;
&lt;br /&gt;
===do your work===&lt;br /&gt;
edit, compile, test, sweat&lt;br /&gt;
&lt;br /&gt;
If it didn't work out and you want to get back to the old tree&lt;br /&gt;
 git reset --hard save&lt;br /&gt;
&lt;br /&gt;
===generate patches===&lt;br /&gt;
Want to get patch against latest, so rebase &lt;br /&gt;
 git rebase origin/master&lt;br /&gt;
 git diff remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
Then do this to generate the patchset&lt;br /&gt;
 git format-patch -s -n -p --subject-prefix=&amp;quot;PATCH - my module&amp;quot; remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
===check the patches===&lt;br /&gt;
 /lib/modules/`uname -r`/build/scripts/checkpatch.pl --no-tree *.patch&lt;br /&gt;
&lt;br /&gt;
===sending the patches===&lt;br /&gt;
&lt;br /&gt;
 git send-email --from=me --to=patch@alsa-project.org --cc=alsa-devel@alsa-project.org  000*.patch&lt;br /&gt;
&lt;br /&gt;
===get up to date===&lt;br /&gt;
For both alsa-kmirror and alsa-driver&lt;br /&gt;
 git pull&lt;br /&gt;
&lt;br /&gt;
Sometimes you can just make and things will be fine. However, when there have been changes to the build system etc, its best to do a make clean; ./gitcompile to get the tree properly up to date.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/GIT_Server</id>
		<title>GIT Server</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/GIT_Server"/>
				<updated>2012-09-25T09:50:21Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: /* clone the repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==ALSA Repositories==&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.git&lt;br /&gt;
: contains compatibility and build code for older 2.6 kernels with mirrored latest kernel code&lt;br /&gt;
; alsa-kernel.git&lt;br /&gt;
: contains linux 2.6 kernel tree&lt;br /&gt;
&lt;br /&gt;
; alsa-kprivate.git&lt;br /&gt;
: contains linux 2.6 kernel tree - for private branches for alsa developers&lt;br /&gt;
&lt;br /&gt;
; alsa-lib.git&lt;br /&gt;
: library&lt;br /&gt;
; alsa-utils.git;&lt;br /&gt;
: utilities&lt;br /&gt;
; alsa-firmware.git&lt;br /&gt;
: firmware&lt;br /&gt;
; alsa-tools.git&lt;br /&gt;
: tools&lt;br /&gt;
; alsa-plugins.git&lt;br /&gt;
: plugins&lt;br /&gt;
; alsa-oss.git&lt;br /&gt;
: oss compatibility&lt;br /&gt;
; alsa-python.git&lt;br /&gt;
: official python binding&lt;br /&gt;
; alsa-ucm-conf.git&lt;br /&gt;
: ALSA Use-Case-Manager configuration library&lt;br /&gt;
; tinycompress.git&lt;br /&gt;
: Compressed formats support library&lt;br /&gt;
&lt;br /&gt;
; alsa.git&lt;br /&gt;
: ALSA service repo (misc files)&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.nomirror.git&lt;br /&gt;
: old ALSA driver repository without the mirrored kernel code&lt;br /&gt;
; alsa-kmirror.git&lt;br /&gt;
: alsa kernel mirror tree for continuous development (contains ALSA parts from alsa-kernel.git tree)&lt;br /&gt;
&lt;br /&gt;
==Anonymous access==&lt;br /&gt;
&lt;br /&gt;
===Read only GIT server===&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.git alsa-driver&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kprivate.git alsa-kprivate&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-lib.git alsa-lib&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-utils.git alsa-utils&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-firmware.git alsa-firmware&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-tools.git alsa-tools&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-plugins.git alsa-plugins&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-oss.git alsa-oss&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-python.git alsa-python&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-ucm-conf.git alsa-ucm-conf&lt;br /&gt;
: git clone git://git.alsa-project.org/tinycompress.git tinycompress&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa.git alsa&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.nomirror.git alsa&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
===Web interface===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/?p=tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
===HTTP access===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/http/tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
==For developers - kernel drivers==&lt;br /&gt;
&lt;br /&gt;
===Common rules===&lt;br /&gt;
&lt;br /&gt;
: 1) be very very very carefull when you use '--force' for 'git push', you can broke whole repository, you should notify other developers on alsa-devel mailing list that you will do this change for 'master' branch&lt;br /&gt;
: 2) valid 'Signed-off-by:' line must be in the commit text&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kernel.git and the mirror branch in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
: 1) subject (first commit text line) must start with '[ALSA] ' or 'ALSA: ' or '[sound] ' or 'sound: '&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kprivate.git===&lt;br /&gt;
&lt;br /&gt;
No rules. Just do not overwrite branches created by someone else. The 'master' branch is equal to linux-2.6 official tree from &lt;br /&gt;
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git (do sync if necessary):&lt;br /&gt;
&lt;br /&gt;
  git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
  git checkout master&lt;br /&gt;
  git pull linux-2.6 master&lt;br /&gt;
  git push --tags origin master&lt;br /&gt;
&lt;br /&gt;
===Syncing the branch release in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
  Please, use --log for the git merge command to show the &amp;quot;subject&amp;quot; of commits.&lt;br /&gt;
  It might be handy to define these git aliases in your .git/config file:&lt;br /&gt;
&lt;br /&gt;
  [alias]&lt;br /&gt;
        bmerge = !git checkout release &amp;amp;&amp;amp; git merge --log build&lt;br /&gt;
        mmerge = !git checkout release &amp;amp;&amp;amp; git merge --log mirror&lt;br /&gt;
&lt;br /&gt;
===Clone repositories===&lt;br /&gt;
&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-driver.git alsa-driver&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
To show all branches (includes remote ones):&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To make a remote branch local:&lt;br /&gt;
&lt;br /&gt;
 git checkout -b for-linus origin/for-linus&lt;br /&gt;
 git checkout -b linux-2.6 origin/linux-2.6&lt;br /&gt;
&lt;br /&gt;
===Update and rebase using Linus's 2.6 kernel tree===&lt;br /&gt;
&lt;br /&gt;
Add remote URL:&lt;br /&gt;
&lt;br /&gt;
 git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
&lt;br /&gt;
Checkout linux-2.6 branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout linux-2.6&lt;br /&gt;
&lt;br /&gt;
Pull Linus's 2.6 changes:&lt;br /&gt;
&lt;br /&gt;
 git pull linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
Rebase our main ALSA development master branch with linux-2.6:&lt;br /&gt;
&lt;br /&gt;
 git rebase linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
===Push branch changes to ALSA GIT repository===&lt;br /&gt;
&lt;br /&gt;
 git push --tags origin master&lt;br /&gt;
 git push --tags origin linux-2.6&lt;br /&gt;
 git push --tags origin for-linus&lt;br /&gt;
&lt;br /&gt;
Note: Especially after 'git rebase' the repository on server is not consistent with local repository (remote ref is not ancestor of the local ref for master branch), so you have to use --force parameter for 'git push' command. Note that this might be dangerous - please, ask Jaroslav Kysela &amp;lt; perex at perex . cz &amp;gt; if you can do this for branch 'master'.&lt;br /&gt;
&lt;br /&gt;
===Branches===&lt;br /&gt;
&lt;br /&gt;
; master&lt;br /&gt;
: this branch is for main development, managed by Jaroslav Kysela, it is rebased before ALSA releases&lt;br /&gt;
: the contents is synced to alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
; linux-next&lt;br /&gt;
: this branch is for linux next testing tree (originaly maintaned by Andrew Morton), rebased &lt;br /&gt;
&lt;br /&gt;
; for-linus&lt;br /&gt;
: this branch is for mainstream tree (for Linus Torvalds), just temporary branch&lt;br /&gt;
&lt;br /&gt;
; linux-2.6&lt;br /&gt;
: this is official linux 2.6 mainstream tree&lt;br /&gt;
&lt;br /&gt;
; stable-2.6.&amp;lt;number&amp;gt;&lt;br /&gt;
: patches for stable 2.6 kernels&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
&lt;br /&gt;
Private tags are not allowed. Only branches identifying ALSA version (alsa-driver.git) or official linux kernel version (alsa-kernel.git) are allowed.&lt;br /&gt;
&lt;br /&gt;
===Maintenance===&lt;br /&gt;
&lt;br /&gt;
GIT server is maintaned by [[User:Perex]].&lt;br /&gt;
&lt;br /&gt;
==Occasional Developers==&lt;br /&gt;
This section is for developers without write access to ALSA git. i.e., who will clone repos and send in patches&lt;br /&gt;
&lt;br /&gt;
===clone the repository===&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-driver.git alsa-driver &lt;br /&gt;
 git branch build remotes/origin/build&lt;br /&gt;
 git branch mirror remotes/origin/mirror&lt;br /&gt;
 git branch release remotes/origin/release&lt;br /&gt;
&lt;br /&gt;
If you live behind a firewall that blocks the git protocol, you can do this instead:&lt;br /&gt;
&lt;br /&gt;
 git clone http://git.alsa-project.org/http/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
Note: You may do changes directly in the Linus's kernel GIT tree and send the patches from it.&lt;br /&gt;
&lt;br /&gt;
===configure git===&lt;br /&gt;
Set your email address correctly otherwise commits get spurious email address for Author and Commiter&lt;br /&gt;
 git config --add user.email me@domain.com&lt;br /&gt;
&lt;br /&gt;
Make sure it knows how to send email (for patches)&lt;br /&gt;
 git config --add sendemail.smtpserver smtp.domain.com&lt;br /&gt;
&lt;br /&gt;
===save current===&lt;br /&gt;
in case you want to roll back&lt;br /&gt;
 git branch save&lt;br /&gt;
&lt;br /&gt;
===do your work===&lt;br /&gt;
edit, compile, test, sweat&lt;br /&gt;
&lt;br /&gt;
If it didn't work out and you want to get back to the old tree&lt;br /&gt;
 git reset --hard save&lt;br /&gt;
&lt;br /&gt;
===generate patches===&lt;br /&gt;
Want to get patch against latest, so rebase &lt;br /&gt;
 git rebase origin/master&lt;br /&gt;
 git diff remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
Then do this to generate the patchset&lt;br /&gt;
 git format-patch -s -n -p --subject-prefix=&amp;quot;PATCH - my module&amp;quot; remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
===check the patches===&lt;br /&gt;
 /lib/modules/`uname -r`/build/scripts/checkpatch.pl --no-tree *.patch&lt;br /&gt;
&lt;br /&gt;
===sending the patches===&lt;br /&gt;
&lt;br /&gt;
 git send-email --from=me --to=patch@alsa-project.org --cc=alsa-devel@alsa-project.org  000*.patch&lt;br /&gt;
&lt;br /&gt;
===get up to date===&lt;br /&gt;
For both alsa-kmirror and alsa-driver&lt;br /&gt;
 git pull&lt;br /&gt;
&lt;br /&gt;
Sometimes you can just make and things will be fine. However, when there have been changes to the build system etc, its best to do a make clean; ./gitcompile to get the tree properly up to date.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/GIT_Server</id>
		<title>GIT Server</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/GIT_Server"/>
				<updated>2012-09-25T09:39:39Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: /* Push branch changes to ALSA GIT repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==ALSA Repositories==&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.git&lt;br /&gt;
: contains compatibility and build code for older 2.6 kernels with mirrored latest kernel code&lt;br /&gt;
; alsa-kernel.git&lt;br /&gt;
: contains linux 2.6 kernel tree&lt;br /&gt;
&lt;br /&gt;
; alsa-kprivate.git&lt;br /&gt;
: contains linux 2.6 kernel tree - for private branches for alsa developers&lt;br /&gt;
&lt;br /&gt;
; alsa-lib.git&lt;br /&gt;
: library&lt;br /&gt;
; alsa-utils.git;&lt;br /&gt;
: utilities&lt;br /&gt;
; alsa-firmware.git&lt;br /&gt;
: firmware&lt;br /&gt;
; alsa-tools.git&lt;br /&gt;
: tools&lt;br /&gt;
; alsa-plugins.git&lt;br /&gt;
: plugins&lt;br /&gt;
; alsa-oss.git&lt;br /&gt;
: oss compatibility&lt;br /&gt;
; alsa-python.git&lt;br /&gt;
: official python binding&lt;br /&gt;
; alsa-ucm-conf.git&lt;br /&gt;
: ALSA Use-Case-Manager configuration library&lt;br /&gt;
; tinycompress.git&lt;br /&gt;
: Compressed formats support library&lt;br /&gt;
&lt;br /&gt;
; alsa.git&lt;br /&gt;
: ALSA service repo (misc files)&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.nomirror.git&lt;br /&gt;
: old ALSA driver repository without the mirrored kernel code&lt;br /&gt;
; alsa-kmirror.git&lt;br /&gt;
: alsa kernel mirror tree for continuous development (contains ALSA parts from alsa-kernel.git tree)&lt;br /&gt;
&lt;br /&gt;
==Anonymous access==&lt;br /&gt;
&lt;br /&gt;
===Read only GIT server===&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.git alsa-driver&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kprivate.git alsa-kprivate&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-lib.git alsa-lib&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-utils.git alsa-utils&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-firmware.git alsa-firmware&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-tools.git alsa-tools&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-plugins.git alsa-plugins&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-oss.git alsa-oss&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-python.git alsa-python&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-ucm-conf.git alsa-ucm-conf&lt;br /&gt;
: git clone git://git.alsa-project.org/tinycompress.git tinycompress&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa.git alsa&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.nomirror.git alsa&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
===Web interface===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/?p=tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
===HTTP access===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/http/tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
==For developers - kernel drivers==&lt;br /&gt;
&lt;br /&gt;
===Common rules===&lt;br /&gt;
&lt;br /&gt;
: 1) be very very very carefull when you use '--force' for 'git push', you can broke whole repository, you should notify other developers on alsa-devel mailing list that you will do this change for 'master' branch&lt;br /&gt;
: 2) valid 'Signed-off-by:' line must be in the commit text&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kernel.git and the mirror branch in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
: 1) subject (first commit text line) must start with '[ALSA] ' or 'ALSA: ' or '[sound] ' or 'sound: '&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kprivate.git===&lt;br /&gt;
&lt;br /&gt;
No rules. Just do not overwrite branches created by someone else. The 'master' branch is equal to linux-2.6 official tree from &lt;br /&gt;
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git (do sync if necessary):&lt;br /&gt;
&lt;br /&gt;
  git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
  git checkout master&lt;br /&gt;
  git pull linux-2.6 master&lt;br /&gt;
  git push --tags origin master&lt;br /&gt;
&lt;br /&gt;
===Syncing the branch release in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
  Please, use --log for the git merge command to show the &amp;quot;subject&amp;quot; of commits.&lt;br /&gt;
  It might be handy to define these git aliases in your .git/config file:&lt;br /&gt;
&lt;br /&gt;
  [alias]&lt;br /&gt;
        bmerge = !git checkout release &amp;amp;&amp;amp; git merge --log build&lt;br /&gt;
        mmerge = !git checkout release &amp;amp;&amp;amp; git merge --log mirror&lt;br /&gt;
&lt;br /&gt;
===Clone repositories===&lt;br /&gt;
&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-driver.git alsa-driver&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
To show all branches (includes remote ones):&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To make a remote branch local:&lt;br /&gt;
&lt;br /&gt;
 git checkout -b for-linus origin/for-linus&lt;br /&gt;
 git checkout -b linux-2.6 origin/linux-2.6&lt;br /&gt;
&lt;br /&gt;
===Update and rebase using Linus's 2.6 kernel tree===&lt;br /&gt;
&lt;br /&gt;
Add remote URL:&lt;br /&gt;
&lt;br /&gt;
 git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
&lt;br /&gt;
Checkout linux-2.6 branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout linux-2.6&lt;br /&gt;
&lt;br /&gt;
Pull Linus's 2.6 changes:&lt;br /&gt;
&lt;br /&gt;
 git pull linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
Rebase our main ALSA development master branch with linux-2.6:&lt;br /&gt;
&lt;br /&gt;
 git rebase linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
===Push branch changes to ALSA GIT repository===&lt;br /&gt;
&lt;br /&gt;
 git push --tags origin master&lt;br /&gt;
 git push --tags origin linux-2.6&lt;br /&gt;
 git push --tags origin for-linus&lt;br /&gt;
&lt;br /&gt;
Note: Especially after 'git rebase' the repository on server is not consistent with local repository (remote ref is not ancestor of the local ref for master branch), so you have to use --force parameter for 'git push' command. Note that this might be dangerous - please, ask Jaroslav Kysela &amp;lt; perex at perex . cz &amp;gt; if you can do this for branch 'master'.&lt;br /&gt;
&lt;br /&gt;
===Branches===&lt;br /&gt;
&lt;br /&gt;
; master&lt;br /&gt;
: this branch is for main development, managed by Jaroslav Kysela, it is rebased before ALSA releases&lt;br /&gt;
: the contents is synced to alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
; linux-next&lt;br /&gt;
: this branch is for linux next testing tree (originaly maintaned by Andrew Morton), rebased &lt;br /&gt;
&lt;br /&gt;
; for-linus&lt;br /&gt;
: this branch is for mainstream tree (for Linus Torvalds), just temporary branch&lt;br /&gt;
&lt;br /&gt;
; linux-2.6&lt;br /&gt;
: this is official linux 2.6 mainstream tree&lt;br /&gt;
&lt;br /&gt;
; stable-2.6.&amp;lt;number&amp;gt;&lt;br /&gt;
: patches for stable 2.6 kernels&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
&lt;br /&gt;
Private tags are not allowed. Only branches identifying ALSA version (alsa-driver.git) or official linux kernel version (alsa-kernel.git) are allowed.&lt;br /&gt;
&lt;br /&gt;
===Maintenance===&lt;br /&gt;
&lt;br /&gt;
GIT server is maintaned by [[User:Perex]].&lt;br /&gt;
&lt;br /&gt;
==Occasional Developers==&lt;br /&gt;
This section is for developers without write access to ALSA git. i.e., who will clone repos and send in patches&lt;br /&gt;
&lt;br /&gt;
===clone the repository===&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
if you live behind a firewall that blocks the git protocol, you can do this instead:&lt;br /&gt;
&lt;br /&gt;
 git clone http://git.alsa-project.org/http/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
if you like do only changes in code in alsa-kmirror, please, use alsa-kernel repository&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
but we accept patches in both forms&lt;br /&gt;
&lt;br /&gt;
===configure git===&lt;br /&gt;
Set your email address correctly otherwise commits get spurious email address for Author and Commiter&lt;br /&gt;
 git config --add user.email me@domain.com&lt;br /&gt;
&lt;br /&gt;
Make sure it knows how to send email (for patches)&lt;br /&gt;
 git config --add sendemail.smtpserver smtp.domain.com&lt;br /&gt;
&lt;br /&gt;
===save current===&lt;br /&gt;
in case you want to roll back&lt;br /&gt;
 git branch save&lt;br /&gt;
&lt;br /&gt;
===do your work===&lt;br /&gt;
edit, compile, test, sweat&lt;br /&gt;
&lt;br /&gt;
If it didn't work out and you want to get back to the old tree&lt;br /&gt;
 git reset --hard save&lt;br /&gt;
&lt;br /&gt;
===generate patches===&lt;br /&gt;
Want to get patch against latest, so rebase &lt;br /&gt;
 git rebase origin/master&lt;br /&gt;
 git diff remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
Then do this to generate the patchset&lt;br /&gt;
 git format-patch -s -n -p --subject-prefix=&amp;quot;PATCH - my module&amp;quot; remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
===check the patches===&lt;br /&gt;
 /lib/modules/`uname -r`/build/scripts/checkpatch.pl --no-tree *.patch&lt;br /&gt;
&lt;br /&gt;
===sending the patches===&lt;br /&gt;
&lt;br /&gt;
 git send-email --from=me --to=patch@alsa-project.org --cc=alsa-devel@alsa-project.org  000*.patch&lt;br /&gt;
&lt;br /&gt;
===get up to date===&lt;br /&gt;
For both alsa-kmirror and alsa-driver&lt;br /&gt;
 git pull&lt;br /&gt;
&lt;br /&gt;
Sometimes you can just make and things will be fine. However, when there have been changes to the build system etc, its best to do a make clean; ./gitcompile to get the tree properly up to date.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/GIT_Server</id>
		<title>GIT Server</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/GIT_Server"/>
				<updated>2012-09-25T09:38:46Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: /* Rules for alsa-kprivate.git */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==ALSA Repositories==&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.git&lt;br /&gt;
: contains compatibility and build code for older 2.6 kernels with mirrored latest kernel code&lt;br /&gt;
; alsa-kernel.git&lt;br /&gt;
: contains linux 2.6 kernel tree&lt;br /&gt;
&lt;br /&gt;
; alsa-kprivate.git&lt;br /&gt;
: contains linux 2.6 kernel tree - for private branches for alsa developers&lt;br /&gt;
&lt;br /&gt;
; alsa-lib.git&lt;br /&gt;
: library&lt;br /&gt;
; alsa-utils.git;&lt;br /&gt;
: utilities&lt;br /&gt;
; alsa-firmware.git&lt;br /&gt;
: firmware&lt;br /&gt;
; alsa-tools.git&lt;br /&gt;
: tools&lt;br /&gt;
; alsa-plugins.git&lt;br /&gt;
: plugins&lt;br /&gt;
; alsa-oss.git&lt;br /&gt;
: oss compatibility&lt;br /&gt;
; alsa-python.git&lt;br /&gt;
: official python binding&lt;br /&gt;
; alsa-ucm-conf.git&lt;br /&gt;
: ALSA Use-Case-Manager configuration library&lt;br /&gt;
; tinycompress.git&lt;br /&gt;
: Compressed formats support library&lt;br /&gt;
&lt;br /&gt;
; alsa.git&lt;br /&gt;
: ALSA service repo (misc files)&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.nomirror.git&lt;br /&gt;
: old ALSA driver repository without the mirrored kernel code&lt;br /&gt;
; alsa-kmirror.git&lt;br /&gt;
: alsa kernel mirror tree for continuous development (contains ALSA parts from alsa-kernel.git tree)&lt;br /&gt;
&lt;br /&gt;
==Anonymous access==&lt;br /&gt;
&lt;br /&gt;
===Read only GIT server===&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.git alsa-driver&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kprivate.git alsa-kprivate&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-lib.git alsa-lib&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-utils.git alsa-utils&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-firmware.git alsa-firmware&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-tools.git alsa-tools&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-plugins.git alsa-plugins&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-oss.git alsa-oss&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-python.git alsa-python&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-ucm-conf.git alsa-ucm-conf&lt;br /&gt;
: git clone git://git.alsa-project.org/tinycompress.git tinycompress&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa.git alsa&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.nomirror.git alsa&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
===Web interface===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/?p=tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
===HTTP access===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/http/tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
==For developers - kernel drivers==&lt;br /&gt;
&lt;br /&gt;
===Common rules===&lt;br /&gt;
&lt;br /&gt;
: 1) be very very very carefull when you use '--force' for 'git push', you can broke whole repository, you should notify other developers on alsa-devel mailing list that you will do this change for 'master' branch&lt;br /&gt;
: 2) valid 'Signed-off-by:' line must be in the commit text&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kernel.git and the mirror branch in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
: 1) subject (first commit text line) must start with '[ALSA] ' or 'ALSA: ' or '[sound] ' or 'sound: '&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kprivate.git===&lt;br /&gt;
&lt;br /&gt;
No rules. Just do not overwrite branches created by someone else. The 'master' branch is equal to linux-2.6 official tree from &lt;br /&gt;
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git (do sync if necessary):&lt;br /&gt;
&lt;br /&gt;
  git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
  git checkout master&lt;br /&gt;
  git pull linux-2.6 master&lt;br /&gt;
  git push --tags origin master&lt;br /&gt;
&lt;br /&gt;
===Syncing the branch release in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
  Please, use --log for the git merge command to show the &amp;quot;subject&amp;quot; of commits.&lt;br /&gt;
  It might be handy to define these git aliases in your .git/config file:&lt;br /&gt;
&lt;br /&gt;
  [alias]&lt;br /&gt;
        bmerge = !git checkout release &amp;amp;&amp;amp; git merge --log build&lt;br /&gt;
        mmerge = !git checkout release &amp;amp;&amp;amp; git merge --log mirror&lt;br /&gt;
&lt;br /&gt;
===Clone repositories===&lt;br /&gt;
&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-driver.git alsa-driver&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
To show all branches (includes remote ones):&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To make a remote branch local:&lt;br /&gt;
&lt;br /&gt;
 git checkout -b for-linus origin/for-linus&lt;br /&gt;
 git checkout -b linux-2.6 origin/linux-2.6&lt;br /&gt;
&lt;br /&gt;
===Update and rebase using Linus's 2.6 kernel tree===&lt;br /&gt;
&lt;br /&gt;
Add remote URL:&lt;br /&gt;
&lt;br /&gt;
 git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
&lt;br /&gt;
Checkout linux-2.6 branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout linux-2.6&lt;br /&gt;
&lt;br /&gt;
Pull Linus's 2.6 changes:&lt;br /&gt;
&lt;br /&gt;
 git pull linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
Rebase our main ALSA development master branch with linux-2.6:&lt;br /&gt;
&lt;br /&gt;
 git rebase linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
===Push branch changes to ALSA GIT repository===&lt;br /&gt;
&lt;br /&gt;
 git push --tags origin master:refs/heads/master&lt;br /&gt;
 git push --tags origin linux-2.6:refs/heads/linux-2.6&lt;br /&gt;
 git push --tags origin for-linus:refs/heads/for-linus&lt;br /&gt;
&lt;br /&gt;
Note: Especially after 'git rebase' the repository on server is not consistent with local repository (remote ref is not ancestor of the local ref for master branch), so you have to use --force parameter for 'git push' command. Note that this might be dangerous - please, ask Jaroslav Kysela &amp;lt; perex at perex . cz &amp;gt; if you can do this for branch 'master'.&lt;br /&gt;
&lt;br /&gt;
===Branches===&lt;br /&gt;
&lt;br /&gt;
; master&lt;br /&gt;
: this branch is for main development, managed by Jaroslav Kysela, it is rebased before ALSA releases&lt;br /&gt;
: the contents is synced to alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
; linux-next&lt;br /&gt;
: this branch is for linux next testing tree (originaly maintaned by Andrew Morton), rebased &lt;br /&gt;
&lt;br /&gt;
; for-linus&lt;br /&gt;
: this branch is for mainstream tree (for Linus Torvalds), just temporary branch&lt;br /&gt;
&lt;br /&gt;
; linux-2.6&lt;br /&gt;
: this is official linux 2.6 mainstream tree&lt;br /&gt;
&lt;br /&gt;
; stable-2.6.&amp;lt;number&amp;gt;&lt;br /&gt;
: patches for stable 2.6 kernels&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
&lt;br /&gt;
Private tags are not allowed. Only branches identifying ALSA version (alsa-driver.git) or official linux kernel version (alsa-kernel.git) are allowed.&lt;br /&gt;
&lt;br /&gt;
===Maintenance===&lt;br /&gt;
&lt;br /&gt;
GIT server is maintaned by [[User:Perex]].&lt;br /&gt;
&lt;br /&gt;
==Occasional Developers==&lt;br /&gt;
This section is for developers without write access to ALSA git. i.e., who will clone repos and send in patches&lt;br /&gt;
&lt;br /&gt;
===clone the repository===&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
if you live behind a firewall that blocks the git protocol, you can do this instead:&lt;br /&gt;
&lt;br /&gt;
 git clone http://git.alsa-project.org/http/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
if you like do only changes in code in alsa-kmirror, please, use alsa-kernel repository&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
but we accept patches in both forms&lt;br /&gt;
&lt;br /&gt;
===configure git===&lt;br /&gt;
Set your email address correctly otherwise commits get spurious email address for Author and Commiter&lt;br /&gt;
 git config --add user.email me@domain.com&lt;br /&gt;
&lt;br /&gt;
Make sure it knows how to send email (for patches)&lt;br /&gt;
 git config --add sendemail.smtpserver smtp.domain.com&lt;br /&gt;
&lt;br /&gt;
===save current===&lt;br /&gt;
in case you want to roll back&lt;br /&gt;
 git branch save&lt;br /&gt;
&lt;br /&gt;
===do your work===&lt;br /&gt;
edit, compile, test, sweat&lt;br /&gt;
&lt;br /&gt;
If it didn't work out and you want to get back to the old tree&lt;br /&gt;
 git reset --hard save&lt;br /&gt;
&lt;br /&gt;
===generate patches===&lt;br /&gt;
Want to get patch against latest, so rebase &lt;br /&gt;
 git rebase origin/master&lt;br /&gt;
 git diff remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
Then do this to generate the patchset&lt;br /&gt;
 git format-patch -s -n -p --subject-prefix=&amp;quot;PATCH - my module&amp;quot; remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
===check the patches===&lt;br /&gt;
 /lib/modules/`uname -r`/build/scripts/checkpatch.pl --no-tree *.patch&lt;br /&gt;
&lt;br /&gt;
===sending the patches===&lt;br /&gt;
&lt;br /&gt;
 git send-email --from=me --to=patch@alsa-project.org --cc=alsa-devel@alsa-project.org  000*.patch&lt;br /&gt;
&lt;br /&gt;
===get up to date===&lt;br /&gt;
For both alsa-kmirror and alsa-driver&lt;br /&gt;
 git pull&lt;br /&gt;
&lt;br /&gt;
Sometimes you can just make and things will be fine. However, when there have been changes to the build system etc, its best to do a make clean; ./gitcompile to get the tree properly up to date.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/GIT_Server</id>
		<title>GIT Server</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/GIT_Server"/>
				<updated>2012-09-25T09:38:10Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: /* Rules for alsa-kernel.git */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==ALSA Repositories==&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.git&lt;br /&gt;
: contains compatibility and build code for older 2.6 kernels with mirrored latest kernel code&lt;br /&gt;
; alsa-kernel.git&lt;br /&gt;
: contains linux 2.6 kernel tree&lt;br /&gt;
&lt;br /&gt;
; alsa-kprivate.git&lt;br /&gt;
: contains linux 2.6 kernel tree - for private branches for alsa developers&lt;br /&gt;
&lt;br /&gt;
; alsa-lib.git&lt;br /&gt;
: library&lt;br /&gt;
; alsa-utils.git;&lt;br /&gt;
: utilities&lt;br /&gt;
; alsa-firmware.git&lt;br /&gt;
: firmware&lt;br /&gt;
; alsa-tools.git&lt;br /&gt;
: tools&lt;br /&gt;
; alsa-plugins.git&lt;br /&gt;
: plugins&lt;br /&gt;
; alsa-oss.git&lt;br /&gt;
: oss compatibility&lt;br /&gt;
; alsa-python.git&lt;br /&gt;
: official python binding&lt;br /&gt;
; alsa-ucm-conf.git&lt;br /&gt;
: ALSA Use-Case-Manager configuration library&lt;br /&gt;
; tinycompress.git&lt;br /&gt;
: Compressed formats support library&lt;br /&gt;
&lt;br /&gt;
; alsa.git&lt;br /&gt;
: ALSA service repo (misc files)&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.nomirror.git&lt;br /&gt;
: old ALSA driver repository without the mirrored kernel code&lt;br /&gt;
; alsa-kmirror.git&lt;br /&gt;
: alsa kernel mirror tree for continuous development (contains ALSA parts from alsa-kernel.git tree)&lt;br /&gt;
&lt;br /&gt;
==Anonymous access==&lt;br /&gt;
&lt;br /&gt;
===Read only GIT server===&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.git alsa-driver&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kprivate.git alsa-kprivate&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-lib.git alsa-lib&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-utils.git alsa-utils&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-firmware.git alsa-firmware&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-tools.git alsa-tools&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-plugins.git alsa-plugins&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-oss.git alsa-oss&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-python.git alsa-python&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-ucm-conf.git alsa-ucm-conf&lt;br /&gt;
: git clone git://git.alsa-project.org/tinycompress.git tinycompress&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa.git alsa&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.nomirror.git alsa&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
===Web interface===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/?p=tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
===HTTP access===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/http/tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
==For developers - kernel drivers==&lt;br /&gt;
&lt;br /&gt;
===Common rules===&lt;br /&gt;
&lt;br /&gt;
: 1) be very very very carefull when you use '--force' for 'git push', you can broke whole repository, you should notify other developers on alsa-devel mailing list that you will do this change for 'master' branch&lt;br /&gt;
: 2) valid 'Signed-off-by:' line must be in the commit text&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kernel.git and the mirror branch in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
: 1) subject (first commit text line) must start with '[ALSA] ' or 'ALSA: ' or '[sound] ' or 'sound: '&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kprivate.git===&lt;br /&gt;
&lt;br /&gt;
No rules. Just do not overwrite branches created by someone else. The 'master' branch is equal to linux-2.6 official tree from &lt;br /&gt;
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git (do sync if necessary):&lt;br /&gt;
&lt;br /&gt;
  git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
  git checkout master&lt;br /&gt;
  git pull linux-2.6 master&lt;br /&gt;
  git push --tags origin master:refs/heads/master&lt;br /&gt;
&lt;br /&gt;
===Syncing the branch release in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
  Please, use --log for the git merge command to show the &amp;quot;subject&amp;quot; of commits.&lt;br /&gt;
  It might be handy to define these git aliases in your .git/config file:&lt;br /&gt;
&lt;br /&gt;
  [alias]&lt;br /&gt;
        bmerge = !git checkout release &amp;amp;&amp;amp; git merge --log build&lt;br /&gt;
        mmerge = !git checkout release &amp;amp;&amp;amp; git merge --log mirror&lt;br /&gt;
&lt;br /&gt;
===Clone repositories===&lt;br /&gt;
&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-driver.git alsa-driver&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
To show all branches (includes remote ones):&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To make a remote branch local:&lt;br /&gt;
&lt;br /&gt;
 git checkout -b for-linus origin/for-linus&lt;br /&gt;
 git checkout -b linux-2.6 origin/linux-2.6&lt;br /&gt;
&lt;br /&gt;
===Update and rebase using Linus's 2.6 kernel tree===&lt;br /&gt;
&lt;br /&gt;
Add remote URL:&lt;br /&gt;
&lt;br /&gt;
 git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
&lt;br /&gt;
Checkout linux-2.6 branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout linux-2.6&lt;br /&gt;
&lt;br /&gt;
Pull Linus's 2.6 changes:&lt;br /&gt;
&lt;br /&gt;
 git pull linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
Rebase our main ALSA development master branch with linux-2.6:&lt;br /&gt;
&lt;br /&gt;
 git rebase linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
===Push branch changes to ALSA GIT repository===&lt;br /&gt;
&lt;br /&gt;
 git push --tags origin master:refs/heads/master&lt;br /&gt;
 git push --tags origin linux-2.6:refs/heads/linux-2.6&lt;br /&gt;
 git push --tags origin for-linus:refs/heads/for-linus&lt;br /&gt;
&lt;br /&gt;
Note: Especially after 'git rebase' the repository on server is not consistent with local repository (remote ref is not ancestor of the local ref for master branch), so you have to use --force parameter for 'git push' command. Note that this might be dangerous - please, ask Jaroslav Kysela &amp;lt; perex at perex . cz &amp;gt; if you can do this for branch 'master'.&lt;br /&gt;
&lt;br /&gt;
===Branches===&lt;br /&gt;
&lt;br /&gt;
; master&lt;br /&gt;
: this branch is for main development, managed by Jaroslav Kysela, it is rebased before ALSA releases&lt;br /&gt;
: the contents is synced to alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
; linux-next&lt;br /&gt;
: this branch is for linux next testing tree (originaly maintaned by Andrew Morton), rebased &lt;br /&gt;
&lt;br /&gt;
; for-linus&lt;br /&gt;
: this branch is for mainstream tree (for Linus Torvalds), just temporary branch&lt;br /&gt;
&lt;br /&gt;
; linux-2.6&lt;br /&gt;
: this is official linux 2.6 mainstream tree&lt;br /&gt;
&lt;br /&gt;
; stable-2.6.&amp;lt;number&amp;gt;&lt;br /&gt;
: patches for stable 2.6 kernels&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
&lt;br /&gt;
Private tags are not allowed. Only branches identifying ALSA version (alsa-driver.git) or official linux kernel version (alsa-kernel.git) are allowed.&lt;br /&gt;
&lt;br /&gt;
===Maintenance===&lt;br /&gt;
&lt;br /&gt;
GIT server is maintaned by [[User:Perex]].&lt;br /&gt;
&lt;br /&gt;
==Occasional Developers==&lt;br /&gt;
This section is for developers without write access to ALSA git. i.e., who will clone repos and send in patches&lt;br /&gt;
&lt;br /&gt;
===clone the repository===&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
if you live behind a firewall that blocks the git protocol, you can do this instead:&lt;br /&gt;
&lt;br /&gt;
 git clone http://git.alsa-project.org/http/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
if you like do only changes in code in alsa-kmirror, please, use alsa-kernel repository&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
but we accept patches in both forms&lt;br /&gt;
&lt;br /&gt;
===configure git===&lt;br /&gt;
Set your email address correctly otherwise commits get spurious email address for Author and Commiter&lt;br /&gt;
 git config --add user.email me@domain.com&lt;br /&gt;
&lt;br /&gt;
Make sure it knows how to send email (for patches)&lt;br /&gt;
 git config --add sendemail.smtpserver smtp.domain.com&lt;br /&gt;
&lt;br /&gt;
===save current===&lt;br /&gt;
in case you want to roll back&lt;br /&gt;
 git branch save&lt;br /&gt;
&lt;br /&gt;
===do your work===&lt;br /&gt;
edit, compile, test, sweat&lt;br /&gt;
&lt;br /&gt;
If it didn't work out and you want to get back to the old tree&lt;br /&gt;
 git reset --hard save&lt;br /&gt;
&lt;br /&gt;
===generate patches===&lt;br /&gt;
Want to get patch against latest, so rebase &lt;br /&gt;
 git rebase origin/master&lt;br /&gt;
 git diff remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
Then do this to generate the patchset&lt;br /&gt;
 git format-patch -s -n -p --subject-prefix=&amp;quot;PATCH - my module&amp;quot; remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
===check the patches===&lt;br /&gt;
 /lib/modules/`uname -r`/build/scripts/checkpatch.pl --no-tree *.patch&lt;br /&gt;
&lt;br /&gt;
===sending the patches===&lt;br /&gt;
&lt;br /&gt;
 git send-email --from=me --to=patch@alsa-project.org --cc=alsa-devel@alsa-project.org  000*.patch&lt;br /&gt;
&lt;br /&gt;
===get up to date===&lt;br /&gt;
For both alsa-kmirror and alsa-driver&lt;br /&gt;
 git pull&lt;br /&gt;
&lt;br /&gt;
Sometimes you can just make and things will be fine. However, when there have been changes to the build system etc, its best to do a make clean; ./gitcompile to get the tree properly up to date.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/GIT_Server</id>
		<title>GIT Server</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/GIT_Server"/>
				<updated>2012-09-25T09:37:38Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: /* Syncing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==ALSA Repositories==&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.git&lt;br /&gt;
: contains compatibility and build code for older 2.6 kernels with mirrored latest kernel code&lt;br /&gt;
; alsa-kernel.git&lt;br /&gt;
: contains linux 2.6 kernel tree&lt;br /&gt;
&lt;br /&gt;
; alsa-kprivate.git&lt;br /&gt;
: contains linux 2.6 kernel tree - for private branches for alsa developers&lt;br /&gt;
&lt;br /&gt;
; alsa-lib.git&lt;br /&gt;
: library&lt;br /&gt;
; alsa-utils.git;&lt;br /&gt;
: utilities&lt;br /&gt;
; alsa-firmware.git&lt;br /&gt;
: firmware&lt;br /&gt;
; alsa-tools.git&lt;br /&gt;
: tools&lt;br /&gt;
; alsa-plugins.git&lt;br /&gt;
: plugins&lt;br /&gt;
; alsa-oss.git&lt;br /&gt;
: oss compatibility&lt;br /&gt;
; alsa-python.git&lt;br /&gt;
: official python binding&lt;br /&gt;
; alsa-ucm-conf.git&lt;br /&gt;
: ALSA Use-Case-Manager configuration library&lt;br /&gt;
; tinycompress.git&lt;br /&gt;
: Compressed formats support library&lt;br /&gt;
&lt;br /&gt;
; alsa.git&lt;br /&gt;
: ALSA service repo (misc files)&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.nomirror.git&lt;br /&gt;
: old ALSA driver repository without the mirrored kernel code&lt;br /&gt;
; alsa-kmirror.git&lt;br /&gt;
: alsa kernel mirror tree for continuous development (contains ALSA parts from alsa-kernel.git tree)&lt;br /&gt;
&lt;br /&gt;
==Anonymous access==&lt;br /&gt;
&lt;br /&gt;
===Read only GIT server===&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.git alsa-driver&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kprivate.git alsa-kprivate&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-lib.git alsa-lib&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-utils.git alsa-utils&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-firmware.git alsa-firmware&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-tools.git alsa-tools&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-plugins.git alsa-plugins&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-oss.git alsa-oss&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-python.git alsa-python&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-ucm-conf.git alsa-ucm-conf&lt;br /&gt;
: git clone git://git.alsa-project.org/tinycompress.git tinycompress&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa.git alsa&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.nomirror.git alsa&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
===Web interface===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/?p=tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
===HTTP access===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/http/tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
==For developers - kernel drivers==&lt;br /&gt;
&lt;br /&gt;
===Common rules===&lt;br /&gt;
&lt;br /&gt;
: 1) be very very very carefull when you use '--force' for 'git push', you can broke whole repository, you should notify other developers on alsa-devel mailing list that you will do this change for 'master' branch&lt;br /&gt;
: 2) valid 'Signed-off-by:' line must be in the commit text&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kernel.git===&lt;br /&gt;
&lt;br /&gt;
: 1) subject (first commit text line) must start with '[ALSA] ' or 'ALSA: ' or '[sound] ' or 'sound: '&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kprivate.git===&lt;br /&gt;
&lt;br /&gt;
No rules. Just do not overwrite branches created by someone else. The 'master' branch is equal to linux-2.6 official tree from &lt;br /&gt;
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git (do sync if necessary):&lt;br /&gt;
&lt;br /&gt;
  git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
  git checkout master&lt;br /&gt;
  git pull linux-2.6 master&lt;br /&gt;
  git push --tags origin master:refs/heads/master&lt;br /&gt;
&lt;br /&gt;
===Syncing the branch release in alsa-driver.git===&lt;br /&gt;
&lt;br /&gt;
  Please, use --log for the git merge command to show the &amp;quot;subject&amp;quot; of commits.&lt;br /&gt;
  It might be handy to define these git aliases in your .git/config file:&lt;br /&gt;
&lt;br /&gt;
  [alias]&lt;br /&gt;
        bmerge = !git checkout release &amp;amp;&amp;amp; git merge --log build&lt;br /&gt;
        mmerge = !git checkout release &amp;amp;&amp;amp; git merge --log mirror&lt;br /&gt;
&lt;br /&gt;
===Clone repositories===&lt;br /&gt;
&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-driver.git alsa-driver&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
To show all branches (includes remote ones):&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To make a remote branch local:&lt;br /&gt;
&lt;br /&gt;
 git checkout -b for-linus origin/for-linus&lt;br /&gt;
 git checkout -b linux-2.6 origin/linux-2.6&lt;br /&gt;
&lt;br /&gt;
===Update and rebase using Linus's 2.6 kernel tree===&lt;br /&gt;
&lt;br /&gt;
Add remote URL:&lt;br /&gt;
&lt;br /&gt;
 git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
&lt;br /&gt;
Checkout linux-2.6 branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout linux-2.6&lt;br /&gt;
&lt;br /&gt;
Pull Linus's 2.6 changes:&lt;br /&gt;
&lt;br /&gt;
 git pull linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
Rebase our main ALSA development master branch with linux-2.6:&lt;br /&gt;
&lt;br /&gt;
 git rebase linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
===Push branch changes to ALSA GIT repository===&lt;br /&gt;
&lt;br /&gt;
 git push --tags origin master:refs/heads/master&lt;br /&gt;
 git push --tags origin linux-2.6:refs/heads/linux-2.6&lt;br /&gt;
 git push --tags origin for-linus:refs/heads/for-linus&lt;br /&gt;
&lt;br /&gt;
Note: Especially after 'git rebase' the repository on server is not consistent with local repository (remote ref is not ancestor of the local ref for master branch), so you have to use --force parameter for 'git push' command. Note that this might be dangerous - please, ask Jaroslav Kysela &amp;lt; perex at perex . cz &amp;gt; if you can do this for branch 'master'.&lt;br /&gt;
&lt;br /&gt;
===Branches===&lt;br /&gt;
&lt;br /&gt;
; master&lt;br /&gt;
: this branch is for main development, managed by Jaroslav Kysela, it is rebased before ALSA releases&lt;br /&gt;
: the contents is synced to alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
; linux-next&lt;br /&gt;
: this branch is for linux next testing tree (originaly maintaned by Andrew Morton), rebased &lt;br /&gt;
&lt;br /&gt;
; for-linus&lt;br /&gt;
: this branch is for mainstream tree (for Linus Torvalds), just temporary branch&lt;br /&gt;
&lt;br /&gt;
; linux-2.6&lt;br /&gt;
: this is official linux 2.6 mainstream tree&lt;br /&gt;
&lt;br /&gt;
; stable-2.6.&amp;lt;number&amp;gt;&lt;br /&gt;
: patches for stable 2.6 kernels&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
&lt;br /&gt;
Private tags are not allowed. Only branches identifying ALSA version (alsa-driver.git) or official linux kernel version (alsa-kernel.git) are allowed.&lt;br /&gt;
&lt;br /&gt;
===Maintenance===&lt;br /&gt;
&lt;br /&gt;
GIT server is maintaned by [[User:Perex]].&lt;br /&gt;
&lt;br /&gt;
==Occasional Developers==&lt;br /&gt;
This section is for developers without write access to ALSA git. i.e., who will clone repos and send in patches&lt;br /&gt;
&lt;br /&gt;
===clone the repository===&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
if you live behind a firewall that blocks the git protocol, you can do this instead:&lt;br /&gt;
&lt;br /&gt;
 git clone http://git.alsa-project.org/http/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
if you like do only changes in code in alsa-kmirror, please, use alsa-kernel repository&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
but we accept patches in both forms&lt;br /&gt;
&lt;br /&gt;
===configure git===&lt;br /&gt;
Set your email address correctly otherwise commits get spurious email address for Author and Commiter&lt;br /&gt;
 git config --add user.email me@domain.com&lt;br /&gt;
&lt;br /&gt;
Make sure it knows how to send email (for patches)&lt;br /&gt;
 git config --add sendemail.smtpserver smtp.domain.com&lt;br /&gt;
&lt;br /&gt;
===save current===&lt;br /&gt;
in case you want to roll back&lt;br /&gt;
 git branch save&lt;br /&gt;
&lt;br /&gt;
===do your work===&lt;br /&gt;
edit, compile, test, sweat&lt;br /&gt;
&lt;br /&gt;
If it didn't work out and you want to get back to the old tree&lt;br /&gt;
 git reset --hard save&lt;br /&gt;
&lt;br /&gt;
===generate patches===&lt;br /&gt;
Want to get patch against latest, so rebase &lt;br /&gt;
 git rebase origin/master&lt;br /&gt;
 git diff remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
Then do this to generate the patchset&lt;br /&gt;
 git format-patch -s -n -p --subject-prefix=&amp;quot;PATCH - my module&amp;quot; remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
===check the patches===&lt;br /&gt;
 /lib/modules/`uname -r`/build/scripts/checkpatch.pl --no-tree *.patch&lt;br /&gt;
&lt;br /&gt;
===sending the patches===&lt;br /&gt;
&lt;br /&gt;
 git send-email --from=me --to=patch@alsa-project.org --cc=alsa-devel@alsa-project.org  000*.patch&lt;br /&gt;
&lt;br /&gt;
===get up to date===&lt;br /&gt;
For both alsa-kmirror and alsa-driver&lt;br /&gt;
 git pull&lt;br /&gt;
&lt;br /&gt;
Sometimes you can just make and things will be fine. However, when there have been changes to the build system etc, its best to do a make clean; ./gitcompile to get the tree properly up to date.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/Template:ALSA_download_version</id>
		<title>Template:ALSA download version</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/Template:ALSA_download_version"/>
				<updated>2012-09-06T15:35:53Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ #switch: {{{module}}}&lt;br /&gt;
| driver={{ #switch: {{{release}}} | stable=1.0.25 | development=none }}&lt;br /&gt;
| lib={{ #switch: {{{release}}} | stable=1.0.26 | development=none }}&lt;br /&gt;
| utils={{ #switch: {{{release}}} | stable=1.0.26 | development=none }}&lt;br /&gt;
| tools={{ #switch: {{{release}}} | stable=1.0.26.1 | development=none }}&lt;br /&gt;
| firmware={{ #switch: {{{release}}} | stable=1.0.25 | development=none }}&lt;br /&gt;
| plugins={{ #switch: {{{release}}} | stable=1.0.26 | development=none }}&lt;br /&gt;
| oss={{ #switch: {{{release}}} | stable=1.0.25 | development=none }}&lt;br /&gt;
| python={{ #switch: {{{release}}} | stable=1.0.26 | development=none }}&lt;br /&gt;
| Unknown please edit!&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/Template:ALSA_download_version</id>
		<title>Template:ALSA download version</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/Template:ALSA_download_version"/>
				<updated>2012-09-06T09:02:10Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ #switch: {{{module}}}&lt;br /&gt;
| driver={{ #switch: {{{release}}} | stable=1.0.25 | development=none }}&lt;br /&gt;
| lib={{ #switch: {{{release}}} | stable=1.0.26 | development=none }}&lt;br /&gt;
| utils={{ #switch: {{{release}}} | stable=1.0.26 | development=none }}&lt;br /&gt;
| tools={{ #switch: {{{release}}} | stable=1.0.26 | development=none }}&lt;br /&gt;
| firmware={{ #switch: {{{release}}} | stable=1.0.25 | development=none }}&lt;br /&gt;
| plugins={{ #switch: {{{release}}} | stable=1.0.26 | development=none }}&lt;br /&gt;
| oss={{ #switch: {{{release}}} | stable=1.0.25 | development=none }}&lt;br /&gt;
| python={{ #switch: {{{release}}} | stable=1.0.26 | development=none }}&lt;br /&gt;
| Unknown please edit!&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/Main_Page_News</id>
		<title>Main Page News</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/Main_Page_News"/>
				<updated>2012-09-06T09:01:30Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; 2012-09-06&lt;br /&gt;
: alsa 1.0.26 release (user space) | [[Changes v1.0.25 v1.0.26]]&lt;br /&gt;
&lt;br /&gt;
; 2012-01-25&lt;br /&gt;
: alsa 1.0.25 release | [[Changes v1.0.24 v1.0.25]]&lt;br /&gt;
&lt;br /&gt;
; 2011-01-31&lt;br /&gt;
: alsa 1.0.24 release | [[Changes v1.0.23 v1.0.24]]&lt;br /&gt;
&lt;br /&gt;
; 2010-04-16&lt;br /&gt;
: alsa 1.0.23 release | [[Changes v1.0.22 v1.0.23]]&lt;br /&gt;
&lt;br /&gt;
; 2009-12-28&lt;br /&gt;
: alsa-driver 1.0.22.1 release | [[Changes v1.0.22 v1.0.22.1]]&lt;br /&gt;
&lt;br /&gt;
; 2009-12-16&lt;br /&gt;
: alsa 1.0.22 release | [[Changes v1.0.21 v1.0.22]]&lt;br /&gt;
&lt;br /&gt;
; 2009-09-09&lt;br /&gt;
: alsa-lib 1.0.21a release | [[Changes v1.0.21 v1.0.21a]]&lt;br /&gt;
&lt;br /&gt;
; 2009-08-31&lt;br /&gt;
: alsa 1.0.21 release | [[Changes v1.0.20 v1.0.21|changes from 1.0.20]]&lt;br /&gt;
&lt;br /&gt;
; 2009-05-06&lt;br /&gt;
: alsa 1.0.20 release | [[Changes v1.0.19 v1.0.20|changes from 1.0.19]]&lt;br /&gt;
&lt;br /&gt;
; 2009-01-19&lt;br /&gt;
: alsa 1.0.19 release | [[Changes v1.0.18 v1.0.19|changes from 1.0.18]]&lt;br /&gt;
&lt;br /&gt;
; 2008-11-12&lt;br /&gt;
: alsa-driver 1.0.18a release | [[Changes v1.0.18 v1.0.18a|changes from 1.0.18]]&lt;br /&gt;
&lt;br /&gt;
; 2008-10-29&lt;br /&gt;
: alsa-driver,alsa-lib,alsa-utils,alsa-tools,alsa-plugins 1.0.18 release | [[Changes v1.0.18rc3 v1.0.18|changes from 1.0.18rc3]] | [[Changes v1.0.17 v1.0.18|changes from 1.0.17]]&lt;br /&gt;
&lt;br /&gt;
; 2008-09-09&lt;br /&gt;
: alsa-driver,alsa-lib,alsa-utils,alsa-plugins 1.0.18rc3 release | [[Changes v1.0.18rc2 v1.0.18rc3|changes from 1.0.18rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2008-08-19&lt;br /&gt;
: alsa-utils,alsa-plugins 1.0.18rc2 release | [[Changes v1.0.18rc1 v1.0.18rc2|changes from 1.0.18rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2008-08-18&lt;br /&gt;
: alsa-driver.alsa-utils,alsa-plugins 1.0.18rc1 release | [[Changes v1.0.17a v1.0.18rc1|changes from 1.0.17a]]&lt;br /&gt;
&lt;br /&gt;
; 2008-08-18&lt;br /&gt;
: alsa-lib 1.0.17a release | [[Changes v1.0.17 v1.0.17a|changes from 1.0.17]]&lt;br /&gt;
&lt;br /&gt;
; 2008-07-14&lt;br /&gt;
: ALSA 1.0.17 release (all packages) | [[Changes v1.0.17rc3 v1.0.17|changes from 1.0.17rc3]] | [[Changes v1.0.16 v1.0.17|changes from 1.0.16]]&lt;br /&gt;
&lt;br /&gt;
; 2008-06-27&lt;br /&gt;
: ALSA 1.0.17rc3 release (driver only) | [[Changes v1.0.17rc2 v1.0.17rc3|changes from 1.0.17rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2008-06-16&lt;br /&gt;
: ALSA 1.0.17rc2 release | [[Changes v1.0.17rc1 v1.0.17rc2|changes from 1.0.17rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2008-06-06&lt;br /&gt;
: ALSA 1.0.17rc1 release | [[Changes v1.0.16 v1.0.17rc1|changes from 1.0.16]]&lt;br /&gt;
&lt;br /&gt;
; 2008-05-20&lt;br /&gt;
: All repositories converted from HG (Mercurial) to GIT&lt;br /&gt;
&lt;br /&gt;
; 2008-02-06&lt;br /&gt;
: ALSA 1.0.16 final release | [[Changes v1.0.15 v1.0.16|changes from 1.0.15]] | [[Changes v1.0.16rc2 v1.0.16|changes from 1.0.16rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2008-01-29&lt;br /&gt;
: ALSA 1.0.16rc2 release | [[Changes v1.0.16rc1 v1.0.16rc2|changes from 1.0.16rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2008-01-22&lt;br /&gt;
: ALSA 1.0.16rc1 release | [[Changes v1.0.15 v1.0.16rc1|changes from 1.0.15]]&lt;br /&gt;
&lt;br /&gt;
; 2007-10-16&lt;br /&gt;
: ALSA 1.0.15 final release | [[Changes v1.0.14 v1.0.15|changes from 1.0.14]]&lt;br /&gt;
&lt;br /&gt;
; 2007-09-26&lt;br /&gt;
: ALSA 1.0.15rc3 release | [[Changes v1.0.15rc2 v1.0.15rc3|changes from 1.0.15rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2007-09-13&lt;br /&gt;
: ALSA 1.0.15rc2 release | [[Changes v1.0.15rc1 v1.0.15rc2|changes from 1.0.15rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2007-08-31&lt;br /&gt;
: ALSA 1.0.15rc1 release | [[Changes v1.0.14 v1.0.15rc1|changes from 1.0.14]]&lt;br /&gt;
&lt;br /&gt;
; 2007-08-09&lt;br /&gt;
: ALSA WWW site switched to [http://www.mediawiki.org MediaWiki]&lt;br /&gt;
&lt;br /&gt;
; 2007-06-11&lt;br /&gt;
: ALSA 1.0.14a library bugfix release | [[Changes v1.0.14 v1.0.14a|changes from 1.0.14]]&lt;br /&gt;
&lt;br /&gt;
; 2007-06-04&lt;br /&gt;
: ALSA 1.0.14 release | [[Changes v1.0.13 v1.0.14|changes from 1.0.13]] | [[Changes v1.0.14rc4 v1.0.14|changes from 1.0.14rc4]]&lt;br /&gt;
&lt;br /&gt;
; 2007-04-03&lt;br /&gt;
: ALSA 1.0.14rc4 release | [[Changes v1.0.14rc3 v1.0.14rc4|changes from 1.0.14rc3]]&lt;br /&gt;
&lt;br /&gt;
; 2007-03-06&lt;br /&gt;
: ALSA 1.0.14rc3 release | [[Changes v1.0.14rc2 v1.0.14rc3|changes from 1.0.14rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2007-01-16&lt;br /&gt;
: ALSA 1.0.14rc2 release | [[Changes v1.0.14rc1 v1.0.14rc2|changes from 1.0.14rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2006-12-11&lt;br /&gt;
: ALSA 1.0.14rc1 release | [[Changes v1.0.13 v1.0.14rc1|changes from 1.0.13]]&lt;br /&gt;
&lt;br /&gt;
; 2006-09-29&lt;br /&gt;
: ALSA 1.0.13 release | [[Changes v1.0.12 v1.0.13|changes from 1.0.12]] | [[Changes 1.0.13rc3 v1.0.13|changes from 1.0.13rc3]]&lt;br /&gt;
&lt;br /&gt;
; 2006-09-26&lt;br /&gt;
: ALSA 1.0.13rc3 release | [[Changes v1.0.13rc2 v1.0.13rc3|changes from 1.0.13rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2006-09-15&lt;br /&gt;
: ALSA 1.0.13rc2 release | [[Changes v1.0.13rc1 v1.0.13rc2|changes from 1.0.13rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2006-09-01&lt;br /&gt;
: ALSA 1.0.13rc1 release | [[Changes v1.0.12 v1.0.13rc1|changes from 1.0.12]]&lt;br /&gt;
&lt;br /&gt;
; 2006-08-24&lt;br /&gt;
: ALSA 1.0.12 release | [[Changes v1.0.11 v1.0.12|changes from 1.0.11]] | [[Changes 1.0.12rc3 v1.0.12|changes from 1.0.12rc3]]&lt;br /&gt;
&lt;br /&gt;
; 2006-08-15&lt;br /&gt;
: ALSA 1.0.12rc3 release (driver only) | [[Changes v1.0.12rc2 v1.0.12rc3|changes from 1.0.12rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2006-08-03&lt;br /&gt;
: ALSA 1.0.12rc2 release | [[Changes v1.0.12rc1 v1.0.12rc2|changes from 1.0.12rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2006-06-23&lt;br /&gt;
: ALSA 1.0.12rc1 release | [[Changes v1.0.11 v1.0.12rc1|changes from 1.0.11]]&lt;br /&gt;
&lt;br /&gt;
; 2006-04-19&lt;br /&gt;
: ALSA 1.0.11 final release | [[Changes v1.0.10 v1.0.11|changes from 1.0.10]]&lt;br /&gt;
&lt;br /&gt;
; 2006-04-11&lt;br /&gt;
: ALSA 1.0.11rc5 release | [[Changes v1.0.11rc4 v1.0.11rc5|changes from 1.0.11rc4]]&lt;br /&gt;
&lt;br /&gt;
; 2006-03-22&lt;br /&gt;
: ALSA 1.0.11rc4 release | [[Changes v1.0.11rc3 v1.0.11rc4|changes from 1.0.11rc3]]&lt;br /&gt;
&lt;br /&gt;
; 2006-01-29&lt;br /&gt;
: ALSA 1.0.11rc3 release | [[Changes v1.0.11rc2 v1.0.11rc3|changes from 1.0.11rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2006-01-02&lt;br /&gt;
: ALSA 1.0.11rc2 release | [[Changes v1.0.11rc1 v1.0.11rc2|changes from 1.0.11rc1]] | Happy New Year 2006&lt;br /&gt;
&lt;br /&gt;
; 2005-12-12&lt;br /&gt;
: ALSA 1.0.11rc1 release | [[Changes v1.0.10 v1.0.11rc1|changes from 1.0.10 final]]&lt;br /&gt;
&lt;br /&gt;
; 2005-11-16&lt;br /&gt;
: ALSA 1.0.10 release | [[Changes v1.0.10rc3 v1.0.10|changes from 1.0.10rc3]] |  [[Changes 1.0.9 v1.0.10|changes from 1.0.9]]&lt;br /&gt;
&lt;br /&gt;
; 2005-11-08&lt;br /&gt;
: ALSA 1.0.10rc3 release | [[Changes v1.0.10rc2 v1.0.10rc3|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-10-10&lt;br /&gt;
: ALSA 1.0.10rc2 release | [[Changes v1.0.10rc1 v1.0.10rc2|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-08-20&lt;br /&gt;
: ALSA 1.0.10rc1 release | [[Changes v1.0.9b v1.0.10rc1|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-06-07&lt;br /&gt;
: ALSA 1.0.9b release | [[Changes v1.0.9a v1.0.9b|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-06-02&lt;br /&gt;
: ALSA 1.0.9a release | [[Changes v1.0.9 v1.0.9a|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-05-27&lt;br /&gt;
: ALSA 1.0.9 final release | [[Changes v1.0.8 v1.0.9|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-05-23&lt;br /&gt;
: ALSA 1.0.9rc4 release&lt;br /&gt;
&lt;br /&gt;
; 2005-05-02&lt;br /&gt;
: ALSA 1.0.9rc3 release&lt;br /&gt;
&lt;br /&gt;
; 2005-03-24&lt;br /&gt;
: ALSA 1.0.9rc2 release&lt;br /&gt;
&lt;br /&gt;
; 2005-03-13&lt;br /&gt;
: ALSA 1.0.9rc1 release&lt;br /&gt;
&lt;br /&gt;
; 2005-01-13&lt;br /&gt;
: ALSA 1.0.8 release | [[Changes v1.0.7 v1.0.8|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-01-06&lt;br /&gt;
: ALSA 1.0.8rc2 release&lt;br /&gt;
&lt;br /&gt;
; 2004-12-22&lt;br /&gt;
: ALSA 1.0.8rc1 release&lt;br /&gt;
&lt;br /&gt;
; 2004-11-15&lt;br /&gt;
: ALSA 1.0.7 release&lt;br /&gt;
&lt;br /&gt;
; 2004-10-13&lt;br /&gt;
: ALSA 1.0.7rc2 release&lt;br /&gt;
&lt;br /&gt;
; 2004-09-08&lt;br /&gt;
: ALSA 1.0.7rc1 release&lt;br /&gt;
&lt;br /&gt;
; 2004-08-15&lt;br /&gt;
: ALSA 1.0.6 release&lt;br /&gt;
&lt;br /&gt;
; 2004-06-11&lt;br /&gt;
: ALSA server software was upgraded.  Anonymous rsync access [[Download|was changed.]]&lt;br /&gt;
&lt;br /&gt;
; 2004-05-31&lt;br /&gt;
: 1.0.5a driver release | bugfix for the &amp;quot;hang-up&amp;quot; problem in the ALSA driver initialization&lt;br /&gt;
&lt;br /&gt;
; 2004-05-28&lt;br /&gt;
: 1.0.5 release | mostly bug-fixes and cleanups&lt;br /&gt;
&lt;br /&gt;
; 2004-04-03&lt;br /&gt;
: 1.0.4 release | mostly bug-fixes and cleanups&lt;br /&gt;
&lt;br /&gt;
; 2004-03-30&lt;br /&gt;
: 1.0.4rc2 driver release | report compilation problems, please&lt;br /&gt;
&lt;br /&gt;
; 2004-03-27&lt;br /&gt;
: 1.0.4rc1 release | report compilation problems, please&lt;br /&gt;
&lt;br /&gt;
; 2004-03-13&lt;br /&gt;
: alsa-lib 1.0.3b released -  it fixes SIGSEGV problem for dmix plugin (when a specific GCC version is used)&lt;br /&gt;
&lt;br /&gt;
; 2004-03-06&lt;br /&gt;
: alsa-lib 1.0.3a released - it fixes again the dmix/dshare/dsnoop poll() problems&lt;br /&gt;
&lt;br /&gt;
; 2004-02-29&lt;br /&gt;
: 1.0.3 packages released | added driver for ATI IXP 150/200/250 chips and HDSP MADI driver&lt;br /&gt;
&lt;br /&gt;
; 2004-02-25&lt;br /&gt;
: 1.0.3rc2 packages released&lt;br /&gt;
&lt;br /&gt;
; 2004-02-04&lt;br /&gt;
: 1.0.2c driver package release | More fixes for compilation problems.&lt;br /&gt;
&lt;br /&gt;
; 2004-02-03&lt;br /&gt;
: 1.0.2b driver package release | It fixes next 2.6 kernel compilation problems.&lt;br /&gt;
&lt;br /&gt;
; 2004-01-30&lt;br /&gt;
: 1.0.2a driver package release | It should fix most of 2.6 kernel compilation problems and adds RME HDSP MADI (hdspm) driver.&lt;br /&gt;
&lt;br /&gt;
; 2004-01-27&lt;br /&gt;
: New ALSA bugtracking system using Mantis is [http://bugtrack.alsa-project.org/alsa-bug/ available].&lt;br /&gt;
&lt;br /&gt;
; 2004-01-26&lt;br /&gt;
: 1.0.2 release | &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;ENJOY!&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; 2004-01-08&lt;br /&gt;
: 1.0.1 release | &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;ENJOY!&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; 2003-12-05&lt;br /&gt;
: 1.0.0rc2 release | &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;ENJOY!&amp;lt;/font&amp;gt; | bt87x driver added, more OSS PCM emulation fixes&lt;br /&gt;
&lt;br /&gt;
; 2003-12-01&lt;br /&gt;
: 1.0.0rc1 release | &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;ENJOY!&amp;lt;/font&amp;gt; | intel8x0 driver fixes, OSS PCM emulation fixes&lt;br /&gt;
&lt;br /&gt;
; 2003-11-25&lt;br /&gt;
: 1.0.0pre3 release | alsa-tools packages is divided now - firmware files are in alsa-firmware package.&lt;br /&gt;
&lt;br /&gt;
; 2003-11-18&lt;br /&gt;
: 1.0.0pre1 release | This release is indented for wide testing.&lt;br /&gt;
&lt;br /&gt;
; 2003-10-21&lt;br /&gt;
: 0.9.8 release&lt;br /&gt;
&lt;br /&gt;
; 2003-10-13&lt;br /&gt;
: 0.9.7c driver release - PDE and vortex driver compilation fixes&lt;br /&gt;
&lt;br /&gt;
; 2003-10-10&lt;br /&gt;
: 0.9.7b driver release - it fixes serious bug in PCM (mutex hangup)&lt;br /&gt;
&lt;br /&gt;
; 2003-10-01&lt;br /&gt;
: 0.9.7a driver release - fixes bugs (including oops) in the OSS PCM emulation layer&lt;br /&gt;
&lt;br /&gt;
; 2003-09-25&lt;br /&gt;
: 0.9.7 release&lt;br /&gt;
&lt;br /&gt;
; 2003-07-28&lt;br /&gt;
: 0.9.6 release&lt;br /&gt;
&lt;br /&gt;
; 2003-07-09&lt;br /&gt;
: 0.9.5 release&lt;br /&gt;
&lt;br /&gt;
; 2003-06-01&lt;br /&gt;
: 0.9.4 release&lt;br /&gt;
&lt;br /&gt;
; 2003-05-20&lt;br /&gt;
: *** 0.9.3c driver maintaince release *** configuration fixes + other updates&lt;br /&gt;
&lt;br /&gt;
; 2003-05-19&lt;br /&gt;
: *** 0.9.3b driver maintaince release *** ISA PnP and other fixes. We removed /proc/asound/dev directory. The 'make install' should create new device files, but in case of problems, the snddevices script should be executed.&lt;br /&gt;
&lt;br /&gt;
; 2003-04-30&lt;br /&gt;
: *** 0.9.3 release *** Moved firmware code from vxpocket and hdsp driver to alsa-tools. Enjoy!&lt;br /&gt;
&lt;br /&gt;
; 2003-03-19&lt;br /&gt;
: *** 0.9.2 release *** Added dsnoop and dshare PCM plugins to alsa-lib. Enjoy!&lt;br /&gt;
&lt;br /&gt;
; 2003-03-11&lt;br /&gt;
: *** 0.9.1 release *** First stable release of the 0.9 serie. Enjoy!&lt;br /&gt;
&lt;br /&gt;
; 2003-03-10&lt;br /&gt;
: alsa-driver 0.9.0rc8d released&lt;br /&gt;
&lt;br /&gt;
; 2003-03-08&lt;br /&gt;
: alsa-driver 0.9.0rc8c released&lt;br /&gt;
&lt;br /&gt;
; 2003-03-07&lt;br /&gt;
: alsa-lib 0.9.0rc8c and alsa-utils 0.9.0rc8a released&lt;br /&gt;
&lt;br /&gt;
; 2003-03-05&lt;br /&gt;
: alsa-lib and alsa-driver 0.9.0rc8b release&lt;br /&gt;
: alsa-driver 0.9.0rc8a released (fixed compilation problem for older kernels)&lt;br /&gt;
&lt;br /&gt;
; 2003-03-03&lt;br /&gt;
: alsa-lib 0.9.0rc8a released (fixed compilation problem)&lt;br /&gt;
&lt;br /&gt;
; 2003-03-02&lt;br /&gt;
: 0.9.0 release candidate #8 (all packages) is available for download. It is probably last release before 0.9.0 final. You will find in the alsa-lib package the dmix plugin which allows mixing of multiple PCM streams together without the client/server mechanism.&lt;br /&gt;
&lt;br /&gt;
; 2003-01-28&lt;br /&gt;
: 0.9.0 release candidate #7 (alsa-driver, alsa-lib, alsa-utils and alsa-tools packages) is available for download.&lt;br /&gt;
&lt;br /&gt;
; 2002-10-25&lt;br /&gt;
: The fix for GCC 3.2 has been integrated into the 0.9.0rc5 package. Please, redownload the updated package from our server when you reached this problem. (New package is dated 2002/10/25&lt;br /&gt;
&lt;br /&gt;
; 2002-10-24&lt;br /&gt;
: 0.9.0 release candidate #5 (alsa-driver, alsa-lib, alsa-utils and alsa-tools packages) is available for download. This &amp;quot;quick&amp;quot; release should fix the build problems for alsa-lib and alsa-utils packages.&lt;br /&gt;
: Note#2: Please, notice that we merged snd-via686 and snd-via8233 into the snd-via82xx module. Also, the snd-usb-midi module users should use the snd-usb-audio module which has integrated support for both USB audio and MIDI.&lt;br /&gt;
: Note: We have changed the kernel module symbol names (module parameter names). We removed prefix 'snd_'. Please, update your /etc/modules.conf files by hand or use our alsa-driver/utils/module-options script which does this job. Please, notice that 'snd_' prefix is not equal to 'snd-' prefix (module name) which is left unchanged.&lt;br /&gt;
&lt;br /&gt;
; 2002-10-22&lt;br /&gt;
: 0.9.0 release candidate #4 (alsa-driver, alsa-lib, alsa-utils and alsa-tools packages) is available for download.&lt;br /&gt;
&lt;br /&gt;
; 2002-08-22&lt;br /&gt;
: Note for compiling  alsa-driver-0.9.0rc3: Please remove the file - alsa-driver-0.9.0rc3/include/linux/isapnp.h - before running the configure script.&lt;br /&gt;
&lt;br /&gt;
; 2002-08-15&lt;br /&gt;
: 0.9.0 release candidate #3 (alsa-driver, alsa-lib and alsa-utils packages) is available for download.&lt;br /&gt;
&lt;br /&gt;
; 2002-08-09&lt;br /&gt;
: The new online user documentation is now public. Access is through the soundcard matrix. PHP is used to automatically provide the necessary parameters needed to set up a module and required scripts. Users are encouraged to add notes via the notes additions form.&lt;br /&gt;
&lt;br /&gt;
; 2002-06-19&lt;br /&gt;
: Release Candidate #2 is available to download. ALSA packages 0.9.0rc2 were released.&lt;br /&gt;
&lt;br /&gt;
; 2002-04-24&lt;br /&gt;
: Release Candidate #1 is available to download. ALSA packages 0.9.0rc1 were released.&lt;br /&gt;
&lt;br /&gt;
; 2002-02-26&lt;br /&gt;
: ALSA packages 0.9.0beta12 were released.&lt;br /&gt;
&lt;br /&gt;
; 2002-02-17&lt;br /&gt;
: ALSA packages 0.9.0beta11 were released. The driver package contains a new directory tree synced with the Linux 2.5 kernel.&lt;br /&gt;
&lt;br /&gt;
; 2002-02-13&lt;br /&gt;
: ALSA has been integrated to the official Linux 2.5 tree! The initial merge is in patch-2.5.5-pre1.&lt;br /&gt;
&lt;br /&gt;
; 2001-11-30&lt;br /&gt;
: The 0.5.12a driver was released. It's maintaince release to fix problems with 2.4.14+ kernels. &amp;lt;BR&amp;gt; The 0.9.0beta10 packages were released.&lt;br /&gt;
&lt;br /&gt;
; 2001-11-05&lt;br /&gt;
: The 0.9.0beta9 packages were released.  &amp;lt;hr /&amp;gt; The 0.5.12 driver was released.&lt;br /&gt;
&lt;br /&gt;
; 2001-09-27&lt;br /&gt;
: The 0.9.0beta8 packages were released.&lt;br /&gt;
&lt;br /&gt;
; 2001-08-23&lt;br /&gt;
: The 0.9.0beta7 packages were released.&lt;br /&gt;
&lt;br /&gt;
; 2001-07-22&lt;br /&gt;
: The 0.9.0beta6 alsa-driver and alsa-lib packages have fixed compilation bugs. Please, download these packages again.&lt;br /&gt;
&lt;br /&gt;
; 2001-07-20&lt;br /&gt;
: The 0.9.0beta6 packages were released for public.&lt;br /&gt;
&lt;br /&gt;
; 2001-06-28&lt;br /&gt;
: The 0.9.0beta5 packages were released for public with uniform support for multichannel cards and raw IEC958 (S/PDIF).&lt;br /&gt;
&lt;br /&gt;
; 2001-05-25&lt;br /&gt;
: Mailing lists are moved to SourceForge. Please, check [[Mailing-lists|this page]] for the subscription details.&lt;br /&gt;
: The 0.9.0beta4 packages were released for public.&lt;br /&gt;
&lt;br /&gt;
; 2001-05-14&lt;br /&gt;
: The driver 0.5.11 was released. Changes: IA64 arch support, ALi 5451 driver added, AWACS driver added (for PPC), AC'97, PCM OSS emulation, sequencer OSS emulation, AD1816A, ALS4000, AZT2320, CMIPCI, CS4236, CS4281, CS461X, ES1968, Maestro 3, NM256, OPL3SA2, SB16, SB-AWE, YMFPCI.&lt;br /&gt;
&lt;br /&gt;
; 2001-03-20&lt;br /&gt;
: The 0.9.0beta3 packages were released for public.&lt;br /&gt;
&lt;br /&gt;
; 2001-03-02&lt;br /&gt;
: The 0.9.0beta2 packages were released for public.&lt;br /&gt;
&lt;br /&gt;
; 2001-02-21&lt;br /&gt;
: The 0.9.0beta1 packages were released for public. Please, check out our FTP site to obtain them.&lt;br /&gt;
&lt;br /&gt;
; 2001-01-23&lt;br /&gt;
: The ALSA driver package version 0.5.10b was released. New driver: VIA VT8233 South Bridge. Bugfixes: NM256, AC'97.&lt;br /&gt;
&lt;br /&gt;
; 2001-01-07&lt;br /&gt;
: The ALSA driver package version 0.5.10a was released. New driver: NeoMagic NM256AV/ZX. Bugfixes: Maestro3, MPU401 UART, AZT2320, RME96, CS461x, timer, YMFPCI, CMI8330, FM801, CS4232, ENS1371, 2.4.0-prerelease kernel support.&lt;br /&gt;
&lt;br /&gt;
; 2000-12-07&lt;br /&gt;
: The ALSA packages version 0.5.10 were released. New drivers: ALS4000, Maestro3 (Allegro), CS4281. Bugfixes: AC'97 code, SB16, EMUX000 MIDI, CMIPCI, SB8, CS4236, Intel8x0, CS461x, YMFPCI, MPU401, AD1816A, 2.2.18pre kernels, man pages.&lt;br /&gt;
&lt;br /&gt;
; 2000-10-10&lt;br /&gt;
: ALSA driver package version 0.5.9d was released. Bugfixes:  2.2.18pre kernels, YMFPCI, CMIPCI, EMU10K1, OSS sequencer emulator, CS4236, RME9652, rawmidi, intel8x0.&lt;br /&gt;
&lt;br /&gt;
; 2000-09-22&lt;br /&gt;
: ALSA project helps to realize the unique demonstration prepared by the Audio Engineering Society's (AES) Technical Committee on Network Audio Systems. Recording Engineers in Los Angeles will mix 12 high quality audio channels streamed live over the Internet from Montreal. [http://www.aes.org/events/109/events.cfm Event description.] [http://www.cim.mcgill.ca/~jer/projects/aes/ Demo description.]&lt;br /&gt;
&lt;br /&gt;
; 2000-09-02&lt;br /&gt;
: ALSA driver package version 0.5.9c was released. Bugfixes:  SB16, AD1816A, AZT2320, EMU8000/EMU10K1, CMIPCI, YMFPCI, intel-i8x0, general. &amp;lt;hr&amp;gt; ALSA package with utilities version 0.5.9b was released. Updated programs: aplay, aseqnet.&lt;br /&gt;
&lt;br /&gt;
; 2000-08-18&lt;br /&gt;
: ALSA driver package version 0.5.9b was released. More bugfixes: CS4236, EMU10K1, OSS mmap() for non-x86 platforms, ENS1370, ENS1371.&lt;br /&gt;
&lt;br /&gt;
; 2000-08-11&lt;br /&gt;
: ALSA driver package version 0.5.9a was released. It contains more 64-bit cleanaups and support for 2.4.0-test6 kernel.&lt;br /&gt;
&lt;br /&gt;
; 2000-08-07&lt;br /&gt;
: Packages 0.5.9 were released. These packages contain cleanups for alpha linux platform. Changed drivers: OPTi92x/93x, VIA686A, YMFPCI, MPU-401, EMU10K1, SB16, SB8, seq_virmidi, ENS1370/1, rawmidi.&lt;br /&gt;
&lt;br /&gt;
; 2000-06-25&lt;br /&gt;
: The driver 0.5.8b was released containing bugfixes for these drivers: sequencer, YMFPCI, CS4236, ES1968, ICE1712, Opti92x/93x, EMU10K1.&lt;br /&gt;
&lt;br /&gt;
; 2000-06-06&lt;br /&gt;
: The driver 0.5.8a was released. It contains compilation bugfix for latest 2.3 and 2.4-test kernels. The Yamaha driver was fixed for YMF724F.&lt;br /&gt;
&lt;br /&gt;
; 2000-06-05&lt;br /&gt;
: Stable packages 0.5.8 were released. Two new drivers were added: the C-Media CMI8338 and 8738 PCI driver and the Yamaha YMF72x,74x,75x driver. Also, APM is supported for CS4231 &amp;amp; CS4235,6,7,8,9 chips. Otherwise, this release contains mostly bug-fixes backported from the ALSA development tree including the support for latest Linux kernels. Affected drivers: AZT2320, CMI8330, CS4236, ESS ES18xx, InterWave (GUS PnP), Opti 92x, Sound Blaster 16, AD1816A. &amp;lt;b&amp;gt;&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Upgrade is recommended for all soundcards.&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; 2000-04-06&lt;br /&gt;
: Stable packages 0.5.7 were released. This release is a bug-fix release only. The support for MidiMan Delta 44 and 66 cards was added. Other changes - sequencer fixes, rawmidi fixes, AC'97 code updates, other minor cleanups.&lt;br /&gt;
&lt;br /&gt;
; 2000-03-17&lt;br /&gt;
: New ALSA [[Mailing-lists|announce mailing list]] was created.&lt;br /&gt;
&lt;br /&gt;
; 2000-03-11&lt;br /&gt;
: ALSA 0.5.6 packages were released (new drivers: RME Digi 96, VIA 82C686A AC'97 bridge | bugfixes: Intel i8x0/440MX, EMU10K1, AZT2320, RawMidi code + lowlevel drivers, alsamixer).&lt;br /&gt;
&lt;br /&gt;
; 2000-03-01&lt;br /&gt;
: ALSA 0.5.5 packages were released (API cleanups).&lt;br /&gt;
&lt;br /&gt;
; 2000-02-28&lt;br /&gt;
: ALSA 0.5.4b driver package was released (Intel i8x0/MX440 driver fixes).&lt;br /&gt;
: ALSA 0.5.4 packages were released (added alpha ESS Maestro 1/2/2E driver, improved Intel i8x0/440MX driver, AC'97 updates).&lt;br /&gt;
&lt;br /&gt;
; 2000-02-27&lt;br /&gt;
: ALSA 0.5.4a driver package was released (2.3.48 compilation fixed, PCM OSS Oops fixed). Upgrade is strongly recommended.&lt;br /&gt;
&lt;br /&gt;
; 2000-02-16&lt;br /&gt;
: The 0.5.3 packages were released (RME Hammerfall/Light updates, ES1938 - Solo1 driver improved, AC'97 updates, Intel i8x0/440MX alpha driver added, sequencer updates, MTPAV updates, better SMP support for 2.3.x kernels, virmidi code added to EMU8000 &amp;amp; EMU10K1 synth drivers, snd-card-virmidi updates, AK4531 updates - ES1370, EMU10K1 rear volume fixed, ICE1712 updates).&lt;br /&gt;
&lt;br /&gt;
; 2000-02-14&lt;br /&gt;
: The ALSA server was upgraded. You may now enjoy the HtDig search engine for whole Web server plus mailing list archives.&lt;br /&gt;
&lt;br /&gt;
; 2000-02-04&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/ ALSA 0.5.2 packages] were released (added ICE1712 {Envy24} driver and AD1816A driver, RME9652 updates, EMU10K1 updates, SB8, ES18xx, serial MIDI driver updates, PCM API updates, AC'97 bugfixes). The [ftp://ftp.alsa-project.org/pub/others/envy24control GTK Envy24 control utility] is also available with some screenshots. Note: The current Envy24 driver may work only with the MidiMan soundcards (Delta serie). The driver supports only professional PCM at this time.&lt;br /&gt;
&lt;br /&gt;
; 2000-01-22&lt;br /&gt;
: ALSA [ftp://ftp.alsa-project.org/pub packages 0.5.1] were released (PCM OSS emulation, EMU10K1 synth, ES1938, ENS1370).&lt;br /&gt;
&lt;br /&gt;
; 2000-01-16&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/ Final ALSA 0.5.0 packages] were released (added RME9652 -Hammerfall- driver, final API cleanups).&lt;br /&gt;
&lt;br /&gt;
; 2000-01-12&lt;br /&gt;
: The alsa-driver and alsa-lib [ftp://ftp.alsa-project.org/pub packages 0.5.0pre3] were released (trident driver, compilation trouble).&lt;br /&gt;
&lt;br /&gt;
; 2000-01-11&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.5.0pre2] was released (enhanced EMU10K1 code, a compilation bugfix). Other [ftp://ftp.alsa-project.org/pub 0.5.0pre2 packages] were also released.&lt;br /&gt;
&lt;br /&gt;
; 2000-01-10&lt;br /&gt;
: All [ftp://ftp.alsa-project.org/pub packages 0.5.0pre1] were were released. The final API freeze is expected at 14th January 2000.&lt;br /&gt;
&lt;br /&gt;
; 1999-12-20&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1i] was released with the bugfix for the generic code for AC'97. The problems with CS4297A volume levels are away.&lt;br /&gt;
&lt;br /&gt;
; 1999-12-16&lt;br /&gt;
: The final ALSA API dead line is 10th January 2000.&lt;br /&gt;
&lt;br /&gt;
; 1999-12-07&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1h] was released with the bugfix for the ENS1370/ENS1371 drivers.&lt;br /&gt;
&lt;br /&gt;
; 1999-12-06&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1g1] was released with minor bugfixes (mixer, rawmidi, CS461X).&lt;br /&gt;
&lt;br /&gt;
; 1999-12-02&lt;br /&gt;
: [http://www.alsa-project.org/announce.html The ALSA professional team] has been founded.&lt;br /&gt;
&lt;br /&gt;
; 1999-12-01&lt;br /&gt;
: [http://www.alsa-project.org/cgi-bin/cvsweb.cgi CVS Web interface] is available. Created [[Mailing-lists|new mailing lists]]: alsa-doc, alsa-conf, alsa-howto and alsa-cvs. Mailing lists are archived through MHonArc. Web is now searchable through Ht://Dig.&lt;br /&gt;
&lt;br /&gt;
; 1999-11-26&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1f2] was released with minor bugfixes (CS4231, CS4236, AC'97, 2.3.29 kernel).&lt;br /&gt;
&lt;br /&gt;
; 1999-11-18&lt;br /&gt;
: Alpha EMU10K1 (Sound Blaster Live!) driver is available in CVS.&lt;br /&gt;
&lt;br /&gt;
; 1999-11-03&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1e] was released with minor bugfixes (isapnp, CS4236+, Gallant SC-70P, 2.3.25 kernel).&lt;br /&gt;
&lt;br /&gt;
; 1999-11-02&lt;br /&gt;
: Creative released their [http://opensource.creative.com/ source code for SB Live driver]. The ALSA SB Live driver will be available this month.&lt;br /&gt;
&lt;br /&gt;
; 1999-10-24&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1d] was released with minor bugfixes (CMI8330, 2+ soundcards, modules.conf handling, documentation files). Upgrade is recommended if your system has 2+ soundcards. [ftp://ftp.alsa-project.org/pub/lib ALSA library 0.4.1d&amp;lt;/A&amp;gt; was released (PCM cleanup fixes).]A library 0.4.1d&amp;lt;/A&amp;gt; was released (PCM cleanup fixes).&lt;br /&gt;
&lt;br /&gt;
; 1999-10-20&lt;br /&gt;
: Upgrade your modutils package, if you encounter 'segmentation fault' problems. Get fixed [ftp://ftp.ocs.com.au/pub/modutils/v2.3/modutils-2.3.6.tar.gz modutils-2.3.6.tar.gz] or an upgrade [ftp://ftp.alsa-project.org/pub/driver/misc/modules-2.2.2-44.i386.rpm package for SuSE 6.2].&lt;br /&gt;
&lt;br /&gt;
; 1999-10-07&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1c] was released with minor bugfixes (GUS, OPL3-SA2/3, RedHat 6.1). Upgrade is recommended for all soundcards.&lt;br /&gt;
&lt;br /&gt;
; 1999-09-16&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1b] was released with next minor bugfixes.&lt;br /&gt;
&lt;br /&gt;
; 1999-09-01&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1a] was released with minor bugfixes.&lt;br /&gt;
&lt;br /&gt;
; 1999-08-26&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/ ALSA packages version 0.4.1] were released. This is mostly bug-fix release.&lt;br /&gt;
: Statistics for WWW and FTP server are now available.&lt;br /&gt;
&lt;br /&gt;
; 1999-08-15&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/ ALSA packages version 0.4.0] were released. Older packages are not supported from this time.&lt;br /&gt;
&lt;br /&gt;
; 1999-08-01&lt;br /&gt;
: The ALSA bug reporting system is up and going. To report bugs in ALSA packages, please go here and follow the instructions carefully.&lt;br /&gt;
&lt;br /&gt;
; 1999-06-17&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver/ ALSA driver version 0.3.2] released. This is a bug-fix release. If you have had any troubles with 0.3.1 or 0.3.0, please, try this version. Remember to upgrade [ftp://ftp.alsa-project.org/pub/lib/ lib] and [ftp://ftp.alsa-project.org/pub/utils/ utils] too. 0.3.x-series are the last to support 2.0.x kernels.&lt;br /&gt;
&lt;br /&gt;
; 1999-05-23&lt;br /&gt;
: The alpha driver for the [http://www.crystal.com/ Cirrus Logic Sound Fusion CS461x (CS4280) PCI chips] is available on the [[Download|CVS]].&lt;br /&gt;
&lt;br /&gt;
; 1999-05-14&lt;br /&gt;
: [[Mailing-lists|Mailing lists]] are now managed with the alsa.alsa-project.org machine.&lt;br /&gt;
&lt;br /&gt;
; 1999-05-11&lt;br /&gt;
: The alpha driver for the [http://www.fortemedia.com/products/ ForteMedia FM801 PCI soundcard] is available on the [[Download|CVS]].&lt;br /&gt;
&lt;br /&gt;
; 1999-04-29&lt;br /&gt;
: New page with the ALSA schedule is available.&lt;br /&gt;
&lt;br /&gt;
; 1999-04-23&lt;br /&gt;
: The call to hardware vendors was [[ALSA_Soundcard_Vendor_Information|updated]].&lt;br /&gt;
&lt;br /&gt;
; 1999-04-20&lt;br /&gt;
: The ALSA project has got own domain - alsa-project.org. Services (WWW/FTP/CVS) are running on the independent machine now.&lt;br /&gt;
&lt;br /&gt;
; 1999-03-16&lt;br /&gt;
: The releasing of 0.3.0pre5 packages is very delayed. We are working on new mixer API which will not be compatible with previous versions of ALSA packages. It seems that that this work needs a lot of our time. There are many changes in the current development tree (Trident 4DWave DX/NX driver &amp;lt;b&amp;gt;- thanks to Tridentfor their support -&amp;lt;/b&amp;gt;, timer interface, EMU8000 driver, OSS sequencer emulator), If you want to test or use the current code, you may get the sources directly from the [[Download|CVS server]] or there are also available [[Download|CVS snapshots]].&lt;br /&gt;
&lt;br /&gt;
; 1999-02-10&lt;br /&gt;
: Two alsa-driver and alsa-lib packages with version 0.3.0-pre4 [ftp://ftp.alsa-project.org/pub released]. The driver contains better support for 2.2.0+ kernels and allows mixing of ALSA and OSS/Lite modules.&lt;br /&gt;
&lt;br /&gt;
; 1999-02-05&lt;br /&gt;
: [[Download|CVS snapshots]] are available now.&lt;br /&gt;
&lt;br /&gt;
; 1999-01-29&lt;br /&gt;
: Temporary AWE64 [http://ds.dial.pipex.com/sterat/alsa EMU8000 synth driver] for ALSA.&lt;br /&gt;
&lt;br /&gt;
; 1999-01-24&lt;br /&gt;
: All packages with version 0.3.0-pre3 [ftp://ftp.alsa-project.org/pub released].&lt;br /&gt;
: [[ALSA_Library_API|New ALSA API description for 0.2.0 packages.]]&lt;br /&gt;
&lt;br /&gt;
; 1999-01-19&lt;br /&gt;
: [http://huizen.dds.nl/~valentyn/Alsa-sound-mini-HOWTO.html Alsa-sound-mini-HOWTO]&lt;br /&gt;
: Version 0.2.0-pre10p3 of driver [ftp://ftp.alsa-project.org/pub/driver released] which includes support for 2.2.0-pre1 kernel.&lt;br /&gt;
: Version 0.3.0-pre2 of alsa-lib [ftp://ftp.alsa-project.org/pub/lib released] which includes support for sequencer.&lt;br /&gt;
: Version 0.3.0-pre2 of driver [ftp://ftp.alsa-project.org/pub/driver released] which includes native support for ISA Plug &amp;amp;amp; Play cards, first version of sequencer and support for 2.2.0-pre1 kernel.&lt;br /&gt;
&lt;br /&gt;
; 1998-12-30&lt;br /&gt;
: [[ALSA_Soundcard_Vendor_Information|A call to sound card hardware vendors.]]&lt;br /&gt;
&lt;br /&gt;
; 1998-12-28&lt;br /&gt;
: [[ALSA Blacklist|Black List]]; Sound Blaster Live! [[ALSA_Blacklist|support]] (sorry)&lt;br /&gt;
&lt;br /&gt;
; 1998-11-10&lt;br /&gt;
: Version 0.1.3 of C library and Version 0.2.0-pre10 of driver [ftp://ftp.alsa-project.org/pub/driver released] which supports Cirrus Logic CS4232+/CS4236+, Ensoniq AudioPCI (ES1370/1371), and S3 SonicVibes.&lt;br /&gt;
&lt;br /&gt;
; 1998-11-04&lt;br /&gt;
: Version 0.0.7 of ALSA utilities [ftp://ftp.alsa-project.org/pub/lib released]&lt;br /&gt;
&lt;br /&gt;
; 1998-08-13&lt;br /&gt;
: [[Download|CVS is up]]&lt;br /&gt;
[http://www.example.com link title]&lt;br /&gt;
[http://www.example.com link title]&lt;br /&gt;
[http://www.example.com link title]&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/Main_Page_News</id>
		<title>Main Page News</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/Main_Page_News"/>
				<updated>2012-09-06T09:01:20Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;: 2012-09-06&lt;br /&gt;
: alsa 1.0.26 release (user space) | [[Changes v1.0.25 v1.0.26]]&lt;br /&gt;
&lt;br /&gt;
; 2012-01-25&lt;br /&gt;
: alsa 1.0.25 release | [[Changes v1.0.24 v1.0.25]]&lt;br /&gt;
&lt;br /&gt;
; 2011-01-31&lt;br /&gt;
: alsa 1.0.24 release | [[Changes v1.0.23 v1.0.24]]&lt;br /&gt;
&lt;br /&gt;
; 2010-04-16&lt;br /&gt;
: alsa 1.0.23 release | [[Changes v1.0.22 v1.0.23]]&lt;br /&gt;
&lt;br /&gt;
; 2009-12-28&lt;br /&gt;
: alsa-driver 1.0.22.1 release | [[Changes v1.0.22 v1.0.22.1]]&lt;br /&gt;
&lt;br /&gt;
; 2009-12-16&lt;br /&gt;
: alsa 1.0.22 release | [[Changes v1.0.21 v1.0.22]]&lt;br /&gt;
&lt;br /&gt;
; 2009-09-09&lt;br /&gt;
: alsa-lib 1.0.21a release | [[Changes v1.0.21 v1.0.21a]]&lt;br /&gt;
&lt;br /&gt;
; 2009-08-31&lt;br /&gt;
: alsa 1.0.21 release | [[Changes v1.0.20 v1.0.21|changes from 1.0.20]]&lt;br /&gt;
&lt;br /&gt;
; 2009-05-06&lt;br /&gt;
: alsa 1.0.20 release | [[Changes v1.0.19 v1.0.20|changes from 1.0.19]]&lt;br /&gt;
&lt;br /&gt;
; 2009-01-19&lt;br /&gt;
: alsa 1.0.19 release | [[Changes v1.0.18 v1.0.19|changes from 1.0.18]]&lt;br /&gt;
&lt;br /&gt;
; 2008-11-12&lt;br /&gt;
: alsa-driver 1.0.18a release | [[Changes v1.0.18 v1.0.18a|changes from 1.0.18]]&lt;br /&gt;
&lt;br /&gt;
; 2008-10-29&lt;br /&gt;
: alsa-driver,alsa-lib,alsa-utils,alsa-tools,alsa-plugins 1.0.18 release | [[Changes v1.0.18rc3 v1.0.18|changes from 1.0.18rc3]] | [[Changes v1.0.17 v1.0.18|changes from 1.0.17]]&lt;br /&gt;
&lt;br /&gt;
; 2008-09-09&lt;br /&gt;
: alsa-driver,alsa-lib,alsa-utils,alsa-plugins 1.0.18rc3 release | [[Changes v1.0.18rc2 v1.0.18rc3|changes from 1.0.18rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2008-08-19&lt;br /&gt;
: alsa-utils,alsa-plugins 1.0.18rc2 release | [[Changes v1.0.18rc1 v1.0.18rc2|changes from 1.0.18rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2008-08-18&lt;br /&gt;
: alsa-driver.alsa-utils,alsa-plugins 1.0.18rc1 release | [[Changes v1.0.17a v1.0.18rc1|changes from 1.0.17a]]&lt;br /&gt;
&lt;br /&gt;
; 2008-08-18&lt;br /&gt;
: alsa-lib 1.0.17a release | [[Changes v1.0.17 v1.0.17a|changes from 1.0.17]]&lt;br /&gt;
&lt;br /&gt;
; 2008-07-14&lt;br /&gt;
: ALSA 1.0.17 release (all packages) | [[Changes v1.0.17rc3 v1.0.17|changes from 1.0.17rc3]] | [[Changes v1.0.16 v1.0.17|changes from 1.0.16]]&lt;br /&gt;
&lt;br /&gt;
; 2008-06-27&lt;br /&gt;
: ALSA 1.0.17rc3 release (driver only) | [[Changes v1.0.17rc2 v1.0.17rc3|changes from 1.0.17rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2008-06-16&lt;br /&gt;
: ALSA 1.0.17rc2 release | [[Changes v1.0.17rc1 v1.0.17rc2|changes from 1.0.17rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2008-06-06&lt;br /&gt;
: ALSA 1.0.17rc1 release | [[Changes v1.0.16 v1.0.17rc1|changes from 1.0.16]]&lt;br /&gt;
&lt;br /&gt;
; 2008-05-20&lt;br /&gt;
: All repositories converted from HG (Mercurial) to GIT&lt;br /&gt;
&lt;br /&gt;
; 2008-02-06&lt;br /&gt;
: ALSA 1.0.16 final release | [[Changes v1.0.15 v1.0.16|changes from 1.0.15]] | [[Changes v1.0.16rc2 v1.0.16|changes from 1.0.16rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2008-01-29&lt;br /&gt;
: ALSA 1.0.16rc2 release | [[Changes v1.0.16rc1 v1.0.16rc2|changes from 1.0.16rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2008-01-22&lt;br /&gt;
: ALSA 1.0.16rc1 release | [[Changes v1.0.15 v1.0.16rc1|changes from 1.0.15]]&lt;br /&gt;
&lt;br /&gt;
; 2007-10-16&lt;br /&gt;
: ALSA 1.0.15 final release | [[Changes v1.0.14 v1.0.15|changes from 1.0.14]]&lt;br /&gt;
&lt;br /&gt;
; 2007-09-26&lt;br /&gt;
: ALSA 1.0.15rc3 release | [[Changes v1.0.15rc2 v1.0.15rc3|changes from 1.0.15rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2007-09-13&lt;br /&gt;
: ALSA 1.0.15rc2 release | [[Changes v1.0.15rc1 v1.0.15rc2|changes from 1.0.15rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2007-08-31&lt;br /&gt;
: ALSA 1.0.15rc1 release | [[Changes v1.0.14 v1.0.15rc1|changes from 1.0.14]]&lt;br /&gt;
&lt;br /&gt;
; 2007-08-09&lt;br /&gt;
: ALSA WWW site switched to [http://www.mediawiki.org MediaWiki]&lt;br /&gt;
&lt;br /&gt;
; 2007-06-11&lt;br /&gt;
: ALSA 1.0.14a library bugfix release | [[Changes v1.0.14 v1.0.14a|changes from 1.0.14]]&lt;br /&gt;
&lt;br /&gt;
; 2007-06-04&lt;br /&gt;
: ALSA 1.0.14 release | [[Changes v1.0.13 v1.0.14|changes from 1.0.13]] | [[Changes v1.0.14rc4 v1.0.14|changes from 1.0.14rc4]]&lt;br /&gt;
&lt;br /&gt;
; 2007-04-03&lt;br /&gt;
: ALSA 1.0.14rc4 release | [[Changes v1.0.14rc3 v1.0.14rc4|changes from 1.0.14rc3]]&lt;br /&gt;
&lt;br /&gt;
; 2007-03-06&lt;br /&gt;
: ALSA 1.0.14rc3 release | [[Changes v1.0.14rc2 v1.0.14rc3|changes from 1.0.14rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2007-01-16&lt;br /&gt;
: ALSA 1.0.14rc2 release | [[Changes v1.0.14rc1 v1.0.14rc2|changes from 1.0.14rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2006-12-11&lt;br /&gt;
: ALSA 1.0.14rc1 release | [[Changes v1.0.13 v1.0.14rc1|changes from 1.0.13]]&lt;br /&gt;
&lt;br /&gt;
; 2006-09-29&lt;br /&gt;
: ALSA 1.0.13 release | [[Changes v1.0.12 v1.0.13|changes from 1.0.12]] | [[Changes 1.0.13rc3 v1.0.13|changes from 1.0.13rc3]]&lt;br /&gt;
&lt;br /&gt;
; 2006-09-26&lt;br /&gt;
: ALSA 1.0.13rc3 release | [[Changes v1.0.13rc2 v1.0.13rc3|changes from 1.0.13rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2006-09-15&lt;br /&gt;
: ALSA 1.0.13rc2 release | [[Changes v1.0.13rc1 v1.0.13rc2|changes from 1.0.13rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2006-09-01&lt;br /&gt;
: ALSA 1.0.13rc1 release | [[Changes v1.0.12 v1.0.13rc1|changes from 1.0.12]]&lt;br /&gt;
&lt;br /&gt;
; 2006-08-24&lt;br /&gt;
: ALSA 1.0.12 release | [[Changes v1.0.11 v1.0.12|changes from 1.0.11]] | [[Changes 1.0.12rc3 v1.0.12|changes from 1.0.12rc3]]&lt;br /&gt;
&lt;br /&gt;
; 2006-08-15&lt;br /&gt;
: ALSA 1.0.12rc3 release (driver only) | [[Changes v1.0.12rc2 v1.0.12rc3|changes from 1.0.12rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2006-08-03&lt;br /&gt;
: ALSA 1.0.12rc2 release | [[Changes v1.0.12rc1 v1.0.12rc2|changes from 1.0.12rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2006-06-23&lt;br /&gt;
: ALSA 1.0.12rc1 release | [[Changes v1.0.11 v1.0.12rc1|changes from 1.0.11]]&lt;br /&gt;
&lt;br /&gt;
; 2006-04-19&lt;br /&gt;
: ALSA 1.0.11 final release | [[Changes v1.0.10 v1.0.11|changes from 1.0.10]]&lt;br /&gt;
&lt;br /&gt;
; 2006-04-11&lt;br /&gt;
: ALSA 1.0.11rc5 release | [[Changes v1.0.11rc4 v1.0.11rc5|changes from 1.0.11rc4]]&lt;br /&gt;
&lt;br /&gt;
; 2006-03-22&lt;br /&gt;
: ALSA 1.0.11rc4 release | [[Changes v1.0.11rc3 v1.0.11rc4|changes from 1.0.11rc3]]&lt;br /&gt;
&lt;br /&gt;
; 2006-01-29&lt;br /&gt;
: ALSA 1.0.11rc3 release | [[Changes v1.0.11rc2 v1.0.11rc3|changes from 1.0.11rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2006-01-02&lt;br /&gt;
: ALSA 1.0.11rc2 release | [[Changes v1.0.11rc1 v1.0.11rc2|changes from 1.0.11rc1]] | Happy New Year 2006&lt;br /&gt;
&lt;br /&gt;
; 2005-12-12&lt;br /&gt;
: ALSA 1.0.11rc1 release | [[Changes v1.0.10 v1.0.11rc1|changes from 1.0.10 final]]&lt;br /&gt;
&lt;br /&gt;
; 2005-11-16&lt;br /&gt;
: ALSA 1.0.10 release | [[Changes v1.0.10rc3 v1.0.10|changes from 1.0.10rc3]] |  [[Changes 1.0.9 v1.0.10|changes from 1.0.9]]&lt;br /&gt;
&lt;br /&gt;
; 2005-11-08&lt;br /&gt;
: ALSA 1.0.10rc3 release | [[Changes v1.0.10rc2 v1.0.10rc3|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-10-10&lt;br /&gt;
: ALSA 1.0.10rc2 release | [[Changes v1.0.10rc1 v1.0.10rc2|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-08-20&lt;br /&gt;
: ALSA 1.0.10rc1 release | [[Changes v1.0.9b v1.0.10rc1|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-06-07&lt;br /&gt;
: ALSA 1.0.9b release | [[Changes v1.0.9a v1.0.9b|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-06-02&lt;br /&gt;
: ALSA 1.0.9a release | [[Changes v1.0.9 v1.0.9a|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-05-27&lt;br /&gt;
: ALSA 1.0.9 final release | [[Changes v1.0.8 v1.0.9|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-05-23&lt;br /&gt;
: ALSA 1.0.9rc4 release&lt;br /&gt;
&lt;br /&gt;
; 2005-05-02&lt;br /&gt;
: ALSA 1.0.9rc3 release&lt;br /&gt;
&lt;br /&gt;
; 2005-03-24&lt;br /&gt;
: ALSA 1.0.9rc2 release&lt;br /&gt;
&lt;br /&gt;
; 2005-03-13&lt;br /&gt;
: ALSA 1.0.9rc1 release&lt;br /&gt;
&lt;br /&gt;
; 2005-01-13&lt;br /&gt;
: ALSA 1.0.8 release | [[Changes v1.0.7 v1.0.8|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-01-06&lt;br /&gt;
: ALSA 1.0.8rc2 release&lt;br /&gt;
&lt;br /&gt;
; 2004-12-22&lt;br /&gt;
: ALSA 1.0.8rc1 release&lt;br /&gt;
&lt;br /&gt;
; 2004-11-15&lt;br /&gt;
: ALSA 1.0.7 release&lt;br /&gt;
&lt;br /&gt;
; 2004-10-13&lt;br /&gt;
: ALSA 1.0.7rc2 release&lt;br /&gt;
&lt;br /&gt;
; 2004-09-08&lt;br /&gt;
: ALSA 1.0.7rc1 release&lt;br /&gt;
&lt;br /&gt;
; 2004-08-15&lt;br /&gt;
: ALSA 1.0.6 release&lt;br /&gt;
&lt;br /&gt;
; 2004-06-11&lt;br /&gt;
: ALSA server software was upgraded.  Anonymous rsync access [[Download|was changed.]]&lt;br /&gt;
&lt;br /&gt;
; 2004-05-31&lt;br /&gt;
: 1.0.5a driver release | bugfix for the &amp;quot;hang-up&amp;quot; problem in the ALSA driver initialization&lt;br /&gt;
&lt;br /&gt;
; 2004-05-28&lt;br /&gt;
: 1.0.5 release | mostly bug-fixes and cleanups&lt;br /&gt;
&lt;br /&gt;
; 2004-04-03&lt;br /&gt;
: 1.0.4 release | mostly bug-fixes and cleanups&lt;br /&gt;
&lt;br /&gt;
; 2004-03-30&lt;br /&gt;
: 1.0.4rc2 driver release | report compilation problems, please&lt;br /&gt;
&lt;br /&gt;
; 2004-03-27&lt;br /&gt;
: 1.0.4rc1 release | report compilation problems, please&lt;br /&gt;
&lt;br /&gt;
; 2004-03-13&lt;br /&gt;
: alsa-lib 1.0.3b released -  it fixes SIGSEGV problem for dmix plugin (when a specific GCC version is used)&lt;br /&gt;
&lt;br /&gt;
; 2004-03-06&lt;br /&gt;
: alsa-lib 1.0.3a released - it fixes again the dmix/dshare/dsnoop poll() problems&lt;br /&gt;
&lt;br /&gt;
; 2004-02-29&lt;br /&gt;
: 1.0.3 packages released | added driver for ATI IXP 150/200/250 chips and HDSP MADI driver&lt;br /&gt;
&lt;br /&gt;
; 2004-02-25&lt;br /&gt;
: 1.0.3rc2 packages released&lt;br /&gt;
&lt;br /&gt;
; 2004-02-04&lt;br /&gt;
: 1.0.2c driver package release | More fixes for compilation problems.&lt;br /&gt;
&lt;br /&gt;
; 2004-02-03&lt;br /&gt;
: 1.0.2b driver package release | It fixes next 2.6 kernel compilation problems.&lt;br /&gt;
&lt;br /&gt;
; 2004-01-30&lt;br /&gt;
: 1.0.2a driver package release | It should fix most of 2.6 kernel compilation problems and adds RME HDSP MADI (hdspm) driver.&lt;br /&gt;
&lt;br /&gt;
; 2004-01-27&lt;br /&gt;
: New ALSA bugtracking system using Mantis is [http://bugtrack.alsa-project.org/alsa-bug/ available].&lt;br /&gt;
&lt;br /&gt;
; 2004-01-26&lt;br /&gt;
: 1.0.2 release | &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;ENJOY!&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; 2004-01-08&lt;br /&gt;
: 1.0.1 release | &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;ENJOY!&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; 2003-12-05&lt;br /&gt;
: 1.0.0rc2 release | &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;ENJOY!&amp;lt;/font&amp;gt; | bt87x driver added, more OSS PCM emulation fixes&lt;br /&gt;
&lt;br /&gt;
; 2003-12-01&lt;br /&gt;
: 1.0.0rc1 release | &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;ENJOY!&amp;lt;/font&amp;gt; | intel8x0 driver fixes, OSS PCM emulation fixes&lt;br /&gt;
&lt;br /&gt;
; 2003-11-25&lt;br /&gt;
: 1.0.0pre3 release | alsa-tools packages is divided now - firmware files are in alsa-firmware package.&lt;br /&gt;
&lt;br /&gt;
; 2003-11-18&lt;br /&gt;
: 1.0.0pre1 release | This release is indented for wide testing.&lt;br /&gt;
&lt;br /&gt;
; 2003-10-21&lt;br /&gt;
: 0.9.8 release&lt;br /&gt;
&lt;br /&gt;
; 2003-10-13&lt;br /&gt;
: 0.9.7c driver release - PDE and vortex driver compilation fixes&lt;br /&gt;
&lt;br /&gt;
; 2003-10-10&lt;br /&gt;
: 0.9.7b driver release - it fixes serious bug in PCM (mutex hangup)&lt;br /&gt;
&lt;br /&gt;
; 2003-10-01&lt;br /&gt;
: 0.9.7a driver release - fixes bugs (including oops) in the OSS PCM emulation layer&lt;br /&gt;
&lt;br /&gt;
; 2003-09-25&lt;br /&gt;
: 0.9.7 release&lt;br /&gt;
&lt;br /&gt;
; 2003-07-28&lt;br /&gt;
: 0.9.6 release&lt;br /&gt;
&lt;br /&gt;
; 2003-07-09&lt;br /&gt;
: 0.9.5 release&lt;br /&gt;
&lt;br /&gt;
; 2003-06-01&lt;br /&gt;
: 0.9.4 release&lt;br /&gt;
&lt;br /&gt;
; 2003-05-20&lt;br /&gt;
: *** 0.9.3c driver maintaince release *** configuration fixes + other updates&lt;br /&gt;
&lt;br /&gt;
; 2003-05-19&lt;br /&gt;
: *** 0.9.3b driver maintaince release *** ISA PnP and other fixes. We removed /proc/asound/dev directory. The 'make install' should create new device files, but in case of problems, the snddevices script should be executed.&lt;br /&gt;
&lt;br /&gt;
; 2003-04-30&lt;br /&gt;
: *** 0.9.3 release *** Moved firmware code from vxpocket and hdsp driver to alsa-tools. Enjoy!&lt;br /&gt;
&lt;br /&gt;
; 2003-03-19&lt;br /&gt;
: *** 0.9.2 release *** Added dsnoop and dshare PCM plugins to alsa-lib. Enjoy!&lt;br /&gt;
&lt;br /&gt;
; 2003-03-11&lt;br /&gt;
: *** 0.9.1 release *** First stable release of the 0.9 serie. Enjoy!&lt;br /&gt;
&lt;br /&gt;
; 2003-03-10&lt;br /&gt;
: alsa-driver 0.9.0rc8d released&lt;br /&gt;
&lt;br /&gt;
; 2003-03-08&lt;br /&gt;
: alsa-driver 0.9.0rc8c released&lt;br /&gt;
&lt;br /&gt;
; 2003-03-07&lt;br /&gt;
: alsa-lib 0.9.0rc8c and alsa-utils 0.9.0rc8a released&lt;br /&gt;
&lt;br /&gt;
; 2003-03-05&lt;br /&gt;
: alsa-lib and alsa-driver 0.9.0rc8b release&lt;br /&gt;
: alsa-driver 0.9.0rc8a released (fixed compilation problem for older kernels)&lt;br /&gt;
&lt;br /&gt;
; 2003-03-03&lt;br /&gt;
: alsa-lib 0.9.0rc8a released (fixed compilation problem)&lt;br /&gt;
&lt;br /&gt;
; 2003-03-02&lt;br /&gt;
: 0.9.0 release candidate #8 (all packages) is available for download. It is probably last release before 0.9.0 final. You will find in the alsa-lib package the dmix plugin which allows mixing of multiple PCM streams together without the client/server mechanism.&lt;br /&gt;
&lt;br /&gt;
; 2003-01-28&lt;br /&gt;
: 0.9.0 release candidate #7 (alsa-driver, alsa-lib, alsa-utils and alsa-tools packages) is available for download.&lt;br /&gt;
&lt;br /&gt;
; 2002-10-25&lt;br /&gt;
: The fix for GCC 3.2 has been integrated into the 0.9.0rc5 package. Please, redownload the updated package from our server when you reached this problem. (New package is dated 2002/10/25&lt;br /&gt;
&lt;br /&gt;
; 2002-10-24&lt;br /&gt;
: 0.9.0 release candidate #5 (alsa-driver, alsa-lib, alsa-utils and alsa-tools packages) is available for download. This &amp;quot;quick&amp;quot; release should fix the build problems for alsa-lib and alsa-utils packages.&lt;br /&gt;
: Note#2: Please, notice that we merged snd-via686 and snd-via8233 into the snd-via82xx module. Also, the snd-usb-midi module users should use the snd-usb-audio module which has integrated support for both USB audio and MIDI.&lt;br /&gt;
: Note: We have changed the kernel module symbol names (module parameter names). We removed prefix 'snd_'. Please, update your /etc/modules.conf files by hand or use our alsa-driver/utils/module-options script which does this job. Please, notice that 'snd_' prefix is not equal to 'snd-' prefix (module name) which is left unchanged.&lt;br /&gt;
&lt;br /&gt;
; 2002-10-22&lt;br /&gt;
: 0.9.0 release candidate #4 (alsa-driver, alsa-lib, alsa-utils and alsa-tools packages) is available for download.&lt;br /&gt;
&lt;br /&gt;
; 2002-08-22&lt;br /&gt;
: Note for compiling  alsa-driver-0.9.0rc3: Please remove the file - alsa-driver-0.9.0rc3/include/linux/isapnp.h - before running the configure script.&lt;br /&gt;
&lt;br /&gt;
; 2002-08-15&lt;br /&gt;
: 0.9.0 release candidate #3 (alsa-driver, alsa-lib and alsa-utils packages) is available for download.&lt;br /&gt;
&lt;br /&gt;
; 2002-08-09&lt;br /&gt;
: The new online user documentation is now public. Access is through the soundcard matrix. PHP is used to automatically provide the necessary parameters needed to set up a module and required scripts. Users are encouraged to add notes via the notes additions form.&lt;br /&gt;
&lt;br /&gt;
; 2002-06-19&lt;br /&gt;
: Release Candidate #2 is available to download. ALSA packages 0.9.0rc2 were released.&lt;br /&gt;
&lt;br /&gt;
; 2002-04-24&lt;br /&gt;
: Release Candidate #1 is available to download. ALSA packages 0.9.0rc1 were released.&lt;br /&gt;
&lt;br /&gt;
; 2002-02-26&lt;br /&gt;
: ALSA packages 0.9.0beta12 were released.&lt;br /&gt;
&lt;br /&gt;
; 2002-02-17&lt;br /&gt;
: ALSA packages 0.9.0beta11 were released. The driver package contains a new directory tree synced with the Linux 2.5 kernel.&lt;br /&gt;
&lt;br /&gt;
; 2002-02-13&lt;br /&gt;
: ALSA has been integrated to the official Linux 2.5 tree! The initial merge is in patch-2.5.5-pre1.&lt;br /&gt;
&lt;br /&gt;
; 2001-11-30&lt;br /&gt;
: The 0.5.12a driver was released. It's maintaince release to fix problems with 2.4.14+ kernels. &amp;lt;BR&amp;gt; The 0.9.0beta10 packages were released.&lt;br /&gt;
&lt;br /&gt;
; 2001-11-05&lt;br /&gt;
: The 0.9.0beta9 packages were released.  &amp;lt;hr /&amp;gt; The 0.5.12 driver was released.&lt;br /&gt;
&lt;br /&gt;
; 2001-09-27&lt;br /&gt;
: The 0.9.0beta8 packages were released.&lt;br /&gt;
&lt;br /&gt;
; 2001-08-23&lt;br /&gt;
: The 0.9.0beta7 packages were released.&lt;br /&gt;
&lt;br /&gt;
; 2001-07-22&lt;br /&gt;
: The 0.9.0beta6 alsa-driver and alsa-lib packages have fixed compilation bugs. Please, download these packages again.&lt;br /&gt;
&lt;br /&gt;
; 2001-07-20&lt;br /&gt;
: The 0.9.0beta6 packages were released for public.&lt;br /&gt;
&lt;br /&gt;
; 2001-06-28&lt;br /&gt;
: The 0.9.0beta5 packages were released for public with uniform support for multichannel cards and raw IEC958 (S/PDIF).&lt;br /&gt;
&lt;br /&gt;
; 2001-05-25&lt;br /&gt;
: Mailing lists are moved to SourceForge. Please, check [[Mailing-lists|this page]] for the subscription details.&lt;br /&gt;
: The 0.9.0beta4 packages were released for public.&lt;br /&gt;
&lt;br /&gt;
; 2001-05-14&lt;br /&gt;
: The driver 0.5.11 was released. Changes: IA64 arch support, ALi 5451 driver added, AWACS driver added (for PPC), AC'97, PCM OSS emulation, sequencer OSS emulation, AD1816A, ALS4000, AZT2320, CMIPCI, CS4236, CS4281, CS461X, ES1968, Maestro 3, NM256, OPL3SA2, SB16, SB-AWE, YMFPCI.&lt;br /&gt;
&lt;br /&gt;
; 2001-03-20&lt;br /&gt;
: The 0.9.0beta3 packages were released for public.&lt;br /&gt;
&lt;br /&gt;
; 2001-03-02&lt;br /&gt;
: The 0.9.0beta2 packages were released for public.&lt;br /&gt;
&lt;br /&gt;
; 2001-02-21&lt;br /&gt;
: The 0.9.0beta1 packages were released for public. Please, check out our FTP site to obtain them.&lt;br /&gt;
&lt;br /&gt;
; 2001-01-23&lt;br /&gt;
: The ALSA driver package version 0.5.10b was released. New driver: VIA VT8233 South Bridge. Bugfixes: NM256, AC'97.&lt;br /&gt;
&lt;br /&gt;
; 2001-01-07&lt;br /&gt;
: The ALSA driver package version 0.5.10a was released. New driver: NeoMagic NM256AV/ZX. Bugfixes: Maestro3, MPU401 UART, AZT2320, RME96, CS461x, timer, YMFPCI, CMI8330, FM801, CS4232, ENS1371, 2.4.0-prerelease kernel support.&lt;br /&gt;
&lt;br /&gt;
; 2000-12-07&lt;br /&gt;
: The ALSA packages version 0.5.10 were released. New drivers: ALS4000, Maestro3 (Allegro), CS4281. Bugfixes: AC'97 code, SB16, EMUX000 MIDI, CMIPCI, SB8, CS4236, Intel8x0, CS461x, YMFPCI, MPU401, AD1816A, 2.2.18pre kernels, man pages.&lt;br /&gt;
&lt;br /&gt;
; 2000-10-10&lt;br /&gt;
: ALSA driver package version 0.5.9d was released. Bugfixes:  2.2.18pre kernels, YMFPCI, CMIPCI, EMU10K1, OSS sequencer emulator, CS4236, RME9652, rawmidi, intel8x0.&lt;br /&gt;
&lt;br /&gt;
; 2000-09-22&lt;br /&gt;
: ALSA project helps to realize the unique demonstration prepared by the Audio Engineering Society's (AES) Technical Committee on Network Audio Systems. Recording Engineers in Los Angeles will mix 12 high quality audio channels streamed live over the Internet from Montreal. [http://www.aes.org/events/109/events.cfm Event description.] [http://www.cim.mcgill.ca/~jer/projects/aes/ Demo description.]&lt;br /&gt;
&lt;br /&gt;
; 2000-09-02&lt;br /&gt;
: ALSA driver package version 0.5.9c was released. Bugfixes:  SB16, AD1816A, AZT2320, EMU8000/EMU10K1, CMIPCI, YMFPCI, intel-i8x0, general. &amp;lt;hr&amp;gt; ALSA package with utilities version 0.5.9b was released. Updated programs: aplay, aseqnet.&lt;br /&gt;
&lt;br /&gt;
; 2000-08-18&lt;br /&gt;
: ALSA driver package version 0.5.9b was released. More bugfixes: CS4236, EMU10K1, OSS mmap() for non-x86 platforms, ENS1370, ENS1371.&lt;br /&gt;
&lt;br /&gt;
; 2000-08-11&lt;br /&gt;
: ALSA driver package version 0.5.9a was released. It contains more 64-bit cleanaups and support for 2.4.0-test6 kernel.&lt;br /&gt;
&lt;br /&gt;
; 2000-08-07&lt;br /&gt;
: Packages 0.5.9 were released. These packages contain cleanups for alpha linux platform. Changed drivers: OPTi92x/93x, VIA686A, YMFPCI, MPU-401, EMU10K1, SB16, SB8, seq_virmidi, ENS1370/1, rawmidi.&lt;br /&gt;
&lt;br /&gt;
; 2000-06-25&lt;br /&gt;
: The driver 0.5.8b was released containing bugfixes for these drivers: sequencer, YMFPCI, CS4236, ES1968, ICE1712, Opti92x/93x, EMU10K1.&lt;br /&gt;
&lt;br /&gt;
; 2000-06-06&lt;br /&gt;
: The driver 0.5.8a was released. It contains compilation bugfix for latest 2.3 and 2.4-test kernels. The Yamaha driver was fixed for YMF724F.&lt;br /&gt;
&lt;br /&gt;
; 2000-06-05&lt;br /&gt;
: Stable packages 0.5.8 were released. Two new drivers were added: the C-Media CMI8338 and 8738 PCI driver and the Yamaha YMF72x,74x,75x driver. Also, APM is supported for CS4231 &amp;amp; CS4235,6,7,8,9 chips. Otherwise, this release contains mostly bug-fixes backported from the ALSA development tree including the support for latest Linux kernels. Affected drivers: AZT2320, CMI8330, CS4236, ESS ES18xx, InterWave (GUS PnP), Opti 92x, Sound Blaster 16, AD1816A. &amp;lt;b&amp;gt;&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Upgrade is recommended for all soundcards.&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; 2000-04-06&lt;br /&gt;
: Stable packages 0.5.7 were released. This release is a bug-fix release only. The support for MidiMan Delta 44 and 66 cards was added. Other changes - sequencer fixes, rawmidi fixes, AC'97 code updates, other minor cleanups.&lt;br /&gt;
&lt;br /&gt;
; 2000-03-17&lt;br /&gt;
: New ALSA [[Mailing-lists|announce mailing list]] was created.&lt;br /&gt;
&lt;br /&gt;
; 2000-03-11&lt;br /&gt;
: ALSA 0.5.6 packages were released (new drivers: RME Digi 96, VIA 82C686A AC'97 bridge | bugfixes: Intel i8x0/440MX, EMU10K1, AZT2320, RawMidi code + lowlevel drivers, alsamixer).&lt;br /&gt;
&lt;br /&gt;
; 2000-03-01&lt;br /&gt;
: ALSA 0.5.5 packages were released (API cleanups).&lt;br /&gt;
&lt;br /&gt;
; 2000-02-28&lt;br /&gt;
: ALSA 0.5.4b driver package was released (Intel i8x0/MX440 driver fixes).&lt;br /&gt;
: ALSA 0.5.4 packages were released (added alpha ESS Maestro 1/2/2E driver, improved Intel i8x0/440MX driver, AC'97 updates).&lt;br /&gt;
&lt;br /&gt;
; 2000-02-27&lt;br /&gt;
: ALSA 0.5.4a driver package was released (2.3.48 compilation fixed, PCM OSS Oops fixed). Upgrade is strongly recommended.&lt;br /&gt;
&lt;br /&gt;
; 2000-02-16&lt;br /&gt;
: The 0.5.3 packages were released (RME Hammerfall/Light updates, ES1938 - Solo1 driver improved, AC'97 updates, Intel i8x0/440MX alpha driver added, sequencer updates, MTPAV updates, better SMP support for 2.3.x kernels, virmidi code added to EMU8000 &amp;amp; EMU10K1 synth drivers, snd-card-virmidi updates, AK4531 updates - ES1370, EMU10K1 rear volume fixed, ICE1712 updates).&lt;br /&gt;
&lt;br /&gt;
; 2000-02-14&lt;br /&gt;
: The ALSA server was upgraded. You may now enjoy the HtDig search engine for whole Web server plus mailing list archives.&lt;br /&gt;
&lt;br /&gt;
; 2000-02-04&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/ ALSA 0.5.2 packages] were released (added ICE1712 {Envy24} driver and AD1816A driver, RME9652 updates, EMU10K1 updates, SB8, ES18xx, serial MIDI driver updates, PCM API updates, AC'97 bugfixes). The [ftp://ftp.alsa-project.org/pub/others/envy24control GTK Envy24 control utility] is also available with some screenshots. Note: The current Envy24 driver may work only with the MidiMan soundcards (Delta serie). The driver supports only professional PCM at this time.&lt;br /&gt;
&lt;br /&gt;
; 2000-01-22&lt;br /&gt;
: ALSA [ftp://ftp.alsa-project.org/pub packages 0.5.1] were released (PCM OSS emulation, EMU10K1 synth, ES1938, ENS1370).&lt;br /&gt;
&lt;br /&gt;
; 2000-01-16&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/ Final ALSA 0.5.0 packages] were released (added RME9652 -Hammerfall- driver, final API cleanups).&lt;br /&gt;
&lt;br /&gt;
; 2000-01-12&lt;br /&gt;
: The alsa-driver and alsa-lib [ftp://ftp.alsa-project.org/pub packages 0.5.0pre3] were released (trident driver, compilation trouble).&lt;br /&gt;
&lt;br /&gt;
; 2000-01-11&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.5.0pre2] was released (enhanced EMU10K1 code, a compilation bugfix). Other [ftp://ftp.alsa-project.org/pub 0.5.0pre2 packages] were also released.&lt;br /&gt;
&lt;br /&gt;
; 2000-01-10&lt;br /&gt;
: All [ftp://ftp.alsa-project.org/pub packages 0.5.0pre1] were were released. The final API freeze is expected at 14th January 2000.&lt;br /&gt;
&lt;br /&gt;
; 1999-12-20&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1i] was released with the bugfix for the generic code for AC'97. The problems with CS4297A volume levels are away.&lt;br /&gt;
&lt;br /&gt;
; 1999-12-16&lt;br /&gt;
: The final ALSA API dead line is 10th January 2000.&lt;br /&gt;
&lt;br /&gt;
; 1999-12-07&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1h] was released with the bugfix for the ENS1370/ENS1371 drivers.&lt;br /&gt;
&lt;br /&gt;
; 1999-12-06&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1g1] was released with minor bugfixes (mixer, rawmidi, CS461X).&lt;br /&gt;
&lt;br /&gt;
; 1999-12-02&lt;br /&gt;
: [http://www.alsa-project.org/announce.html The ALSA professional team] has been founded.&lt;br /&gt;
&lt;br /&gt;
; 1999-12-01&lt;br /&gt;
: [http://www.alsa-project.org/cgi-bin/cvsweb.cgi CVS Web interface] is available. Created [[Mailing-lists|new mailing lists]]: alsa-doc, alsa-conf, alsa-howto and alsa-cvs. Mailing lists are archived through MHonArc. Web is now searchable through Ht://Dig.&lt;br /&gt;
&lt;br /&gt;
; 1999-11-26&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1f2] was released with minor bugfixes (CS4231, CS4236, AC'97, 2.3.29 kernel).&lt;br /&gt;
&lt;br /&gt;
; 1999-11-18&lt;br /&gt;
: Alpha EMU10K1 (Sound Blaster Live!) driver is available in CVS.&lt;br /&gt;
&lt;br /&gt;
; 1999-11-03&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1e] was released with minor bugfixes (isapnp, CS4236+, Gallant SC-70P, 2.3.25 kernel).&lt;br /&gt;
&lt;br /&gt;
; 1999-11-02&lt;br /&gt;
: Creative released their [http://opensource.creative.com/ source code for SB Live driver]. The ALSA SB Live driver will be available this month.&lt;br /&gt;
&lt;br /&gt;
; 1999-10-24&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1d] was released with minor bugfixes (CMI8330, 2+ soundcards, modules.conf handling, documentation files). Upgrade is recommended if your system has 2+ soundcards. [ftp://ftp.alsa-project.org/pub/lib ALSA library 0.4.1d&amp;lt;/A&amp;gt; was released (PCM cleanup fixes).]A library 0.4.1d&amp;lt;/A&amp;gt; was released (PCM cleanup fixes).&lt;br /&gt;
&lt;br /&gt;
; 1999-10-20&lt;br /&gt;
: Upgrade your modutils package, if you encounter 'segmentation fault' problems. Get fixed [ftp://ftp.ocs.com.au/pub/modutils/v2.3/modutils-2.3.6.tar.gz modutils-2.3.6.tar.gz] or an upgrade [ftp://ftp.alsa-project.org/pub/driver/misc/modules-2.2.2-44.i386.rpm package for SuSE 6.2].&lt;br /&gt;
&lt;br /&gt;
; 1999-10-07&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1c] was released with minor bugfixes (GUS, OPL3-SA2/3, RedHat 6.1). Upgrade is recommended for all soundcards.&lt;br /&gt;
&lt;br /&gt;
; 1999-09-16&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1b] was released with next minor bugfixes.&lt;br /&gt;
&lt;br /&gt;
; 1999-09-01&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1a] was released with minor bugfixes.&lt;br /&gt;
&lt;br /&gt;
; 1999-08-26&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/ ALSA packages version 0.4.1] were released. This is mostly bug-fix release.&lt;br /&gt;
: Statistics for WWW and FTP server are now available.&lt;br /&gt;
&lt;br /&gt;
; 1999-08-15&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/ ALSA packages version 0.4.0] were released. Older packages are not supported from this time.&lt;br /&gt;
&lt;br /&gt;
; 1999-08-01&lt;br /&gt;
: The ALSA bug reporting system is up and going. To report bugs in ALSA packages, please go here and follow the instructions carefully.&lt;br /&gt;
&lt;br /&gt;
; 1999-06-17&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver/ ALSA driver version 0.3.2] released. This is a bug-fix release. If you have had any troubles with 0.3.1 or 0.3.0, please, try this version. Remember to upgrade [ftp://ftp.alsa-project.org/pub/lib/ lib] and [ftp://ftp.alsa-project.org/pub/utils/ utils] too. 0.3.x-series are the last to support 2.0.x kernels.&lt;br /&gt;
&lt;br /&gt;
; 1999-05-23&lt;br /&gt;
: The alpha driver for the [http://www.crystal.com/ Cirrus Logic Sound Fusion CS461x (CS4280) PCI chips] is available on the [[Download|CVS]].&lt;br /&gt;
&lt;br /&gt;
; 1999-05-14&lt;br /&gt;
: [[Mailing-lists|Mailing lists]] are now managed with the alsa.alsa-project.org machine.&lt;br /&gt;
&lt;br /&gt;
; 1999-05-11&lt;br /&gt;
: The alpha driver for the [http://www.fortemedia.com/products/ ForteMedia FM801 PCI soundcard] is available on the [[Download|CVS]].&lt;br /&gt;
&lt;br /&gt;
; 1999-04-29&lt;br /&gt;
: New page with the ALSA schedule is available.&lt;br /&gt;
&lt;br /&gt;
; 1999-04-23&lt;br /&gt;
: The call to hardware vendors was [[ALSA_Soundcard_Vendor_Information|updated]].&lt;br /&gt;
&lt;br /&gt;
; 1999-04-20&lt;br /&gt;
: The ALSA project has got own domain - alsa-project.org. Services (WWW/FTP/CVS) are running on the independent machine now.&lt;br /&gt;
&lt;br /&gt;
; 1999-03-16&lt;br /&gt;
: The releasing of 0.3.0pre5 packages is very delayed. We are working on new mixer API which will not be compatible with previous versions of ALSA packages. It seems that that this work needs a lot of our time. There are many changes in the current development tree (Trident 4DWave DX/NX driver &amp;lt;b&amp;gt;- thanks to Tridentfor their support -&amp;lt;/b&amp;gt;, timer interface, EMU8000 driver, OSS sequencer emulator), If you want to test or use the current code, you may get the sources directly from the [[Download|CVS server]] or there are also available [[Download|CVS snapshots]].&lt;br /&gt;
&lt;br /&gt;
; 1999-02-10&lt;br /&gt;
: Two alsa-driver and alsa-lib packages with version 0.3.0-pre4 [ftp://ftp.alsa-project.org/pub released]. The driver contains better support for 2.2.0+ kernels and allows mixing of ALSA and OSS/Lite modules.&lt;br /&gt;
&lt;br /&gt;
; 1999-02-05&lt;br /&gt;
: [[Download|CVS snapshots]] are available now.&lt;br /&gt;
&lt;br /&gt;
; 1999-01-29&lt;br /&gt;
: Temporary AWE64 [http://ds.dial.pipex.com/sterat/alsa EMU8000 synth driver] for ALSA.&lt;br /&gt;
&lt;br /&gt;
; 1999-01-24&lt;br /&gt;
: All packages with version 0.3.0-pre3 [ftp://ftp.alsa-project.org/pub released].&lt;br /&gt;
: [[ALSA_Library_API|New ALSA API description for 0.2.0 packages.]]&lt;br /&gt;
&lt;br /&gt;
; 1999-01-19&lt;br /&gt;
: [http://huizen.dds.nl/~valentyn/Alsa-sound-mini-HOWTO.html Alsa-sound-mini-HOWTO]&lt;br /&gt;
: Version 0.2.0-pre10p3 of driver [ftp://ftp.alsa-project.org/pub/driver released] which includes support for 2.2.0-pre1 kernel.&lt;br /&gt;
: Version 0.3.0-pre2 of alsa-lib [ftp://ftp.alsa-project.org/pub/lib released] which includes support for sequencer.&lt;br /&gt;
: Version 0.3.0-pre2 of driver [ftp://ftp.alsa-project.org/pub/driver released] which includes native support for ISA Plug &amp;amp;amp; Play cards, first version of sequencer and support for 2.2.0-pre1 kernel.&lt;br /&gt;
&lt;br /&gt;
; 1998-12-30&lt;br /&gt;
: [[ALSA_Soundcard_Vendor_Information|A call to sound card hardware vendors.]]&lt;br /&gt;
&lt;br /&gt;
; 1998-12-28&lt;br /&gt;
: [[ALSA Blacklist|Black List]]; Sound Blaster Live! [[ALSA_Blacklist|support]] (sorry)&lt;br /&gt;
&lt;br /&gt;
; 1998-11-10&lt;br /&gt;
: Version 0.1.3 of C library and Version 0.2.0-pre10 of driver [ftp://ftp.alsa-project.org/pub/driver released] which supports Cirrus Logic CS4232+/CS4236+, Ensoniq AudioPCI (ES1370/1371), and S3 SonicVibes.&lt;br /&gt;
&lt;br /&gt;
; 1998-11-04&lt;br /&gt;
: Version 0.0.7 of ALSA utilities [ftp://ftp.alsa-project.org/pub/lib released]&lt;br /&gt;
&lt;br /&gt;
; 1998-08-13&lt;br /&gt;
: [[Download|CVS is up]]&lt;br /&gt;
[http://www.example.com link title]&lt;br /&gt;
[http://www.example.com link title]&lt;br /&gt;
[http://www.example.com link title]&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/Changes_v1.0.25_v1.0.26</id>
		<title>Changes v1.0.25 v1.0.26</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/Changes_v1.0.25_v1.0.26"/>
				<updated>2012-09-06T08:40:26Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
[[Detailed changes v1.0.25 v1.0.26]]&lt;br /&gt;
=Changelog between 1.0.25 and 1.0.26 releases=&lt;br /&gt;
==alsa-lib==&lt;br /&gt;
===Core===&lt;br /&gt;
: Release v1.0.26&lt;br /&gt;
===Control API===&lt;br /&gt;
: ucm: Improve cset command parsing&lt;br /&gt;
: control: Use strcpy() instead of stpcpy()&lt;br /&gt;
: hctl: Remove a useless assert&lt;br /&gt;
: Fix the binary compatibility of ext-ctl plugin with protocol 1.0.0&lt;br /&gt;
: tlv: improve robustness of raw value ranges&lt;br /&gt;
: control_external: Add ability to specify TLV data.&lt;br /&gt;
===Mixer API===&lt;br /&gt;
: mixer: Remove redundant CHECK_ENUM() from snd_mixer_selem_is_enum*()&lt;br /&gt;
===PCM API===&lt;br /&gt;
: PCM: plug: Move fast_ops copy after slave configuration.&lt;br /&gt;
: PCM: Allow to run older version of extplug plugin&lt;br /&gt;
: pcm_dsnoop: comment fall-through in next &amp;quot;case&amp;quot;&lt;br /&gt;
: pcm: add missing &amp;quot;break&amp;quot; in &amp;quot;switch&amp;quot;&lt;br /&gt;
: doc: Fix typo in PCM formats&lt;br /&gt;
===Sequencer API===&lt;br /&gt;
: seqmid - more descriptions on snd_seq_parse_address() behavior&lt;br /&gt;
===Use Case Manager API===&lt;br /&gt;
: ucm: Add const to execute_cset() argument&lt;br /&gt;
: ucm: Improve cset command parsing&lt;br /&gt;
: ucm: Return NULL from get_list0() and get_list20() in case of empty lists.&lt;br /&gt;
: ucm: Add missing pthread.h include&lt;br /&gt;
: build: Fallback to alphasort() if versionsort() isn't available&lt;br /&gt;
: ucm: Handle repeat device and modifier enables/disables&lt;br /&gt;
===Configuration===&lt;br /&gt;
: build: Fallback to alphasort() if versionsort() isn't available&lt;br /&gt;
: conf: Add more USB devices to S/PDIF blacklist&lt;br /&gt;
: Fix invalid long long format specifier&lt;br /&gt;
: alsa-lib conf: Add two more USB devices to iec958 blacklist&lt;br /&gt;
: alsa-lib conf: block S/PDIF access for Sennheiser USB headset&lt;br /&gt;
: USB-Audio: Fixup card name for Logitech web camera&lt;br /&gt;
: USB-Audio: Blacklist iec958 for some USB devices&lt;br /&gt;
: conf/pcm: Add support for Echo3G devices. Thanks to unimatrix.&lt;br /&gt;
===External Control Plugin SDK===&lt;br /&gt;
: Fix the binary compatibility of ext-ctl plugin with protocol 1.0.0&lt;br /&gt;
: control_external: Add ability to specify TLV data.&lt;br /&gt;
===Test/Example code===&lt;br /&gt;
: test/latency.c: Fix string argument to getopt_long, so now it handles -E and -B&lt;br /&gt;
: Fix invalid long long format specifier&lt;br /&gt;
===Utils===&lt;br /&gt;
: build: Disable another compile chack with --disable-alsatest&lt;br /&gt;
==alsa-utils==&lt;br /&gt;
===Core===&lt;br /&gt;
: Release v1.0.26&lt;br /&gt;
: build: Don't call AC_CHECK_FUNC with --disable-alsatest&lt;br /&gt;
: configure.in: use AS_HELP_STRING everywhere&lt;br /&gt;
: configure.in: look for ncurses pkg-config first&lt;br /&gt;
: Trivial fixes in INSTALL file&lt;br /&gt;
===ALSA Control (alsactl)===&lt;br /&gt;
: alsactl: Add reference to alsactl_init(7) in alsactl man page&lt;br /&gt;
: alsactl: Read only *.conf files when a directory is passed via INCLUDE&lt;br /&gt;
: alsactl: Do not access other cards than specified for init&lt;br /&gt;
===alsaloop===&lt;br /&gt;
: alsaloop: fix the avail_min setup&lt;br /&gt;
: alsaloop: Improve xrun_sync - fill missing playback samples&lt;br /&gt;
===alsamixer===&lt;br /&gt;
: amixer, alsamixer: Add description of volume-mapping&lt;br /&gt;
===amixer===&lt;br /&gt;
: amixer, alsamixer: Add description of volume-mapping&lt;br /&gt;
: amixer: Add the support for mapped volumes like alsamixer&lt;br /&gt;
===aplay/arecord===&lt;br /&gt;
: aplay: Use open() instead of open64()&lt;br /&gt;
: aplay: Fix signal.h include&lt;br /&gt;
: aplay: print vu-meter to stderr, not stdout&lt;br /&gt;
: aplay/arecord: option to treat any xrun as fatal&lt;br /&gt;
: aplay - option to dump HW parameters&lt;br /&gt;
: Fix the examples in aplay.1&lt;br /&gt;
===aseqnet===&lt;br /&gt;
: aseqnet: Remove obsoleted .LO entry from man page&lt;br /&gt;
===cvscompile===&lt;br /&gt;
: Remove the cvscompile file&lt;br /&gt;
==alsa-tools==&lt;br /&gt;
===Core===&lt;br /&gt;
: Release v1.0.26&lt;br /&gt;
: Import hda-verb 0.4 to alsa-tools repo&lt;br /&gt;
: hdajackretask: Add new program for easy retask of hda pin nodes&lt;br /&gt;
===HDA Jack Retask===&lt;br /&gt;
: hdajackretask: Use autotools&lt;br /&gt;
: hdajackretask: Add new program for easy retask of hda pin nodes&lt;br /&gt;
===hda-verb===&lt;br /&gt;
: hda-verb: Don't include sys/io.h for PPC&lt;br /&gt;
: hda-verb: Add missing MYNAME definition for packaging&lt;br /&gt;
: Convert hda-verb to use automake&lt;br /&gt;
: Import hda-verb 0.4 to alsa-tools repo&lt;br /&gt;
===hwmixvolume===&lt;br /&gt;
: alsa-tools: hwmixvolume - update README for au88x0&lt;br /&gt;
===usx2yloader===&lt;br /&gt;
: usx2yloader: make fxload work without deprecated usbfs&lt;br /&gt;
==alsa-plugins==&lt;br /&gt;
===Core===&lt;br /&gt;
: Release v1.0.26&lt;br /&gt;
===PulseAudio -&amp;amp;gt; ALSA plugin===&lt;br /&gt;
: pulse: Support 24-bit formats&lt;br /&gt;
===USB stream plugin===&lt;br /&gt;
: usb_stream: Fix build with glibc 2.16&lt;br /&gt;
==alsa-python==&lt;br /&gt;
===Core===&lt;br /&gt;
: Release v1.0.26&lt;br /&gt;
===Test python scripts===&lt;br /&gt;
: Fix pyalsa tests for new function names&lt;br /&gt;
===pyalsa.alsamixer module===&lt;br /&gt;
: Fix get_volume_array() for mono channels&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/Changes_v1.0.25_v1.0.26</id>
		<title>Changes v1.0.25 v1.0.26</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/Changes_v1.0.25_v1.0.26"/>
				<updated>2012-09-06T08:40:26Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
[[Detailed changes v1.0.25 v1.0.26]]&lt;br /&gt;
=Changelog between 1.0.25 and 1.0.26 releases=&lt;br /&gt;
==alsa-lib==&lt;br /&gt;
===Core===&lt;br /&gt;
: Release v1.0.26&lt;br /&gt;
===Control API===&lt;br /&gt;
: ucm: Improve cset command parsing&lt;br /&gt;
: control: Use strcpy() instead of stpcpy()&lt;br /&gt;
: hctl: Remove a useless assert&lt;br /&gt;
: Fix the binary compatibility of ext-ctl plugin with protocol 1.0.0&lt;br /&gt;
: tlv: improve robustness of raw value ranges&lt;br /&gt;
: control_external: Add ability to specify TLV data.&lt;br /&gt;
===Mixer API===&lt;br /&gt;
: mixer: Remove redundant CHECK_ENUM() from snd_mixer_selem_is_enum*()&lt;br /&gt;
===PCM API===&lt;br /&gt;
: PCM: plug: Move fast_ops copy after slave configuration.&lt;br /&gt;
: PCM: Allow to run older version of extplug plugin&lt;br /&gt;
: pcm_dsnoop: comment fall-through in next &amp;quot;case&amp;quot;&lt;br /&gt;
: pcm: add missing &amp;quot;break&amp;quot; in &amp;quot;switch&amp;quot;&lt;br /&gt;
: doc: Fix typo in PCM formats&lt;br /&gt;
===Sequencer API===&lt;br /&gt;
: seqmid - more descriptions on snd_seq_parse_address() behavior&lt;br /&gt;
===Use Case Manager API===&lt;br /&gt;
: ucm: Add const to execute_cset() argument&lt;br /&gt;
: ucm: Improve cset command parsing&lt;br /&gt;
: ucm: Return NULL from get_list0() and get_list20() in case of empty lists.&lt;br /&gt;
: ucm: Add missing pthread.h include&lt;br /&gt;
: build: Fallback to alphasort() if versionsort() isn't available&lt;br /&gt;
: ucm: Handle repeat device and modifier enables/disables&lt;br /&gt;
===Configuration===&lt;br /&gt;
: build: Fallback to alphasort() if versionsort() isn't available&lt;br /&gt;
: conf: Add more USB devices to S/PDIF blacklist&lt;br /&gt;
: Fix invalid long long format specifier&lt;br /&gt;
: alsa-lib conf: Add two more USB devices to iec958 blacklist&lt;br /&gt;
: alsa-lib conf: block S/PDIF access for Sennheiser USB headset&lt;br /&gt;
: USB-Audio: Fixup card name for Logitech web camera&lt;br /&gt;
: USB-Audio: Blacklist iec958 for some USB devices&lt;br /&gt;
: conf/pcm: Add support for Echo3G devices. Thanks to unimatrix.&lt;br /&gt;
===External Control Plugin SDK===&lt;br /&gt;
: Fix the binary compatibility of ext-ctl plugin with protocol 1.0.0&lt;br /&gt;
: control_external: Add ability to specify TLV data.&lt;br /&gt;
===Test/Example code===&lt;br /&gt;
: test/latency.c: Fix string argument to getopt_long, so now it handles -E and -B&lt;br /&gt;
: Fix invalid long long format specifier&lt;br /&gt;
===Utils===&lt;br /&gt;
: build: Disable another compile chack with --disable-alsatest&lt;br /&gt;
==alsa-utils==&lt;br /&gt;
===Core===&lt;br /&gt;
: Release v1.0.26&lt;br /&gt;
: build: Don't call AC_CHECK_FUNC with --disable-alsatest&lt;br /&gt;
: configure.in: use AS_HELP_STRING everywhere&lt;br /&gt;
: configure.in: look for ncurses pkg-config first&lt;br /&gt;
: Trivial fixes in INSTALL file&lt;br /&gt;
===ALSA Control (alsactl)===&lt;br /&gt;
: alsactl: Add reference to alsactl_init(7) in alsactl man page&lt;br /&gt;
: alsactl: Read only *.conf files when a directory is passed via INCLUDE&lt;br /&gt;
: alsactl: Do not access other cards than specified for init&lt;br /&gt;
===alsaloop===&lt;br /&gt;
: alsaloop: fix the avail_min setup&lt;br /&gt;
: alsaloop: Improve xrun_sync - fill missing playback samples&lt;br /&gt;
===alsamixer===&lt;br /&gt;
: amixer, alsamixer: Add description of volume-mapping&lt;br /&gt;
===amixer===&lt;br /&gt;
: amixer, alsamixer: Add description of volume-mapping&lt;br /&gt;
: amixer: Add the support for mapped volumes like alsamixer&lt;br /&gt;
===aplay/arecord===&lt;br /&gt;
: aplay: Use open() instead of open64()&lt;br /&gt;
: aplay: Fix signal.h include&lt;br /&gt;
: aplay: print vu-meter to stderr, not stdout&lt;br /&gt;
: aplay/arecord: option to treat any xrun as fatal&lt;br /&gt;
: aplay - option to dump HW parameters&lt;br /&gt;
: Fix the examples in aplay.1&lt;br /&gt;
===aseqnet===&lt;br /&gt;
: aseqnet: Remove obsoleted .LO entry from man page&lt;br /&gt;
===cvscompile===&lt;br /&gt;
: Remove the cvscompile file&lt;br /&gt;
==alsa-tools==&lt;br /&gt;
===Core===&lt;br /&gt;
: Release v1.0.26&lt;br /&gt;
: Import hda-verb 0.4 to alsa-tools repo&lt;br /&gt;
: hdajackretask: Add new program for easy retask of hda pin nodes&lt;br /&gt;
===HDA Jack Retask===&lt;br /&gt;
: hdajackretask: Use autotools&lt;br /&gt;
: hdajackretask: Add new program for easy retask of hda pin nodes&lt;br /&gt;
===hda-verb===&lt;br /&gt;
: hda-verb: Don't include sys/io.h for PPC&lt;br /&gt;
: hda-verb: Add missing MYNAME definition for packaging&lt;br /&gt;
: Convert hda-verb to use automake&lt;br /&gt;
: Import hda-verb 0.4 to alsa-tools repo&lt;br /&gt;
===hwmixvolume===&lt;br /&gt;
: alsa-tools: hwmixvolume - update README for au88x0&lt;br /&gt;
===usx2yloader===&lt;br /&gt;
: usx2yloader: make fxload work without deprecated usbfs&lt;br /&gt;
==alsa-plugins==&lt;br /&gt;
===Core===&lt;br /&gt;
: Release v1.0.26&lt;br /&gt;
===PulseAudio -&amp;amp;gt; ALSA plugin===&lt;br /&gt;
: pulse: Support 24-bit formats&lt;br /&gt;
===USB stream plugin===&lt;br /&gt;
: usb_stream: Fix build with glibc 2.16&lt;br /&gt;
==alsa-python==&lt;br /&gt;
===Core===&lt;br /&gt;
: Release v1.0.26&lt;br /&gt;
===Test python scripts===&lt;br /&gt;
: Fix pyalsa tests for new function names&lt;br /&gt;
===pyalsa.alsamixer module===&lt;br /&gt;
: Fix get_volume_array() for mono channels&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/GIT_Server</id>
		<title>GIT Server</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/GIT_Server"/>
				<updated>2012-09-05T12:57:45Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==ALSA Repositories==&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.git&lt;br /&gt;
: contains compatibility and build code for older 2.6 kernels with mirrored latest kernel code&lt;br /&gt;
; alsa-kernel.git&lt;br /&gt;
: contains linux 2.6 kernel tree&lt;br /&gt;
&lt;br /&gt;
; alsa-kprivate.git&lt;br /&gt;
: contains linux 2.6 kernel tree - for private branches for alsa developers&lt;br /&gt;
&lt;br /&gt;
; alsa-lib.git&lt;br /&gt;
: library&lt;br /&gt;
; alsa-utils.git;&lt;br /&gt;
: utilities&lt;br /&gt;
; alsa-firmware.git&lt;br /&gt;
: firmware&lt;br /&gt;
; alsa-tools.git&lt;br /&gt;
: tools&lt;br /&gt;
; alsa-plugins.git&lt;br /&gt;
: plugins&lt;br /&gt;
; alsa-oss.git&lt;br /&gt;
: oss compatibility&lt;br /&gt;
; alsa-python.git&lt;br /&gt;
: official python binding&lt;br /&gt;
; alsa-ucm-conf.git&lt;br /&gt;
: ALSA Use-Case-Manager configuration library&lt;br /&gt;
; tinycompress.git&lt;br /&gt;
: Compressed formats support library&lt;br /&gt;
&lt;br /&gt;
; alsa.git&lt;br /&gt;
: ALSA service repo (misc files)&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.nomirror.git&lt;br /&gt;
: old ALSA driver repository without the mirrored kernel code&lt;br /&gt;
; alsa-kmirror.git&lt;br /&gt;
: alsa kernel mirror tree for continuous development (contains ALSA parts from alsa-kernel.git tree)&lt;br /&gt;
&lt;br /&gt;
==Anonymous access==&lt;br /&gt;
&lt;br /&gt;
===Read only GIT server===&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.git alsa-driver&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kprivate.git alsa-kprivate&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-lib.git alsa-lib&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-utils.git alsa-utils&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-firmware.git alsa-firmware&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-tools.git alsa-tools&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-plugins.git alsa-plugins&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-oss.git alsa-oss&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-python.git alsa-python&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-ucm-conf.git alsa-ucm-conf&lt;br /&gt;
: git clone git://git.alsa-project.org/tinycompress.git tinycompress&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa.git alsa&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.nomirror.git alsa&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
===Web interface===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/?p=tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
===HTTP access===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/http/tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
==For developers - kernel drivers==&lt;br /&gt;
&lt;br /&gt;
===Common rules===&lt;br /&gt;
&lt;br /&gt;
: 1) be very very very carefull when you use '--force' for 'git push', you can broke whole repository, you should notify other developers on alsa-devel mailing list that you will do this change for 'master' branch&lt;br /&gt;
: 2) valid 'Signed-off-by:' line must be in the commit text&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kernel.git===&lt;br /&gt;
&lt;br /&gt;
: 1) subject (first commit text line) must start with '[ALSA] ' or 'ALSA: ' or '[sound] ' or 'sound: '&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kprivate.git===&lt;br /&gt;
&lt;br /&gt;
No rules. Just do not overwrite branches created by someone else. The 'master' branch is equal to linux-2.6 official tree from &lt;br /&gt;
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git (do sync if necessary):&lt;br /&gt;
&lt;br /&gt;
  git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
  git checkout master&lt;br /&gt;
  git pull linux-2.6 master&lt;br /&gt;
  git push --tags origin master:refs/heads/master&lt;br /&gt;
&lt;br /&gt;
===Syncing===&lt;br /&gt;
&lt;br /&gt;
Note that 'master' branch in alsa-driver.git is synced with alsa-kernel.git 'master' branch manually by [[User:Perex]]. Here are some useful commands:&lt;br /&gt;
&lt;br /&gt;
 # for the alsa-driver tree&lt;br /&gt;
 git log -- mirror                       # show the mirrored kernel changes&lt;br /&gt;
 x=(*) ; git log -- ${x[@]//mirror}      # show the build code changes&lt;br /&gt;
&lt;br /&gt;
 # cross cherry picks between Linux kernel and alsa-driver trees&lt;br /&gt;
 git format-patch &amp;lt;what_you_want&amp;gt;&lt;br /&gt;
 git am --root=mirror &amp;lt;what_you_want&amp;gt;	# for the kernel -&amp;gt; alsa-driver&lt;br /&gt;
 git am -p2 &amp;lt;what_you_want&amp;gt;		# for the alsa-driver -&amp;gt; kernel&lt;br /&gt;
&lt;br /&gt;
===Clone repositories===&lt;br /&gt;
&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-driver.git alsa-driver&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
To show all branches (includes remote ones):&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To make a remote branch local:&lt;br /&gt;
&lt;br /&gt;
 git checkout -b for-linus origin/for-linus&lt;br /&gt;
 git checkout -b linux-2.6 origin/linux-2.6&lt;br /&gt;
&lt;br /&gt;
===Update and rebase using Linus's 2.6 kernel tree===&lt;br /&gt;
&lt;br /&gt;
Add remote URL:&lt;br /&gt;
&lt;br /&gt;
 git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
&lt;br /&gt;
Checkout linux-2.6 branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout linux-2.6&lt;br /&gt;
&lt;br /&gt;
Pull Linus's 2.6 changes:&lt;br /&gt;
&lt;br /&gt;
 git pull linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
Rebase our main ALSA development master branch with linux-2.6:&lt;br /&gt;
&lt;br /&gt;
 git rebase linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
===Push branch changes to ALSA GIT repository===&lt;br /&gt;
&lt;br /&gt;
 git push --tags origin master:refs/heads/master&lt;br /&gt;
 git push --tags origin linux-2.6:refs/heads/linux-2.6&lt;br /&gt;
 git push --tags origin for-linus:refs/heads/for-linus&lt;br /&gt;
&lt;br /&gt;
Note: Especially after 'git rebase' the repository on server is not consistent with local repository (remote ref is not ancestor of the local ref for master branch), so you have to use --force parameter for 'git push' command. Note that this might be dangerous - please, ask Jaroslav Kysela &amp;lt; perex at perex . cz &amp;gt; if you can do this for branch 'master'.&lt;br /&gt;
&lt;br /&gt;
===Branches===&lt;br /&gt;
&lt;br /&gt;
; master&lt;br /&gt;
: this branch is for main development, managed by Jaroslav Kysela, it is rebased before ALSA releases&lt;br /&gt;
: the contents is synced to alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
; linux-next&lt;br /&gt;
: this branch is for linux next testing tree (originaly maintaned by Andrew Morton), rebased &lt;br /&gt;
&lt;br /&gt;
; for-linus&lt;br /&gt;
: this branch is for mainstream tree (for Linus Torvalds), just temporary branch&lt;br /&gt;
&lt;br /&gt;
; linux-2.6&lt;br /&gt;
: this is official linux 2.6 mainstream tree&lt;br /&gt;
&lt;br /&gt;
; stable-2.6.&amp;lt;number&amp;gt;&lt;br /&gt;
: patches for stable 2.6 kernels&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
&lt;br /&gt;
Private tags are not allowed. Only branches identifying ALSA version (alsa-driver.git) or official linux kernel version (alsa-kernel.git) are allowed.&lt;br /&gt;
&lt;br /&gt;
===Maintenance===&lt;br /&gt;
&lt;br /&gt;
GIT server is maintaned by [[User:Perex]].&lt;br /&gt;
&lt;br /&gt;
==Occasional Developers==&lt;br /&gt;
This section is for developers without write access to ALSA git. i.e., who will clone repos and send in patches&lt;br /&gt;
&lt;br /&gt;
===clone the repository===&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
if you live behind a firewall that blocks the git protocol, you can do this instead:&lt;br /&gt;
&lt;br /&gt;
 git clone http://git.alsa-project.org/http/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
if you like do only changes in code in alsa-kmirror, please, use alsa-kernel repository&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
but we accept patches in both forms&lt;br /&gt;
&lt;br /&gt;
===configure git===&lt;br /&gt;
Set your email address correctly otherwise commits get spurious email address for Author and Commiter&lt;br /&gt;
 git config --add user.email me@domain.com&lt;br /&gt;
&lt;br /&gt;
Make sure it knows how to send email (for patches)&lt;br /&gt;
 git config --add sendemail.smtpserver smtp.domain.com&lt;br /&gt;
&lt;br /&gt;
===save current===&lt;br /&gt;
in case you want to roll back&lt;br /&gt;
 git branch save&lt;br /&gt;
&lt;br /&gt;
===do your work===&lt;br /&gt;
edit, compile, test, sweat&lt;br /&gt;
&lt;br /&gt;
If it didn't work out and you want to get back to the old tree&lt;br /&gt;
 git reset --hard save&lt;br /&gt;
&lt;br /&gt;
===generate patches===&lt;br /&gt;
Want to get patch against latest, so rebase &lt;br /&gt;
 git rebase origin/master&lt;br /&gt;
 git diff remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
Then do this to generate the patchset&lt;br /&gt;
 git format-patch -s -n -p --subject-prefix=&amp;quot;PATCH - my module&amp;quot; remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
===check the patches===&lt;br /&gt;
 /lib/modules/`uname -r`/build/scripts/checkpatch.pl --no-tree *.patch&lt;br /&gt;
&lt;br /&gt;
===sending the patches===&lt;br /&gt;
&lt;br /&gt;
 git send-email --from=me --to=patch@alsa-project.org --cc=alsa-devel@alsa-project.org  000*.patch&lt;br /&gt;
&lt;br /&gt;
===get up to date===&lt;br /&gt;
For both alsa-kmirror and alsa-driver&lt;br /&gt;
 git pull&lt;br /&gt;
&lt;br /&gt;
Sometimes you can just make and things will be fine. However, when there have been changes to the build system etc, its best to do a make clean; ./gitcompile to get the tree properly up to date.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/GIT_Server</id>
		<title>GIT Server</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/GIT_Server"/>
				<updated>2012-09-03T08:18:34Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==ALSA Repositories==&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.git&lt;br /&gt;
: contains compatibility and build code for older 2.6 kernels with mirrored latest kernel code&lt;br /&gt;
; alsa-kernel.git&lt;br /&gt;
: contains linux 2.6 kernel tree&lt;br /&gt;
&lt;br /&gt;
; alsa-kprivate.git&lt;br /&gt;
: contains linux 2.6 kernel tree - for private branches for alsa developers&lt;br /&gt;
&lt;br /&gt;
; alsa-lib.git&lt;br /&gt;
: library&lt;br /&gt;
; alsa-utils.git;&lt;br /&gt;
: utilities&lt;br /&gt;
; alsa-firmware.git&lt;br /&gt;
: firmware&lt;br /&gt;
; alsa-tools.git&lt;br /&gt;
: tools&lt;br /&gt;
; alsa-plugins.git&lt;br /&gt;
: plugins&lt;br /&gt;
; alsa-oss.git&lt;br /&gt;
: oss compatibility&lt;br /&gt;
; alsa-python.git&lt;br /&gt;
: official python binding&lt;br /&gt;
; alsa-ucm-conf.git&lt;br /&gt;
: ALSA Use-Case-Manager configuration library&lt;br /&gt;
; tinycompress.git&lt;br /&gt;
: Compressed formats support library&lt;br /&gt;
&lt;br /&gt;
; alsa.git&lt;br /&gt;
: ALSA service repo (misc files)&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.nomirror.git&lt;br /&gt;
: old ALSA driver repository without the mirrored kernel code&lt;br /&gt;
; alsa-kmirror.git&lt;br /&gt;
: alsa kernel mirror tree for continuous development (contains ALSA parts from alsa-kernel.git tree)&lt;br /&gt;
&lt;br /&gt;
==Anonymous access==&lt;br /&gt;
&lt;br /&gt;
===Read only GIT server===&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.git alsa-driver&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kprivate.git alsa-kprivate&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-lib.git alsa-lib&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-utils.git alsa-utils&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-firmware.git alsa-firmware&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-tools.git alsa-tools&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-plugins.git alsa-plugins&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-oss.git alsa-oss&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-python.git alsa-python&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-ucm-conf.git alsa-ucm-conf&lt;br /&gt;
: git clone git://git.alsa-project.org/tinycompress.git tinycompress&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa.git alsa&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.nomirror.git alsa&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
===Web interface===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/?p=tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
===HTTP access===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kernel.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/http/tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.nomirror.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
==For developers - kernel drivers==&lt;br /&gt;
&lt;br /&gt;
===Common rules===&lt;br /&gt;
&lt;br /&gt;
: 1) be very very very carefull when you use '--force' for 'git push', you can broke whole repository, you should notify other developers on alsa-devel mailing list that you will do this change for 'master' branch&lt;br /&gt;
: 2) valid 'Signed-off-by:' line must be in the commit text&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kernel.git===&lt;br /&gt;
&lt;br /&gt;
: 1) subject (first commit text line) must start with '[ALSA] ' or 'ALSA: ' or '[sound] ' or 'sound: '&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kprivate.git===&lt;br /&gt;
&lt;br /&gt;
No rules. Just do not overwrite branches created by someone else. The 'master' branch is equal to linux-2.6 official tree from &lt;br /&gt;
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git (do sync if necessary):&lt;br /&gt;
&lt;br /&gt;
  git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
  git checkout master&lt;br /&gt;
  git pull linux-2.6 master&lt;br /&gt;
  git push --tags origin master:refs/heads/master&lt;br /&gt;
&lt;br /&gt;
===Syncing===&lt;br /&gt;
&lt;br /&gt;
Note that 'master' branch in alsa-driver.git is synced with alsa-kernel.git 'master' branch manually by [[User:Perex]].&lt;br /&gt;
&lt;br /&gt;
===Clone repositories===&lt;br /&gt;
&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-driver.git alsa-driver&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
To show all branches (includes remote ones):&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To make a remote branch local:&lt;br /&gt;
&lt;br /&gt;
 git checkout -b for-linus origin/for-linus&lt;br /&gt;
 git checkout -b linux-2.6 origin/linux-2.6&lt;br /&gt;
&lt;br /&gt;
===Update and rebase using Linus's 2.6 kernel tree===&lt;br /&gt;
&lt;br /&gt;
Add remote URL:&lt;br /&gt;
&lt;br /&gt;
 git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
&lt;br /&gt;
Checkout linux-2.6 branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout linux-2.6&lt;br /&gt;
&lt;br /&gt;
Pull Linus's 2.6 changes:&lt;br /&gt;
&lt;br /&gt;
 git pull linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
Rebase our main ALSA development master branch with linux-2.6:&lt;br /&gt;
&lt;br /&gt;
 git rebase linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
===Push branch changes to ALSA GIT repository===&lt;br /&gt;
&lt;br /&gt;
 git push --tags origin master:refs/heads/master&lt;br /&gt;
 git push --tags origin linux-2.6:refs/heads/linux-2.6&lt;br /&gt;
 git push --tags origin for-linus:refs/heads/for-linus&lt;br /&gt;
&lt;br /&gt;
Note: Especially after 'git rebase' the repository on server is not consistent with local repository (remote ref is not ancestor of the local ref for master branch), so you have to use --force parameter for 'git push' command. Note that this might be dangerous - please, ask Jaroslav Kysela &amp;lt; perex at perex . cz &amp;gt; if you can do this for branch 'master'.&lt;br /&gt;
&lt;br /&gt;
===Branches===&lt;br /&gt;
&lt;br /&gt;
; master&lt;br /&gt;
: this branch is for main development, managed by Jaroslav Kysela, it is rebased before ALSA releases&lt;br /&gt;
: the contents is synced to alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
; linux-next&lt;br /&gt;
: this branch is for linux next testing tree (originaly maintaned by Andrew Morton), rebased &lt;br /&gt;
&lt;br /&gt;
; for-linus&lt;br /&gt;
: this branch is for mainstream tree (for Linus Torvalds), just temporary branch&lt;br /&gt;
&lt;br /&gt;
; linux-2.6&lt;br /&gt;
: this is official linux 2.6 mainstream tree&lt;br /&gt;
&lt;br /&gt;
; stable-2.6.&amp;lt;number&amp;gt;&lt;br /&gt;
: patches for stable 2.6 kernels&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
&lt;br /&gt;
Private tags are not allowed. Only branches identifying ALSA version (alsa-driver.git) or official linux kernel version (alsa-kernel.git) are allowed.&lt;br /&gt;
&lt;br /&gt;
===Maintenance===&lt;br /&gt;
&lt;br /&gt;
GIT server is maintaned by [[User:Perex]].&lt;br /&gt;
&lt;br /&gt;
==Occasional Developers==&lt;br /&gt;
This section is for developers without write access to ALSA git. i.e., who will clone repos and send in patches&lt;br /&gt;
&lt;br /&gt;
===clone the repository===&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
if you live behind a firewall that blocks the git protocol, you can do this instead:&lt;br /&gt;
&lt;br /&gt;
 git clone http://git.alsa-project.org/http/alsa-driver.git alsa-driver &lt;br /&gt;
&lt;br /&gt;
if you like do only changes in code in alsa-kmirror, please, use alsa-kernel repository&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
but we accept patches in both forms&lt;br /&gt;
&lt;br /&gt;
===configure git===&lt;br /&gt;
Set your email address correctly otherwise commits get spurious email address for Author and Commiter&lt;br /&gt;
 git config --add user.email me@domain.com&lt;br /&gt;
&lt;br /&gt;
Make sure it knows how to send email (for patches)&lt;br /&gt;
 git config --add sendemail.smtpserver smtp.domain.com&lt;br /&gt;
&lt;br /&gt;
===save current===&lt;br /&gt;
in case you want to roll back&lt;br /&gt;
 git branch save&lt;br /&gt;
&lt;br /&gt;
===do your work===&lt;br /&gt;
edit, compile, test, sweat&lt;br /&gt;
&lt;br /&gt;
If it didn't work out and you want to get back to the old tree&lt;br /&gt;
 git reset --hard save&lt;br /&gt;
&lt;br /&gt;
===generate patches===&lt;br /&gt;
Want to get patch against latest, so rebase &lt;br /&gt;
 git rebase origin/master&lt;br /&gt;
 git diff remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
Then do this to generate the patchset&lt;br /&gt;
 git format-patch -s -n -p --subject-prefix=&amp;quot;PATCH - my module&amp;quot; remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
===check the patches===&lt;br /&gt;
 /lib/modules/`uname -r`/build/scripts/checkpatch.pl --no-tree *.patch&lt;br /&gt;
&lt;br /&gt;
===sending the patches===&lt;br /&gt;
&lt;br /&gt;
 git send-email --from=me --to=patch@alsa-project.org --cc=alsa-devel@alsa-project.org  000*.patch&lt;br /&gt;
&lt;br /&gt;
===get up to date===&lt;br /&gt;
For both alsa-kmirror and alsa-driver&lt;br /&gt;
 git pull&lt;br /&gt;
&lt;br /&gt;
Sometimes you can just make and things will be fine. However, when there have been changes to the build system etc, its best to do a make clean; ./gitcompile to get the tree properly up to date.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/MediaWiki:Common.css</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/MediaWiki:Common.css"/>
				<updated>2012-07-17T08:42:42Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: Created page with &amp;quot;/* CSS placed here will be applied to all skins */ .page-Main_Page h1.firstHeading { display: none; }&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
.page-Main_Page h1.firstHeading { display: none; }&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/User:Perex</id>
		<title>User:Perex</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/User:Perex"/>
				<updated>2012-07-16T15:26:01Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Jaroslav Kysela, the ALSA team leader&lt;br /&gt;
&lt;br /&gt;
Links for my quick orientation:&lt;br /&gt;
&lt;br /&gt;
* [{{fullurl:Template:ALSA download version|action=edit}} Edit ALSA download version template]&lt;br /&gt;
* [[Main Page News]]&lt;br /&gt;
&lt;br /&gt;
Something for others:&lt;br /&gt;
&lt;br /&gt;
* [[Perex-InterviewWithDanielJames]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== TODO list ==&lt;br /&gt;
&lt;br /&gt;
; driver&lt;br /&gt;
: dB ranges - define the 0dB reference points, determine how we can mesure more close dB scale&lt;br /&gt;
: unify and define exact meaning for ALSA Control Elements&lt;br /&gt;
: expose mixer control routing to the user space&lt;br /&gt;
: modify Mic Boost from switch to value range (0-1) with a dB representation&lt;br /&gt;
: HDA driver - create a universal framework to allow configure the driver from the user space&lt;br /&gt;
: PCM - rethink period meaning, expose block writes to user space&lt;br /&gt;
&lt;br /&gt;
; library&lt;br /&gt;
: finish control/mixer API simplification&lt;br /&gt;
: add mapping for PCM stream -&amp;gt; mixer elements&lt;br /&gt;
&lt;br /&gt;
; hda-analyzer&lt;br /&gt;
: use ALSA control API to correlate direct hw I/O with ALSA I/O&lt;br /&gt;
: codec graph tool&lt;br /&gt;
&lt;br /&gt;
; ALSA server / web services&lt;br /&gt;
: finish git sync and merge tool&lt;br /&gt;
: update git http interface to latest version&lt;br /&gt;
&lt;br /&gt;
== udev ==&lt;br /&gt;
&lt;br /&gt;
  udevadm info -a -p $(udevadm info -q path -n /dev/snd/controlC0)&lt;br /&gt;
&lt;br /&gt;
  SUBSYSTEM!=&amp;quot;sound&amp;quot;, GOTO=&amp;quot;sound_end&amp;quot;&lt;br /&gt;
  ACTION!=&amp;quot;add|change&amp;quot;, GOTO=&amp;quot;sound_end&amp;quot;&lt;br /&gt;
  ATTRS{idVendor}==&amp;quot;15ca&amp;quot;,ATTRS{idProduct}==&amp;quot;0101&amp;quot;,\&lt;br /&gt;
        ATTRS{busnum}==&amp;quot;1&amp;quot;,ATTRS{devpath}==&amp;quot;1.1&amp;quot;,\&lt;br /&gt;
        ATTR{../id}=&amp;quot;Test&amp;quot;&lt;br /&gt;
  LABEL=&amp;quot;sound_end&amp;quot;&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/User:Perex</id>
		<title>User:Perex</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/User:Perex"/>
				<updated>2012-07-16T15:23:33Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Jaroslav Kysela, the ALSA team leader&lt;br /&gt;
&lt;br /&gt;
Links for my quick orientation:&lt;br /&gt;
&lt;br /&gt;
* [{{fullurl:Template:ALSA download version|action=edit}} Edit ALSA download version template]&lt;br /&gt;
* [[Main Page News]]&lt;br /&gt;
&lt;br /&gt;
Something for others:&lt;br /&gt;
&lt;br /&gt;
* [[Perex-InterviewWithDanielJames]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== TODO list ==&lt;br /&gt;
&lt;br /&gt;
; driver&lt;br /&gt;
: dB ranges - define the 0dB reference points, determine how we can mesure more close dB scale&lt;br /&gt;
: unify and define exact meaning for ALSA Control Elements&lt;br /&gt;
: expose mixer control routing to the user space&lt;br /&gt;
: modify Mic Boost from switch to value range (0-1) with a dB representation&lt;br /&gt;
: HDA driver - create a universal framework to allow configure the driver from the user space&lt;br /&gt;
: PCM - rethink period meaning, expose block writes to user space&lt;br /&gt;
&lt;br /&gt;
; library&lt;br /&gt;
: finish control/mixer API simplification&lt;br /&gt;
: add mapping for PCM stream -&amp;gt; mixer elements&lt;br /&gt;
&lt;br /&gt;
; hda-analyzer&lt;br /&gt;
: use ALSA control API to correlate direct hw I/O with ALSA I/O&lt;br /&gt;
: codec graph tool&lt;br /&gt;
&lt;br /&gt;
; ALSA server / web services&lt;br /&gt;
: finish git sync and merge tool&lt;br /&gt;
: update git http interface to latest version&lt;br /&gt;
&lt;br /&gt;
== udev ==&lt;br /&gt;
&lt;br /&gt;
  SUBSYSTEM!=&amp;quot;sound&amp;quot;, GOTO=&amp;quot;sound_end&amp;quot;&lt;br /&gt;
  ACTION!=&amp;quot;add|change&amp;quot;, GOTO=&amp;quot;sound_end&amp;quot;&lt;br /&gt;
  ATTRS{idVendor}==&amp;quot;15ca&amp;quot;,ATTRS{idProduct}==&amp;quot;0101&amp;quot;,\&lt;br /&gt;
        ATTRS{busnum}==&amp;quot;1&amp;quot;,ATTRS{devpath}==&amp;quot;1.1&amp;quot;,\&lt;br /&gt;
        ATTR{../id}=&amp;quot;Test&amp;quot;&lt;br /&gt;
  LABEL=&amp;quot;sound_end&amp;quot;&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/MediaWiki:Sidebar</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/MediaWiki:Sidebar"/>
				<updated>2012-07-16T13:47:02Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** mainpage|mainpage&lt;br /&gt;
** Developer_Zone|Developer Zone&lt;br /&gt;
** Download|Download...&lt;br /&gt;
** Matrix:Main|SoundCards&lt;br /&gt;
** Applications|Applications&lt;br /&gt;
** Documentation|Documentation&lt;br /&gt;
** Mailing-lists|Mailing-lists&lt;br /&gt;
** https://bugtrack.alsa-project.org/alsa-bug|Bug Tracker&lt;br /&gt;
** Help To Debug|Help to debug&lt;br /&gt;
** Links|Links&lt;br /&gt;
* wiki&lt;br /&gt;
** AlsaProject:About|About&lt;br /&gt;
** portal-url|portal&lt;br /&gt;
** currentevents-url|currentevents&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** sitesupport-url|sitesupport&lt;br /&gt;
** helppage|help&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/MediaWiki:Sidebar</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/MediaWiki:Sidebar"/>
				<updated>2012-07-16T13:46:45Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** mainpage|mainpage&lt;br /&gt;
** Developer_Zone|Developer Zone&lt;br /&gt;
** Download|.Download.&lt;br /&gt;
** Matrix:Main|SoundCards&lt;br /&gt;
** Applications|Applications&lt;br /&gt;
** Documentation|Documentation&lt;br /&gt;
** Mailing-lists|Mailing-lists&lt;br /&gt;
** https://bugtrack.alsa-project.org/alsa-bug|Bug Tracker&lt;br /&gt;
** Help To Debug|Help to debug&lt;br /&gt;
** Links|Links&lt;br /&gt;
* wiki&lt;br /&gt;
** AlsaProject:About|About&lt;br /&gt;
** portal-url|portal&lt;br /&gt;
** currentevents-url|currentevents&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** sitesupport-url|sitesupport&lt;br /&gt;
** helppage|help&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/MediaWiki:Sidebar</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/MediaWiki:Sidebar"/>
				<updated>2012-07-16T13:46:18Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** mainpage|mainpage&lt;br /&gt;
** Developer_Zone|Developer Zone&lt;br /&gt;
** Download|Download&lt;br /&gt;
** Matrix:Main|SoundCards&lt;br /&gt;
** Applications|Applications&lt;br /&gt;
** Documentation|Documentation&lt;br /&gt;
** Mailing-lists|Mailing-lists&lt;br /&gt;
** https://bugtrack.alsa-project.org/alsa-bug|Bug Tracker&lt;br /&gt;
** Help To Debug|Help to debug&lt;br /&gt;
** Links|Links&lt;br /&gt;
* wiki&lt;br /&gt;
** AlsaProject:About|About&lt;br /&gt;
** portal-url|portal&lt;br /&gt;
** currentevents-url|currentevents&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** sitesupport-url|sitesupport&lt;br /&gt;
** helppage|help&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/GIT_Server</id>
		<title>GIT Server</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/GIT_Server"/>
				<updated>2012-03-05T09:29:25Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==ALSA Repositories==&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.git&lt;br /&gt;
: contains compatibility and build code for 2.2, 2.4 and older 2.6 kernels&lt;br /&gt;
; alsa-kernel.git&lt;br /&gt;
: contains linux 2.6 kernel tree&lt;br /&gt;
; alsa-kmirror.git&lt;br /&gt;
: alsa kernel mirror tree for continuous development (contains ALSA parts from alsa-kernel.git tree)&lt;br /&gt;
&lt;br /&gt;
; alsa-kprivate.git&lt;br /&gt;
: contains linux 2.6 kernel tree - for private branches for alsa developers&lt;br /&gt;
&lt;br /&gt;
; alsa-lib.git&lt;br /&gt;
: library&lt;br /&gt;
; alsa-utils.git;&lt;br /&gt;
: utilities&lt;br /&gt;
; alsa-firmware.git&lt;br /&gt;
: firmware&lt;br /&gt;
; alsa-tools.git&lt;br /&gt;
: tools&lt;br /&gt;
; alsa-plugins.git&lt;br /&gt;
: plugins&lt;br /&gt;
; alsa-oss.git&lt;br /&gt;
: oss compatibility&lt;br /&gt;
; alsa-python.git&lt;br /&gt;
: official python binding&lt;br /&gt;
; alsa-ucm-conf.git&lt;br /&gt;
: ALSA Use-Case-Manager configuration library&lt;br /&gt;
; tinycompress.git&lt;br /&gt;
: Compressed formats support library&lt;br /&gt;
&lt;br /&gt;
; alsa.git&lt;br /&gt;
: ALSA service repo (misc files)&lt;br /&gt;
&lt;br /&gt;
==Anonymous access==&lt;br /&gt;
&lt;br /&gt;
===Read only GIT server===&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.git alsa-driver&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kprivate.git alsa-kprivate&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-lib.git alsa-lib&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-utils.git alsa-utils&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-firmware.git alsa-firmware&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-tools.git alsa-tools&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-plugins.git alsa-plugins&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-oss.git alsa-oss&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-python.git alsa-python&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-ucm-conf.git alsa-ucm-conf&lt;br /&gt;
: git clone git://git.alsa-project.org/tinycompress.git tinycompress&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa.git alsa&lt;br /&gt;
&lt;br /&gt;
===Web interface===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kernel.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/?p=tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa.git&lt;br /&gt;
&lt;br /&gt;
===HTTP access===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kernel.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/http/tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa.git&lt;br /&gt;
&lt;br /&gt;
==For developers - kernel drivers==&lt;br /&gt;
&lt;br /&gt;
===Common rules===&lt;br /&gt;
&lt;br /&gt;
: 1) be very very very carefull when you use '--force' for 'git push', you can broke whole repository, you should notify other developers on alsa-devel mailing list that you will do this change for 'master' branch&lt;br /&gt;
: 2) valid 'Signed-off-by:' line must be in the commit text&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kernel.git===&lt;br /&gt;
&lt;br /&gt;
: 1) subject (first commit text line) must start with '[ALSA] ' or 'ALSA: ' or '[sound] ' or 'sound: '&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kprivate.git===&lt;br /&gt;
&lt;br /&gt;
No rules. Just do not overwrite branches created by someone else. The 'master' branch is equal to linux-2.6 official tree from &lt;br /&gt;
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git (do sync if necessary):&lt;br /&gt;
&lt;br /&gt;
  git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
  git checkout master&lt;br /&gt;
  git pull linux-2.6 master&lt;br /&gt;
  git push --tags origin master:refs/heads/master&lt;br /&gt;
&lt;br /&gt;
===Syncing===&lt;br /&gt;
&lt;br /&gt;
Note that 'master' branch in alsa-kernel.git is synced with alsa-kmirror.git 'master' branch automatically. So if you add a patch to alsa-kernel.git, it will be merged to alsa-kmirror.git (if no problem occurs) when you initiate 'git push' to the ALSA server. It's really required to see messages from the pre-receive script when something goes wrong. The script is trying to suggest what's going wrong and try to show you a problematic code (diff).&lt;br /&gt;
&lt;br /&gt;
Pushing to 'alsa-kmirror.git' should be only done if:&lt;br /&gt;
&lt;br /&gt;
: a) you fixing a sync problem&lt;br /&gt;
: b) you are modifying a file which is out of sync (scripts directory or so)&lt;br /&gt;
&lt;br /&gt;
In all other cases, only alsa-kernel.git repository should be used.&lt;br /&gt;
&lt;br /&gt;
The pre-receive script uses all four commit identifiers Author + AuthorDate + Commit + CommitDate to pair commits between alsa-kernel.git and alsa-kmirror.git. Use this information, if you like to add some commits manually to alsa-kmirror.git tree.&lt;br /&gt;
&lt;br /&gt;
====Common problems====&lt;br /&gt;
&lt;br /&gt;
; PRE-RECEIVE repositories does not match, please, fix it&lt;br /&gt;
: The alsa-kmirror.git#mastter and alsa-kernel.git#master sources does not match. You have to do manual changes in alsa-kmirror.git repository to sync trees. A diff between alsa-kmirror.git and alsa-kernel.git is printed to stderr, so you can analyze it and do appropriate steps.&lt;br /&gt;
&lt;br /&gt;
; PRE-RECEIVE Patch failed - is it already merged?&lt;br /&gt;
: Appearently, you're trying to apply a patch which cannot be applied cleanly to alsa-kmirror.git#master. One reason might be that the patch is already applied, but the pre-receive script does not know about it. You may add commiter and commitdate to alsa-kmirror/scripts/git-ok-commits file to skip problematic commit (but only if you really verify, that this commit is already in the alsa-kmirror tree).&lt;br /&gt;
&lt;br /&gt;
===Clone repositories===&lt;br /&gt;
&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-driver.git alsa-driver&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-kernel.git alsa-kernel&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
To show all branches (includes remote ones):&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To make a remote branch local:&lt;br /&gt;
&lt;br /&gt;
 git checkout -b for-linus origin/for-linus&lt;br /&gt;
 git checkout -b linux-2.6 origin/linux-2.6&lt;br /&gt;
&lt;br /&gt;
===Update and rebase using Linus's 2.6 kernel tree===&lt;br /&gt;
&lt;br /&gt;
Add remote URL:&lt;br /&gt;
&lt;br /&gt;
 git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
&lt;br /&gt;
Checkout linux-2.6 branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout linux-2.6&lt;br /&gt;
&lt;br /&gt;
Pull Linus's 2.6 changes:&lt;br /&gt;
&lt;br /&gt;
 git pull linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
Rebase our main ALSA development master branch with linux-2.6:&lt;br /&gt;
&lt;br /&gt;
 git rebase linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
===Push branch changes to ALSA GIT repository===&lt;br /&gt;
&lt;br /&gt;
 git push --tags origin master:refs/heads/master&lt;br /&gt;
 git push --tags origin linux-2.6:refs/heads/linux-2.6&lt;br /&gt;
 git push --tags origin for-linus:refs/heads/for-linus&lt;br /&gt;
&lt;br /&gt;
Note: Especially after 'git rebase' the repository on server is not consistent with local repository (remote ref is not ancestor of the local ref for master branch), so you have to use --force parameter for 'git push' command. Note that this might be dangerous - please, ask Jaroslav Kysela &amp;lt; perex at perex . cz &amp;gt; if you can do this for branch 'master'.&lt;br /&gt;
&lt;br /&gt;
===Branches===&lt;br /&gt;
&lt;br /&gt;
; master&lt;br /&gt;
: this branch is for main development, managed by Jaroslav Kysela, it is rebased before ALSA releases&lt;br /&gt;
: the contents is synced to alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
; linux-next&lt;br /&gt;
: this branch is for linux next testing tree (originaly maintaned by Andrew Morton), rebased &lt;br /&gt;
&lt;br /&gt;
; for-linus&lt;br /&gt;
: this branch is for mainstream tree (for Linus Torvalds), just temporary branch&lt;br /&gt;
&lt;br /&gt;
; linux-2.6&lt;br /&gt;
: this is official linux 2.6 mainstream tree&lt;br /&gt;
&lt;br /&gt;
; stable-2.6.&amp;lt;number&amp;gt;&lt;br /&gt;
: patches for stable 2.6 kernels&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
&lt;br /&gt;
Private tags are not allowed. Only tags identifying ALSA version (alsa-kmirror.git and alsa-driver.git) or official linux kernel version (alsa-kernel.git) are allowed.&lt;br /&gt;
&lt;br /&gt;
===Maintenance===&lt;br /&gt;
&lt;br /&gt;
GIT server is maintaned by [[User:Perex]].&lt;br /&gt;
&lt;br /&gt;
==Occasional Developers==&lt;br /&gt;
This section is for developers without write access to ALSA git. i.e., who will clone repos and send in patches&lt;br /&gt;
&lt;br /&gt;
===clone the repository===&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-driver.git alsa-driver &lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
if you live behind a firewall that blocks the git protocol, you can do this instead:&lt;br /&gt;
&lt;br /&gt;
 git clone http://git.alsa-project.org/http/alsa-driver.git alsa-driver &lt;br /&gt;
 git clone http://git.alsa-project.org/http/alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
if you like do only changes in code in alsa-kmirror, please, use alsa-kernel repository&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
but we accept patches in both forms&lt;br /&gt;
&lt;br /&gt;
===configure git===&lt;br /&gt;
Set your email address correctly otherwise commits get spurious email address for Author and Commiter&lt;br /&gt;
 git config --add user.email me@domain.com&lt;br /&gt;
&lt;br /&gt;
Make sure it knows how to send email (for patches)&lt;br /&gt;
 git config --add sendemail.smtpserver smtp.domain.com&lt;br /&gt;
&lt;br /&gt;
===save current===&lt;br /&gt;
in case you want to roll back&lt;br /&gt;
 git-branch save&lt;br /&gt;
&lt;br /&gt;
===do your work===&lt;br /&gt;
edit, compile, test, sweat&lt;br /&gt;
&lt;br /&gt;
If it didn't work out and you want to get back to the old tree&lt;br /&gt;
 git-reset --hard save&lt;br /&gt;
&lt;br /&gt;
===generate patches===&lt;br /&gt;
Want to get patch against latest, so rebase &lt;br /&gt;
 git-rebase origin/master&lt;br /&gt;
 git-diff remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
Then do this to generate the patchset&lt;br /&gt;
 git-format-patch -s -n -p --subject-prefix=&amp;quot;PATCH - my module&amp;quot; remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
===check the patches===&lt;br /&gt;
 /lib/modules/`uname -r`/build/scripts/checkpatch.pl --no-tree *.patch&lt;br /&gt;
&lt;br /&gt;
===sending the patches===&lt;br /&gt;
&lt;br /&gt;
 git-send-email --from=me --to=patch@alsa-project.org --cc=alsa-devel@alsa-project.org  000*.patch&lt;br /&gt;
&lt;br /&gt;
===get up to date===&lt;br /&gt;
For both alsa-kmirror and alsa-driver&lt;br /&gt;
 git-pull&lt;br /&gt;
&lt;br /&gt;
Sometimes you can just make and things will be fine. However, when there have been changes to the build system etc, its best to do a make clean; ./gitcompile to get the tree properly up to date.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/GIT_Server</id>
		<title>GIT Server</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/GIT_Server"/>
				<updated>2012-03-05T09:28:58Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==ALSA Repositories==&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.git&lt;br /&gt;
: contains compatibility and build code for 2.2, 2.4 and older 2.6 kernels&lt;br /&gt;
; alsa-kernel.git&lt;br /&gt;
: contains linux 2.6 kernel tree&lt;br /&gt;
; alsa-kmirror.git&lt;br /&gt;
: alsa kernel mirror tree for continuous development (contains ALSA parts from alsa-kernel.git tree)&lt;br /&gt;
&lt;br /&gt;
; alsa-kprivate.git&lt;br /&gt;
: contains linux 2.6 kernel tree - for private branches for alsa developers&lt;br /&gt;
&lt;br /&gt;
; alsa-lib.git&lt;br /&gt;
: library&lt;br /&gt;
; alsa-utils.git;&lt;br /&gt;
: utilities&lt;br /&gt;
; alsa-firmware.git&lt;br /&gt;
: firmware&lt;br /&gt;
; alsa-tools.git&lt;br /&gt;
: tools&lt;br /&gt;
; alsa-plugins.git&lt;br /&gt;
: plugins&lt;br /&gt;
; alsa-oss.git&lt;br /&gt;
: oss compatibility&lt;br /&gt;
; alsa-python.git&lt;br /&gt;
: official python binding&lt;br /&gt;
; alsa-ucm-conf.git&lt;br /&gt;
: ALSA Use-Case-Manager configuration library&lt;br /&gt;
; tinycompress.git&lt;br /&gt;
: Compressed formats support library&lt;br /&gt;
&lt;br /&gt;
; alsa.git&lt;br /&gt;
: ALSA service repo (misc files)&lt;br /&gt;
&lt;br /&gt;
==Anonymous access==&lt;br /&gt;
&lt;br /&gt;
===Read only GIT server===&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.git alsa-driver&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kprivate.git alsa-kprivate&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-lib.git alsa-lib&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-utils.git alsa-utils&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-firmware.git alsa-firmware&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-tools.git alsa-tools&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-plugins.git alsa-plugins&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-oss.git alsa-oss&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-python.git alsa-python&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-ucm-conf.git alsa-ucm-conf&lt;br /&gt;
: git clone git://git.alsa-project.org/tinycompress.git tinycompress&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa.git alsa&lt;br /&gt;
&lt;br /&gt;
===Web interface===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kernel.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-ucm-conf.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa.git&lt;br /&gt;
&lt;br /&gt;
===HTTP access===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kernel.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/http/tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa.git&lt;br /&gt;
&lt;br /&gt;
==For developers - kernel drivers==&lt;br /&gt;
&lt;br /&gt;
===Common rules===&lt;br /&gt;
&lt;br /&gt;
: 1) be very very very carefull when you use '--force' for 'git push', you can broke whole repository, you should notify other developers on alsa-devel mailing list that you will do this change for 'master' branch&lt;br /&gt;
: 2) valid 'Signed-off-by:' line must be in the commit text&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kernel.git===&lt;br /&gt;
&lt;br /&gt;
: 1) subject (first commit text line) must start with '[ALSA] ' or 'ALSA: ' or '[sound] ' or 'sound: '&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kprivate.git===&lt;br /&gt;
&lt;br /&gt;
No rules. Just do not overwrite branches created by someone else. The 'master' branch is equal to linux-2.6 official tree from &lt;br /&gt;
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git (do sync if necessary):&lt;br /&gt;
&lt;br /&gt;
  git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
  git checkout master&lt;br /&gt;
  git pull linux-2.6 master&lt;br /&gt;
  git push --tags origin master:refs/heads/master&lt;br /&gt;
&lt;br /&gt;
===Syncing===&lt;br /&gt;
&lt;br /&gt;
Note that 'master' branch in alsa-kernel.git is synced with alsa-kmirror.git 'master' branch automatically. So if you add a patch to alsa-kernel.git, it will be merged to alsa-kmirror.git (if no problem occurs) when you initiate 'git push' to the ALSA server. It's really required to see messages from the pre-receive script when something goes wrong. The script is trying to suggest what's going wrong and try to show you a problematic code (diff).&lt;br /&gt;
&lt;br /&gt;
Pushing to 'alsa-kmirror.git' should be only done if:&lt;br /&gt;
&lt;br /&gt;
: a) you fixing a sync problem&lt;br /&gt;
: b) you are modifying a file which is out of sync (scripts directory or so)&lt;br /&gt;
&lt;br /&gt;
In all other cases, only alsa-kernel.git repository should be used.&lt;br /&gt;
&lt;br /&gt;
The pre-receive script uses all four commit identifiers Author + AuthorDate + Commit + CommitDate to pair commits between alsa-kernel.git and alsa-kmirror.git. Use this information, if you like to add some commits manually to alsa-kmirror.git tree.&lt;br /&gt;
&lt;br /&gt;
====Common problems====&lt;br /&gt;
&lt;br /&gt;
; PRE-RECEIVE repositories does not match, please, fix it&lt;br /&gt;
: The alsa-kmirror.git#mastter and alsa-kernel.git#master sources does not match. You have to do manual changes in alsa-kmirror.git repository to sync trees. A diff between alsa-kmirror.git and alsa-kernel.git is printed to stderr, so you can analyze it and do appropriate steps.&lt;br /&gt;
&lt;br /&gt;
; PRE-RECEIVE Patch failed - is it already merged?&lt;br /&gt;
: Appearently, you're trying to apply a patch which cannot be applied cleanly to alsa-kmirror.git#master. One reason might be that the patch is already applied, but the pre-receive script does not know about it. You may add commiter and commitdate to alsa-kmirror/scripts/git-ok-commits file to skip problematic commit (but only if you really verify, that this commit is already in the alsa-kmirror tree).&lt;br /&gt;
&lt;br /&gt;
===Clone repositories===&lt;br /&gt;
&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-driver.git alsa-driver&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-kernel.git alsa-kernel&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
To show all branches (includes remote ones):&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To make a remote branch local:&lt;br /&gt;
&lt;br /&gt;
 git checkout -b for-linus origin/for-linus&lt;br /&gt;
 git checkout -b linux-2.6 origin/linux-2.6&lt;br /&gt;
&lt;br /&gt;
===Update and rebase using Linus's 2.6 kernel tree===&lt;br /&gt;
&lt;br /&gt;
Add remote URL:&lt;br /&gt;
&lt;br /&gt;
 git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
&lt;br /&gt;
Checkout linux-2.6 branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout linux-2.6&lt;br /&gt;
&lt;br /&gt;
Pull Linus's 2.6 changes:&lt;br /&gt;
&lt;br /&gt;
 git pull linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
Rebase our main ALSA development master branch with linux-2.6:&lt;br /&gt;
&lt;br /&gt;
 git rebase linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
===Push branch changes to ALSA GIT repository===&lt;br /&gt;
&lt;br /&gt;
 git push --tags origin master:refs/heads/master&lt;br /&gt;
 git push --tags origin linux-2.6:refs/heads/linux-2.6&lt;br /&gt;
 git push --tags origin for-linus:refs/heads/for-linus&lt;br /&gt;
&lt;br /&gt;
Note: Especially after 'git rebase' the repository on server is not consistent with local repository (remote ref is not ancestor of the local ref for master branch), so you have to use --force parameter for 'git push' command. Note that this might be dangerous - please, ask Jaroslav Kysela &amp;lt; perex at perex . cz &amp;gt; if you can do this for branch 'master'.&lt;br /&gt;
&lt;br /&gt;
===Branches===&lt;br /&gt;
&lt;br /&gt;
; master&lt;br /&gt;
: this branch is for main development, managed by Jaroslav Kysela, it is rebased before ALSA releases&lt;br /&gt;
: the contents is synced to alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
; linux-next&lt;br /&gt;
: this branch is for linux next testing tree (originaly maintaned by Andrew Morton), rebased &lt;br /&gt;
&lt;br /&gt;
; for-linus&lt;br /&gt;
: this branch is for mainstream tree (for Linus Torvalds), just temporary branch&lt;br /&gt;
&lt;br /&gt;
; linux-2.6&lt;br /&gt;
: this is official linux 2.6 mainstream tree&lt;br /&gt;
&lt;br /&gt;
; stable-2.6.&amp;lt;number&amp;gt;&lt;br /&gt;
: patches for stable 2.6 kernels&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
&lt;br /&gt;
Private tags are not allowed. Only tags identifying ALSA version (alsa-kmirror.git and alsa-driver.git) or official linux kernel version (alsa-kernel.git) are allowed.&lt;br /&gt;
&lt;br /&gt;
===Maintenance===&lt;br /&gt;
&lt;br /&gt;
GIT server is maintaned by [[User:Perex]].&lt;br /&gt;
&lt;br /&gt;
==Occasional Developers==&lt;br /&gt;
This section is for developers without write access to ALSA git. i.e., who will clone repos and send in patches&lt;br /&gt;
&lt;br /&gt;
===clone the repository===&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-driver.git alsa-driver &lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
if you live behind a firewall that blocks the git protocol, you can do this instead:&lt;br /&gt;
&lt;br /&gt;
 git clone http://git.alsa-project.org/http/alsa-driver.git alsa-driver &lt;br /&gt;
 git clone http://git.alsa-project.org/http/alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
if you like do only changes in code in alsa-kmirror, please, use alsa-kernel repository&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
but we accept patches in both forms&lt;br /&gt;
&lt;br /&gt;
===configure git===&lt;br /&gt;
Set your email address correctly otherwise commits get spurious email address for Author and Commiter&lt;br /&gt;
 git config --add user.email me@domain.com&lt;br /&gt;
&lt;br /&gt;
Make sure it knows how to send email (for patches)&lt;br /&gt;
 git config --add sendemail.smtpserver smtp.domain.com&lt;br /&gt;
&lt;br /&gt;
===save current===&lt;br /&gt;
in case you want to roll back&lt;br /&gt;
 git-branch save&lt;br /&gt;
&lt;br /&gt;
===do your work===&lt;br /&gt;
edit, compile, test, sweat&lt;br /&gt;
&lt;br /&gt;
If it didn't work out and you want to get back to the old tree&lt;br /&gt;
 git-reset --hard save&lt;br /&gt;
&lt;br /&gt;
===generate patches===&lt;br /&gt;
Want to get patch against latest, so rebase &lt;br /&gt;
 git-rebase origin/master&lt;br /&gt;
 git-diff remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
Then do this to generate the patchset&lt;br /&gt;
 git-format-patch -s -n -p --subject-prefix=&amp;quot;PATCH - my module&amp;quot; remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
===check the patches===&lt;br /&gt;
 /lib/modules/`uname -r`/build/scripts/checkpatch.pl --no-tree *.patch&lt;br /&gt;
&lt;br /&gt;
===sending the patches===&lt;br /&gt;
&lt;br /&gt;
 git-send-email --from=me --to=patch@alsa-project.org --cc=alsa-devel@alsa-project.org  000*.patch&lt;br /&gt;
&lt;br /&gt;
===get up to date===&lt;br /&gt;
For both alsa-kmirror and alsa-driver&lt;br /&gt;
 git-pull&lt;br /&gt;
&lt;br /&gt;
Sometimes you can just make and things will be fine. However, when there have been changes to the build system etc, its best to do a make clean; ./gitcompile to get the tree properly up to date.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/GIT_Server</id>
		<title>GIT Server</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/GIT_Server"/>
				<updated>2012-03-05T09:28:42Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==ALSA Repositories==&lt;br /&gt;
&lt;br /&gt;
; alsa-driver.git&lt;br /&gt;
: contains compatibility and build code for 2.2, 2.4 and older 2.6 kernels&lt;br /&gt;
; alsa-kernel.git&lt;br /&gt;
: contains linux 2.6 kernel tree&lt;br /&gt;
; alsa-kmirror.git&lt;br /&gt;
: alsa kernel mirror tree for continuous development (contains ALSA parts from alsa-kernel.git tree)&lt;br /&gt;
&lt;br /&gt;
; alsa-kprivate.git&lt;br /&gt;
: contains linux 2.6 kernel tree - for private branches for alsa developers&lt;br /&gt;
&lt;br /&gt;
; alsa-lib.git&lt;br /&gt;
: library&lt;br /&gt;
; alsa-utils.git;&lt;br /&gt;
: utilities&lt;br /&gt;
; alsa-firmware.git&lt;br /&gt;
: firmware&lt;br /&gt;
; alsa-tools.git&lt;br /&gt;
: tools&lt;br /&gt;
; alsa-plugins.git&lt;br /&gt;
: plugins&lt;br /&gt;
; alsa-oss.git&lt;br /&gt;
: oss compatibility&lt;br /&gt;
; alsa-python.git&lt;br /&gt;
: official python binding&lt;br /&gt;
; alsa-ucm-conf.git&lt;br /&gt;
: ALSA Use-Case-Manager configuration library&lt;br /&gt;
; tinycompress.git&lt;br /&gt;
; Compressed formats support library&lt;br /&gt;
&lt;br /&gt;
; alsa.git&lt;br /&gt;
: ALSA service repo (misc files)&lt;br /&gt;
&lt;br /&gt;
==Anonymous access==&lt;br /&gt;
&lt;br /&gt;
===Read only GIT server===&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-driver.git alsa-driver&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-kprivate.git alsa-kprivate&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-lib.git alsa-lib&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-utils.git alsa-utils&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-firmware.git alsa-firmware&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-tools.git alsa-tools&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-plugins.git alsa-plugins&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-oss.git alsa-oss&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-python.git alsa-python&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa-ucm-conf.git alsa-ucm-conf&lt;br /&gt;
: git clone git://git.alsa-project.org/tinycompress.git tinycompress&lt;br /&gt;
&lt;br /&gt;
: git clone git://git.alsa-project.org/alsa.git alsa&lt;br /&gt;
&lt;br /&gt;
===Web interface===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kernel.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa-ucm-conf.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/?p=alsa.git&lt;br /&gt;
&lt;br /&gt;
===HTTP access===&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-driver.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kernel.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-kprivate.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-lib.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-utils.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-firmware.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-tools.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-plugins.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-oss.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-python.git&lt;br /&gt;
: http://git.alsa-project.org/http/alsa-ucm-conf.git&lt;br /&gt;
: http://git.alsa-project.org/http/tinycompress.git&lt;br /&gt;
&lt;br /&gt;
: http://git.alsa-project.org/http/alsa.git&lt;br /&gt;
&lt;br /&gt;
==For developers - kernel drivers==&lt;br /&gt;
&lt;br /&gt;
===Common rules===&lt;br /&gt;
&lt;br /&gt;
: 1) be very very very carefull when you use '--force' for 'git push', you can broke whole repository, you should notify other developers on alsa-devel mailing list that you will do this change for 'master' branch&lt;br /&gt;
: 2) valid 'Signed-off-by:' line must be in the commit text&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kernel.git===&lt;br /&gt;
&lt;br /&gt;
: 1) subject (first commit text line) must start with '[ALSA] ' or 'ALSA: ' or '[sound] ' or 'sound: '&lt;br /&gt;
&lt;br /&gt;
===Rules for alsa-kprivate.git===&lt;br /&gt;
&lt;br /&gt;
No rules. Just do not overwrite branches created by someone else. The 'master' branch is equal to linux-2.6 official tree from &lt;br /&gt;
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git (do sync if necessary):&lt;br /&gt;
&lt;br /&gt;
  git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
  git checkout master&lt;br /&gt;
  git pull linux-2.6 master&lt;br /&gt;
  git push --tags origin master:refs/heads/master&lt;br /&gt;
&lt;br /&gt;
===Syncing===&lt;br /&gt;
&lt;br /&gt;
Note that 'master' branch in alsa-kernel.git is synced with alsa-kmirror.git 'master' branch automatically. So if you add a patch to alsa-kernel.git, it will be merged to alsa-kmirror.git (if no problem occurs) when you initiate 'git push' to the ALSA server. It's really required to see messages from the pre-receive script when something goes wrong. The script is trying to suggest what's going wrong and try to show you a problematic code (diff).&lt;br /&gt;
&lt;br /&gt;
Pushing to 'alsa-kmirror.git' should be only done if:&lt;br /&gt;
&lt;br /&gt;
: a) you fixing a sync problem&lt;br /&gt;
: b) you are modifying a file which is out of sync (scripts directory or so)&lt;br /&gt;
&lt;br /&gt;
In all other cases, only alsa-kernel.git repository should be used.&lt;br /&gt;
&lt;br /&gt;
The pre-receive script uses all four commit identifiers Author + AuthorDate + Commit + CommitDate to pair commits between alsa-kernel.git and alsa-kmirror.git. Use this information, if you like to add some commits manually to alsa-kmirror.git tree.&lt;br /&gt;
&lt;br /&gt;
====Common problems====&lt;br /&gt;
&lt;br /&gt;
; PRE-RECEIVE repositories does not match, please, fix it&lt;br /&gt;
: The alsa-kmirror.git#mastter and alsa-kernel.git#master sources does not match. You have to do manual changes in alsa-kmirror.git repository to sync trees. A diff between alsa-kmirror.git and alsa-kernel.git is printed to stderr, so you can analyze it and do appropriate steps.&lt;br /&gt;
&lt;br /&gt;
; PRE-RECEIVE Patch failed - is it already merged?&lt;br /&gt;
: Appearently, you're trying to apply a patch which cannot be applied cleanly to alsa-kmirror.git#master. One reason might be that the patch is already applied, but the pre-receive script does not know about it. You may add commiter and commitdate to alsa-kmirror/scripts/git-ok-commits file to skip problematic commit (but only if you really verify, that this commit is already in the alsa-kmirror tree).&lt;br /&gt;
&lt;br /&gt;
===Clone repositories===&lt;br /&gt;
&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-driver.git alsa-driver&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-kernel.git alsa-kernel&lt;br /&gt;
 git clone git@git.alsa-project.org:alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
To show all branches (includes remote ones):&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To make a remote branch local:&lt;br /&gt;
&lt;br /&gt;
 git checkout -b for-linus origin/for-linus&lt;br /&gt;
 git checkout -b linux-2.6 origin/linux-2.6&lt;br /&gt;
&lt;br /&gt;
===Update and rebase using Linus's 2.6 kernel tree===&lt;br /&gt;
&lt;br /&gt;
Add remote URL:&lt;br /&gt;
&lt;br /&gt;
 git remote add linux-2.6 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;br /&gt;
&lt;br /&gt;
Checkout linux-2.6 branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout linux-2.6&lt;br /&gt;
&lt;br /&gt;
Pull Linus's 2.6 changes:&lt;br /&gt;
&lt;br /&gt;
 git pull linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
Rebase our main ALSA development master branch with linux-2.6:&lt;br /&gt;
&lt;br /&gt;
 git rebase linux-2.6 master&lt;br /&gt;
&lt;br /&gt;
===Push branch changes to ALSA GIT repository===&lt;br /&gt;
&lt;br /&gt;
 git push --tags origin master:refs/heads/master&lt;br /&gt;
 git push --tags origin linux-2.6:refs/heads/linux-2.6&lt;br /&gt;
 git push --tags origin for-linus:refs/heads/for-linus&lt;br /&gt;
&lt;br /&gt;
Note: Especially after 'git rebase' the repository on server is not consistent with local repository (remote ref is not ancestor of the local ref for master branch), so you have to use --force parameter for 'git push' command. Note that this might be dangerous - please, ask Jaroslav Kysela &amp;lt; perex at perex . cz &amp;gt; if you can do this for branch 'master'.&lt;br /&gt;
&lt;br /&gt;
===Branches===&lt;br /&gt;
&lt;br /&gt;
; master&lt;br /&gt;
: this branch is for main development, managed by Jaroslav Kysela, it is rebased before ALSA releases&lt;br /&gt;
: the contents is synced to alsa-kmirror.git&lt;br /&gt;
&lt;br /&gt;
; linux-next&lt;br /&gt;
: this branch is for linux next testing tree (originaly maintaned by Andrew Morton), rebased &lt;br /&gt;
&lt;br /&gt;
; for-linus&lt;br /&gt;
: this branch is for mainstream tree (for Linus Torvalds), just temporary branch&lt;br /&gt;
&lt;br /&gt;
; linux-2.6&lt;br /&gt;
: this is official linux 2.6 mainstream tree&lt;br /&gt;
&lt;br /&gt;
; stable-2.6.&amp;lt;number&amp;gt;&lt;br /&gt;
: patches for stable 2.6 kernels&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
&lt;br /&gt;
Private tags are not allowed. Only tags identifying ALSA version (alsa-kmirror.git and alsa-driver.git) or official linux kernel version (alsa-kernel.git) are allowed.&lt;br /&gt;
&lt;br /&gt;
===Maintenance===&lt;br /&gt;
&lt;br /&gt;
GIT server is maintaned by [[User:Perex]].&lt;br /&gt;
&lt;br /&gt;
==Occasional Developers==&lt;br /&gt;
This section is for developers without write access to ALSA git. i.e., who will clone repos and send in patches&lt;br /&gt;
&lt;br /&gt;
===clone the repository===&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-driver.git alsa-driver &lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
if you live behind a firewall that blocks the git protocol, you can do this instead:&lt;br /&gt;
&lt;br /&gt;
 git clone http://git.alsa-project.org/http/alsa-driver.git alsa-driver &lt;br /&gt;
 git clone http://git.alsa-project.org/http/alsa-kmirror.git alsa-kmirror&lt;br /&gt;
&lt;br /&gt;
if you like do only changes in code in alsa-kmirror, please, use alsa-kernel repository&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel&lt;br /&gt;
&lt;br /&gt;
but we accept patches in both forms&lt;br /&gt;
&lt;br /&gt;
===configure git===&lt;br /&gt;
Set your email address correctly otherwise commits get spurious email address for Author and Commiter&lt;br /&gt;
 git config --add user.email me@domain.com&lt;br /&gt;
&lt;br /&gt;
Make sure it knows how to send email (for patches)&lt;br /&gt;
 git config --add sendemail.smtpserver smtp.domain.com&lt;br /&gt;
&lt;br /&gt;
===save current===&lt;br /&gt;
in case you want to roll back&lt;br /&gt;
 git-branch save&lt;br /&gt;
&lt;br /&gt;
===do your work===&lt;br /&gt;
edit, compile, test, sweat&lt;br /&gt;
&lt;br /&gt;
If it didn't work out and you want to get back to the old tree&lt;br /&gt;
 git-reset --hard save&lt;br /&gt;
&lt;br /&gt;
===generate patches===&lt;br /&gt;
Want to get patch against latest, so rebase &lt;br /&gt;
 git-rebase origin/master&lt;br /&gt;
 git-diff remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
Then do this to generate the patchset&lt;br /&gt;
 git-format-patch -s -n -p --subject-prefix=&amp;quot;PATCH - my module&amp;quot; remotes/origin/master&lt;br /&gt;
&lt;br /&gt;
===check the patches===&lt;br /&gt;
 /lib/modules/`uname -r`/build/scripts/checkpatch.pl --no-tree *.patch&lt;br /&gt;
&lt;br /&gt;
===sending the patches===&lt;br /&gt;
&lt;br /&gt;
 git-send-email --from=me --to=patch@alsa-project.org --cc=alsa-devel@alsa-project.org  000*.patch&lt;br /&gt;
&lt;br /&gt;
===get up to date===&lt;br /&gt;
For both alsa-kmirror and alsa-driver&lt;br /&gt;
 git-pull&lt;br /&gt;
&lt;br /&gt;
Sometimes you can just make and things will be fine. However, when there have been changes to the build system etc, its best to do a make clean; ./gitcompile to get the tree properly up to date.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/Help_To_Debug_Intel_HDA</id>
		<title>Help To Debug Intel HDA</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/Help_To_Debug_Intel_HDA"/>
				<updated>2012-02-09T13:37:52Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==For Users==&lt;br /&gt;
&lt;br /&gt;
===Troubleshooting===&lt;br /&gt;
&lt;br /&gt;
====Mixer configuration====&lt;br /&gt;
&lt;br /&gt;
First of all, try fiddling with the mixer settings on alsamixer. Don't forget about:&lt;br /&gt;
&lt;br /&gt;
* Checking all alsamixer tabs using the Tab key&lt;br /&gt;
* You can switching mute/unmute using the M key&lt;br /&gt;
* On the &amp;quot;Capture&amp;quot; tab, you can change the capture source setting using the spacebar &lt;br /&gt;
&lt;br /&gt;
===='model' parameter====&lt;br /&gt;
&lt;br /&gt;
Sometimes the support for your system (or a similar one) is available on the driver, but the right system model wasn't detected by the driver. You can try different values for the model parameter for the snd-hda-intel module (see [http://git.alsa-project.org/?p=alsa-kernel.git;a=blob;f=Documentation/sound/alsa/HD-Audio-Models.txt;hb=HEAD HD-Audio-Models.txt]) and see if some of them fix your problem.&lt;br /&gt;
&lt;br /&gt;
If this works, please report this problem, providing the [[#Reporting problems|relevant information]].&lt;br /&gt;
&lt;br /&gt;
====Try a newer alsa version====&lt;br /&gt;
&lt;br /&gt;
If everything else fails, you can check if a newer ALSA version fixes your problem.&lt;br /&gt;
&lt;br /&gt;
(TODO: pointer to article about how to get a newer ALSA version running)&lt;br /&gt;
&lt;br /&gt;
====Try a lowlevel GUI tool to control your codec====&lt;br /&gt;
&lt;br /&gt;
The [[HDA Analyzer|HDA-Analyzer]] python utility to find and debug the problem.&lt;br /&gt;
&lt;br /&gt;
===Reporting problems===&lt;br /&gt;
&lt;br /&gt;
Almost all problems are related to the specific codec configuration. When reporting problems, please provide contents of:&lt;br /&gt;
&lt;br /&gt;
* /proc/asound/card*/codec#* files&lt;br /&gt;
* Output of lspci -vvnn, at least the part corresponding to the Intel HDA device &lt;br /&gt;
&lt;br /&gt;
At best, run alsa-info.sh script [http://www.alsa-project.org/alsa-info.sh] and give the output information. If you post to ML or bugzilla, it's helpful to attach the generated file via alsa-info.sh --no-upload option.&lt;br /&gt;
&lt;br /&gt;
==For Developers==&lt;br /&gt;
&lt;br /&gt;
Fetch the [http://www.intel.com/standards/hdaudio/ Intel HDA specification], you will need it.&lt;br /&gt;
&lt;br /&gt;
Also look at [http://ftp.kernel.org/pub/linux/kernel/people/tiwai/docs/HD-Audio.html Documentation/sound/alsa/HD-Audio.txt] in the kernel tree. This contains some detailed information for development/debugging HD-audio driver. The on-line documents are found in the link section below.&lt;br /&gt;
&lt;br /&gt;
===Basic HDA Intel Concepts===&lt;br /&gt;
&lt;br /&gt;
The snd-hda-intel driver speak to codecs through the the Intel HDA bus. Each codec has many '''widgets''' inside it, and the driver can send messages (called '''verbs''') to them to change their settings. Each widget may collect audio input from other widgets, and may their output may be sent to other widgets. The driver may probe the codec and know exactly how the widgets are wired inside the codec. The /proc/asound/card*/codec#* file contains this information.&lt;br /&gt;
&lt;br /&gt;
Commonly found types of widgets:&lt;br /&gt;
&lt;br /&gt;
* '''Pin Complexes''' are input and/or output interfaces to the outside world. They normally correspond to real audio jacks, speakers or microphones on the machine&lt;br /&gt;
* '''Audio Input/Output''', '''ADC''', or '''DAC''' are the interface between the codec and the HDA bus. This is where ALSA sends/consumes the audio streams to/from&lt;br /&gt;
* '''Selectors and Mixers''' allow the driver to combine and/or select audio input coming from multiple widgets &lt;br /&gt;
&lt;br /&gt;
Each widget may contain '''amplifiers''' on its inputs or outputs. The amplifiers may be controlled by the driver to change audio volume and unmute/mute audio input or output. The mixer controls seen on alsamixer normally correspond to an specific amplifier on an specific widget inside the codec.&lt;br /&gt;
&lt;br /&gt;
===Common sources of problems===&lt;br /&gt;
&lt;br /&gt;
Normally problems are on the patch_*.c files, that are codec-specific. The codec-specific code normally have to do four things:&lt;br /&gt;
&lt;br /&gt;
* Correctly detect which system model is being used, based on PCI IDs or other information&lt;br /&gt;
* Correctly initialize the widges inside the codec&lt;br /&gt;
* Correctly tell hda-intel to use the right Audio ADC/DAC node as source for the PCM streams that will be registered with ALSA&lt;br /&gt;
* Correctly tell hda-intel which amplifiers inside the codec will be controlled by the mixer controls registered with ALSA &lt;br /&gt;
&lt;br /&gt;
====Model detection====&lt;br /&gt;
&lt;br /&gt;
The driver needs to detect the system model, so that it knows how the audio is wired on the system, especially the audio input/outputs from the codec to the external world.&lt;br /&gt;
&lt;br /&gt;
====Initialization====&lt;br /&gt;
&lt;br /&gt;
Normally the drivers have 'init verbs' tables for each model. You will want to look up the HDA Intel specification to understand what they do.&lt;br /&gt;
&lt;br /&gt;
====PCM stream registration====&lt;br /&gt;
&lt;br /&gt;
The driver needs to register audio streams with alsa, that will be used for recording and playback. Most of this task is done by the hda-intel core code, but the codec-specific driver needs to tell hda-intel what are the NIDs of the ADC and DAC widgets for each audio stream.&lt;br /&gt;
&lt;br /&gt;
====Mixer registration====&lt;br /&gt;
&lt;br /&gt;
The driver normally register mixer controls with alsa. Normally this task is done by the hda-intel core code, but the codec-specific code needs to tell hda-intel which amplifiers inside the code chip will be controled by the mixer controls.&lt;br /&gt;
&lt;br /&gt;
====Other codec- or model-specific stuff====&lt;br /&gt;
&lt;br /&gt;
* Speaker auto-muting when headphones are plugged&lt;br /&gt;
* Possibly other stuff... &lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
* [http://www.intel.com/standards/hdaudio/ Intel HDA specification]&lt;br /&gt;
* [http://ftp.kernel.org/pub/linux/kernel/people/tiwai/docs/HD-Audio.html HD-Audio document in kernel tree (HTML)]&lt;br /&gt;
* [http://ftp.kernel.org/pub/linux/kernel/people/tiwai/docs/HD-Audio.html HD-Audio document in kernel tree (PDF)]&lt;br /&gt;
* [http://helllabs.org/codecgraph Nice HDA graphing tool]&lt;br /&gt;
* [[HDA Analyzer|HDA Analyzer]]&lt;br /&gt;
* [https://code.launchpad.net/~diwic/+junk/hda-jack-retask hda-jack-retask]&lt;br /&gt;
* ...links to codecs...&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/Main_Page_News</id>
		<title>Main Page News</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/Main_Page_News"/>
				<updated>2012-01-25T09:47:42Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; 2012-01-25&lt;br /&gt;
: alsa 1.0.25 release | [[Changes v1.0.24 v1.0.25]]&lt;br /&gt;
&lt;br /&gt;
; 2011-01-31&lt;br /&gt;
: alsa 1.0.24 release | [[Changes v1.0.23 v1.0.24]]&lt;br /&gt;
&lt;br /&gt;
; 2010-04-16&lt;br /&gt;
: alsa 1.0.23 release | [[Changes v1.0.22 v1.0.23]]&lt;br /&gt;
&lt;br /&gt;
; 2009-12-28&lt;br /&gt;
: alsa-driver 1.0.22.1 release | [[Changes v1.0.22 v1.0.22.1]]&lt;br /&gt;
&lt;br /&gt;
; 2009-12-16&lt;br /&gt;
: alsa 1.0.22 release | [[Changes v1.0.21 v1.0.22]]&lt;br /&gt;
&lt;br /&gt;
; 2009-09-09&lt;br /&gt;
: alsa-lib 1.0.21a release | [[Changes v1.0.21 v1.0.21a]]&lt;br /&gt;
&lt;br /&gt;
; 2009-08-31&lt;br /&gt;
: alsa 1.0.21 release | [[Changes v1.0.20 v1.0.21|changes from 1.0.20]]&lt;br /&gt;
&lt;br /&gt;
; 2009-05-06&lt;br /&gt;
: alsa 1.0.20 release | [[Changes v1.0.19 v1.0.20|changes from 1.0.19]]&lt;br /&gt;
&lt;br /&gt;
; 2009-01-19&lt;br /&gt;
: alsa 1.0.19 release | [[Changes v1.0.18 v1.0.19|changes from 1.0.18]]&lt;br /&gt;
&lt;br /&gt;
; 2008-11-12&lt;br /&gt;
: alsa-driver 1.0.18a release | [[Changes v1.0.18 v1.0.18a|changes from 1.0.18]]&lt;br /&gt;
&lt;br /&gt;
; 2008-10-29&lt;br /&gt;
: alsa-driver,alsa-lib,alsa-utils,alsa-tools,alsa-plugins 1.0.18 release | [[Changes v1.0.18rc3 v1.0.18|changes from 1.0.18rc3]] | [[Changes v1.0.17 v1.0.18|changes from 1.0.17]]&lt;br /&gt;
&lt;br /&gt;
; 2008-09-09&lt;br /&gt;
: alsa-driver,alsa-lib,alsa-utils,alsa-plugins 1.0.18rc3 release | [[Changes v1.0.18rc2 v1.0.18rc3|changes from 1.0.18rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2008-08-19&lt;br /&gt;
: alsa-utils,alsa-plugins 1.0.18rc2 release | [[Changes v1.0.18rc1 v1.0.18rc2|changes from 1.0.18rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2008-08-18&lt;br /&gt;
: alsa-driver.alsa-utils,alsa-plugins 1.0.18rc1 release | [[Changes v1.0.17a v1.0.18rc1|changes from 1.0.17a]]&lt;br /&gt;
&lt;br /&gt;
; 2008-08-18&lt;br /&gt;
: alsa-lib 1.0.17a release | [[Changes v1.0.17 v1.0.17a|changes from 1.0.17]]&lt;br /&gt;
&lt;br /&gt;
; 2008-07-14&lt;br /&gt;
: ALSA 1.0.17 release (all packages) | [[Changes v1.0.17rc3 v1.0.17|changes from 1.0.17rc3]] | [[Changes v1.0.16 v1.0.17|changes from 1.0.16]]&lt;br /&gt;
&lt;br /&gt;
; 2008-06-27&lt;br /&gt;
: ALSA 1.0.17rc3 release (driver only) | [[Changes v1.0.17rc2 v1.0.17rc3|changes from 1.0.17rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2008-06-16&lt;br /&gt;
: ALSA 1.0.17rc2 release | [[Changes v1.0.17rc1 v1.0.17rc2|changes from 1.0.17rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2008-06-06&lt;br /&gt;
: ALSA 1.0.17rc1 release | [[Changes v1.0.16 v1.0.17rc1|changes from 1.0.16]]&lt;br /&gt;
&lt;br /&gt;
; 2008-05-20&lt;br /&gt;
: All repositories converted from HG (Mercurial) to GIT&lt;br /&gt;
&lt;br /&gt;
; 2008-02-06&lt;br /&gt;
: ALSA 1.0.16 final release | [[Changes v1.0.15 v1.0.16|changes from 1.0.15]] | [[Changes v1.0.16rc2 v1.0.16|changes from 1.0.16rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2008-01-29&lt;br /&gt;
: ALSA 1.0.16rc2 release | [[Changes v1.0.16rc1 v1.0.16rc2|changes from 1.0.16rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2008-01-22&lt;br /&gt;
: ALSA 1.0.16rc1 release | [[Changes v1.0.15 v1.0.16rc1|changes from 1.0.15]]&lt;br /&gt;
&lt;br /&gt;
; 2007-10-16&lt;br /&gt;
: ALSA 1.0.15 final release | [[Changes v1.0.14 v1.0.15|changes from 1.0.14]]&lt;br /&gt;
&lt;br /&gt;
; 2007-09-26&lt;br /&gt;
: ALSA 1.0.15rc3 release | [[Changes v1.0.15rc2 v1.0.15rc3|changes from 1.0.15rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2007-09-13&lt;br /&gt;
: ALSA 1.0.15rc2 release | [[Changes v1.0.15rc1 v1.0.15rc2|changes from 1.0.15rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2007-08-31&lt;br /&gt;
: ALSA 1.0.15rc1 release | [[Changes v1.0.14 v1.0.15rc1|changes from 1.0.14]]&lt;br /&gt;
&lt;br /&gt;
; 2007-08-09&lt;br /&gt;
: ALSA WWW site switched to [http://www.mediawiki.org MediaWiki]&lt;br /&gt;
&lt;br /&gt;
; 2007-06-11&lt;br /&gt;
: ALSA 1.0.14a library bugfix release | [[Changes v1.0.14 v1.0.14a|changes from 1.0.14]]&lt;br /&gt;
&lt;br /&gt;
; 2007-06-04&lt;br /&gt;
: ALSA 1.0.14 release | [[Changes v1.0.13 v1.0.14|changes from 1.0.13]] | [[Changes v1.0.14rc4 v1.0.14|changes from 1.0.14rc4]]&lt;br /&gt;
&lt;br /&gt;
; 2007-04-03&lt;br /&gt;
: ALSA 1.0.14rc4 release | [[Changes v1.0.14rc3 v1.0.14rc4|changes from 1.0.14rc3]]&lt;br /&gt;
&lt;br /&gt;
; 2007-03-06&lt;br /&gt;
: ALSA 1.0.14rc3 release | [[Changes v1.0.14rc2 v1.0.14rc3|changes from 1.0.14rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2007-01-16&lt;br /&gt;
: ALSA 1.0.14rc2 release | [[Changes v1.0.14rc1 v1.0.14rc2|changes from 1.0.14rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2006-12-11&lt;br /&gt;
: ALSA 1.0.14rc1 release | [[Changes v1.0.13 v1.0.14rc1|changes from 1.0.13]]&lt;br /&gt;
&lt;br /&gt;
; 2006-09-29&lt;br /&gt;
: ALSA 1.0.13 release | [[Changes v1.0.12 v1.0.13|changes from 1.0.12]] | [[Changes 1.0.13rc3 v1.0.13|changes from 1.0.13rc3]]&lt;br /&gt;
&lt;br /&gt;
; 2006-09-26&lt;br /&gt;
: ALSA 1.0.13rc3 release | [[Changes v1.0.13rc2 v1.0.13rc3|changes from 1.0.13rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2006-09-15&lt;br /&gt;
: ALSA 1.0.13rc2 release | [[Changes v1.0.13rc1 v1.0.13rc2|changes from 1.0.13rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2006-09-01&lt;br /&gt;
: ALSA 1.0.13rc1 release | [[Changes v1.0.12 v1.0.13rc1|changes from 1.0.12]]&lt;br /&gt;
&lt;br /&gt;
; 2006-08-24&lt;br /&gt;
: ALSA 1.0.12 release | [[Changes v1.0.11 v1.0.12|changes from 1.0.11]] | [[Changes 1.0.12rc3 v1.0.12|changes from 1.0.12rc3]]&lt;br /&gt;
&lt;br /&gt;
; 2006-08-15&lt;br /&gt;
: ALSA 1.0.12rc3 release (driver only) | [[Changes v1.0.12rc2 v1.0.12rc3|changes from 1.0.12rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2006-08-03&lt;br /&gt;
: ALSA 1.0.12rc2 release | [[Changes v1.0.12rc1 v1.0.12rc2|changes from 1.0.12rc1]]&lt;br /&gt;
&lt;br /&gt;
; 2006-06-23&lt;br /&gt;
: ALSA 1.0.12rc1 release | [[Changes v1.0.11 v1.0.12rc1|changes from 1.0.11]]&lt;br /&gt;
&lt;br /&gt;
; 2006-04-19&lt;br /&gt;
: ALSA 1.0.11 final release | [[Changes v1.0.10 v1.0.11|changes from 1.0.10]]&lt;br /&gt;
&lt;br /&gt;
; 2006-04-11&lt;br /&gt;
: ALSA 1.0.11rc5 release | [[Changes v1.0.11rc4 v1.0.11rc5|changes from 1.0.11rc4]]&lt;br /&gt;
&lt;br /&gt;
; 2006-03-22&lt;br /&gt;
: ALSA 1.0.11rc4 release | [[Changes v1.0.11rc3 v1.0.11rc4|changes from 1.0.11rc3]]&lt;br /&gt;
&lt;br /&gt;
; 2006-01-29&lt;br /&gt;
: ALSA 1.0.11rc3 release | [[Changes v1.0.11rc2 v1.0.11rc3|changes from 1.0.11rc2]]&lt;br /&gt;
&lt;br /&gt;
; 2006-01-02&lt;br /&gt;
: ALSA 1.0.11rc2 release | [[Changes v1.0.11rc1 v1.0.11rc2|changes from 1.0.11rc1]] | Happy New Year 2006&lt;br /&gt;
&lt;br /&gt;
; 2005-12-12&lt;br /&gt;
: ALSA 1.0.11rc1 release | [[Changes v1.0.10 v1.0.11rc1|changes from 1.0.10 final]]&lt;br /&gt;
&lt;br /&gt;
; 2005-11-16&lt;br /&gt;
: ALSA 1.0.10 release | [[Changes v1.0.10rc3 v1.0.10|changes from 1.0.10rc3]] |  [[Changes 1.0.9 v1.0.10|changes from 1.0.9]]&lt;br /&gt;
&lt;br /&gt;
; 2005-11-08&lt;br /&gt;
: ALSA 1.0.10rc3 release | [[Changes v1.0.10rc2 v1.0.10rc3|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-10-10&lt;br /&gt;
: ALSA 1.0.10rc2 release | [[Changes v1.0.10rc1 v1.0.10rc2|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-08-20&lt;br /&gt;
: ALSA 1.0.10rc1 release | [[Changes v1.0.9b v1.0.10rc1|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-06-07&lt;br /&gt;
: ALSA 1.0.9b release | [[Changes v1.0.9a v1.0.9b|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-06-02&lt;br /&gt;
: ALSA 1.0.9a release | [[Changes v1.0.9 v1.0.9a|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-05-27&lt;br /&gt;
: ALSA 1.0.9 final release | [[Changes v1.0.8 v1.0.9|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-05-23&lt;br /&gt;
: ALSA 1.0.9rc4 release&lt;br /&gt;
&lt;br /&gt;
; 2005-05-02&lt;br /&gt;
: ALSA 1.0.9rc3 release&lt;br /&gt;
&lt;br /&gt;
; 2005-03-24&lt;br /&gt;
: ALSA 1.0.9rc2 release&lt;br /&gt;
&lt;br /&gt;
; 2005-03-13&lt;br /&gt;
: ALSA 1.0.9rc1 release&lt;br /&gt;
&lt;br /&gt;
; 2005-01-13&lt;br /&gt;
: ALSA 1.0.8 release | [[Changes v1.0.7 v1.0.8|changes]]&lt;br /&gt;
&lt;br /&gt;
; 2005-01-06&lt;br /&gt;
: ALSA 1.0.8rc2 release&lt;br /&gt;
&lt;br /&gt;
; 2004-12-22&lt;br /&gt;
: ALSA 1.0.8rc1 release&lt;br /&gt;
&lt;br /&gt;
; 2004-11-15&lt;br /&gt;
: ALSA 1.0.7 release&lt;br /&gt;
&lt;br /&gt;
; 2004-10-13&lt;br /&gt;
: ALSA 1.0.7rc2 release&lt;br /&gt;
&lt;br /&gt;
; 2004-09-08&lt;br /&gt;
: ALSA 1.0.7rc1 release&lt;br /&gt;
&lt;br /&gt;
; 2004-08-15&lt;br /&gt;
: ALSA 1.0.6 release&lt;br /&gt;
&lt;br /&gt;
; 2004-06-11&lt;br /&gt;
: ALSA server software was upgraded.  Anonymous rsync access [[Download|was changed.]]&lt;br /&gt;
&lt;br /&gt;
; 2004-05-31&lt;br /&gt;
: 1.0.5a driver release | bugfix for the &amp;quot;hang-up&amp;quot; problem in the ALSA driver initialization&lt;br /&gt;
&lt;br /&gt;
; 2004-05-28&lt;br /&gt;
: 1.0.5 release | mostly bug-fixes and cleanups&lt;br /&gt;
&lt;br /&gt;
; 2004-04-03&lt;br /&gt;
: 1.0.4 release | mostly bug-fixes and cleanups&lt;br /&gt;
&lt;br /&gt;
; 2004-03-30&lt;br /&gt;
: 1.0.4rc2 driver release | report compilation problems, please&lt;br /&gt;
&lt;br /&gt;
; 2004-03-27&lt;br /&gt;
: 1.0.4rc1 release | report compilation problems, please&lt;br /&gt;
&lt;br /&gt;
; 2004-03-13&lt;br /&gt;
: alsa-lib 1.0.3b released -  it fixes SIGSEGV problem for dmix plugin (when a specific GCC version is used)&lt;br /&gt;
&lt;br /&gt;
; 2004-03-06&lt;br /&gt;
: alsa-lib 1.0.3a released - it fixes again the dmix/dshare/dsnoop poll() problems&lt;br /&gt;
&lt;br /&gt;
; 2004-02-29&lt;br /&gt;
: 1.0.3 packages released | added driver for ATI IXP 150/200/250 chips and HDSP MADI driver&lt;br /&gt;
&lt;br /&gt;
; 2004-02-25&lt;br /&gt;
: 1.0.3rc2 packages released&lt;br /&gt;
&lt;br /&gt;
; 2004-02-04&lt;br /&gt;
: 1.0.2c driver package release | More fixes for compilation problems.&lt;br /&gt;
&lt;br /&gt;
; 2004-02-03&lt;br /&gt;
: 1.0.2b driver package release | It fixes next 2.6 kernel compilation problems.&lt;br /&gt;
&lt;br /&gt;
; 2004-01-30&lt;br /&gt;
: 1.0.2a driver package release | It should fix most of 2.6 kernel compilation problems and adds RME HDSP MADI (hdspm) driver.&lt;br /&gt;
&lt;br /&gt;
; 2004-01-27&lt;br /&gt;
: New ALSA bugtracking system using Mantis is [http://bugtrack.alsa-project.org/alsa-bug/ available].&lt;br /&gt;
&lt;br /&gt;
; 2004-01-26&lt;br /&gt;
: 1.0.2 release | &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;ENJOY!&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; 2004-01-08&lt;br /&gt;
: 1.0.1 release | &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;ENJOY!&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; 2003-12-05&lt;br /&gt;
: 1.0.0rc2 release | &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;ENJOY!&amp;lt;/font&amp;gt; | bt87x driver added, more OSS PCM emulation fixes&lt;br /&gt;
&lt;br /&gt;
; 2003-12-01&lt;br /&gt;
: 1.0.0rc1 release | &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;ENJOY!&amp;lt;/font&amp;gt; | intel8x0 driver fixes, OSS PCM emulation fixes&lt;br /&gt;
&lt;br /&gt;
; 2003-11-25&lt;br /&gt;
: 1.0.0pre3 release | alsa-tools packages is divided now - firmware files are in alsa-firmware package.&lt;br /&gt;
&lt;br /&gt;
; 2003-11-18&lt;br /&gt;
: 1.0.0pre1 release | This release is indented for wide testing.&lt;br /&gt;
&lt;br /&gt;
; 2003-10-21&lt;br /&gt;
: 0.9.8 release&lt;br /&gt;
&lt;br /&gt;
; 2003-10-13&lt;br /&gt;
: 0.9.7c driver release - PDE and vortex driver compilation fixes&lt;br /&gt;
&lt;br /&gt;
; 2003-10-10&lt;br /&gt;
: 0.9.7b driver release - it fixes serious bug in PCM (mutex hangup)&lt;br /&gt;
&lt;br /&gt;
; 2003-10-01&lt;br /&gt;
: 0.9.7a driver release - fixes bugs (including oops) in the OSS PCM emulation layer&lt;br /&gt;
&lt;br /&gt;
; 2003-09-25&lt;br /&gt;
: 0.9.7 release&lt;br /&gt;
&lt;br /&gt;
; 2003-07-28&lt;br /&gt;
: 0.9.6 release&lt;br /&gt;
&lt;br /&gt;
; 2003-07-09&lt;br /&gt;
: 0.9.5 release&lt;br /&gt;
&lt;br /&gt;
; 2003-06-01&lt;br /&gt;
: 0.9.4 release&lt;br /&gt;
&lt;br /&gt;
; 2003-05-20&lt;br /&gt;
: *** 0.9.3c driver maintaince release *** configuration fixes + other updates&lt;br /&gt;
&lt;br /&gt;
; 2003-05-19&lt;br /&gt;
: *** 0.9.3b driver maintaince release *** ISA PnP and other fixes. We removed /proc/asound/dev directory. The 'make install' should create new device files, but in case of problems, the snddevices script should be executed.&lt;br /&gt;
&lt;br /&gt;
; 2003-04-30&lt;br /&gt;
: *** 0.9.3 release *** Moved firmware code from vxpocket and hdsp driver to alsa-tools. Enjoy!&lt;br /&gt;
&lt;br /&gt;
; 2003-03-19&lt;br /&gt;
: *** 0.9.2 release *** Added dsnoop and dshare PCM plugins to alsa-lib. Enjoy!&lt;br /&gt;
&lt;br /&gt;
; 2003-03-11&lt;br /&gt;
: *** 0.9.1 release *** First stable release of the 0.9 serie. Enjoy!&lt;br /&gt;
&lt;br /&gt;
; 2003-03-10&lt;br /&gt;
: alsa-driver 0.9.0rc8d released&lt;br /&gt;
&lt;br /&gt;
; 2003-03-08&lt;br /&gt;
: alsa-driver 0.9.0rc8c released&lt;br /&gt;
&lt;br /&gt;
; 2003-03-07&lt;br /&gt;
: alsa-lib 0.9.0rc8c and alsa-utils 0.9.0rc8a released&lt;br /&gt;
&lt;br /&gt;
; 2003-03-05&lt;br /&gt;
: alsa-lib and alsa-driver 0.9.0rc8b release&lt;br /&gt;
: alsa-driver 0.9.0rc8a released (fixed compilation problem for older kernels)&lt;br /&gt;
&lt;br /&gt;
; 2003-03-03&lt;br /&gt;
: alsa-lib 0.9.0rc8a released (fixed compilation problem)&lt;br /&gt;
&lt;br /&gt;
; 2003-03-02&lt;br /&gt;
: 0.9.0 release candidate #8 (all packages) is available for download. It is probably last release before 0.9.0 final. You will find in the alsa-lib package the dmix plugin which allows mixing of multiple PCM streams together without the client/server mechanism.&lt;br /&gt;
&lt;br /&gt;
; 2003-01-28&lt;br /&gt;
: 0.9.0 release candidate #7 (alsa-driver, alsa-lib, alsa-utils and alsa-tools packages) is available for download.&lt;br /&gt;
&lt;br /&gt;
; 2002-10-25&lt;br /&gt;
: The fix for GCC 3.2 has been integrated into the 0.9.0rc5 package. Please, redownload the updated package from our server when you reached this problem. (New package is dated 2002/10/25&lt;br /&gt;
&lt;br /&gt;
; 2002-10-24&lt;br /&gt;
: 0.9.0 release candidate #5 (alsa-driver, alsa-lib, alsa-utils and alsa-tools packages) is available for download. This &amp;quot;quick&amp;quot; release should fix the build problems for alsa-lib and alsa-utils packages.&lt;br /&gt;
: Note#2: Please, notice that we merged snd-via686 and snd-via8233 into the snd-via82xx module. Also, the snd-usb-midi module users should use the snd-usb-audio module which has integrated support for both USB audio and MIDI.&lt;br /&gt;
: Note: We have changed the kernel module symbol names (module parameter names). We removed prefix 'snd_'. Please, update your /etc/modules.conf files by hand or use our alsa-driver/utils/module-options script which does this job. Please, notice that 'snd_' prefix is not equal to 'snd-' prefix (module name) which is left unchanged.&lt;br /&gt;
&lt;br /&gt;
; 2002-10-22&lt;br /&gt;
: 0.9.0 release candidate #4 (alsa-driver, alsa-lib, alsa-utils and alsa-tools packages) is available for download.&lt;br /&gt;
&lt;br /&gt;
; 2002-08-22&lt;br /&gt;
: Note for compiling  alsa-driver-0.9.0rc3: Please remove the file - alsa-driver-0.9.0rc3/include/linux/isapnp.h - before running the configure script.&lt;br /&gt;
&lt;br /&gt;
; 2002-08-15&lt;br /&gt;
: 0.9.0 release candidate #3 (alsa-driver, alsa-lib and alsa-utils packages) is available for download.&lt;br /&gt;
&lt;br /&gt;
; 2002-08-09&lt;br /&gt;
: The new online user documentation is now public. Access is through the soundcard matrix. PHP is used to automatically provide the necessary parameters needed to set up a module and required scripts. Users are encouraged to add notes via the notes additions form.&lt;br /&gt;
&lt;br /&gt;
; 2002-06-19&lt;br /&gt;
: Release Candidate #2 is available to download. ALSA packages 0.9.0rc2 were released.&lt;br /&gt;
&lt;br /&gt;
; 2002-04-24&lt;br /&gt;
: Release Candidate #1 is available to download. ALSA packages 0.9.0rc1 were released.&lt;br /&gt;
&lt;br /&gt;
; 2002-02-26&lt;br /&gt;
: ALSA packages 0.9.0beta12 were released.&lt;br /&gt;
&lt;br /&gt;
; 2002-02-17&lt;br /&gt;
: ALSA packages 0.9.0beta11 were released. The driver package contains a new directory tree synced with the Linux 2.5 kernel.&lt;br /&gt;
&lt;br /&gt;
; 2002-02-13&lt;br /&gt;
: ALSA has been integrated to the official Linux 2.5 tree! The initial merge is in patch-2.5.5-pre1.&lt;br /&gt;
&lt;br /&gt;
; 2001-11-30&lt;br /&gt;
: The 0.5.12a driver was released. It's maintaince release to fix problems with 2.4.14+ kernels. &amp;lt;BR&amp;gt; The 0.9.0beta10 packages were released.&lt;br /&gt;
&lt;br /&gt;
; 2001-11-05&lt;br /&gt;
: The 0.9.0beta9 packages were released.  &amp;lt;hr /&amp;gt; The 0.5.12 driver was released.&lt;br /&gt;
&lt;br /&gt;
; 2001-09-27&lt;br /&gt;
: The 0.9.0beta8 packages were released.&lt;br /&gt;
&lt;br /&gt;
; 2001-08-23&lt;br /&gt;
: The 0.9.0beta7 packages were released.&lt;br /&gt;
&lt;br /&gt;
; 2001-07-22&lt;br /&gt;
: The 0.9.0beta6 alsa-driver and alsa-lib packages have fixed compilation bugs. Please, download these packages again.&lt;br /&gt;
&lt;br /&gt;
; 2001-07-20&lt;br /&gt;
: The 0.9.0beta6 packages were released for public.&lt;br /&gt;
&lt;br /&gt;
; 2001-06-28&lt;br /&gt;
: The 0.9.0beta5 packages were released for public with uniform support for multichannel cards and raw IEC958 (S/PDIF).&lt;br /&gt;
&lt;br /&gt;
; 2001-05-25&lt;br /&gt;
: Mailing lists are moved to SourceForge. Please, check [[Mailing-lists|this page]] for the subscription details.&lt;br /&gt;
: The 0.9.0beta4 packages were released for public.&lt;br /&gt;
&lt;br /&gt;
; 2001-05-14&lt;br /&gt;
: The driver 0.5.11 was released. Changes: IA64 arch support, ALi 5451 driver added, AWACS driver added (for PPC), AC'97, PCM OSS emulation, sequencer OSS emulation, AD1816A, ALS4000, AZT2320, CMIPCI, CS4236, CS4281, CS461X, ES1968, Maestro 3, NM256, OPL3SA2, SB16, SB-AWE, YMFPCI.&lt;br /&gt;
&lt;br /&gt;
; 2001-03-20&lt;br /&gt;
: The 0.9.0beta3 packages were released for public.&lt;br /&gt;
&lt;br /&gt;
; 2001-03-02&lt;br /&gt;
: The 0.9.0beta2 packages were released for public.&lt;br /&gt;
&lt;br /&gt;
; 2001-02-21&lt;br /&gt;
: The 0.9.0beta1 packages were released for public. Please, check out our FTP site to obtain them.&lt;br /&gt;
&lt;br /&gt;
; 2001-01-23&lt;br /&gt;
: The ALSA driver package version 0.5.10b was released. New driver: VIA VT8233 South Bridge. Bugfixes: NM256, AC'97.&lt;br /&gt;
&lt;br /&gt;
; 2001-01-07&lt;br /&gt;
: The ALSA driver package version 0.5.10a was released. New driver: NeoMagic NM256AV/ZX. Bugfixes: Maestro3, MPU401 UART, AZT2320, RME96, CS461x, timer, YMFPCI, CMI8330, FM801, CS4232, ENS1371, 2.4.0-prerelease kernel support.&lt;br /&gt;
&lt;br /&gt;
; 2000-12-07&lt;br /&gt;
: The ALSA packages version 0.5.10 were released. New drivers: ALS4000, Maestro3 (Allegro), CS4281. Bugfixes: AC'97 code, SB16, EMUX000 MIDI, CMIPCI, SB8, CS4236, Intel8x0, CS461x, YMFPCI, MPU401, AD1816A, 2.2.18pre kernels, man pages.&lt;br /&gt;
&lt;br /&gt;
; 2000-10-10&lt;br /&gt;
: ALSA driver package version 0.5.9d was released. Bugfixes:  2.2.18pre kernels, YMFPCI, CMIPCI, EMU10K1, OSS sequencer emulator, CS4236, RME9652, rawmidi, intel8x0.&lt;br /&gt;
&lt;br /&gt;
; 2000-09-22&lt;br /&gt;
: ALSA project helps to realize the unique demonstration prepared by the Audio Engineering Society's (AES) Technical Committee on Network Audio Systems. Recording Engineers in Los Angeles will mix 12 high quality audio channels streamed live over the Internet from Montreal. [http://www.aes.org/events/109/events.cfm Event description.] [http://www.cim.mcgill.ca/~jer/projects/aes/ Demo description.]&lt;br /&gt;
&lt;br /&gt;
; 2000-09-02&lt;br /&gt;
: ALSA driver package version 0.5.9c was released. Bugfixes:  SB16, AD1816A, AZT2320, EMU8000/EMU10K1, CMIPCI, YMFPCI, intel-i8x0, general. &amp;lt;hr&amp;gt; ALSA package with utilities version 0.5.9b was released. Updated programs: aplay, aseqnet.&lt;br /&gt;
&lt;br /&gt;
; 2000-08-18&lt;br /&gt;
: ALSA driver package version 0.5.9b was released. More bugfixes: CS4236, EMU10K1, OSS mmap() for non-x86 platforms, ENS1370, ENS1371.&lt;br /&gt;
&lt;br /&gt;
; 2000-08-11&lt;br /&gt;
: ALSA driver package version 0.5.9a was released. It contains more 64-bit cleanaups and support for 2.4.0-test6 kernel.&lt;br /&gt;
&lt;br /&gt;
; 2000-08-07&lt;br /&gt;
: Packages 0.5.9 were released. These packages contain cleanups for alpha linux platform. Changed drivers: OPTi92x/93x, VIA686A, YMFPCI, MPU-401, EMU10K1, SB16, SB8, seq_virmidi, ENS1370/1, rawmidi.&lt;br /&gt;
&lt;br /&gt;
; 2000-06-25&lt;br /&gt;
: The driver 0.5.8b was released containing bugfixes for these drivers: sequencer, YMFPCI, CS4236, ES1968, ICE1712, Opti92x/93x, EMU10K1.&lt;br /&gt;
&lt;br /&gt;
; 2000-06-06&lt;br /&gt;
: The driver 0.5.8a was released. It contains compilation bugfix for latest 2.3 and 2.4-test kernels. The Yamaha driver was fixed for YMF724F.&lt;br /&gt;
&lt;br /&gt;
; 2000-06-05&lt;br /&gt;
: Stable packages 0.5.8 were released. Two new drivers were added: the C-Media CMI8338 and 8738 PCI driver and the Yamaha YMF72x,74x,75x driver. Also, APM is supported for CS4231 &amp;amp; CS4235,6,7,8,9 chips. Otherwise, this release contains mostly bug-fixes backported from the ALSA development tree including the support for latest Linux kernels. Affected drivers: AZT2320, CMI8330, CS4236, ESS ES18xx, InterWave (GUS PnP), Opti 92x, Sound Blaster 16, AD1816A. &amp;lt;b&amp;gt;&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Upgrade is recommended for all soundcards.&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; 2000-04-06&lt;br /&gt;
: Stable packages 0.5.7 were released. This release is a bug-fix release only. The support for MidiMan Delta 44 and 66 cards was added. Other changes - sequencer fixes, rawmidi fixes, AC'97 code updates, other minor cleanups.&lt;br /&gt;
&lt;br /&gt;
; 2000-03-17&lt;br /&gt;
: New ALSA [[Mailing-lists|announce mailing list]] was created.&lt;br /&gt;
&lt;br /&gt;
; 2000-03-11&lt;br /&gt;
: ALSA 0.5.6 packages were released (new drivers: RME Digi 96, VIA 82C686A AC'97 bridge | bugfixes: Intel i8x0/440MX, EMU10K1, AZT2320, RawMidi code + lowlevel drivers, alsamixer).&lt;br /&gt;
&lt;br /&gt;
; 2000-03-01&lt;br /&gt;
: ALSA 0.5.5 packages were released (API cleanups).&lt;br /&gt;
&lt;br /&gt;
; 2000-02-28&lt;br /&gt;
: ALSA 0.5.4b driver package was released (Intel i8x0/MX440 driver fixes).&lt;br /&gt;
: ALSA 0.5.4 packages were released (added alpha ESS Maestro 1/2/2E driver, improved Intel i8x0/440MX driver, AC'97 updates).&lt;br /&gt;
&lt;br /&gt;
; 2000-02-27&lt;br /&gt;
: ALSA 0.5.4a driver package was released (2.3.48 compilation fixed, PCM OSS Oops fixed). Upgrade is strongly recommended.&lt;br /&gt;
&lt;br /&gt;
; 2000-02-16&lt;br /&gt;
: The 0.5.3 packages were released (RME Hammerfall/Light updates, ES1938 - Solo1 driver improved, AC'97 updates, Intel i8x0/440MX alpha driver added, sequencer updates, MTPAV updates, better SMP support for 2.3.x kernels, virmidi code added to EMU8000 &amp;amp; EMU10K1 synth drivers, snd-card-virmidi updates, AK4531 updates - ES1370, EMU10K1 rear volume fixed, ICE1712 updates).&lt;br /&gt;
&lt;br /&gt;
; 2000-02-14&lt;br /&gt;
: The ALSA server was upgraded. You may now enjoy the HtDig search engine for whole Web server plus mailing list archives.&lt;br /&gt;
&lt;br /&gt;
; 2000-02-04&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/ ALSA 0.5.2 packages] were released (added ICE1712 {Envy24} driver and AD1816A driver, RME9652 updates, EMU10K1 updates, SB8, ES18xx, serial MIDI driver updates, PCM API updates, AC'97 bugfixes). The [ftp://ftp.alsa-project.org/pub/others/envy24control GTK Envy24 control utility] is also available with some screenshots. Note: The current Envy24 driver may work only with the MidiMan soundcards (Delta serie). The driver supports only professional PCM at this time.&lt;br /&gt;
&lt;br /&gt;
; 2000-01-22&lt;br /&gt;
: ALSA [ftp://ftp.alsa-project.org/pub packages 0.5.1] were released (PCM OSS emulation, EMU10K1 synth, ES1938, ENS1370).&lt;br /&gt;
&lt;br /&gt;
; 2000-01-16&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/ Final ALSA 0.5.0 packages] were released (added RME9652 -Hammerfall- driver, final API cleanups).&lt;br /&gt;
&lt;br /&gt;
; 2000-01-12&lt;br /&gt;
: The alsa-driver and alsa-lib [ftp://ftp.alsa-project.org/pub packages 0.5.0pre3] were released (trident driver, compilation trouble).&lt;br /&gt;
&lt;br /&gt;
; 2000-01-11&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.5.0pre2] was released (enhanced EMU10K1 code, a compilation bugfix). Other [ftp://ftp.alsa-project.org/pub 0.5.0pre2 packages] were also released.&lt;br /&gt;
&lt;br /&gt;
; 2000-01-10&lt;br /&gt;
: All [ftp://ftp.alsa-project.org/pub packages 0.5.0pre1] were were released. The final API freeze is expected at 14th January 2000.&lt;br /&gt;
&lt;br /&gt;
; 1999-12-20&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1i] was released with the bugfix for the generic code for AC'97. The problems with CS4297A volume levels are away.&lt;br /&gt;
&lt;br /&gt;
; 1999-12-16&lt;br /&gt;
: The final ALSA API dead line is 10th January 2000.&lt;br /&gt;
&lt;br /&gt;
; 1999-12-07&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1h] was released with the bugfix for the ENS1370/ENS1371 drivers.&lt;br /&gt;
&lt;br /&gt;
; 1999-12-06&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1g1] was released with minor bugfixes (mixer, rawmidi, CS461X).&lt;br /&gt;
&lt;br /&gt;
; 1999-12-02&lt;br /&gt;
: [http://www.alsa-project.org/announce.html The ALSA professional team] has been founded.&lt;br /&gt;
&lt;br /&gt;
; 1999-12-01&lt;br /&gt;
: [http://www.alsa-project.org/cgi-bin/cvsweb.cgi CVS Web interface] is available. Created [[Mailing-lists|new mailing lists]]: alsa-doc, alsa-conf, alsa-howto and alsa-cvs. Mailing lists are archived through MHonArc. Web is now searchable through Ht://Dig.&lt;br /&gt;
&lt;br /&gt;
; 1999-11-26&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1f2] was released with minor bugfixes (CS4231, CS4236, AC'97, 2.3.29 kernel).&lt;br /&gt;
&lt;br /&gt;
; 1999-11-18&lt;br /&gt;
: Alpha EMU10K1 (Sound Blaster Live!) driver is available in CVS.&lt;br /&gt;
&lt;br /&gt;
; 1999-11-03&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1e] was released with minor bugfixes (isapnp, CS4236+, Gallant SC-70P, 2.3.25 kernel).&lt;br /&gt;
&lt;br /&gt;
; 1999-11-02&lt;br /&gt;
: Creative released their [http://opensource.creative.com/ source code for SB Live driver]. The ALSA SB Live driver will be available this month.&lt;br /&gt;
&lt;br /&gt;
; 1999-10-24&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1d] was released with minor bugfixes (CMI8330, 2+ soundcards, modules.conf handling, documentation files). Upgrade is recommended if your system has 2+ soundcards. [ftp://ftp.alsa-project.org/pub/lib ALSA library 0.4.1d&amp;lt;/A&amp;gt; was released (PCM cleanup fixes).]A library 0.4.1d&amp;lt;/A&amp;gt; was released (PCM cleanup fixes).&lt;br /&gt;
&lt;br /&gt;
; 1999-10-20&lt;br /&gt;
: Upgrade your modutils package, if you encounter 'segmentation fault' problems. Get fixed [ftp://ftp.ocs.com.au/pub/modutils/v2.3/modutils-2.3.6.tar.gz modutils-2.3.6.tar.gz] or an upgrade [ftp://ftp.alsa-project.org/pub/driver/misc/modules-2.2.2-44.i386.rpm package for SuSE 6.2].&lt;br /&gt;
&lt;br /&gt;
; 1999-10-07&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1c] was released with minor bugfixes (GUS, OPL3-SA2/3, RedHat 6.1). Upgrade is recommended for all soundcards.&lt;br /&gt;
&lt;br /&gt;
; 1999-09-16&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1b] was released with next minor bugfixes.&lt;br /&gt;
&lt;br /&gt;
; 1999-09-01&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver ALSA driver version 0.4.1a] was released with minor bugfixes.&lt;br /&gt;
&lt;br /&gt;
; 1999-08-26&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/ ALSA packages version 0.4.1] were released. This is mostly bug-fix release.&lt;br /&gt;
: Statistics for WWW and FTP server are now available.&lt;br /&gt;
&lt;br /&gt;
; 1999-08-15&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/ ALSA packages version 0.4.0] were released. Older packages are not supported from this time.&lt;br /&gt;
&lt;br /&gt;
; 1999-08-01&lt;br /&gt;
: The ALSA bug reporting system is up and going. To report bugs in ALSA packages, please go here and follow the instructions carefully.&lt;br /&gt;
&lt;br /&gt;
; 1999-06-17&lt;br /&gt;
: [ftp://ftp.alsa-project.org/pub/driver/ ALSA driver version 0.3.2] released. This is a bug-fix release. If you have had any troubles with 0.3.1 or 0.3.0, please, try this version. Remember to upgrade [ftp://ftp.alsa-project.org/pub/lib/ lib] and [ftp://ftp.alsa-project.org/pub/utils/ utils] too. 0.3.x-series are the last to support 2.0.x kernels.&lt;br /&gt;
&lt;br /&gt;
; 1999-05-23&lt;br /&gt;
: The alpha driver for the [http://www.crystal.com/ Cirrus Logic Sound Fusion CS461x (CS4280) PCI chips] is available on the [[Download|CVS]].&lt;br /&gt;
&lt;br /&gt;
; 1999-05-14&lt;br /&gt;
: [[Mailing-lists|Mailing lists]] are now managed with the alsa.alsa-project.org machine.&lt;br /&gt;
&lt;br /&gt;
; 1999-05-11&lt;br /&gt;
: The alpha driver for the [http://www.fortemedia.com/products/ ForteMedia FM801 PCI soundcard] is available on the [[Download|CVS]].&lt;br /&gt;
&lt;br /&gt;
; 1999-04-29&lt;br /&gt;
: New page with the ALSA schedule is available.&lt;br /&gt;
&lt;br /&gt;
; 1999-04-23&lt;br /&gt;
: The call to hardware vendors was [[ALSA_Soundcard_Vendor_Information|updated]].&lt;br /&gt;
&lt;br /&gt;
; 1999-04-20&lt;br /&gt;
: The ALSA project has got own domain - alsa-project.org. Services (WWW/FTP/CVS) are running on the independent machine now.&lt;br /&gt;
&lt;br /&gt;
; 1999-03-16&lt;br /&gt;
: The releasing of 0.3.0pre5 packages is very delayed. We are working on new mixer API which will not be compatible with previous versions of ALSA packages. It seems that that this work needs a lot of our time. There are many changes in the current development tree (Trident 4DWave DX/NX driver &amp;lt;b&amp;gt;- thanks to Tridentfor their support -&amp;lt;/b&amp;gt;, timer interface, EMU8000 driver, OSS sequencer emulator), If you want to test or use the current code, you may get the sources directly from the [[Download|CVS server]] or there are also available [[Download|CVS snapshots]].&lt;br /&gt;
&lt;br /&gt;
; 1999-02-10&lt;br /&gt;
: Two alsa-driver and alsa-lib packages with version 0.3.0-pre4 [ftp://ftp.alsa-project.org/pub released]. The driver contains better support for 2.2.0+ kernels and allows mixing of ALSA and OSS/Lite modules.&lt;br /&gt;
&lt;br /&gt;
; 1999-02-05&lt;br /&gt;
: [[Download|CVS snapshots]] are available now.&lt;br /&gt;
&lt;br /&gt;
; 1999-01-29&lt;br /&gt;
: Temporary AWE64 [http://ds.dial.pipex.com/sterat/alsa EMU8000 synth driver] for ALSA.&lt;br /&gt;
&lt;br /&gt;
; 1999-01-24&lt;br /&gt;
: All packages with version 0.3.0-pre3 [ftp://ftp.alsa-project.org/pub released].&lt;br /&gt;
: [[ALSA_Library_API|New ALSA API description for 0.2.0 packages.]]&lt;br /&gt;
&lt;br /&gt;
; 1999-01-19&lt;br /&gt;
: [http://huizen.dds.nl/~valentyn/Alsa-sound-mini-HOWTO.html Alsa-sound-mini-HOWTO]&lt;br /&gt;
: Version 0.2.0-pre10p3 of driver [ftp://ftp.alsa-project.org/pub/driver released] which includes support for 2.2.0-pre1 kernel.&lt;br /&gt;
: Version 0.3.0-pre2 of alsa-lib [ftp://ftp.alsa-project.org/pub/lib released] which includes support for sequencer.&lt;br /&gt;
: Version 0.3.0-pre2 of driver [ftp://ftp.alsa-project.org/pub/driver released] which includes native support for ISA Plug &amp;amp;amp; Play cards, first version of sequencer and support for 2.2.0-pre1 kernel.&lt;br /&gt;
&lt;br /&gt;
; 1998-12-30&lt;br /&gt;
: [[ALSA_Soundcard_Vendor_Information|A call to sound card hardware vendors.]]&lt;br /&gt;
&lt;br /&gt;
; 1998-12-28&lt;br /&gt;
: [[ALSA Blacklist|Black List]]; Sound Blaster Live! [[ALSA_Blacklist|support]] (sorry)&lt;br /&gt;
&lt;br /&gt;
; 1998-11-10&lt;br /&gt;
: Version 0.1.3 of C library and Version 0.2.0-pre10 of driver [ftp://ftp.alsa-project.org/pub/driver released] which supports Cirrus Logic CS4232+/CS4236+, Ensoniq AudioPCI (ES1370/1371), and S3 SonicVibes.&lt;br /&gt;
&lt;br /&gt;
; 1998-11-04&lt;br /&gt;
: Version 0.0.7 of ALSA utilities [ftp://ftp.alsa-project.org/pub/lib released]&lt;br /&gt;
&lt;br /&gt;
; 1998-08-13&lt;br /&gt;
: [[Download|CVS is up]]&lt;br /&gt;
[http://www.example.com link title]&lt;br /&gt;
[http://www.example.com link title]&lt;br /&gt;
[http://www.example.com link title]&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/Template:ALSA_download_version</id>
		<title>Template:ALSA download version</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/Template:ALSA_download_version"/>
				<updated>2012-01-25T09:47:02Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ #switch: {{{module}}}&lt;br /&gt;
| driver={{ #switch: {{{release}}} | stable=1.0.25 | development=none }}&lt;br /&gt;
| lib={{ #switch: {{{release}}} | stable=1.0.25 | development=none }}&lt;br /&gt;
| utils={{ #switch: {{{release}}} | stable=1.0.25 | development=none }}&lt;br /&gt;
| tools={{ #switch: {{{release}}} | stable=1.0.25 | development=none }}&lt;br /&gt;
| firmware={{ #switch: {{{release}}} | stable=1.0.25 | development=none }}&lt;br /&gt;
| plugins={{ #switch: {{{release}}} | stable=1.0.25 | development=none }}&lt;br /&gt;
| oss={{ #switch: {{{release}}} | stable=1.0.25 | development=none }}&lt;br /&gt;
| python={{ #switch: {{{release}}} | stable=1.0.25 | development=none }}&lt;br /&gt;
| Unknown please edit!&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/Detailed_HDA_changes_v1.0.24_v1.0.25</id>
		<title>Detailed HDA changes v1.0.24 v1.0.25</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/Detailed_HDA_changes_v1.0.24_v1.0.25"/>
				<updated>2012-01-25T09:20:31Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
=Detailed HDA changelog between 1.0.24 and 1.0.25 releases=&lt;br /&gt;
&lt;br /&gt;
==alsa-driver==&lt;br /&gt;
===HDA Codec driver===&lt;br /&gt;
: - Add the build-stub for patch_ca0132.c&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix a unused variable warning&lt;br /&gt;
:   &lt;br /&gt;
:   Just overlooked.&lt;br /&gt;
:   &lt;br /&gt;
:   sound/pci/hda/patch_realtek.c: In function ‘alc_sku_unsol_event’:&lt;br /&gt;
:   sound/pci/hda/patch_realtek.c:643:19: warning: unused variable ‘spec’ [-Wunused-variable]&lt;br /&gt;
:   &lt;br /&gt;
: - sound: snd-hda-intel: better Alienware M17x R3 quirk&lt;br /&gt;
:   &lt;br /&gt;
:   I have been told that this way the rear headphone connector is&lt;br /&gt;
:   working as well; with model=alienware only laptop speakers work.&lt;br /&gt;
:   The subsystem of both controller and codec is 1028:0490.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Remove use_jack_tbl field&lt;br /&gt;
:   &lt;br /&gt;
:   Now that all quirks have the own unsol handlers, we don't need to check&lt;br /&gt;
:   use_jack_tbl flag any more.  Let's kill it.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Avoid conflict of unsol-events with static quirks&lt;br /&gt;
:   &lt;br /&gt;
:   The recently added jack-kctl support sets the unsol event tags&lt;br /&gt;
:   dynamically, while static quirks usually set the fixed tags in the&lt;br /&gt;
:   init_verbs array.  Due to this conflict, the own unsol event handler&lt;br /&gt;
:   can't retrieve the tag and handle it properly any more.&lt;br /&gt;
:   &lt;br /&gt;
:   For fixing this, avoid calling snd_hda_jack_add_kctls() for static&lt;br /&gt;
:   quirks, and always let them use own handlers instead of the standard&lt;br /&gt;
:   one for the auto-pareser.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: David Henningsson &amp;amp;lt;david.henningsson@canonical.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda/realtek - Avoid multi-ios conflicting with multi-speakers&lt;br /&gt;
:   &lt;br /&gt;
:   When a machine has multiple speakers, we don't need to create the&lt;br /&gt;
:   controls for multi-ios.  Check the number of primary outputs beforehand.&lt;br /&gt;
:   &lt;br /&gt;
:   Note that this workaround might not work always with new codecs in&lt;br /&gt;
:   future; this assumes that both speakers and multi-io jacks share the&lt;br /&gt;
:   same mixers/DACs.  If they are routed with different mixers, the&lt;br /&gt;
:   individual mixer controls should be needed.  But, so far, this doesn't&lt;br /&gt;
:   happen with the existing ALC codecs.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Fix internal microphone on Dell Studio 16 XPS 1645&lt;br /&gt;
:   &lt;br /&gt;
:   More than one user reports that changing the model from &amp;quot;both&amp;quot; to&lt;br /&gt;
:   &amp;quot;dmic&amp;quot; makes their Internal Mic work.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Martin Ling &amp;amp;lt;martin-launchpad@earth.li&amp;amp;gt;&lt;br /&gt;
:   BugLink: https://bugs.launchpad.net/bugs/795823&lt;br /&gt;
: - ALSA: hda - Fix the lost power-setup of seconary pins after PM resume&lt;br /&gt;
:   &lt;br /&gt;
:   When multiple headphone or other detectable output pins are present,&lt;br /&gt;
:   the power-map has to be updated after resume appropriately, but the&lt;br /&gt;
:   current driver doesn't check all pins but only the first pin (since&lt;br /&gt;
:   it's enough to check it for the mute-behavior).  This resulted in the&lt;br /&gt;
:   silent output from the secondary outputs after PM resume.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch fixes the problem by checking all pins at (re-)init time.&lt;br /&gt;
:   &lt;br /&gt;
:   Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=740347&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix the detection of &amp;quot;Loopback Mixing&amp;quot; control for VIA codecs&lt;br /&gt;
:   &lt;br /&gt;
:   Currently the driver checks only the out_mix_path[] for the primary&lt;br /&gt;
:   output route for judging whether to create the loopback-mixing control&lt;br /&gt;
:   or not.  But, there are cases where aamix-routing is available only on&lt;br /&gt;
:   headphone or speaker paths but not on the primary output path.  So, the&lt;br /&gt;
:   driver ignores such cases inappropriately.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch fixes the check of the loopback-mixing control by testing&lt;br /&gt;
:   all mix-routing paths.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Use auto-parser for HP laptops with cx20459 codec&lt;br /&gt;
:   &lt;br /&gt;
:   These laptops can work well with the auto-parser and their BIOS setups,&lt;br /&gt;
:   and in addition, the auto-parser fixes the problem with S3/S4 where&lt;br /&gt;
:   the unsol event handling is killed after resume due to fallback to the&lt;br /&gt;
:   single-cmd mode.&lt;br /&gt;
:   &lt;br /&gt;
:   Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=740115&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/cirrus - support for iMac12,2 model&lt;br /&gt;
:   &lt;br /&gt;
:   This early 2011 model just need to have headphones on GPI02&lt;br /&gt;
:   instead of GPI01, and use BIOS pincfgs.&lt;br /&gt;
:   It is detected by codec SSID.&lt;br /&gt;
:   The iMac12,1 model is known to work the same way, although maybe&lt;br /&gt;
:   not with the same codec SSID.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Fix typo for ALC269VB_FIXUP_DMIC&lt;br /&gt;
:   &lt;br /&gt;
:   This fixup is not actually used, so in practice this is just a&lt;br /&gt;
:   cosmetic fix.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Add support for Cirrus Logic 4213&lt;br /&gt;
:   &lt;br /&gt;
:   The CS4213 chip is similar to the CS4210, but it does not have&lt;br /&gt;
:   SPDIF capabilities. Also, it has fewer pins, and the vendor specific&lt;br /&gt;
:   nid is different. With this patch, we have working inputs and outputs&lt;br /&gt;
:   (and automute/autoswitch). However, we don't know anything about&lt;br /&gt;
:   the vendor specific processing coefficients, so we don't read or write&lt;br /&gt;
:   to that node in this patch.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: https://bugs.launchpad.net/bugs/910792&lt;br /&gt;
:   Tested-by: Hsin-Yi Chen &amp;amp;lt;hychen@canonical.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: HDA: Fix automute for Cirrus Logic 421x&lt;br /&gt;
:   &lt;br /&gt;
:   There was a bug in the automute logic causing speakers not to&lt;br /&gt;
:   mute when headphones were plugged in.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Hsin-Yi Chen &amp;amp;lt;hychen@canonical.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: HDA: Fix master control for Cirrus Logic 421X&lt;br /&gt;
:   &lt;br /&gt;
:   The control name &amp;quot;HP/Speakers&amp;quot; is non-standard, and since there is&lt;br /&gt;
:   only one DAC on this chip there is no need for a virtual master&lt;br /&gt;
:   anyway.&lt;br /&gt;
:   &lt;br /&gt;
: - Merge all missing things from upstream.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Manage unsol tags in hda_jack.c&lt;br /&gt;
:   &lt;br /&gt;
:   Manage the tags assigned for unsolicited events dynamically together&lt;br /&gt;
:   with the jack-detection routines.  Basically this is almost same as what&lt;br /&gt;
:   we've done in patch_sigmatel.c.  Assign the new tag number for each new&lt;br /&gt;
:   unsol event, associate with the given NID and the action type, etc.&lt;br /&gt;
:   &lt;br /&gt;
:   With this change, now all pins looked over in snd_hda_jack_add_kctls()&lt;br /&gt;
:   are actually enabled for detection now even if the pins aren't used for&lt;br /&gt;
:   jack-retasking by the driver.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Realtek: Take vmaster dac from multiout dac list&lt;br /&gt;
:   &lt;br /&gt;
:   With the auto-parser we can choose the dac nid for vmaster from&lt;br /&gt;
:   the DACs we already know, instead of hard-coding it. This is more&lt;br /&gt;
:   future-proof and was actually wrong on one machine.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Integrate input-jack stuff into kctl-jack&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of managing input-jack stuff separately, call all stuff inside&lt;br /&gt;
:   the kctl-jack creation, deletion and report.  The caller no longer needs&lt;br /&gt;
:   to care about input-jack.&lt;br /&gt;
:   &lt;br /&gt;
:   The better integration between input-jack and kctl-jack should be done&lt;br /&gt;
:   in the upper layer in near future, but for now, it's implemented locally&lt;br /&gt;
:   for more tests.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Don't add channel suffix for headphone pin labels&lt;br /&gt;
:   &lt;br /&gt;
:   The multiple headphone pins are usually handled as copied from the same&lt;br /&gt;
:   source, not as individual channels like front and surround.  Thus it'd&lt;br /&gt;
:   be more correct to avoid the channel suffix for &amp;quot;Headphone&amp;quot; pin labels&lt;br /&gt;
:   in snd_hda_get_pin_label() but give an index number instead.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix a typo&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: David Henningsson &amp;amp;lt;david.henningsson@canonical.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - Give more unique names by snd_hda_get_pin_label()&lt;br /&gt;
:   &lt;br /&gt;
:   The function now gives more unique names for the output pins by adding&lt;br /&gt;
:   some prefix and suffix for the location and the channels.  Otherwise, it&lt;br /&gt;
:   can pass the index number.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Merge input-jack helpers to hda_jack.c&lt;br /&gt;
:   &lt;br /&gt;
:   We can use the very same table in hda_jack.c for managing the list for&lt;br /&gt;
:   input-jack elements, too.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Manage unsol tags in hda_jack.c&lt;br /&gt;
:   &lt;br /&gt;
:   Manage the tags assigned for unsolicited events dynamically together&lt;br /&gt;
:   with the jack-detection routines.  Basically this is almost same as what&lt;br /&gt;
:   we've done in patch_sigmatel.c.  Assign the new tag number for each new&lt;br /&gt;
:   unsol event, associate with the given NID and the action type, etc.&lt;br /&gt;
:   &lt;br /&gt;
:   With this change, now all pins looked over in snd_hda_jack_add_kctls()&lt;br /&gt;
:   are actually enabled for detection now even if the pins aren't used for&lt;br /&gt;
:   jack-retasking by the driver.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Fix lost speaker volume controls&lt;br /&gt;
:   &lt;br /&gt;
:   When there are the same or more number of HP pins are available, HP pins&lt;br /&gt;
:   are used as the primary outputs instead of the speaker pins.  But, in&lt;br /&gt;
:   some cases (especially with ALC663 &amp;amp; co), some DACs are available only&lt;br /&gt;
:   with a later pin and it's assigned to a speaker, and since the driver&lt;br /&gt;
:   parses the pins from the lower NID, such a DAC was skipped eventually&lt;br /&gt;
:   without assignments.  This resulted in a regression, the missing speaker&lt;br /&gt;
:   volume control in the new parser.&lt;br /&gt;
:   &lt;br /&gt;
:   As a workaround for this, now the driver retries the pin-&amp;amp;gt;DAC mapping&lt;br /&gt;
:   again after restoring the speaker-pins as primary.  This is still an ad&lt;br /&gt;
:   hoc fix, but it works so far for most of Realtek codecs.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Minor cleanup&lt;br /&gt;
:   &lt;br /&gt;
:   Use an inline function for the common pattern for assigning a capsrc.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Create jack-detection kcontrols&lt;br /&gt;
:   &lt;br /&gt;
:   Create kcontrols for pin jack-detections, which work similarly like&lt;br /&gt;
:   jack-input layer.  Each control will notify when the jack is plugged or&lt;br /&gt;
:   unplugged, and also user can read the value at any time via the normal&lt;br /&gt;
:   control API.&lt;br /&gt;
:   &lt;br /&gt;
:   The control elements are created with iface=CARD, so that they won't&lt;br /&gt;
:   appear in the mixer apps.&lt;br /&gt;
:   &lt;br /&gt;
:   So far, only the pins that enabled the jack-detection are registered.&lt;br /&gt;
:   For covering all pins, the transition of the common unsol-tag handling&lt;br /&gt;
:   would be needed.  Stay tuned.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Cache the jack-detection value&lt;br /&gt;
:   &lt;br /&gt;
:   Introduce a table containing the pins and their jack-detection states&lt;br /&gt;
:   for avoiding the unnecessary verbs to check the pin status at each time.&lt;br /&gt;
:   &lt;br /&gt;
:   When the unsol event is enabled via snd_hda_jack_detect_enable(), it&lt;br /&gt;
:   automatically adds the given NID to the table.  Then the driver supposes&lt;br /&gt;
:   that the codec driver will set the dirty flag appropariately when an&lt;br /&gt;
:   unsolicited event is invoked for that pin.&lt;br /&gt;
:   &lt;br /&gt;
:   The behavior for reading other pins that aren't registered in the table&lt;br /&gt;
:   doesn't change.  Only the pins assigned to the table are cached, so far.&lt;br /&gt;
:   &lt;br /&gt;
:   In near futre, this table can be extended to use the central place for&lt;br /&gt;
:   the unsolicited events of all pins, etc, and eventually include the&lt;br /&gt;
:   jack-detect kcontrols that replace the current input-jack stuff.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda: remove unused quirk for inverted mute led&lt;br /&gt;
:   &lt;br /&gt;
:   Commit b99a776d0b17ae0f3a54e86009887a00ac4889d0 removed all effects of&lt;br /&gt;
:   the STAC92HD83* model quirk &amp;quot;hp&amp;quot;. However, it left the model selection&lt;br /&gt;
:   and documentation behind, confusing users with inverted mute&lt;br /&gt;
:   leds. Completely remove this quirk and its documentation.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - GPIO to control mute LED may be enabled on HP systems with no such HW&lt;br /&gt;
:   &lt;br /&gt;
:   This may lead to problems (like loss of sound) as GPIO pin may be used&lt;br /&gt;
:   for different function (SPDIF OUT, EAPD etc) on those systems. This patch&lt;br /&gt;
:   disables default mute LED GPIO configuration on all new codecs as all new&lt;br /&gt;
:   HP systems are expected to provide explicit mute LED configuration in SMBIOS.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Increase the max number of coverters/pins in patch_hdmi.c&lt;br /&gt;
:   &lt;br /&gt;
:   The new hardware tends to have more and more.  As a temporary fix, just&lt;br /&gt;
:   increase the number for now.&lt;br /&gt;
:   &lt;br /&gt;
:   For a long-term solution, we should assign the cvts/pins dynamically.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Supports more audio streams&lt;br /&gt;
:   &lt;br /&gt;
:   So far, the driver supports up to 10 streams.  This is a restriction in&lt;br /&gt;
:   hda_intel.c and hda_codec.c: in the former, the fixed array size limits&lt;br /&gt;
:   the amount, and in the latter, the fixed device-number assignment table&lt;br /&gt;
:   (in get_empty_pcm_device()) limits the possibility.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch reduces the restriction by&lt;br /&gt;
:   - using linked list for managing PCM instances in hda_intel.c, and&lt;br /&gt;
:   - assigning non-fixed device numbers for the extra devices&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Introduce snd_hda_get_pin_label()&lt;br /&gt;
:   &lt;br /&gt;
:   Create a new helper function snd_hda_get_pin_label() for getting a label&lt;br /&gt;
:   string for both input and output pins.  hda_get_input_pin_label() is&lt;br /&gt;
:   obsoleted by this function, and the callers are replaced appropriately&lt;br /&gt;
:   now by this patch.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Move ALC880 model=medion-rim to auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   Translate ALC880 medion-rim static configs to the auto-parser with the&lt;br /&gt;
:   additional GPIO2 verb and COEF setup.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda: fix mute led polarity for HP laptops with buggy BIOS&lt;br /&gt;
:   &lt;br /&gt;
:   Some HP laptop models do not have a properly filled OEM string used&lt;br /&gt;
:   to set the gpio and polarity of the mute led. Make the mute led&lt;br /&gt;
:   configuration work for this case.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Create &amp;quot;Bass Speaker&amp;quot; for two speaker pins&lt;br /&gt;
:   &lt;br /&gt;
:   On systems with two speaker pins, the secondary speaker pin is mostly&lt;br /&gt;
:   assigned to a bass speaker instead of a surround.  Thus it makes more&lt;br /&gt;
:   sense to rename the control properly.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Don't create extra controls with channel suffix&lt;br /&gt;
:   &lt;br /&gt;
:   The multiple headphone or speaker pins are usually provided to&lt;br /&gt;
:   output the same stream unlike line-out jacks (which are supposed&lt;br /&gt;
:   to be multi-channel surrounds).  Thus giving a mixer name like&lt;br /&gt;
:   &amp;quot;Headphone Surround&amp;quot; is rather confusing.  Instead, when multiple&lt;br /&gt;
:   headphone volumes are available, use index with the same &amp;quot;Headphone&amp;quot;&lt;br /&gt;
:   name.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix remaining VREF mute-LED NID check in post-3.1 changes&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix GPIO LED setup for IDT 92HD75 codecs&lt;br /&gt;
:   &lt;br /&gt;
:   Some HP laptops with IDT 92HD75 codecs may use a GPIO &amp;amp;gt; 4 for the mute&lt;br /&gt;
:   LED, but currently the driver doesn't check this properly, and confuses&lt;br /&gt;
:   the mute LED behavior.  This ended up with the silent output  on some&lt;br /&gt;
:   HP laptops due to  having another GPIO used as external amp control.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch fixes the problem by checking the max GPIO count and&lt;br /&gt;
:   comparing with the given value from DMI entry instead of magic fixed&lt;br /&gt;
:   value 4 and 8, and adding a new field to indicate the VREF mute-LED&lt;br /&gt;
:   behavior.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-and-tested-by: Vitaliy Kulikov &amp;amp;lt;Vitaliy.Kulikov@idt.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda/realtek - Fix Oops in alc_mux_select()&lt;br /&gt;
:   &lt;br /&gt;
:   When no imux is available (e.g. a single capture source),&lt;br /&gt;
:   alc_auto_init_input_src() may trigger an Oops due to the access to -1.&lt;br /&gt;
:   Add a proper zero-check to avoid it.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix S3/S4 problem on machines with VREF-pin mute-LED&lt;br /&gt;
:   &lt;br /&gt;
:   The verb command in stac92xx_post_suspend caused the audio to stop&lt;br /&gt;
:   working after resuming from S3 mode on HP laptops with the VREF-pin&lt;br /&gt;
:   mute-LED control.  Removing relevant post_suspend registering.&lt;br /&gt;
:   &lt;br /&gt;
:   Although removing D3 on AFG is no optimal solution, the impact should&lt;br /&gt;
:   be small in comparison with the broken S3/S4.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Avoid touching mute-VREF pin for IDT codecs&lt;br /&gt;
:   &lt;br /&gt;
:   Some HP laptops use a pin VREF for controlling the mute LED, and such a&lt;br /&gt;
:   pin shouldn't be powered off.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix jack-detection control of VT1708&lt;br /&gt;
:   &lt;br /&gt;
:   VT1708 has no support for unsolicited events per jack-plug, the driver&lt;br /&gt;
:   implements the workq for polling the jack-detection.  The mixer element&lt;br /&gt;
:   &amp;quot;Jack Detect&amp;quot; was supposed to control this behavior on/off, but this&lt;br /&gt;
:   doesn't work properly as is now.  The workq is always started and the&lt;br /&gt;
:   HP automute is always enabled.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch fixes the jack-detect control behavior by triggering / stopping&lt;br /&gt;
:   the work appropriately at the state change.  Also the work checks the&lt;br /&gt;
:   internal state to continue scheduling or not.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - cut and paste typo in cs420x_models[]&lt;br /&gt;
:   &lt;br /&gt;
:   The CS420X_IMAC27 was copied from the line before but CS420X_APPLE&lt;br /&gt;
:   was clearly intented.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Fix missing inits of item indices for auto-mic&lt;br /&gt;
:   &lt;br /&gt;
:   When the imux entries are rebuilt in alc_rebuild_imux_for_auto_mic(),&lt;br /&gt;
:   the initialization of index field is missing.  It may work without it&lt;br /&gt;
:   casually when the original imux was created by the auto-parser, but&lt;br /&gt;
:   it's definitely broken in the case of static configs where no imux was&lt;br /&gt;
:   parsed beforehand.  Because of this, the auto-mic switching doesn't&lt;br /&gt;
:   work properly on some model options.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds the missing initialization of index field.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Dmitry Nezhevenko &amp;amp;lt;dion@inhex.net&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - Fix invalid pin and GPIO for Apple laptops with CS codecs&lt;br /&gt;
:   &lt;br /&gt;
:   The PCI SSID 8086:7270 is commonly used for multiple Apple machines,&lt;br /&gt;
:   thus we can't use it as identifier for a unique model.  Because of this&lt;br /&gt;
:   conflict, some machines show weird behavior.  For example, MacBook Air&lt;br /&gt;
:   shows Front and Surround speakers although only Surround works due to&lt;br /&gt;
:   the wrongly overridden pin-configuration for imac27.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch fixes two things:&lt;br /&gt;
:   - Stop the wrong pin-config override of imac27 by removing PCI SSID&lt;br /&gt;
:   entry for avoiding the wrong mappings,&lt;br /&gt;
:   - Add the generic GPIO setup for Apple machines by checking the codec&lt;br /&gt;
:   SSID vendor bits&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Linus Torvalds &amp;amp;lt;torvalds@linux-foundation.org&amp;amp;gt;&lt;br /&gt;
:   Tested-by: Dirk Hohndel &amp;amp;lt;hohndel@infradead.org&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - Check subdevice mask in snd_hda_check_board_codec_sid_config()&lt;br /&gt;
:   &lt;br /&gt;
:   In snd_hda_check_board_codec_sid_config(), not only comparing with the&lt;br /&gt;
:   exact value but allow the bit-mask comparison for vendor-only, etc.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Linus Torvalds &amp;amp;lt;torvalds@linux-foundation.org&amp;amp;gt;&lt;br /&gt;
:   Tested-by: Dirk Hohndel &amp;amp;lt;hohndel@infradead.org&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - repoll ELD content for multiple times&lt;br /&gt;
:   &lt;br /&gt;
:   Improve the one-shot ELD repoll to up to 6 retries.&lt;br /&gt;
:   &lt;br /&gt;
:   Up to now the 300ms looks sufficient for the test boxes. However&lt;br /&gt;
:   I'm a bit worried about how well it can fit the wider user base.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add pin fix for Alienware M17x R3&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Albert Pool &amp;amp;lt;albertpool@solcon.nl&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - Fix the connection selection of ADCs on Cirrus codecs&lt;br /&gt;
:   &lt;br /&gt;
:   spec-&amp;amp;gt;cur_adc isn't set until cs_capture_pcm_prepare() is called although&lt;br /&gt;
:   the driver tries to select the connection at init time and at auto-mic&lt;br /&gt;
:   switch.  This results in the access to the widget NID 0, which is&lt;br /&gt;
:   obviously invalid, also a wrong capture source.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch fixes the issue by issuing the connect-select verb conditionally&lt;br /&gt;
:   at appropriate places.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-and-tested-by: Dylan Reid &amp;amp;lt;dgreid@chromium.org&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - move eld-&amp;amp;gt;spk_alloc fixup to hdmi_update_eld()&lt;br /&gt;
:   &lt;br /&gt;
:   It looks more natural and saves two lines of code.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - delayed ELD repoll&lt;br /&gt;
:   &lt;br /&gt;
:   The Intel HDMI chips (ironlake at least) are found to have ~250ms delay&lt;br /&gt;
:   between the ELD_Valid=1 hotplug event is send and the ELD buffer becomes&lt;br /&gt;
:   actually readable. During the time the ELD buffer is mysteriously all 0.&lt;br /&gt;
:   &lt;br /&gt;
:   Fix it by scheduling a delayed work to re-read ELD buffer after 300ms.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - fix ELD memory leak&lt;br /&gt;
:   &lt;br /&gt;
:   memset(eld) clears eld-&amp;amp;gt;proc_entry which will leak the struct&lt;br /&gt;
:   snd_info_entry when unloading module.&lt;br /&gt;
:   &lt;br /&gt;
:   Fix it by&lt;br /&gt;
:   - memset only the fields before eld-&amp;amp;gt;eld_buffer&lt;br /&gt;
:   - set eld-&amp;amp;gt;eld_valid to true _after_ all eld fields have been filled&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek: remove redundant semicolon&lt;br /&gt;
:   &lt;br /&gt;
:   Having just one semicolon after a break statement is enough.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Move ALC885 macpro and imac24 models to auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   The ALC882 macpro and imac24 static configs can be transferred to the&lt;br /&gt;
:   auto-parser with the additional GPIO setup.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Re-add the model string selection for ALC88x&lt;br /&gt;
:   &lt;br /&gt;
:   In the commit [c3e837bb: ALSA: hda/realtek - Rewrite ALC882 acer-aspire-*&lt;br /&gt;
:   models with the auto-parser], the check of the model option got removed&lt;br /&gt;
:   mistakenly.  Re-added the board_config check again.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Create mono volume controls for mono-outputs&lt;br /&gt;
:   &lt;br /&gt;
:   When the pin or the DAC doesn't support the stereo, create a mono&lt;br /&gt;
:   control instead of creating a stereo control blindly.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - pwr_nids cleanup for IDT codecs&lt;br /&gt;
:   &lt;br /&gt;
:   Clean up and fix pwr_nids for 92HD71 / 73 / 83 family codecs; remove&lt;br /&gt;
:   pwr_mapping which was incorrect.&lt;br /&gt;
:   &lt;br /&gt;
:   The original pwr_nids support of 92HD83xxx was incorrect and never&lt;br /&gt;
:   actually worked before.  Now we should have things working correctly&lt;br /&gt;
:   without having to hack by DID anymore.&lt;br /&gt;
:   &lt;br /&gt;
:   It is also not necessary to explicitly turn on all the pins near the&lt;br /&gt;
:   beginning of patch_stac92hd83xxx() now, the pins will go though&lt;br /&gt;
:   initialization properly.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested on 92HD66 / 71 / 73 / 75 / 83 / 89 / 91 demo boards.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Rewrite ALC882 acer-aspire-* models with the auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   Now we can move the big acer-aspire-* static quirks to the auto-paresr&lt;br /&gt;
:   with some additional pin-configs and verbs.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Create multi-io jacks more aggresively&lt;br /&gt;
:   &lt;br /&gt;
:   So far the driver creates the multi-io jacks only when a single output&lt;br /&gt;
:   jack, i.e. no multiple speakers are assigned.  This patch adds the&lt;br /&gt;
:   similar multi-io detection even with multiple speakers are assigned&lt;br /&gt;
:   primarily, so that 5.1-speakers + HP/mic/LI combination can work.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Drop ALC882 desktop model quirks&lt;br /&gt;
:   &lt;br /&gt;
:   Now we're touching the desktop static configs for ALC88x codecs.&lt;br /&gt;
:   These are mostly OK with the auto-parser, but some models need careful&lt;br /&gt;
:   handling; ALC889 intel mobo requires the COEF setup, and W2JC needs&lt;br /&gt;
:   GPIO1 and COEF.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Remove ALC882 targa-* models&lt;br /&gt;
:   &lt;br /&gt;
:   All ALC882 targa-* models can be replaced with the auto-parser just&lt;br /&gt;
:   with the additional GPIO3 setup.  And it's generically applied to all&lt;br /&gt;
:   MSI boards unless other quirks are present.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Reorder alc882_fixup_tbl[]&lt;br /&gt;
:   &lt;br /&gt;
:   No, I'm not Mr. Monk, but can't resist...&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Move ALC882 model=acer-aspire to auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   The ALC882 model=acer-aspire requires the additional COEF setup.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Replace ALC882 arima, medion and laptop-eapd quirks&lt;br /&gt;
:   &lt;br /&gt;
:   Move these quitks to the auto-parser.  They just need some EAPD setups&lt;br /&gt;
:   in addition.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Drop ALC882 asus-a7j and asus-a7m models&lt;br /&gt;
:   &lt;br /&gt;
:   These models work fine with the auto-parser with the additional COEF&lt;br /&gt;
:   setup.  The iMac 7,1 (106b:3200) also uses the same quirk, so remove it&lt;br /&gt;
:   too.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Look through codec SSID for fix-up lists&lt;br /&gt;
:   &lt;br /&gt;
:   Not only PCI SSIDs but also look through codec SSIDs for fix-up table&lt;br /&gt;
:   entries.  MacBook tend to give the same PCI SSID but unique codec SSIDs.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Move ALC888 ASUS EEE1601 config to auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   The ASUS EEE1601 works almost fine with the auto-parser but the static&lt;br /&gt;
:   configuration has a certain specific COEF verb.  Add this to the fix-up&lt;br /&gt;
:   list so that we can drop the whole EEE1601 static config from&lt;br /&gt;
:   alc882_quirks.c.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Rewrite ALC882 model=vaio-tt with auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   Providing a pincfg fix for VAIO-TT with ALC889 codec to work with the&lt;br /&gt;
:   auto-parser, and drop the static configuration.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Remove all ALC262-quirk codes&lt;br /&gt;
:   &lt;br /&gt;
:   Now that model=ultra is supported well by the auto-parser, we can get rid&lt;br /&gt;
:   of the whole alc262_quirks.c and its related codes.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Add the support of shared HP/Mic&lt;br /&gt;
:   &lt;br /&gt;
:   A machine like Q1-ultra which has only a single HP but no mic-jack, we&lt;br /&gt;
:   can re-task the headhpone as an external mic jack.  This was done formerly&lt;br /&gt;
:   in ALC262 model=ultra quirk, and now the auto-parser supports this mode.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Drop ALC262 model=basic static configs&lt;br /&gt;
:   &lt;br /&gt;
:   Now most of ALC262 stuff has been moved to the auto-parser, and no longer&lt;br /&gt;
:   need for keeping model=basic.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Convert ALC262 model=fujitsu to auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   It works well with the auto-parse and the default BIOS setup when an&lt;br /&gt;
:   additional COEF setup (for benq) is used.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Convert ALC262 benq and benq-t31 to fixup-lists&lt;br /&gt;
:   &lt;br /&gt;
:   The conversion from ALC262 model=benq and model=benq-t31 static configs&lt;br /&gt;
:   to auto-parser requires the manual COEF setups for corresponding models.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Convert ALC262 lenovo-3000 quirks to fixup-list&lt;br /&gt;
:   &lt;br /&gt;
:   The static quirks for ALC262 Lenovo 3000 can be covered by the auto-&lt;br /&gt;
:   parser with a fixup of the mic-pin to VREF50 and the additional COEF&lt;br /&gt;
:   verb.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Convert ALC262 model=toshiba-rx1 to a fixup-list&lt;br /&gt;
:   &lt;br /&gt;
:   Use the auto-parser for ALC262 model=toshiba-rx1 with the fixed pin-&lt;br /&gt;
:   configs.  The BIOS table seems incorrect, so many pin entries are&lt;br /&gt;
:   overwritten to match with the former quirk.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Convert alc262 model=tyan to a fixup-list&lt;br /&gt;
:   &lt;br /&gt;
:   Use the auto-parser for ALC262 model=tyan with a pin-config fix-up and&lt;br /&gt;
:   drop the static configuration.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Re-enable the check NO_PRESENCE misc bit&lt;br /&gt;
:   &lt;br /&gt;
:   We disabled the check of NO_PRESENCE bit of the default pin-config&lt;br /&gt;
:   in commit f4419172 temporarily.  One problem was that the first&lt;br /&gt;
:   implementation was wrong -- the bit after the shift must be checked.&lt;br /&gt;
:   However, this would still give many regressions on machines with broken&lt;br /&gt;
:   BIOS.  They set this bit wrongly even on active pins.&lt;br /&gt;
:   &lt;br /&gt;
:   A workaround is to check whether all pins contain this bit.  As far as&lt;br /&gt;
:   I've checked, broken BIOSen set this bit on all pins, no matter whether&lt;br /&gt;
:   active or not.  In such a case, the driver should ignore this bit check.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Don't add elements of other codecs to vmaster slave&lt;br /&gt;
:   &lt;br /&gt;
:   When a virtual mater control is created, the driver looks for slave&lt;br /&gt;
:   elements from the assigned card instance.  But this may include the&lt;br /&gt;
:   elements of other codecs when multiple codecs are on the same HD-audio&lt;br /&gt;
:   bus.  This works at the first time, but it'll give Oops when it's once&lt;br /&gt;
:   freed and re-created via reconfig sysfs.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch changes the element-look-up strategy to limit only to the&lt;br /&gt;
:   mixer elements of the same codec.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: David Henningsson &amp;amp;lt;david.henningsson@canonical.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - fix internal mic on Dell Vostro 3500 laptop&lt;br /&gt;
:   &lt;br /&gt;
:   Fix the not working internal mic on Dell Vostro 3500 laptop by introducing the&lt;br /&gt;
:   new model dell-vostro-3500.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Remove quirk for Toshiba T110&lt;br /&gt;
:   &lt;br /&gt;
:   According to the bug reporter, model=auto is needed to make the&lt;br /&gt;
:   internal microphone work.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: https://bugs.launchpad.net/bugs/819699&lt;br /&gt;
:   Reported-by: Andrej (agno01)&lt;br /&gt;
: - ALSA: hda - Mute unused capture sources for Realtek codecs&lt;br /&gt;
:   &lt;br /&gt;
:   When a Realtek codec has a matrix-style capture-source selection, we&lt;br /&gt;
:   need to scan all connections instead of only imux items.  Otherwise some&lt;br /&gt;
:   input might be kept unmuted.  Although the corresponding input must be&lt;br /&gt;
:   dead so there should be no input from it, it's still safer to mute the&lt;br /&gt;
:   route completely.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix silent output regression with ALC861&lt;br /&gt;
:   &lt;br /&gt;
:   The 3.1 kernel has a regression for ALC861 codec where no sound output&lt;br /&gt;
:   is heard with the default setup.  It's because the amps in DACs aren't&lt;br /&gt;
:   properly unmuted while the output mixers are assigned only to pins.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch fixes the missing initialization of DACs when no mixer is&lt;br /&gt;
:   assigned to them.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Andrea Iob &amp;amp;lt;andrea_iob@yahoo.it&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda/realtek - Don't detect LO jack when identical with HP&lt;br /&gt;
:   &lt;br /&gt;
:   The spec-&amp;amp;gt;autocfg.line_out_pins[] may contain the same pins as hp_pins[]&lt;br /&gt;
:   depending on the configuration.  When they are identical, detecting the&lt;br /&gt;
:   line_jack_present flag screws up the auto-mute because alc_line_automute()&lt;br /&gt;
:   is called unconditionally at initialization while it won't be triggered&lt;br /&gt;
:   by unsol events, thus the old line_jack_present flag is kept for the&lt;br /&gt;
:   whole run.&lt;br /&gt;
:   &lt;br /&gt;
:   For fixing this buggy behavior, the driver needs to check whether the&lt;br /&gt;
:   line-outs are really individual, and skip if same as headphone jacks.&lt;br /&gt;
:   &lt;br /&gt;
:   Reference: https://bugzilla.novell.com/show_bug.cgi?id=716104&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Refactor Realtek's automute&lt;br /&gt;
:   &lt;br /&gt;
:   Increase readability and understandability in the automute code.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Update jack-sense info even when no automute is set&lt;br /&gt;
:   &lt;br /&gt;
:   The internal states, jack_present and line_jack_present should be&lt;br /&gt;
:   updated upon unsolicited events even if no automute is set.&lt;br /&gt;
:   Otherwise the wrong state is referred when the automute behavior is&lt;br /&gt;
:   changed by the mixer control.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Skip invalid digital out pins&lt;br /&gt;
:   &lt;br /&gt;
:   Some BIOS report invalid pins as digital output pins.  The driver checks&lt;br /&gt;
:   the connection but it doesn't do it fully correctly, and it leaves some&lt;br /&gt;
:   undefined value as the audio-out widget, which makes the driver spewing&lt;br /&gt;
:   warnings.  This patch fixes the issue.&lt;br /&gt;
:   &lt;br /&gt;
:   Reference: https://bugzilla.novell.com/show_bug.cgi?id=727348&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/sigmatel - Automatically retrieve digital I/O widgets&lt;br /&gt;
:   &lt;br /&gt;
:   Revise stac92xx_parse_auto_config to automatically scan for digital input&lt;br /&gt;
:   and output converters.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove unused variables&lt;br /&gt;
:   &lt;br /&gt;
:   Just clean-up what GCC caught.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Don't create alt-stream for capture when unnecessary&lt;br /&gt;
:   &lt;br /&gt;
:   When the driver finds multiple ADCs, it tries to create an alternative&lt;br /&gt;
:   capture PCM stream.  However, these secondary ADCs might be useless or&lt;br /&gt;
:   in uncontrolled paths in some cases, e.g. when auto-mic or dynamic&lt;br /&gt;
:   ADC-switching is enabled.  Also, when only a single capture source is&lt;br /&gt;
:   available, the multi-streams don't make sense, too.&lt;br /&gt;
:   &lt;br /&gt;
:   With this patch, the driver checks such condition and skips the alt&lt;br /&gt;
:   stream appropriately.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add support for 92HD65 / 92HD66 family of codecs&lt;br /&gt;
:   &lt;br /&gt;
:   These codecs have SPDIF-in, which is new to the 92HD83xxx compatible&lt;br /&gt;
:   families, so a bit of logic is added to support them.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Disable power-widget control for IDT 92HD83/93 as default&lt;br /&gt;
:   &lt;br /&gt;
:   The power-widget control in patch_stac92hd83xxx() never worked properly,&lt;br /&gt;
:   thus it's safer to turn it off as default for now.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix ADC input-amp handling for Cx20549 codec&lt;br /&gt;
:   &lt;br /&gt;
:   It seems that Conexant CX20549 chip handle only a single input-amp even&lt;br /&gt;
:   though the audio-input widget has multiple sources.  This has been never&lt;br /&gt;
:   clear, and I implemented in the current way based on the debug information&lt;br /&gt;
:   I got at the early time -- the device reacts individual input-amp values&lt;br /&gt;
:   for different sources.  This is true for another Conexant codec, but it's&lt;br /&gt;
:   not applied to CX20549 actually.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch changes the auto-parser code to handle a single input-amp&lt;br /&gt;
:   per audio-in widget for CX20549.  After applying this, you'll see only a&lt;br /&gt;
:   single &amp;quot;Capture&amp;quot; volume control instead of separate &amp;quot;Mic&amp;quot; or &amp;quot;Line&amp;quot;&lt;br /&gt;
:   captures when the device is set up to use a single ADC.&lt;br /&gt;
:   &lt;br /&gt;
:   We haven't tested 20551 and 20561 codecs yet.  If these show the similar&lt;br /&gt;
:   behavior like 20549, they need to set spec-&amp;amp;gt;single_adc_amp=1, too.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Keep EAPD turned on for old Conexant chips&lt;br /&gt;
:   &lt;br /&gt;
:   In the old Conexant chips (5045, 5047, 5051 and 5066), a single EAPD&lt;br /&gt;
:   may handle both headphone and speaker outputs while it's assigned only&lt;br /&gt;
:   to one of them.  Turning off dynamically leads to the unexpected silent&lt;br /&gt;
:   output in such a configuration with the auto-mute function.&lt;br /&gt;
:   &lt;br /&gt;
:   Since it's difficult to know how the EAPD is handled in the actual h/w&lt;br /&gt;
:   implementation, better to keep EAPD on while running for such codecs.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Fix missing volume controls with ALC260&lt;br /&gt;
:   &lt;br /&gt;
:   ALC260 has multiple mixer widgets connected to the shared DAC, but the&lt;br /&gt;
:   driver currently doesn't check this possibility and ignores when the DAC&lt;br /&gt;
:   is shared with others.  This resulted in the silent output from some&lt;br /&gt;
:   routes because of lack of the amp setup.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds the workaround for it by checking the route even with the&lt;br /&gt;
:   shared DAC, but also checking the conflict with the existing control for&lt;br /&gt;
:   the very same widget NID.&lt;br /&gt;
:   &lt;br /&gt;
:   Reference: https://bugzilla.novell.com/show_bug.cgi?id=726812&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix pin-config for ASUS W90V&lt;br /&gt;
:   &lt;br /&gt;
:   The association numbers of surround/CLFE speaker pins aren't correctly&lt;br /&gt;
:   mapped by the auto-parser.  This patch fixes the CLFE speaker pin to the&lt;br /&gt;
:   right assoc value (from 3 to 1).&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Nika Topolchanskaya &amp;amp;lt;nanodesuu@gmail.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - Fix surround/CLFE headphone and speaker pins order&lt;br /&gt;
:   &lt;br /&gt;
:   When 5.1 or more headphone or speaker pins are provided, the parser still&lt;br /&gt;
:   takes as is without fixing the order of channel mapping, which leads in&lt;br /&gt;
:   the unexpected strange channel order by surround outputs.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch fixes the issue by applying the same fix-up not only to&lt;br /&gt;
:   line_out_pins[] but also hp_pins[] and speaker_pins[].&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Add new revision for ALC662&lt;br /&gt;
:   &lt;br /&gt;
:   The revision 0x100300 was found for ALC662. It seems to work well&lt;br /&gt;
:   with patch_alc662.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: http://bugs.launchpad.net/bugs/877373&lt;br /&gt;
:   Tested-by: Shengyao Xue &amp;amp;lt;Shengyao.xue@canonical.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda/realtek - Fix DAC assignments of multiple speakers&lt;br /&gt;
:   &lt;br /&gt;
:   When a device has multiple speakers and still has the auto-mute support,&lt;br /&gt;
:   the driver copies line_outs[] to speaker_outs[].  And then it tries to&lt;br /&gt;
:   assign DACs for both.  This ended up with the assignment only to the&lt;br /&gt;
:   primary DAC to all speakers.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch fixes the situation by checking the duplicated LO/SPK case&lt;br /&gt;
:   appropriately.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: conexant support for Lenovo T520/W520&lt;br /&gt;
:   &lt;br /&gt;
:   This is patch for Conexant codec of Intel HDA driver, adding new quirk&lt;br /&gt;
:   for Lenovo Thinkpad T520 and W520. Conexant autodetection works fine for&lt;br /&gt;
:   T520 (similar subsystem ID is used also in W520 model) and detects more&lt;br /&gt;
:   mixer features compared to generic (fallback) Lenovo quirk with&lt;br /&gt;
:   hardcoded options in Conexant codec.&lt;br /&gt;
:   &lt;br /&gt;
:   Patch was activelly tested with Linux 3.0.4, 3.0.6 and 3.0.7 without any&lt;br /&gt;
:   problems.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Cache COEF 0 value&lt;br /&gt;
:   &lt;br /&gt;
:   The COEF #0 value represents a sort of device id, so it's supposedly&lt;br /&gt;
:   constant while operation.  Better to use the cached value instead of&lt;br /&gt;
:   reading it at each time from the performance POV.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Clean up codec renames&lt;br /&gt;
:   &lt;br /&gt;
:   Use a static table for detecting the codec renames.&lt;br /&gt;
:   Also clean up the error paths in each patch_*() function.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Use alc_codec_rename()&lt;br /&gt;
:   &lt;br /&gt;
:   Replaced with alc_codec_rename() in all possible places.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - ALC888S-VC remark to ALC886&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Check the error from alc_codec_rename()&lt;br /&gt;
:   &lt;br /&gt;
:   Should be a rare case, but...&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Fixup Realtek headphone pin initialization&lt;br /&gt;
:   &lt;br /&gt;
:   This typo caused headphone pins not to be initialized correctly.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: https://bugs.launchpad.net/bugs/871582&lt;br /&gt;
:   Reported-by: Effenberg&lt;br /&gt;
: - ALSA: hda - Remove bad code for IDT 92HD83 family patch&lt;br /&gt;
:   &lt;br /&gt;
:   The purpose of this patch is to remove a section of &amp;quot;bad&amp;quot; code that&lt;br /&gt;
:   assigns the last DAC to ports E or F in order to support notebooks&lt;br /&gt;
:   with docking in earlier days, around ALSA 1.0.19 - 21.  This is not&lt;br /&gt;
:   necessary now and actually breaks some configurations that use these&lt;br /&gt;
:   ports as other devices.  This have been tested on several different&lt;br /&gt;
:   configurations to make sure that it is working for different combinations.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Choose more cleverly the primary outputs&lt;br /&gt;
:   &lt;br /&gt;
:   When the speaker outputs are more than the headphone outputs, it implies&lt;br /&gt;
:   that the system has surround speakers while the headphones are only for&lt;br /&gt;
:   monitoring the front.  In such a case, it's better to put speakers as&lt;br /&gt;
:   the primary outputs so that the driver can build up and keep the&lt;br /&gt;
:   surround setup.  Otherwise the system will pick up the headphone as&lt;br /&gt;
:   primary, and offers less channels than the speakers do support.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Moved snd_print_pcm_rates() back into hda_proc.c&lt;br /&gt;
:   &lt;br /&gt;
:   Since hda_proc.c is now the only user of snd_print_pcm_rates(), better to&lt;br /&gt;
:   put it back locally to hda_proc.c and revert to the old style.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hdmi: fix printout of SAD sampling rates&lt;br /&gt;
:   &lt;br /&gt;
:   SAD sampling rate information reported in&lt;br /&gt;
:   /proc/asound/cardX/eldX is incorrect due to a mismatch&lt;br /&gt;
:   between HDA and HDMI frequencies. Add new routine to provide&lt;br /&gt;
:   relevant values.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: jack - Add &amp;quot;Line In&amp;quot; input jack constants&lt;br /&gt;
:   &lt;br /&gt;
:   Similar to Line Out, these constants form the base for future&lt;br /&gt;
:   patches enabling input jack reporting for Line in jacks.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Fix DAC assignment for secondary headphone on Sigmatel/IDT&lt;br /&gt;
:   &lt;br /&gt;
:   If we run out of DACs when trying to assign a DAC to a secondary&lt;br /&gt;
:   headphone, prefer the DAC of the first headphone to the primary&lt;br /&gt;
:   (usually line out) DAC.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: http://bugs.launchpad.net/bugs/845275&lt;br /&gt;
: - ALSA: HDA: Fix naming of input jacks for IDT parser&lt;br /&gt;
:   &lt;br /&gt;
:   The Sigmatel/IDT parser should have the same naming convention&lt;br /&gt;
:   for input jacks as the other codecs have.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: http://bugs.launchpad.net/bugs/859704&lt;br /&gt;
: - ALSA: hda/hdmi: expose ELD control&lt;br /&gt;
:   &lt;br /&gt;
:   Applications may want to read ELD information to&lt;br /&gt;
:   understand what codecs are supported on the HDMI&lt;br /&gt;
:   receiver and handle the a-v delay for better lip-sync.&lt;br /&gt;
:   &lt;br /&gt;
:   ELD information is exposed in a device-specific&lt;br /&gt;
:   IFACE_PCM kcontrol. Tested both with amixer and&lt;br /&gt;
:   PulseAudio; with a corresponding patch passthrough modes&lt;br /&gt;
:   are enabled automagically.&lt;br /&gt;
:   &lt;br /&gt;
:   ELD control size is set to zero in case of errors or&lt;br /&gt;
:   wrong configurations. No notifications are implemented&lt;br /&gt;
:   for now, it is expected that jack detection is used to&lt;br /&gt;
:   reconfigure the audio outputs.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda:via - Skip creations of empty PCM streams&lt;br /&gt;
:   &lt;br /&gt;
:   If no analog I/O is defined, skip creating the corresponding PCM stream.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Avoid unnecessary verbs to clear PCM formats&lt;br /&gt;
:   &lt;br /&gt;
:   Since really_cleanup_stream() is called from both purity_inactive_streams()&lt;br /&gt;
:   and hda_cleanup_all_streams(), the verbs to clear the PCM channel and&lt;br /&gt;
:   format may be called multiple times unnecessarily.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds checks to skip these unneeded verbs.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Avoid bogus HP-pin assignment&lt;br /&gt;
:   &lt;br /&gt;
:   When the headphone pin is assigned as primary output to line_out_pins[],&lt;br /&gt;
:   the automatic HP-pin assignment by ASSID must be suppressed.  Otherwise&lt;br /&gt;
:   a wrong pin might be assigned to the headphone and breaks the auto-mute.&lt;br /&gt;
:   &lt;br /&gt;
:   Reference: https://bugzilla.novell.com/show_bug.cgi?id=716104&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: No power nids on 92HD93&lt;br /&gt;
:   &lt;br /&gt;
:   This patch is necessary to make internal speakers work on this chip.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: http://bugs.launchpad.net/bugs/854468&lt;br /&gt;
:   Tested-by: Alex Wolfson &amp;amp;lt;alex.wolfson@canonical.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: HDA - Add Independent Headphone for all models of ad1988/ad1989&lt;br /&gt;
:   &lt;br /&gt;
:   - Add &amp;quot;AD198x Headphone&amp;quot; playback device for independent headphone playback&lt;br /&gt;
:   while playing 7.1 surround using rear panel audio jacks.&lt;br /&gt;
:   &lt;br /&gt;
:   - Remove &amp;quot;6stack-dig-fp&amp;quot; model since &amp;quot;Headphone Playback Volume&amp;quot; control using&lt;br /&gt;
:   DAC0 instead of DAC1 (HDA_FRONT) was already added to all models.&lt;br /&gt;
:   &lt;br /&gt;
:   - Add &amp;quot;Independent HP&amp;quot; switch to enable/disable this playback device.&lt;br /&gt;
:   When the switch is OFF, headphone use &amp;quot;copy front&amp;quot; mode to get the front&lt;br /&gt;
:   channel as the green jack.&lt;br /&gt;
:   When the switch is ON, you can play stereo sound through &amp;quot;AD198x Headphone&amp;quot;&lt;br /&gt;
:   device to headphone while playing 7.1 surround sound through &amp;quot;AD198x Analog&amp;quot;&lt;br /&gt;
:   device.&lt;br /&gt;
:   The switch cannot be changed when either &amp;quot;AD198x Headphone&amp;quot; or &amp;quot;AD198X Analog&amp;quot;&lt;br /&gt;
:   is open.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda: hdmi: Hint matching between input devices and pcm devices&lt;br /&gt;
:   &lt;br /&gt;
:   Since modern HDMI cards often have more than one output pin and thus&lt;br /&gt;
:   input device, we need to know which one has actually been plugged in.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds a name hint that indicates which PCM device is connected&lt;br /&gt;
:   to which pin.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Add support for IDT 92HD93&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: http://bugs.launchpad.net/bugs/854468&lt;br /&gt;
: - ALSA: hda/realtek - Fix auto-mute with HP+LO configuration&lt;br /&gt;
:   &lt;br /&gt;
:   When the system has only the headphone and the line-out jacks without&lt;br /&gt;
:   speakers, the current auto-mute code doesn't work.  It's because the&lt;br /&gt;
:   spec-&amp;amp;gt;automute_lines flag is wrongly referred in update_speakers().&lt;br /&gt;
:   This flag must be meaningless when spec-&amp;amp;gt;automute_hp_lo isn't set, thus&lt;br /&gt;
:   they should be always coupled.&lt;br /&gt;
:   &lt;br /&gt;
:   The patch fixes the problem and add a comment to indicate the&lt;br /&gt;
:   relationship briefly.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: http://bugs.launchpad.net/bugs/851697&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: David Henningsson &amp;amp;lt;david.henningsson@canonical.com&amp;amp;gt;&lt;br /&gt;
:   Tested-By: Jayne Han &amp;amp;lt;jayne.han@canonical.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: HDA: Cirrus - fix &amp;quot;Surround Speaker&amp;quot; volume control name&lt;br /&gt;
:   &lt;br /&gt;
:   This patch fixes &amp;quot;Surround Speaker Playback Volume&amp;quot; being cut off.&lt;br /&gt;
:   (Commit b4dabfc452a10 was probably meant to fix this, but it fixed&lt;br /&gt;
:   only the &amp;quot;Switch&amp;quot; name, not the &amp;quot;Volume&amp;quot; name.)&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Terminate the recursive connection search properly&lt;br /&gt;
:   &lt;br /&gt;
:   The recursive search of widget connections in snd_hda_get_conn_index()&lt;br /&gt;
:   must be terminated at the pin and the audio-out widgets.  Otherwise&lt;br /&gt;
:   you'll get &amp;quot;too deep connection&amp;quot; warnings unnecessarily.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Francis Moreau &amp;amp;lt;francis.moro@gmail.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - Add Headphone Playback Volume control for ad1988/ad1989&lt;br /&gt;
:   &lt;br /&gt;
:   - use DAC0 instead of DAC1 for Port-A Headphone&lt;br /&gt;
:   - assign 0x03 to spec-&amp;amp;gt;multiout.hp_nid except model=&amp;quot;6stack-dig-fp&amp;quot;&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda: Conexant: Allow different output types to share DAC&lt;br /&gt;
:   &lt;br /&gt;
:   Headphones has stopped working for the original reported (a regression&lt;br /&gt;
:   compared to 2.6.38). This is because Speaker and Headphones share the&lt;br /&gt;
:   same DAC, in which case no Headphones volume control was created.&lt;br /&gt;
:   This patch fixes so that both Speaker and Headphones volume&lt;br /&gt;
:   controls are created in such scenario.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: http://bugs.launchpad.net/bugs/817943&lt;br /&gt;
: - ALSA: hda - Remove the rest of ALC662 quirks&lt;br /&gt;
:   &lt;br /&gt;
:   The rest of ALC662 quirks are only for desktops, and they should work&lt;br /&gt;
:   with the auto-parser.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Prefer multi-io to speakers for realtek auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   When the multi-io jacks are available, parse them first and assign DACs&lt;br /&gt;
:   before parsing speakers and headphones.  This allows a better chance of&lt;br /&gt;
:   surround I/O in some desktops and laptops with limited DACs.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix Center/LFE mixer element creations for Realtek&lt;br /&gt;
:   &lt;br /&gt;
:   The commit 23c09b00900c3fa6672148738cad29d6fc6ded7c&lt;br /&gt;
:   ALSA: hda - Support multiple speakers by Realtek auto-parser&lt;br /&gt;
:   changes the return value from alc_get_line_out_pfx(), and it breaks&lt;br /&gt;
:   the center/LFE mixer split check.  The caller must test with a string&lt;br /&gt;
:   &amp;quot;CLFE&amp;quot; now.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Rewrite Lenovo X200 quirk with pincfg-fix using auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   Introduce the pincfg table to patch_conexant.c for fixing up the extra&lt;br /&gt;
:   pin-configuration for auto-parser.  As an example, Lenovo X200 model is&lt;br /&gt;
:   replaced with this new mechanism.  (This also fixes the wrong mixer&lt;br /&gt;
:   elements for docking-station I/O in the previous model quirk&lt;br /&gt;
:   automagically.)&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/conexant - Enable ADC-switching for auto-mic mode, too&lt;br /&gt;
:   &lt;br /&gt;
:   The ADC-switching can work also in the auto-mic mode, too.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Rewrite ALC269 laptop-amic,dmic,&amp;amp;co quirks with fixups&lt;br /&gt;
:   &lt;br /&gt;
:   Similarly like ALC662 asus-mode* models, rewrite the laptop-amic and&lt;br /&gt;
:   dmic models with the static pin-config tables.&lt;br /&gt;
:   &lt;br /&gt;
:   Now we can get rid of all alc269_quirks.c.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Rewrite ALC662 asus-mode* models with fixups&lt;br /&gt;
:   &lt;br /&gt;
:   Re-implement the asus-mode[1-8] quirks with the pin-config tables.&lt;br /&gt;
:   They are provided in case where BIOS is broken on the device, so it's&lt;br /&gt;
:   not enabled in PCI SSID lookup table.  User needs to specify it via model&lt;br /&gt;
:   option explicitly if the driver doesn't work with the BIOS setup as is.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Support multiple headphones in Realtek auto-parser&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add multi-headphone NIDs in multiout struct&lt;br /&gt;
:   &lt;br /&gt;
:   For supporting both the multiple headphones and the multiple speakers,&lt;br /&gt;
:   add the new field in struct hda_multi_out, and evaluate in the standard&lt;br /&gt;
:   setup functions.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove all ALC861 and ALC861-VD quirks&lt;br /&gt;
:   &lt;br /&gt;
:   Let's remove the rest of ALC861 and ALC861-VD quirks.&lt;br /&gt;
:   If any breakage is found, it can be fixed easily via the pin-config&lt;br /&gt;
:   table update.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Restore VREF50 setup for ALC861-VD dallas/hp models&lt;br /&gt;
:   &lt;br /&gt;
:   During the cleanup by commit 6727b12669f255dbf65b3d63c32cce1e3e967398,&lt;br /&gt;
:   the specific setups for dallas and hp models, using VREF50 for mic pins,&lt;br /&gt;
:   were lost.  Fixed now.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Rename to snd_hda_parse_pin_defcfg()&lt;br /&gt;
:   &lt;br /&gt;
:   ... and add a new bit-flags argument to specify the behavior of the&lt;br /&gt;
:   function.  The older function is kept as is (as a wrapper).&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix initialization of multi-speaker output paths for Realtek&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix double-headphone/speaker paths for Cxt auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   When multiple headphones or speakers are assigned but no individual&lt;br /&gt;
:   DACs are available, the driver should take the first HP/SPK DAC instead&lt;br /&gt;
:   of another primary output.  The patch adds a bit-flag to dac field of&lt;br /&gt;
:   struct pin_dac_pair indicating that it's a slave DAC.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix output-path initialization for Realtek auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   When the headphone or speaker output has no own DAC, initialize the path&lt;br /&gt;
:   using the primary DAC.  Otherwise the path won't be set properly and&lt;br /&gt;
:   can result in the silence.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix error check from snd_hda_get_conn_index() in patch_cirrus.c&lt;br /&gt;
:   &lt;br /&gt;
:   snd_hda_get_conn_index() returns a negative value while the current code&lt;br /&gt;
:   stores it in an unsigned int.  It must be stored in a signed integer.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Jesper Juhl &amp;amp;lt;jj@chaosbits.net&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - Allow different assoc numbers for multiple speakers&lt;br /&gt;
:   &lt;br /&gt;
:   In snd_hda_parse_pin_def_config(), we checked the associated number&lt;br /&gt;
:   of speaker pins and accepts only one number exclusively.  But many BIOS&lt;br /&gt;
:   seem to give different assoc number for surround speakers, thus we'd&lt;br /&gt;
:   better to accept all speaker pins no matter which assoc number, and sort&lt;br /&gt;
:   like done for the headphone pins.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Support multiple speakers by Realtek auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   Add the support of multiple speakers by Realtek auto-parser.&lt;br /&gt;
:   When all speaker pins have individual DACs, create each speaker volume&lt;br /&gt;
:   control.  Otherwise, create a bind-volume control for all speaker outs.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove ALC662 eeepc-p701 and ecs models&lt;br /&gt;
:   &lt;br /&gt;
:   These are confirmed to work with the auto-parser with pincfg fixups.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove ALC268 model quirks&lt;br /&gt;
:   &lt;br /&gt;
:   Get rid of the rest of ALC268 model quirks.  They are all confirmed to&lt;br /&gt;
:   work with the auto-parser, too.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Replace ALC269 quanta and lifebook models with fixups&lt;br /&gt;
:   &lt;br /&gt;
:   Implement new fixup entries for Quanta FL1 and Fujitsu Lifebook&lt;br /&gt;
:   specific COEF and pin configurations.  Removed the model entries&lt;br /&gt;
:   from alc269_quirks.c.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add &amp;quot;PCM&amp;quot; volume to vmaster slave list&lt;br /&gt;
:   &lt;br /&gt;
:   The new parser may use &amp;quot;PCM&amp;quot; volume, but it was missing the vmaster&lt;br /&gt;
:   slave list, thus &amp;quot;Master&amp;quot; volume didn't control it.&lt;br /&gt;
:   &lt;br /&gt;
:   Reference: https://bugzilla.kernel.org/show_bug.cgi?id=41342&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove ALC680 model quirks&lt;br /&gt;
:   &lt;br /&gt;
:   The auto-parser works fine.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove ALC268 Dell, Toshiba and Zapto model quirks&lt;br /&gt;
:   &lt;br /&gt;
:   These models work fine with the BIOS auto-parser.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add snd_hda_override_pin_caps() helper function&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add tracepoint for unsolicited events&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add basic tracepoints&lt;br /&gt;
:   &lt;br /&gt;
:   Add a few tracepoints to HD-audio driver.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add CONFIG_SND_HDA_POWER_SAVE to stac_vrefout_set()&lt;br /&gt;
:   &lt;br /&gt;
:   In commit 45eebda7, it add new function stac_vrefout_set, but it&lt;br /&gt;
:   is only used in code between CONFIG_SND_HDA_POWER_SAVE macro, so&lt;br /&gt;
:   add the macro to avoid such warning:&lt;br /&gt;
:   &lt;br /&gt;
:   sound/pci/hda/patch_sigmatel.c:676:12: warning: 'stac_vrefout_set' defined but not used&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix a complile warning in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
:   sound/pci/hda/patch_via.c:2087: warning: 'dac' may be used uninitialized in this function&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix digital-mic mono recording on ASUS Eee PC&lt;br /&gt;
:   &lt;br /&gt;
:   The digital-mic unit on ASUS Eee PC gives PDM signals instead of the&lt;br /&gt;
:   normal stereo PCM, thus you can't record a mono stream from the stereo&lt;br /&gt;
:   stream as is; the summed stereo signal results in almost zero level, and&lt;br /&gt;
:   you'll hear only soft noise.&lt;br /&gt;
:   &lt;br /&gt;
:   As a workaround, use ALC269-specific COEF to manipulate the dmic route&lt;br /&gt;
:   for mono, like used for ALC271x.  This is implemented as a fix-up, thus&lt;br /&gt;
:   it works only with model=auto or without REALTEK_QUIRKS Kconfig.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-and-tested-by: Pavel Roskin &amp;amp;lt;proski@gnu.org&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - Fix duplicated DAC assignments for Realtek&lt;br /&gt;
:   &lt;br /&gt;
:   Copying hp_pins and speaker_pins from line_out_pins may confuse the&lt;br /&gt;
:   parser, and it can lead to duplicated initializations for the same pin&lt;br /&gt;
:   with a wrong DAC assignment.  The problem appears in 3.0 kernel code.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix Oops with Realtek quirks with NULL adc_nids&lt;br /&gt;
:   &lt;br /&gt;
:   Somce quirk models don't set adc_nids but let the parser filling it.&lt;br /&gt;
:   But the recent code has unnecessary NULL-checks of spec-&amp;amp;gt;input_mux,&lt;br /&gt;
:   and it resulted in NULL dereferences.&lt;br /&gt;
:   This patch fixes that regression.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-and-tested-by: Oliver Neukum &amp;amp;lt;oneukum@suse.de&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - Add support for vref-out based mute LED control on IDT codecs&lt;br /&gt;
:   &lt;br /&gt;
:   This patch also registers all necessary callbacks to support mute LED&lt;br /&gt;
:   only when such control is enabled. And it keeps codec AFG in D0 or D1&lt;br /&gt;
:   state all the time when aggressive power managemnt is enabled for vref-out&lt;br /&gt;
:   control (and mute LED) work correctly.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Cirrus Logic CS421x support&lt;br /&gt;
:   &lt;br /&gt;
:   This update includes the changes necessary for supporting the&lt;br /&gt;
:   CS421x family of codecs.  Previously this file only supported&lt;br /&gt;
:   the CS420x family of codecs.&lt;br /&gt;
:   &lt;br /&gt;
:   This file also contains init verbs to correct several issues in&lt;br /&gt;
:   the CS421x hardware.&lt;br /&gt;
:   &lt;br /&gt;
:   Behavior between the CS421x and CS420x codec families is similar,&lt;br /&gt;
:   so several functions have been reused with &amp;quot;if&amp;quot; statements to&lt;br /&gt;
:   determine which codec family (CS421x or CS420x) is present.&lt;br /&gt;
:   &lt;br /&gt;
:   Also, this file will be updated sometime in the near future in&lt;br /&gt;
:   order to add support for a system using CS421x that requires&lt;br /&gt;
:   mono mix on the speaker output only.&lt;br /&gt;
:   &lt;br /&gt;
:   [Fix const usages and adaption for new APIs by tiwai]&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Allow codec-specific set_power_state ops&lt;br /&gt;
:   &lt;br /&gt;
:   The procedure for codec D-state change may have exceptional cases&lt;br /&gt;
:   depending on the codec chip, such as a longer delay or suppressing D3.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds a new codec ops, set_power_state() to override the system&lt;br /&gt;
:   default function.  For ease of porting, snd_hda_codec_set_power_to_all()&lt;br /&gt;
:   helper function is extracted from the default set_power_state() function.&lt;br /&gt;
:   &lt;br /&gt;
:   As an example, the Conexant codec-specific delay is removed from the&lt;br /&gt;
:   default routine but moved to patch_conexant.c.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add post_suspend patch ops&lt;br /&gt;
:   &lt;br /&gt;
:   Add a new ops, post_suspend(), which is called after suspend() ops is&lt;br /&gt;
:   performed.  This is called only in the case of the real PM suspend, and&lt;br /&gt;
:   the codec driver can use this for further changing of D-state or&lt;br /&gt;
:   clearing the LED, etc.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Make CONFIG_SND_HDA_POWER_SAVE depending on CONFIG_PM&lt;br /&gt;
:   &lt;br /&gt;
:   It makes little sense to enable power-saving without PM.&lt;br /&gt;
:   This removes SND_HDA_NEEDS_RESUME define so that we can use CONFIG_PM&lt;br /&gt;
:   in all places.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Make sure mute led reflects master mute state&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds checking of mute state on all outputs besides just&lt;br /&gt;
:   speakers to calculate the master mute state for mute led support.&lt;br /&gt;
:   It also renames and splits the function that does it for better code&lt;br /&gt;
:   clarity.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix invalid mute led state on resume of IDT codecs&lt;br /&gt;
:   &lt;br /&gt;
:   Codec state is not restored immediately on resume but on the first&lt;br /&gt;
:   access when power-save is enabled.  That leads to an invalid mute led&lt;br /&gt;
:   state after resume until either sound is played or some control is&lt;br /&gt;
:   changed.  This patch adds a possibility for a vendor specific patch to&lt;br /&gt;
:   restore codec state immediately after resume if required.  And it adds&lt;br /&gt;
:   code to restore IDT codecs state immediately on resume on HP systems&lt;br /&gt;
:   with mute led support.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add support of the 4 internal speakers on certain HP laptops&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix DAC filling for multi-connection pins in Realtek parser&lt;br /&gt;
:   &lt;br /&gt;
:   Fix a regression in the DAC filling code in patch_realtek.c.  The already&lt;br /&gt;
:   filled DACs in multiout.dac_nids[] were ignored because of num_dacs=0,&lt;br /&gt;
:   thus always pointed to the first DAC.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove a superfluous argument of via_auto_init_output()&lt;br /&gt;
:   &lt;br /&gt;
:   &amp;quot;force&amp;quot; argument is always true, so let's strip it off.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix indep-HP path (de-)activation for VT1708* codecs&lt;br /&gt;
:   &lt;br /&gt;
:   This patch fixes non-working indep-HP control on VT1708* codecs.&lt;br /&gt;
:   The problems are that via_independent_hp_put() wasn't fixed to follow&lt;br /&gt;
:   the recent change of three HP paths, and hp_indep_path didn't contain&lt;br /&gt;
:   the amp nids of mixer elements.&lt;br /&gt;
:   &lt;br /&gt;
:   Together with the fixes, a few code clean-ups are done.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix a compile error in patch_ca0132.c for the recent SPDIF change&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Switch HP DAC dynamically with indep-HP switch for VIA&lt;br /&gt;
:   &lt;br /&gt;
:   This patch changes the behavior of independent-HP enum switch.  Now&lt;br /&gt;
:   instead of returning a busy error, the driver switches dynamically the&lt;br /&gt;
:   stream of the HP (and shared) DACs according to the current mode.&lt;br /&gt;
:   The logic is similar like the dual-mic ADC switch, but a bit more&lt;br /&gt;
:   complicated because of the presence of shared DAC.&lt;br /&gt;
:   &lt;br /&gt;
:   Together with the change, a mutex is introduced to protect against the&lt;br /&gt;
:   possible races for the indep-HP mode setting.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Implement dynamic loopback control for VIA codecs&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds the dynamic control of analog-loopback for VIA codecs.&lt;br /&gt;
:   &lt;br /&gt;
:   When the loopback is enabled, the inputs from line-ins and mics are&lt;br /&gt;
:   mixed with the front DAC, and sent to the front outputs.  The very same&lt;br /&gt;
:   input is routed to the headhpones and speakers in loopback mode.&lt;br /&gt;
:   However, since the loopback mix can't take other than the front DAC,&lt;br /&gt;
:   there is no longer individual volume controls for headphones and&lt;br /&gt;
:   speakers.  Once when the loopback control is off, these volumes take&lt;br /&gt;
:   effect.&lt;br /&gt;
:   &lt;br /&gt;
:   Since the individual volumes are more desired in general use caess, the&lt;br /&gt;
:   loopback mode is set to off as default for now.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix krealloc() replacement in hda_codec.c&lt;br /&gt;
:   &lt;br /&gt;
:   It was obviously wrong, grr....&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Re-add need_dac_fix check for multi-io jacks of Realtek codecs&lt;br /&gt;
:   &lt;br /&gt;
:   During the rewrite, the check of spec-&amp;amp;gt;need_dac_fix and the corresponding&lt;br /&gt;
:   num_dacs change was dropped from the channel-mode control.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch re-adds it, and also enables need_dac_fix for ALC880 as default,&lt;br /&gt;
:   as this feature was originally introduced to fix h/w bugs of this chip.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: Use krealloc() in possible places&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Expose secret DAC-AA connection of some VIA codecs&lt;br /&gt;
:   &lt;br /&gt;
:   VT1718S and co have a secret connection from DAC to AA-mix, which&lt;br /&gt;
:   doesn't appear in the connection list obtained from the h/w.&lt;br /&gt;
:   Currently the driver fixes the connection index locally at init, but&lt;br /&gt;
:   now we can expose it statically via snd_hda_override_connections()&lt;br /&gt;
:   so that this conection can be checked better by the parser in future.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Always read raw connections for proc output&lt;br /&gt;
:   &lt;br /&gt;
:   In the codec proc outputs, read the raw connections instead of the&lt;br /&gt;
:   cached connection list, i.e. proc files contain only raw values.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add snd_hda_override_conn_list() helper function&lt;br /&gt;
:   &lt;br /&gt;
:   Add a function to add/modify the connection-list cache entry.&lt;br /&gt;
:   It'll be useful to fix a buggy hardware result.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Turn on extra EAPDs on Conexant codecs&lt;br /&gt;
:   &lt;br /&gt;
:   Some machines seem to use EAPD control of the unused pin for controlling&lt;br /&gt;
:   the overall EAPD.  Since the driver currently doesn't check the EAPD of&lt;br /&gt;
:   unused pins, the EAPD isn't enabled.  For avoiding such a problem, turn&lt;br /&gt;
:   all extra EAPDs on as default.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Preserve input pin-ctl bits in HP-automute for VIA codec&lt;br /&gt;
:   &lt;br /&gt;
:   For smart51 pins, we need to preserve the input pin-control bits at&lt;br /&gt;
:   auto-mute controls instead of overwriting zero or pin-out-only.&lt;br /&gt;
:   Otherwise the VREF won't be set properly when smart51 is disabled&lt;br /&gt;
:   again.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Set line-out pin-ctls properly when indep-HP mode changes&lt;br /&gt;
:   &lt;br /&gt;
:   When Independent-HP mode is changed for VIA, the driver needs to&lt;br /&gt;
:   re-issue the auto-mute check so that the line-out pins are set properly&lt;br /&gt;
:   without influence of HP pin state.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Via Fix speaker-mute checks in VIA driver&lt;br /&gt;
:   &lt;br /&gt;
:   When the line-jack is plugged/unplugged, the driver must check also&lt;br /&gt;
:   the headphone jack state in addition to the line-out jack.  Currently&lt;br /&gt;
:   it checks only the line-out state and ignores the headphone.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Implement 44kHz workaround for IdeadPad as fixup&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of checking the model quirk, use a fixup table for workaround&lt;br /&gt;
:   of 44kHz-fixed PCM for Lenovo IdeaPad with ALC269.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Merge alc*_parse_auto_config() functions in patch_realtek.c&lt;br /&gt;
:   &lt;br /&gt;
:   Now all alc*_parse_auto_config() do almost same thing except for the&lt;br /&gt;
:   NID list to ignore and the PINs for SSID-check, we can merge all these&lt;br /&gt;
:   to a single function.  A good amount of code reduction.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Merge ALC260 auto-parser code&lt;br /&gt;
:   &lt;br /&gt;
:   Finally the last one.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Merge ALC269 parser code&lt;br /&gt;
:   &lt;br /&gt;
:   One more code reduction.  This codec has less DACs, thus the wiring&lt;br /&gt;
:   to DAC can't be filled uniquely for all output pins, i.e. some outputs&lt;br /&gt;
:   share the same volume control.&lt;br /&gt;
:   Except for that, all seems working fine.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Merge ALC268/269 auto-parser codes&lt;br /&gt;
:   &lt;br /&gt;
:   Now coming to ALC268/269 parser codes.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Merge ALC861 auto-parser code&lt;br /&gt;
:   &lt;br /&gt;
:   Merge more auto-parser code in patch_realtek.c, now for ALC861.&lt;br /&gt;
:   The topology of this codec is pretty simple, and can be parsed well&lt;br /&gt;
:   by the current starndard parser.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix amp-cap checks in patch_realtek.c&lt;br /&gt;
:   &lt;br /&gt;
:   query_amp_caps() may return non-zero if the amp cap isn't supported&lt;br /&gt;
:   by the codec.  Thus one needs to check widget-caps first, then check&lt;br /&gt;
:   the corresponding amp-caps.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Merge ALC861-VD auto-parse to the standard parser&lt;br /&gt;
:   &lt;br /&gt;
:   The existing standard auto-parser can work well with this codec, too.&lt;br /&gt;
:   Let's merge.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix auto-mic detection in Realtek codec-parser&lt;br /&gt;
:   &lt;br /&gt;
:   A regression fix from commit 21268961d3d1bbdd22a19b68adb80119e8c72dcd&lt;br /&gt;
:   ALSA: hda - More flexible dynamic-ADC switching for Realtek codecs&lt;br /&gt;
:   &lt;br /&gt;
:   The auto-mic wasn't detected properly when no ADC-switch is needed.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix output-path of VT1812 codec&lt;br /&gt;
:   &lt;br /&gt;
:   For VT1812, add dac_mixer_idx for initialization.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix Oops in smart51 parsing in VIA codec&lt;br /&gt;
:   &lt;br /&gt;
:   Typical off-by-one thinko.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Provide the standard auto_init for Realtek codecs&lt;br /&gt;
:   &lt;br /&gt;
:   Remove redundant definitions.  Ideally, all init functions should be&lt;br /&gt;
:   identical in future.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Merge ALC680 auto-parser to the standard parser&lt;br /&gt;
:   &lt;br /&gt;
:   Improved the standard Realtek auto-parser to support the codec topology&lt;br /&gt;
:   like ALC680.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add a fix-up for HP RP5800&lt;br /&gt;
:   &lt;br /&gt;
:   The BIOS provides bogus pin configs, and also invalid SSID.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix Independent-HP detection on VT2002P/1802/1812 codecs&lt;br /&gt;
:   &lt;br /&gt;
:   For VT2002P, VT1802 and VT1812 codecs, to create Independent HP&lt;br /&gt;
:   control.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix DAC checks for VT2002P/1802/1812 codecs&lt;br /&gt;
:   &lt;br /&gt;
:   For VT2002P, VT1802 and VT1812 codecs, there're only two DACs. So smart51&lt;br /&gt;
:   control shouldn't be created.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix VIA output-path init for VT2002P/1802/1812&lt;br /&gt;
:   &lt;br /&gt;
:   For VT2002P, VT1802 and VT1812 codecs, the original activate_output_path()&lt;br /&gt;
:   function can't initialize output and hp path correctly, since mixers connected to&lt;br /&gt;
:   output pin widgets are not considered. So modify the activate_output_path()&lt;br /&gt;
:   function to satisify this kind of codec.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Split quirk codes from patch_realtek.c&lt;br /&gt;
:   &lt;br /&gt;
:   Put the all static quirk codes out of patch_realtek.c, split into the&lt;br /&gt;
:   file for each codec model.  For controlling the build of quirk codes,&lt;br /&gt;
:   a new Kconfig, CONFIG_SND_HDA_ENABLE_REALTEK_QUIRKS is introduced.&lt;br /&gt;
:   By setting this off, all quirk codes won't be built, thus you can save&lt;br /&gt;
:   lots of memory.&lt;br /&gt;
:   &lt;br /&gt;
:   The codes in patch_realtek.c are also shuffled and more comments are&lt;br /&gt;
:   given, but the contents aren't changed.  This is just a refactoring.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Use common paser for digital I/O for ALC260&lt;br /&gt;
:   &lt;br /&gt;
:   Avoid open-codes.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - More flexible dynamic-ADC switching for Realtek codecs&lt;br /&gt;
:   &lt;br /&gt;
:   This patch changes the auto-parser and the auto-mic handling codes to&lt;br /&gt;
:   allow more flexible dynamic ADC-switching with Realtek codecs.&lt;br /&gt;
:   &lt;br /&gt;
:   In the new code, the following strategy is taken:&lt;br /&gt;
:   &lt;br /&gt;
:   - When a cap-src can't handle all input-sources, either skip it, or&lt;br /&gt;
:   switch to the ADC-switching mode.  In ADC-switching mode, like the&lt;br /&gt;
:   former dual-ADC mode for ALC275, it changes ADC on the fly according&lt;br /&gt;
:   to the current input source.&lt;br /&gt;
:   - When auto-mic is possible, always assign imux.  If the mic pins are&lt;br /&gt;
:   set statically via a quirk, rebuild imux according to the pins.&lt;br /&gt;
:   In the auto-mic mode, the driver always changes the imux (although&lt;br /&gt;
:   the imux isn't exposed as a mixer element).&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix warning with ALC882 digital-out detection&lt;br /&gt;
:   &lt;br /&gt;
:   The digital out pin on ALC882 may have multiple connections.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Clean-up PCM assignments in patch_realtek.c&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of assigning each default hda_pcm_stream pointers, do NULL-checks&lt;br /&gt;
:   and assign default values in alc_build_pcms().&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Unify alc*_auto_init_input_src() in patch_realtek.c&lt;br /&gt;
:   &lt;br /&gt;
:   The only different implmentation was alc880_auto_init_input_src(),&lt;br /&gt;
:   and now it covers this variant, and we can use the single function&lt;br /&gt;
:   for all codecs.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Parse ADCs and CAPSRCs dynamically for Realtek auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   Now with the new code for looking for ADCs and MUXs, we can replace&lt;br /&gt;
:   the whole ADC assignment with the parsed results.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Unify alc_auto_init_analog_input() calls&lt;br /&gt;
:   &lt;br /&gt;
:   All alc*_auto_init_analog_input() calls are identical, so let's use&lt;br /&gt;
:   the same function more clearly without aliases.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Parse ADCs in alc_auto_create_input_ctls()&lt;br /&gt;
:   &lt;br /&gt;
:   Parse ADCs and cap-srcs in alc_auto_create_input_ctls() by itself&lt;br /&gt;
:   instead of passing explicitly from the caller.  By this change, all&lt;br /&gt;
:   alc*_auto_create_input_ctls() can be unified to the same calls.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Code consolidation for ALC88x and ALC662 auto-parsers&lt;br /&gt;
:   &lt;br /&gt;
:   Use the same common code for auto-parsing the output paths and their&lt;br /&gt;
:   initializations, based on the existing ALC662 code, which is smarter&lt;br /&gt;
:   than the old ALC880/2 code.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Create bind-mutes appropriately for ALC662 auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   When multiple inputs are present on the mixer widget (typically a DAC&lt;br /&gt;
:   and a loopback), mute/unmute both inputs with the corresponding mixer&lt;br /&gt;
:   element.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Initialize DACs in ALC662 auto-parser mode&lt;br /&gt;
:   &lt;br /&gt;
:   The initialization of DACs was missing in ALC662 parser code.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Parse HP and speaker DACs even for multi connections for ALC662&lt;br /&gt;
:   &lt;br /&gt;
:   In alc662_auto_fill_dac_nids(), the HP and speaker DACs aren't parsed&lt;br /&gt;
:   when the corresponding pins aren't fixed with single DACs.&lt;br /&gt;
:   Now check these DACs even for non-fixed pins.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add Realtek ALC269VC codec support&lt;br /&gt;
:   &lt;br /&gt;
:   Add the support of ALC269VC codec.&lt;br /&gt;
:   Also delete the unnecessary codec_variant type enum list:&lt;br /&gt;
:   now only three variants (ALC269VA ALC269VB ALC269VC) are needed.&lt;br /&gt;
:   &lt;br /&gt;
:   In addition, added some aliases:&lt;br /&gt;
:   - Add ALC269VB alias name ALC277&lt;br /&gt;
:   - Add ALC269VC alias name ALC259 ALC281X&lt;br /&gt;
:   - Add ALC269VC for Lenovo device 0x21f3 name ALC3202&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Don't add aa-mix for VIA surrounds&lt;br /&gt;
:   &lt;br /&gt;
:   Since we now route the front DAC via aa-mix widget, adding the aa-mix&lt;br /&gt;
:   to surrounds will result in a mix-up of both front and surround PCM&lt;br /&gt;
:   signals.  For avoiding this, the aa-mix routes have to be disabled&lt;br /&gt;
:   for surround paths.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Create HP-vol control properly for VIA codecs&lt;br /&gt;
:   &lt;br /&gt;
:   When the individual DAC is available for the headphone output, the driver&lt;br /&gt;
:   should create the DAC for its volume control.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Define some constants in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix invalid multi-channel amplifiers for VT1718S&lt;br /&gt;
:   &lt;br /&gt;
:   For VT1718S, the multi-channel path should be like following:&lt;br /&gt;
:   DAC 0--&amp;amp;gt;Mixer 9(index 5)--&amp;amp;gt;Mixer 0(index 1)--&amp;amp;gt;Front Pin;&lt;br /&gt;
:   DAC 1--&amp;amp;gt;Mixer 1(index 0)--&amp;amp;gt;Surround Pin;&lt;br /&gt;
:   DAC 2--&amp;amp;gt;C/LFE Pin;&lt;br /&gt;
:   DAC 3--&amp;amp;gt;Mixer 2(index 0)--&amp;amp;gt;Side Pin;&lt;br /&gt;
:   &lt;br /&gt;
:   But current code built Surround and Side path through index 1 of&lt;br /&gt;
:   Mixer 1 and 2. So Adjusting Surround and Side channel amplifier is&lt;br /&gt;
:   invalid. This patch fixes the issue.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix issue that front can't output sound for VT1718S&lt;br /&gt;
:   &lt;br /&gt;
:   For VT1718S, Mixer 9 doesn't expose the connection to DAC 0. So when&lt;br /&gt;
:   building up a 'PCM Playback' amplifier control, it will fail since&lt;br /&gt;
:   getting DAC 0 index of Mixer 9 returned -1. So I added a dac_mixer_idx&lt;br /&gt;
:   to indicated the actual index of DAC 0 to Mixer 9. Following is the&lt;br /&gt;
:   patch and next mail is another.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix the silent front with independent-HP for VIA codecs&lt;br /&gt;
:   &lt;br /&gt;
:   Unmute DAC on front speaker path when Independent HP is enabled.&lt;br /&gt;
:   &lt;br /&gt;
:   When to enable Independent HP, the front speaker won't output any sound&lt;br /&gt;
:   for VT1708, VT1708B, VT1708S and VT1702.&lt;br /&gt;
:   I find the via_independent_hp_put() routine will mute DAC 0 path in Mixer 0.&lt;br /&gt;
:   For these codecs, when using Independent HP, there could have two&lt;br /&gt;
:   independent streams, one is from DAC0--&amp;amp;gt;Mixer0--&amp;amp;gt;Front Pin, the other is&lt;br /&gt;
:   from DAC3--&amp;amp;gt;GainSW3--&amp;amp;gt;Side Pin.&lt;br /&gt;
:   So I added a check for DAC--&amp;amp;gt;Mixer path in activate_output_path().&lt;br /&gt;
:   &lt;br /&gt;
:   If current path is DAC--&amp;amp;gt;Mixer, no need to mute DAC index in Mixer.&lt;br /&gt;
:   In fact, to change connection of Headphone pin or Mux connected with HP&lt;br /&gt;
:   is enough.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix missing initialization in alc662 auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   A missing initialization resulted in wrong DAC assignments in&lt;br /&gt;
:   ALC662 (and other) auto-parsers.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Re-implementation of VIA Independent-HP sharing with side stream&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds the re-implementation of Independent-HP mode in the&lt;br /&gt;
:   case where the DAC is shared between HP and side-channel streams.&lt;br /&gt;
:   Now the driver tries to parse the output-path using the pre-parsed&lt;br /&gt;
:   side-channel DAC for the independent HP output, too.&lt;br /&gt;
:   &lt;br /&gt;
:   When a playback PCM stream is opened with this shared mode, the&lt;br /&gt;
:   Independent-HP mixer switch can't be changed for avoiding the conflict,&lt;br /&gt;
:   thus it returns -EBUSY error.&lt;br /&gt;
:   &lt;br /&gt;
:   One remaining unintuitive issue is that the DAC volume is still&lt;br /&gt;
:   controlled as &amp;quot;Side&amp;quot; volume although it's shared by both independent-HP&lt;br /&gt;
:   and side streams.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix jack-detection on non-VT1708 VIA codecs&lt;br /&gt;
:   &lt;br /&gt;
:   Move codec init verb which is only applicatable for VT1708.&lt;br /&gt;
:   &lt;br /&gt;
:   I've found the root cause that jack plugged in can't be detected.&lt;br /&gt;
:   The verb in vt1708_init_verbs is used to power down jack detect circuit.&lt;br /&gt;
:   This verb is only applicable to VT1708. vt1708 didn't implement jack&lt;br /&gt;
:   detect function in hardware, so we should shut down this function to&lt;br /&gt;
:   avoid noise. But for other codecs, hardware implement jack detect&lt;br /&gt;
:   function. If sending this verb during initialization, jack detect will&lt;br /&gt;
:   be invalid. So I move this verb from via_parse_auto_config() to&lt;br /&gt;
:   patch_vt1708().&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix unused variable warning&lt;br /&gt;
:   &lt;br /&gt;
:   sound/pci/hda/patch_cmedia.c: In function ‘cmi9880_fill_multi_init’:&lt;br /&gt;
:   sound/pci/hda/patch_cmedia.c:401:15: warning: unused variable ‘len’&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Enable auto-parser as default for Conexant codecs&lt;br /&gt;
:   &lt;br /&gt;
:   Let's use auto-parser as default now.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Create snd_hda_get_conn_index() helper function&lt;br /&gt;
:   &lt;br /&gt;
:   Create snd_hda_get_conn_index() helper function for obtaining the&lt;br /&gt;
:   connection index of the widget.  Replaced the similar codes used in&lt;br /&gt;
:   several codec-drivers with this common helper.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix unsol event initializations for VIA codecs&lt;br /&gt;
:   &lt;br /&gt;
:   Fix a issue to enable unsolicited response to line-out pins.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix warnings with CONFIG_SND_POWER_SAVE=n&lt;br /&gt;
:   &lt;br /&gt;
:   Use static inline for dummy function to fix the warnings like below&lt;br /&gt;
:   sound/pci/hda/patch_sigmatel.c: In function ‘stac92xx_init’:&lt;br /&gt;
:   sound/pci/hda/patch_sigmatel.c:4387:3: warning: statement with no effect&lt;br /&gt;
:   sound/pci/hda/patch_sigmatel.c: In function ‘stac92xx_resume’:&lt;br /&gt;
:   sound/pci/hda/patch_sigmatel.c:4927:3: warning: statement with no effect&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - More volume-init fixes for ALC267 codec&lt;br /&gt;
:   &lt;br /&gt;
:   More similar fixes like previous commits: handle the exceptional case&lt;br /&gt;
:   like ALC267 where no volume amp is found in ADC widget but in the&lt;br /&gt;
:   capsrc widget instead.&lt;br /&gt;
:   &lt;br /&gt;
:   Also minor checks for avoiding possible erros: no connection-select&lt;br /&gt;
:   when the pin has a single selection, and add beep verbs only when the&lt;br /&gt;
:   0x1d is used for beep.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix volume-init for ALC259 with invalid widget caps&lt;br /&gt;
:   &lt;br /&gt;
:   ALC259 seems to provide an invalid widget capability for the input-src&lt;br /&gt;
:   selector widget.  The widget shows the input-amp while it's a selector,&lt;br /&gt;
:   and this confuses the current ALC882 initialization code that is used&lt;br /&gt;
:   for ALC259, too.  For fixing this, check the amp capability and handle&lt;br /&gt;
:   the connection selection individually.&lt;br /&gt;
:   &lt;br /&gt;
:   Also, ALC259 has no mute bit in DAC volume, so we need to initialize&lt;br /&gt;
:   it as ZERO instead of MUTE.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix volume-init of ALC299 &amp;amp; co&lt;br /&gt;
:   &lt;br /&gt;
:   ALC269 and compatible codecs have the output volume in DACs, thus we&lt;br /&gt;
:   can't use the ALC880's code as is.  Fixed by checking the amp caps and&lt;br /&gt;
:   picking up the right widget for initialization.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Simplify EAPD control in patch_realtek.c&lt;br /&gt;
:   &lt;br /&gt;
:   Look through the known NIDs that may have EAPD capabilities and turn&lt;br /&gt;
:   on/off them appropriately instead of checking the individual vendor ids.&lt;br /&gt;
:   &lt;br /&gt;
:   This will also avoid the forgotten entries of newly added codec ids&lt;br /&gt;
:   in future.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix auto-init of output volumes of Realtek codecs&lt;br /&gt;
:   &lt;br /&gt;
:   Fix the regression introduced by the commit&lt;br /&gt;
:   1f0f4b8036b1fe1347cb4f1f199601b87de9be46&lt;br /&gt;
:   ALSA: hda - Reduce static init verbs for Realtek auto-parsers&lt;br /&gt;
:   &lt;br /&gt;
:   The input amps of mixer widgets should be unmuted as default (as&lt;br /&gt;
:   usually they have no assigned mixer switches).&lt;br /&gt;
:   &lt;br /&gt;
:   More fixes in this commit are, however, for ALC260: ALC260 codec can&lt;br /&gt;
:   have multiple output mixers connnected to a single DAC althouh the&lt;br /&gt;
:   driver didn't pick up them properly.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Check hard-wired DACs at first for ALC662 &amp;amp; co&lt;br /&gt;
:   &lt;br /&gt;
:   Some Realtek codecs have the output pins hardwired with certain DACs.&lt;br /&gt;
:   These DACs have to be assigned at first and assign the rest for&lt;br /&gt;
:   multi-DAC pins so that all DACs can be assigned properly.&lt;br /&gt;
:   &lt;br /&gt;
:   Without such an optimization, speaker outputs may be assigned to the&lt;br /&gt;
:   same DAC as the headphone or others.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Call proper DAC-filler function for Realtek auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   In alc_auto_add_multi_channel_mode(), when the primary HP workaround&lt;br /&gt;
:   is enabled, it re-initializes the DAC list but calls alc662's function&lt;br /&gt;
:   in a fixed way.  This isn't pretty suitable for other codecs, of course.&lt;br /&gt;
:   &lt;br /&gt;
:   Now we call it with fill_dac function pointer so that the proper&lt;br /&gt;
:   function can be called at that point.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Reduce static init verbs for Realtek auto-parsers&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of using fixed init verbs, initialize DACs, ADCs and mixers&lt;br /&gt;
:   more dynamically for Realtek auto-parsers.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add snd_hda_get_conn_list() helper function&lt;br /&gt;
:   &lt;br /&gt;
:   Add a new helper function snd_hda_get_conn_list().&lt;br /&gt;
:   Unlike snd_hda_get_connections(), this function doesn't copy the&lt;br /&gt;
:   connection-list but gives the raw pointer for the cached list.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Use alc_get_pfx_name() for all Realtek codecs&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Clean up multi-channel mixer name assignment in patch_realtek.c&lt;br /&gt;
:   &lt;br /&gt;
:   Change alc_get_line_out_pfx() in patch_realtek.c to provide the channel&lt;br /&gt;
:   specific name and assign the index so that each caller doesn't have to&lt;br /&gt;
:   set the channel name by itself.&lt;br /&gt;
:   &lt;br /&gt;
:   Also, check the multi-io case with the primary hp-out; for the multi-io&lt;br /&gt;
:   channels, assign the channel name instead of &amp;quot;Headphone&amp;quot; with indices.&lt;br /&gt;
:   This makes the mixer names more intuitive and reduces confusion.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add a workaround for invalid line-out setups&lt;br /&gt;
:   &lt;br /&gt;
:   Some BIOS set up the pin config wrongly as line-out although it's&lt;br /&gt;
:   supposed to be a speaker out.  In most cases, though, we can judge&lt;br /&gt;
:   the validity by checking the connection type -- when it's FIXED,&lt;br /&gt;
:   mostly it's an invalid line-out but a speaker.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Allow multi-io with HP output for ALC662 &amp;amp; co&lt;br /&gt;
:   &lt;br /&gt;
:   Even if the machine has no line-out but only HP-out, try to detect the&lt;br /&gt;
:   multi-io.  It'll allow more possibilities for 5.1 outputs on laptops.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Implement dynamic-ADC switching for VIA codecs&lt;br /&gt;
:   &lt;br /&gt;
:   Some VIA codecs like VT1702 provide the input-route only to specific&lt;br /&gt;
:   ADCs such as digital-mic inputs.  These routes aren't covered by the&lt;br /&gt;
:   normal primary ADC, and for now, user had to open the capture stream&lt;br /&gt;
:   assigned to that special ADC manually for using such inputs.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch implements a way to switch the current ADC dynamically per&lt;br /&gt;
:   the input-source selection in such a case.  When this workaround is&lt;br /&gt;
:   activated, the driver provides only one capture stream and one input-&lt;br /&gt;
:   source control but with the full possible inputs.  The driver switches&lt;br /&gt;
:   the ADC to be used (or being used) according to the input-source on the&lt;br /&gt;
:   fly.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Auto-mute smart51 surround pins for VIA codecs&lt;br /&gt;
:   &lt;br /&gt;
:   When smart51 mode is enabled, auto-mute these surround outputs&lt;br /&gt;
:   as well as the primary line-out.  Also this patch includes minor&lt;br /&gt;
:   clean-ups.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove redundant VT1709 and VT1708B codes&lt;br /&gt;
:   &lt;br /&gt;
:   Unify the VT1709 10ch and 6ch parsers, as well as VT1708B 8ch and 4ch&lt;br /&gt;
:   parsers.  They have no difference now.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - VT1708 independent HP routing fix&lt;br /&gt;
:   &lt;br /&gt;
:   The codecs like VT1708 needs more complicated routing using the mixer&lt;br /&gt;
:   widget rather than the simple selector widgets.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix surround-volume parsing for VT1708B codecs&lt;br /&gt;
:   &lt;br /&gt;
:   The surround/CLFE/side DACs on VT1708B and co have no amp but the&lt;br /&gt;
:   connected selector widgets have the amp instead.  Fix the parser to&lt;br /&gt;
:   check these selector widgets for the possible mixer controls as well.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix the check of loopback-mixer element index in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
:   Fix the check of the multiple loopback-mixer, which gave sometimes&lt;br /&gt;
:   a wrong index assigned to an element even for different names, e.g.&lt;br /&gt;
:   Mic and Front Mic.  Now check the label properly for avoid duplication.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: David Henningsson &amp;amp;lt;david.henningsson@canonical.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - Assign smart51 only in the same stack for VIA codecs&lt;br /&gt;
:   &lt;br /&gt;
:   The input jacks assigned as the smart51 outputs must be in the same&lt;br /&gt;
:   stack, either rear, front or other.  Also, prefer line-in as the surround&lt;br /&gt;
:   to mic-in.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix re-routing of HP-independent mode in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
:   Re-route the whole output path when HP-independent mode is changed.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix creations of playback volume controls in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
:   Fix a issue to create playback volume control if pin has amplifier capability&lt;br /&gt;
:   but not DAC.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Revisit output_path parsing in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
:   Change the order of the output-path list in a way from the DAC to the&lt;br /&gt;
:   target pin.  Also now the list include the target pin, too.&lt;br /&gt;
:   &lt;br /&gt;
:   Together with this format change, simplify the arguments of&lt;br /&gt;
:   parse_output_path() function, and fix the initialization in&lt;br /&gt;
:   via_auto_init_output().&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Use xxx Boost Volume for VIA&lt;br /&gt;
:   &lt;br /&gt;
:   Drop &amp;quot;Capture&amp;quot; prefix from the mic-boost names.&lt;br /&gt;
:   Otherwise some control names can overflow the max name length.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add Creative CA0132 HDA codec support&lt;br /&gt;
:   &lt;br /&gt;
:   Create patch_ca0132.c, to add support for devices featuring the&lt;br /&gt;
:   Creative CA0132 HD-audio codec.&lt;br /&gt;
:   &lt;br /&gt;
:   This driver implements :-&lt;br /&gt;
:   * 1 playback subdevice to headphone and speaker&lt;br /&gt;
:   * 2 capture subdevices:&lt;br /&gt;
:   i - Mic-in&lt;br /&gt;
:   ii- Line-in&lt;br /&gt;
:   * mixer device&lt;br /&gt;
:   &lt;br /&gt;
:   Advanced DSP features are not yet included.&lt;br /&gt;
:   Developed and maintained by Creative Labs, Inc.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Simplify analog-low-current mode check for VIA codecs&lt;br /&gt;
:   &lt;br /&gt;
:   Use the existing aa-loop list for simplifying the check for analog&lt;br /&gt;
:   low-current mode.  Also fix the stream count test for playback streams.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove NID_MAPPING hacks in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
:   There is no longer virtual kmixer element for NID mapping.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove unused defines and struct fields in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Name the primary out as Speaker when needed for VIA codecs&lt;br /&gt;
:   &lt;br /&gt;
:   When the primary output is the speaker output, rather name it as&lt;br /&gt;
:   &amp;quot;Speaker&amp;quot;.  This will be more intuitive.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Create loopback-list dynamically in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
:   Create loopback list dynamically from the parsed input pins for VIA&lt;br /&gt;
:   codecs instead of the fixed arrays.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix smart51 handling again&lt;br /&gt;
:   &lt;br /&gt;
:   Fix the broken detection of smart51 and its handling.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Create virtual-master control for VIA codecs&lt;br /&gt;
:   &lt;br /&gt;
:   Now let's add the missing Master control to VIA codecs.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Initialize unsol events dynamically in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
:   Issue the init verbs of unsolicited events dynamically from the parsed&lt;br /&gt;
:   results for VIA codecs.  Also, consolidate the unsol handlers for HP&lt;br /&gt;
:   and line-out mutes.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Initialize input-path dynamically in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
:   Similarly like the previous commit, initialize the input-paths dynamically&lt;br /&gt;
:   from the parsed results instead of the fixed array for VIA codecs.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Initialize output path dynamically in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of fixed array for each codec type, initialize the output path&lt;br /&gt;
:   dynamically from the parsed results.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Replace with standard consts in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix independent-HP handling in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
:   Fix races in handling of HP DAC and independent streams for VIA codecs.&lt;br /&gt;
:   Also, allow the HP output path without front-DAC, and removed&lt;br /&gt;
:   unnecessary activation of HP mixer elements.&lt;br /&gt;
:   &lt;br /&gt;
:   This also removes the handling of shared side/HP stream; it's anyway&lt;br /&gt;
:   implemented in a broken way, so we need to re-implement the feature&lt;br /&gt;
:   later...&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Unify auto-parser in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
:   Now all codecs use the same parser-path, so we can reduce into a single&lt;br /&gt;
:   auto-parser function.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Return error for invalid setup for VIA&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of ignoring the invalid pin configuration, return the error.&lt;br /&gt;
:   This will avoid unexpected crash, anyway.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Unify capture-mixer creations in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
:   Create capture-related mixer elements dynamically from the parsed&lt;br /&gt;
:   ADCs and input-pins instead of fixed values for each codec.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Assign HP-independent PCM to individual stream&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of using the secondary substream, create an individual PCM&lt;br /&gt;
:   stream for HP-independent PCM.  Otherwise it's difficult to handle&lt;br /&gt;
:   different channel numbers with multi-channel stream in the sam PCM&lt;br /&gt;
:   stream structure.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Unify PCM assignments in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
:   Unify PCM streams for all codecs by assigning the NID dynamically.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Don't create secondary substream when no independent-hp is used&lt;br /&gt;
:   &lt;br /&gt;
:   For VIA codecs, we shouldn't create a substream for independent HP mode,&lt;br /&gt;
:   when no individual HP DAC is found.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Re-implement smart51 detection for VIA codecs&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Unify output-control parsing in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
:   Parse the output-paths more dynamically, i.e. traverse the paths&lt;br /&gt;
:   from each output pin instead of fixed assignment for each codec.&lt;br /&gt;
:   Now all codecs are using the same output parser code.&lt;br /&gt;
:   &lt;br /&gt;
:   The smart51 setup doesn't work with this change, and will be fixed&lt;br /&gt;
:   in the next commits.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Unify input-volume creations in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
:   Now storing the analog-mixer widget in spec, we can simplify the rest&lt;br /&gt;
:   parts.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Auto-mute all LO and speakers in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
:   Muting all line-outs and/or speakers is more common in other drivers,&lt;br /&gt;
:   so we should follow it, too.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Change pin-ctl for auto-muting in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
:   Mute the outputs via pin-controls instead of amps for the auto-mute&lt;br /&gt;
:   handling.  This makes our life easier as it avoids conflict of the states&lt;br /&gt;
:   between the mixer elements and the auto-mute toggles.&lt;br /&gt;
:   &lt;br /&gt;
:   With this change, we can use vmaster for the master control easily now.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Generate PCM names dynamically in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
:   This reduces lots of static strings.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Refactor ctl array handling in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
:   No functional change.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Defer mixer element creation to the right time in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
:   The jack-detect control should be created at the time of build_controls&lt;br /&gt;
:   callback instead of calling snd_hda_add_ctls() at the tree-parsing time.&lt;br /&gt;
:   For that, copy the control to the temporary array like other cases.&lt;br /&gt;
:   &lt;br /&gt;
:   Also, fixed typos of vt1708_jack_detect in all places.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fill ADCs dynamically for VIA codecs&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of giving the fixed ADC list, parse the widgets and fill in&lt;br /&gt;
:   ADCs dynamically.&lt;br /&gt;
:   &lt;br /&gt;
:   Also, probe the stereo-mixer input more dynamically, too.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add control to suppress the dynamic pin-power for VIA&lt;br /&gt;
:   &lt;br /&gt;
:   Currently VIA driver controls the power-state of each pin per jack&lt;br /&gt;
:   detection.  But, it means that the power-state mismatch may occur when&lt;br /&gt;
:   the machine doesn't give the proper jack-detection.&lt;br /&gt;
:   &lt;br /&gt;
:   For avoiding this problem, a new control element &amp;quot;Dynamic Power-Control&amp;quot;&lt;br /&gt;
:   is provided so that user can turn on/off the pin-power control.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove superfluous NID_MAPPING use for smart51 mixer&lt;br /&gt;
:   &lt;br /&gt;
:   Just a minor clean up; nid-mapping can be set directly to the smart51&lt;br /&gt;
:   mixer element.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda: check make_exec_verb() return value&lt;br /&gt;
:   &lt;br /&gt;
:   If given a -1 cmd parameter then make_exec_verb() returns -1 without&lt;br /&gt;
:   setting the res output value.&lt;br /&gt;
:   &lt;br /&gt;
:   Prior to this change snd_hda_codec_read() assumed that make_exec_verb()&lt;br /&gt;
:   unconditionally set res regardless of the cmd value.&lt;br /&gt;
:   &lt;br /&gt;
:   This change explicitly checks the make_exec_verb() return value before&lt;br /&gt;
:   consuming the potentially unset res value.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Disable SPDIF only when no pin config set for HP with AD1981&lt;br /&gt;
:   &lt;br /&gt;
:   Some HP laptops with AD1981 have SPDIF connections, but currently the&lt;br /&gt;
:   driver disables it statically.  Better to check the pin default config&lt;br /&gt;
:   to judge whether to enable or disable the SPDIF.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix a copmile warning&lt;br /&gt;
:   &lt;br /&gt;
:   It's harmless but annyoing.&lt;br /&gt;
:   sound/pci/hda/patch_realtek.c: In function ‘alc_cap_getput_caller’:&lt;br /&gt;
:   sound/pci/hda/patch_realtek.c:2722:9: warning: ‘err’ may be used uninitialized in this function&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Change all ADCs for dual-adc switching mode for Realtek&lt;br /&gt;
:   &lt;br /&gt;
:   When the dual-adc switching mode is active in Realtek auto-parser,&lt;br /&gt;
:   we need to couple all ADCs as a single capture-volume.  Currently, the&lt;br /&gt;
:   volume control changes only the first ADC, thus others may remain silent.&lt;br /&gt;
:   This patch fixes the problem.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Add model=auto quirk for Acer Aspire 3830TG&lt;br /&gt;
:   &lt;br /&gt;
:   Since we're not using the new auto parser as a fallback yet,&lt;br /&gt;
:   add it manually as a quirk.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Add a new Conexant codec ID (506c)&lt;br /&gt;
:   &lt;br /&gt;
:   Conexant ID 506c was found on Acer Aspire 3830TG. As users report&lt;br /&gt;
:   no playback, sending to stable should be safe.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: https://bugs.launchpad.net/bugs/783582&lt;br /&gt;
:   Reported-by: andROOM&lt;br /&gt;
: - ALSA: HDA: Pinfix quirk for HP Z200 Workstation&lt;br /&gt;
:   &lt;br /&gt;
:   BIOS lists the internal speaker as an internal line-out. Change to&lt;br /&gt;
:   internal speaker + model=auto for better auto-mute capabilities.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: http://bugs.launchpad.net/bugs/754964&lt;br /&gt;
:   Reported-by: Marc Legris &amp;amp;lt;marc.legris@canonical.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: VIA HDA: Create a master amplifier control for VT1718S.&lt;br /&gt;
:   &lt;br /&gt;
:   Create a master volume and mute control of playback for VT1718S.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: VIA HDA: Mute/unmute mixer conncted to Headphone for VT1718S.&lt;br /&gt;
:   &lt;br /&gt;
:   When switch HP independent mode, mute/unmute connctions of mixer  which is&lt;br /&gt;
:   connected to headphone for VT1718S.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: VIA HDA: Modify initial verbs list for VT1718S.&lt;br /&gt;
:   &lt;br /&gt;
:   Remove some invalid initial verbs and correct some wrong initial verbs&lt;br /&gt;
:   for VT1718S codec.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove ALC268 model override for CPR2000&lt;br /&gt;
:   &lt;br /&gt;
:   The &amp;quot;diverse&amp;quot; Quanta ID 0x0763 is overridden to ALC268_ACER.&lt;br /&gt;
:   This keeps headphone automute and microphone input from operating&lt;br /&gt;
:   on at least one laptop from Opti Systems.&lt;br /&gt;
:   Without the override, the BIOS parser does a fine job setting the&lt;br /&gt;
:   card up and everything works.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-By: Peter Schneider &amp;amp;lt;e.at.chi.kaen@googlemail.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: HDA: Remove quirk for an HP device&lt;br /&gt;
:   &lt;br /&gt;
:   The reporter, who is running kernel 2.6.38, reports that&lt;br /&gt;
:   he needs to set model=auto for the headphone output to work&lt;br /&gt;
:   correctly.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: http://bugs.launchpad.net/bugs/761022&lt;br /&gt;
:   Reported-by: Jo&lt;br /&gt;
: - ALSA: hda - Fix no NID error with VIA codecs&lt;br /&gt;
:   &lt;br /&gt;
:   The via driver spews warnigs like&lt;br /&gt;
:   hda-codec: no NID for mapping control Independent HP:0:0&lt;br /&gt;
:   with some codecs because snd_hda_add_nid() is called with nid=0.&lt;br /&gt;
:   This patch fixes it by skipping the call when no corresponding widget&lt;br /&gt;
:   is found.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix wrong auto-mute type for Acer Aspire-one&lt;br /&gt;
:   &lt;br /&gt;
:   The auto-mute setup for Acer Aspire-one with ALC268 was set wrongly&lt;br /&gt;
:   during the clean-up of auto-mute function.  Fixed now.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Borislav Petkov &amp;amp;lt;bp@alien8.de&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda: Fix inaudible internal speakers on CyberpowerPC Gamer Xplorer N57001 laptop&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: https://launchpad.net/bugs/761171&lt;br /&gt;
:   &lt;br /&gt;
:   The original reporter needs the model=auto quirk for his internal&lt;br /&gt;
:   speakers to be audible in the latest daily snapshot, so add an entry in&lt;br /&gt;
:   the quirk table for his PCI SSID.&lt;br /&gt;
:   &lt;br /&gt;
:   A trivially different version of this patch using the model=asus quirk&lt;br /&gt;
:   should be applied to the 2.6.38 and 2.6.39 stable kernels. We don't use&lt;br /&gt;
:   the asus quirk in 3.0-rc2, because 3.0-rc2's autoparser is much&lt;br /&gt;
:   improved.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-and-tested-by: tomdeering7&lt;br /&gt;
: - ALSA: hda - Fix initialization of hp pins with master_mute in Realtek&lt;br /&gt;
:   &lt;br /&gt;
:   Some Reatlek model quirks use master_mute bool switch for controlling&lt;br /&gt;
:   the master-mute of outputs.  For these cases, the initialization of HP&lt;br /&gt;
:   pins/amps were forgotten during the transition to the common automute&lt;br /&gt;
:   helper function in 3.0 development time, and resulted in the muted HP&lt;br /&gt;
:   output as default.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch fixes the issue by adjusting the HP output explicitly with&lt;br /&gt;
:   master_mute switch.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Michal Hocko &amp;amp;lt;mhocko@suse.cz&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - Fix invalid unsol tag for some alc262 model quirks&lt;br /&gt;
:   &lt;br /&gt;
:   The tag number was forgotten to be fixed after cleaning up the model&lt;br /&gt;
:   quirks for ALC262 fujitsu and lenovo-3000 models.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Michal Hocko &amp;amp;lt;mhocko@suse.cz&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda: Fix quirk for Dell Inspiron 910&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: https://launchpad.net/bugs/792712&lt;br /&gt;
:   &lt;br /&gt;
:   The original reporter states that sound from the internal speakers is&lt;br /&gt;
:   inaudible until using the model=auto quirk. This symptom is due to an&lt;br /&gt;
:   existing quirk mask for 0x102802b* that uses the model=dell quirk. To&lt;br /&gt;
:   limit the possible regressions, leave the existing quirk mask but add&lt;br /&gt;
:   a higher priority specific mask for the reporter's PCI SSID.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-and-tested-by: rodni hipp&lt;br /&gt;
: - ALSA: hda: HDMI: Support codecs with fewer cvts than pins&lt;br /&gt;
:   &lt;br /&gt;
:   The general concept of this change is to create a PCM device for each&lt;br /&gt;
:   pin widget instead of each converter widget. Whenever a PCM is opened,&lt;br /&gt;
:   a converter is dynamically selected to drive that pin based on those&lt;br /&gt;
:   available for muxing into the pin.&lt;br /&gt;
:   &lt;br /&gt;
:   The one thing this model doesn't support is a single PCM/converter&lt;br /&gt;
:   sending audio to multiple pin widgets at once.&lt;br /&gt;
:   &lt;br /&gt;
:   Note that this means that a struct hda_pcm_stream's nid variable is&lt;br /&gt;
:   set to 0 except between a stream's open and cleanup calls. The dynamic&lt;br /&gt;
:   de-assignment of converters to PCMs occurs within cleanup, not close,&lt;br /&gt;
:   in order for it to co-incide with when controller stream IDs are&lt;br /&gt;
:   cleaned up from converters.&lt;br /&gt;
:   &lt;br /&gt;
:   While the PCM for a pin is not open, the pin is disabled (its widget&lt;br /&gt;
:   control's PIN_OUT bit is cleared) so that if the currently routed&lt;br /&gt;
:   converter is used to drive a different PCM/pin, that audio does not&lt;br /&gt;
:   leak out over a disabled pin.&lt;br /&gt;
:   &lt;br /&gt;
:   We use the recently added SPDIF virtualization feature in order to&lt;br /&gt;
:   create SPDIF controls for each pin widget instead of each converter&lt;br /&gt;
:   widget, so that state is specific to a PCM.&lt;br /&gt;
:   &lt;br /&gt;
:   In order to support this, a number of more mechanical changes are made:&lt;br /&gt;
:   &lt;br /&gt;
:   * s/nid/pin_nid/ or s/nid/cvt_nid/ in many places in order to make it&lt;br /&gt;
:   clear exactly what the code is dealing with.&lt;br /&gt;
:   &lt;br /&gt;
:   * We now have per_pin and per_cvt arrays in hdmi_spec to store relevant&lt;br /&gt;
:   data. In particular, we store a converter's capabilities in the per_cvt&lt;br /&gt;
:   entry, rather than relying on a combination of codec_pcm_pars and&lt;br /&gt;
:   the struct hda_pcm_stream.&lt;br /&gt;
:   &lt;br /&gt;
:   * ELD-related workarounds were removed from hdmi_channel_allocation&lt;br /&gt;
:   into hdmi_instrinsic in order to simplifiy infoframe calculations and&lt;br /&gt;
:   remove HW dependencies.&lt;br /&gt;
:   &lt;br /&gt;
:   * Various functions only apply to a single pin, since there is now&lt;br /&gt;
:   only 1 pin per PCM. For example, hdmi_setup_infoframe,&lt;br /&gt;
:   hdmi_setup_stream.&lt;br /&gt;
:   &lt;br /&gt;
:   * hdmi_add_pin and hdmi_add_cvt are more oriented at pure codec parsing&lt;br /&gt;
:   and data retrieval, rather than determining which pins/converters&lt;br /&gt;
:   are to be used for creating PCMs.&lt;br /&gt;
:   &lt;br /&gt;
:   This is quite a large change; it may be appropriate to simply read the&lt;br /&gt;
:   result of the patch rather than the diffs. Some small parts of the change&lt;br /&gt;
:   might be separable into different patches, but I think the bulk of the&lt;br /&gt;
:   change will probably always be one large patch. Hopefully the change&lt;br /&gt;
:   isn't too opaque!&lt;br /&gt;
:   &lt;br /&gt;
:   This has been tested on:&lt;br /&gt;
:   &lt;br /&gt;
:   * NVIDIA GeForce 400 series discrete graphics card. This model has the&lt;br /&gt;
:   classical 1:1:1 codec:converter:pcm widget model. Tested stereo PCM&lt;br /&gt;
:   audio to a PC monitor that supports audio.&lt;br /&gt;
:   &lt;br /&gt;
:   * NVIDIA GeForce 520 discrete graphics card. This model is the new&lt;br /&gt;
:   1 codec n converters m pins m&amp;amp;gt;n model. Tested stereo PCM audio to a&lt;br /&gt;
:   PC monitor that supports audio.&lt;br /&gt;
:   &lt;br /&gt;
:   * NVIDIA GeForce 400 series laptop graphics chip. This model has the&lt;br /&gt;
:   classical 1:1:1 codec:converter:pcm widget model. Tested stereo PCM,&lt;br /&gt;
:   multi-channel PCM, and AC3 pass-through to an AV receiver.&lt;br /&gt;
:   &lt;br /&gt;
:   * Intel Ibex Peak laptop. This model is the new 1 codec n converters m&lt;br /&gt;
:   pins m&amp;amp;gt;n model. Tested stereo PCM, multi-channel PCM, and AC3 pass-&lt;br /&gt;
:   through to an AV receiver.&lt;br /&gt;
:   &lt;br /&gt;
:   Note that I'm not familiar at all with AC3 pass-through. Hence, I may&lt;br /&gt;
:   not have covered all possible mechanisms that are applicable here. I do&lt;br /&gt;
:   know that my receiver definitely received AC3, not decoded PCM. I tested&lt;br /&gt;
:   with mplayer's &amp;quot;-afm hwac3&amp;quot; and/or &amp;quot;-af lavcac3enc&amp;quot; options, and alsa a&lt;br /&gt;
:   WAV file that I believe has AC3 content rather than PCM.&lt;br /&gt;
:   &lt;br /&gt;
:   I also tested:&lt;br /&gt;
:   * Play a stream&lt;br /&gt;
:   * Mute while playing&lt;br /&gt;
:   * Stop stream&lt;br /&gt;
:   * Play some other streams to re-assign the converter to a different&lt;br /&gt;
:   pin, PCM, set of SPDIF controls, ... hence hopefully triggering&lt;br /&gt;
:   cleanup for the original PCM.&lt;br /&gt;
:   * Unmute original stream while not playing&lt;br /&gt;
:   * Play a stream on the original pin/PCM.&lt;br /&gt;
:   &lt;br /&gt;
:   This was to test SPDIF control virtualization.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda: hdmi_eld_update_pcm_info: update a stream in place&lt;br /&gt;
:   &lt;br /&gt;
:   A future change won't store an entire hda_pcm_stream just to represent&lt;br /&gt;
:   the capabilities of a codec; a custom data-structure will be used. To&lt;br /&gt;
:   ease that transition, modify hdmi_eld_update_pcm_info to expect the&lt;br /&gt;
:   hda_pcm_stream to be pre-initialized with the codec's capabilities, and&lt;br /&gt;
:   to update those capabilities in-place based on the ELD.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda: Separate generic and non-generic implementations&lt;br /&gt;
:   &lt;br /&gt;
:   A future change will significantly rework the generic implementation&lt;br /&gt;
:   in order to support codecs with a different number of pins and&lt;br /&gt;
:   converters. Isolate the more custom codec variants from this change by&lt;br /&gt;
:   duplicating the small portions of generic code they share. This&lt;br /&gt;
:   simplifies the later rework of that previously shared code, since we&lt;br /&gt;
:   don't have to consider the more custom codecs, and also prevents&lt;br /&gt;
:   support for those codecs from regressing.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda: Virtualize SPDIF out controls&lt;br /&gt;
:   &lt;br /&gt;
:   The SPDIF output controls apply to converter widgets. A future change&lt;br /&gt;
:   will create a PCM device per pin widget, and hence a set of SPDIF output&lt;br /&gt;
:   controls per pin widget, for certain HDMI codecs. To support this, we&lt;br /&gt;
:   need the ability to virtualize the SPDIF output controls. Specifically:&lt;br /&gt;
:   &lt;br /&gt;
:   * Controls can be &amp;quot;unassigned&amp;quot; from real hardware when a converter is&lt;br /&gt;
:   not used for the PCM the control was created for.&lt;br /&gt;
:   * Control puts only write to hardware when they are assigned.&lt;br /&gt;
:   * Controls can be &amp;quot;assigned&amp;quot; to real hardware when a converter is picked&lt;br /&gt;
:   to support output for a particular PCM.&lt;br /&gt;
:   * When a converter is assigned, the hardware is updated to the cached&lt;br /&gt;
:   configuration.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda: Allow multple SPDIF controls per codec&lt;br /&gt;
:   &lt;br /&gt;
:   Currently, the data that backs the kcontrols created by&lt;br /&gt;
:   snd_hda_create_spdif_out_ctls is stored directly in struct hda_codec. When&lt;br /&gt;
:   multiple sets of these controls are stored, they will all manipulate the&lt;br /&gt;
:   same data, causing confusion. Instead, store an array of this data, one&lt;br /&gt;
:   copy per converter, to isolate the controls.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch would cause a behavioural change in the case where&lt;br /&gt;
:   snd_hda_create_spdif_out_ctls was called multiple times for a single codec.&lt;br /&gt;
:   As best I can tell, this is never the case for any codec.&lt;br /&gt;
:   &lt;br /&gt;
:   This will be relevant at least for some HDMI audio codecs, such as the&lt;br /&gt;
:   NVIDIA GeForce 520 and Intel Ibex Peak. A future change will modify the&lt;br /&gt;
:   driver's handling of those codecs to create multiple PCMs per codec. Note&lt;br /&gt;
:   that this issue isn't affected by whether one creates a PCM-per-converter&lt;br /&gt;
:   or PCM-per-pin; there are multiple of both within a single codec in both&lt;br /&gt;
:   of those codecs.&lt;br /&gt;
:   &lt;br /&gt;
:   Note that those codecs don't currently create multiple PCMs for the codec&lt;br /&gt;
:   due to the default HW mux state of all pins being to point at the same&lt;br /&gt;
:   converter, hence there is only a single converter routed to any pin, and&lt;br /&gt;
:   hence only a single PCM.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda: Gate ELD usage only by whether ELD is valid&lt;br /&gt;
:   &lt;br /&gt;
:   It's perfectly valid for an ELD to contain no SADs. This simply means that&lt;br /&gt;
:   only basic audio is supoprted.&lt;br /&gt;
:   &lt;br /&gt;
:   In this case, we still want to limit a PCM's capabilities based on the ELD.&lt;br /&gt;
:   &lt;br /&gt;
:   History:&lt;br /&gt;
:   &lt;br /&gt;
:   * Originally, ELD application was limited solely by sad_count&amp;amp;gt;0, which&lt;br /&gt;
:   was used to check that an ELD had been read.&lt;br /&gt;
:   * Later, eld_valid was added to the conditions to satisfy.&lt;br /&gt;
:   &lt;br /&gt;
:   This change removes the original sad_count&amp;amp;gt;0 check, which when squashed&lt;br /&gt;
:   with the above two changes ends up replacing if (sad_count) with&lt;br /&gt;
:   if (eld_valid).&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Check pin support EAPD in ad198x_power_eapd_write&lt;br /&gt;
:   &lt;br /&gt;
:   Check whether the pin supports EAPD in ad198x_power_eapd_write.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix HP and Front pins of ad1988/ad1989 in ad198x_power_eapd()&lt;br /&gt;
:   &lt;br /&gt;
:   In ad198x_power_eapd(), wrong pin NIDs are used for controlling EAPD for&lt;br /&gt;
:   HP and Front outputs of AD1988/AD1989.  These are actually same with the&lt;br /&gt;
:   ones for AD1984 &amp;amp; co, port-A is 0x11 and port-D 0x12.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Raymond Yau &amp;amp;lt;superquad.vortex2@gmail.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - Use snd_printd() in snd_hda_parse_pin_def_config()&lt;br /&gt;
:   &lt;br /&gt;
:   Fixed the wrong usage of snd_printdd() for debug prints of input&lt;br /&gt;
:   entries.  It should be snd_printd() like others.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Increase MAX_HDMI_PINS&lt;br /&gt;
:   &lt;br /&gt;
:   The recently introduced NVIDIA GeForce GT 520 has 4 pins within a single&lt;br /&gt;
:   codec. Bump MAX_HDMI_PINS to accomodate this. Also bump MAX_HDMI_CVTS&lt;br /&gt;
:   to match it; this might be needed later too.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Use model=auto for Lenovo G555&lt;br /&gt;
:   &lt;br /&gt;
:   The new auto-parser fixes problems on Lenovo G555.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Unify HDMI hotplug handling.&lt;br /&gt;
:   &lt;br /&gt;
:   This change unifies the initial handling of a pin's state with the code to&lt;br /&gt;
:   update a pin's state after a hotplug (unsolicited response) event. The&lt;br /&gt;
:   initial probing, and all updates, are now routed through hdmi_present_sense.&lt;br /&gt;
:   &lt;br /&gt;
:   The stored PD and ELDV status is now always derived from GetPinSense verb&lt;br /&gt;
:   execution, and not from the data in the unsolicited response. This means:&lt;br /&gt;
:   &lt;br /&gt;
:   a) The WAR for NVIDIA codec's UR.PD values (&amp;quot;old_pin_detect&amp;quot;) can be&lt;br /&gt;
:   removed, since this only affected the no-longer-used unsolicited&lt;br /&gt;
:   response payload.&lt;br /&gt;
:   &lt;br /&gt;
:   b) In turn, this means that most NVIDIA codecs can simply use&lt;br /&gt;
:   patch_generic_hdmi instead of having a custom variant just to set&lt;br /&gt;
:   old_pin_detect.&lt;br /&gt;
:   &lt;br /&gt;
:   c) When PD &amp;amp;&amp;amp; ELDV becomes true, no extra verbs are executed, because the&lt;br /&gt;
:   GetPinSense that was previously executed by snd_hdmi_get_eld (really,&lt;br /&gt;
:   hdmi_eld_valid) has simply moved into hdmi_present_sense.&lt;br /&gt;
:   &lt;br /&gt;
:   d) When PD &amp;amp;&amp;amp; ELDV becomes false, there is a single extra GetPinSense verb&lt;br /&gt;
:   executed for codecs where old_pin_detect wasn't set, i.e. some NVIDIA,&lt;br /&gt;
:   and all ATI/AMD and Intel codecs. I doubt this will be a performance&lt;br /&gt;
:   issue.&lt;br /&gt;
:   &lt;br /&gt;
:   The new unified code in hdmi_present_sense also ensures that eld-&amp;amp;gt;eld_valid&lt;br /&gt;
:   is not set unless eld-&amp;amp;gt;monitor_present is also set. This protects against&lt;br /&gt;
:   potential invalid combinations of PD and ELDV received from HW, and&lt;br /&gt;
:   transitively from a graphics driver.&lt;br /&gt;
:   &lt;br /&gt;
:   Also, print the derived PD/ELDV bits from hdmi_present_sense so the kernel&lt;br /&gt;
:   log always displays the actual state stored, which will differ from the&lt;br /&gt;
:   values in the unsolicited response for NVIDIA HW where old_pin_detect was&lt;br /&gt;
:   previously set.&lt;br /&gt;
:   &lt;br /&gt;
:   Finally, a couple of small tweaks originally by Takashi:&lt;br /&gt;
:   &lt;br /&gt;
:   * Clear the ELD content to zero before reading it, so that if it's not&lt;br /&gt;
:   read (i.e. when !(PD &amp;amp;&amp;amp; ELDV)) it's in a known state.&lt;br /&gt;
:   &lt;br /&gt;
:   * Don't show ELD fields in /proc ELD files when the ELD isn't valid.&lt;br /&gt;
:   &lt;br /&gt;
:   The only possibility I can see for regression here is a codec where the&lt;br /&gt;
:   GetPinSense verb returns incorrect data. However, we're already exposed&lt;br /&gt;
:   to that, since that data is used (a) from hdmi_add_pin to set up the&lt;br /&gt;
:   initial pin state, and (b) within snd_hda_input_jack_report to query&lt;br /&gt;
:   a pin's presence value. As such, I don't believe any HW has bugs here.&lt;br /&gt;
:   &lt;br /&gt;
:   Includes-changes-by: Takashi Iwai &amp;amp;lt;tiwai@suse.de&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - Force AD1988_6STACK_DIG for Asus M3N-HT Deluxe&lt;br /&gt;
:   &lt;br /&gt;
:   The microphone input on the back panel (pink connector)&lt;br /&gt;
:   stopped operating correctly after an upgrade from&lt;br /&gt;
:   2.6.35 to 2.6.38; the actual problem manifests itself&lt;br /&gt;
:   as a lack of microphone bias voltage (VREF_HIZ) on&lt;br /&gt;
:   node 0x17.&lt;br /&gt;
:   With AD1988_6STACK_DIG the maximum bias voltage (VREF_80)&lt;br /&gt;
:   is applied and the headset operates correctly.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Doug Redlich &amp;amp;lt;pbrigade@nxltech.net&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - Fix speaker auto-mute in Cxt auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   Fix some logic failures in auto-mute handling in Conexant auto-parser.&lt;br /&gt;
:   Also, modify codes to be a bit more understandable.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix initial capture-source with auto-mic for Cxt auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   Fix the initialization of capture-source route when auto-mic is enabled&lt;br /&gt;
:   for Conexant auto-parser.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix auto-mic detection in Conexant codec-parser&lt;br /&gt;
:   &lt;br /&gt;
:   Fix the auto-mic detection for Cxt auto-parser due to off-by-one&lt;br /&gt;
:   missing initialization.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Add quirk for Lenovo U350&lt;br /&gt;
:   &lt;br /&gt;
:   Add model=asus quirk for Lenovo Ideapad U350 to make internal mic&lt;br /&gt;
:   work correctly.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: http://bugs.launchpad.net/bugs/751681&lt;br /&gt;
:   Reported-by: Kent Baxley &amp;amp;lt;kent.baxley@canonical.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - add Intel Panther Point HDMI codec id&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove PCM mixer elements from Virtual Master of realtek&lt;br /&gt;
:   &lt;br /&gt;
:   Afer commit aa202455eec51699e44f658530728162cefa1307 , none of realtek&lt;br /&gt;
:   codec has hardware volume control &amp;quot;PCM Playback Volume&amp;quot; and&lt;br /&gt;
:   &amp;quot;PCM Playback Switch&amp;quot;.&lt;br /&gt;
:   &lt;br /&gt;
:   As Virtual Master require all slave controls must have same number of step&lt;br /&gt;
:   and dB range.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix input-src parse in patch_analog.c&lt;br /&gt;
:   &lt;br /&gt;
:   Compare pin type enum to the pin type and not the array index.&lt;br /&gt;
:   Fixes bug#0005368.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Enable Realtek ALC269 codec input layer beep&lt;br /&gt;
:   &lt;br /&gt;
:   This fixes the input layer beep not working on some EeePC 1000 models by&lt;br /&gt;
:   adding the subsystem id into whitelist. Otherwise the corresponding ALSA&lt;br /&gt;
:   mixer is not enabled and stays muted, resulting in no console beep.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Add jack detection for HDMI&lt;br /&gt;
:   &lt;br /&gt;
:   Just as for headphones and microphone jacks, this patch adds reporting&lt;br /&gt;
:   of HDMI jack status through the input layer.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix no sound after Windows boot with ALC269&lt;br /&gt;
:   &lt;br /&gt;
:   Change power control register to default.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add support of ALC221 / ALC276 codecs&lt;br /&gt;
:   &lt;br /&gt;
:   Compatible with ALC269.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add support of ALC898/899 codec&lt;br /&gt;
:   &lt;br /&gt;
:   These are compatible with ALC882 codec.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Handle dock line-in as auto-detecable for Cxt auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   Similar process like in patch_realtek.c and patch_sigmatel.c.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Handle dock line-in as auto-detectable for IDT codecs&lt;br /&gt;
:   &lt;br /&gt;
:   When a docking-station has a line-in jack, we can handle it also as&lt;br /&gt;
:   a detectable jack just like mic-in.  This will improve the usability&lt;br /&gt;
:   of HP laptops with a docking-station.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add dock-mic detection support to Realtek auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   In addition to the normal mic jack, the mic (or line-in) jack on the&lt;br /&gt;
:   docking-station is checked also as a candidate for auto-selection.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Check unsol-cap in is_jack_detectalbe()&lt;br /&gt;
:   &lt;br /&gt;
:   Also replace more open-codes with this function.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add support of dock-mic detection to Conexant auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   In addition to the normal external mic jack, check also the mic jack&lt;br /&gt;
:   on a docking-station as well, and select the input source appropriately.&lt;br /&gt;
:   &lt;br /&gt;
:   The similar functionality was already implemented in patch_sigmatel.c.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix initialization of spec-&amp;amp;gt;automute_lines in patch_realtek.c&lt;br /&gt;
:   &lt;br /&gt;
:   spec-&amp;amp;gt;automute_lines shouldn't be set unless the line-detection is&lt;br /&gt;
:   available.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Use get_wcaps_type()&lt;br /&gt;
:   &lt;br /&gt;
:   Replace the open-code with get_wcaps_type() macro.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Use is_jack_detectable() helper&lt;br /&gt;
:   &lt;br /&gt;
:   Replaced the open-code with the new helper function.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add automute-mode enum to Conexant auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   Implement the same functionality as Realtek's auto-mute mode control.&lt;br /&gt;
:   Now Conexant auto-parser can also mutes line-out and provide the enum&lt;br /&gt;
:   control for different automute behavior.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add missing Front/Surround/CLFE as slaves for Cxt auto-parser&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Code refactoring in patch_conexant.c&lt;br /&gt;
:   &lt;br /&gt;
:   Use a struct instead of each array for managing input-source info&lt;br /&gt;
:   for auto-parser.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Use one dmic only for Dell Studio 1558&lt;br /&gt;
:   &lt;br /&gt;
:   There are no signs of a dmic at node 0x0b, so the user is left with&lt;br /&gt;
:   an additional internal mic which does not exist. This commit removes&lt;br /&gt;
:   that non-existing mic.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: http://bugs.launchpad.net/bugs/731706&lt;br /&gt;
:   Reported-by: James Page &amp;amp;lt;james.page@canonical.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - Add support of auto-parser to cxt5066 codecs&lt;br /&gt;
:   &lt;br /&gt;
:   Still experimental.&lt;br /&gt;
:   Not enabled as default unless model=auto is passed.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Don't create multiple same volume/boost controls in Cxt auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   Check the routing more exactly for avoiding the duplicated controls for&lt;br /&gt;
:   the very same effect for multiple capture routes in Conexant auto-parser.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Build boost controls from selector widget in Cxt auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   When the intermediate selector widget in the capture path provides the&lt;br /&gt;
:   boost volume, create the corresponding volume control.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Don't use auto-parser for cxt5045 / 5051 as default&lt;br /&gt;
:   &lt;br /&gt;
:   Just for safety reason (for avoiding any possible regressions), don't&lt;br /&gt;
:   enable auto-parser as default for cxt5045 and 5051, as well as 5047.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Enable codec-&amp;amp;gt;pin_amp_workaround always for Conexant auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   It can (must for some) be used for all Conexnat codecs safely.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Search ADC NIDs dynamically in Conexant auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of giving fixed arrays, look for ADC nids dynamically in the&lt;br /&gt;
:   tree in Conexant auto-parser code.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add support of auto-parser to cxt5047 / CX20551 Waikiki&lt;br /&gt;
:   &lt;br /&gt;
:   Similarly like other Conexant codecs, now model=auto is supported for&lt;br /&gt;
:   cxt5047.&lt;br /&gt;
:   &lt;br /&gt;
:   But the auto-parser mode isn't activated as default yet, since BIOS&lt;br /&gt;
:   pin-configs seem often broken on machines with this codec.  User need&lt;br /&gt;
:   to pass model=auto explicitly.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Parse more deep input-source routes in Conexant auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   Handle not only a single-depth input-route but two-level depth routes&lt;br /&gt;
:   (PIN-&amp;amp;gt;MUX-&amp;amp;gt;ADC), too.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Clean up input-mux handling in Conexant auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   Keep the registered input-pins in imux_pins[], and fix the inconsistent&lt;br /&gt;
:   use of sepc-&amp;amp;gt;auto_mic_ext.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add auto-parser support to cxt5045 / CX20549 Venice&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add auto-parser support to cxt5051 / CX20561 Hermosa&lt;br /&gt;
:   &lt;br /&gt;
:   Extend the existing auto-parser for CX2064x for cxt5051 codec.&lt;br /&gt;
:   Now the auto-parser supports ADC-switching for this codec.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Check AMP CAP at initialization of Conexant auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   Some codecs have no mute caps in audio I/O widgets.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Turn on EAPD dynamically per jack plug in Conexant auto mode&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of keeping always EAPD on, turn on/off appropriately at jack&lt;br /&gt;
:   plugging in Conexant auto-parser mode.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix auto-mic for CX2064x codecs&lt;br /&gt;
:   &lt;br /&gt;
:   The wrong id is assigned for external/internal mics in the auto-mic&lt;br /&gt;
:   selection parser.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - fix NULL-dereference in patch_realtek&lt;br /&gt;
:   &lt;br /&gt;
:   Fix NULL-dereference when try to use alt_playback since those codecs&lt;br /&gt;
:   which support multistreaming playback usually have more than 1 adc but&lt;br /&gt;
:   the driver should create alt_capture when spec-&amp;amp;gt;stream_analog_alt_capture&lt;br /&gt;
:   is also defined.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix Realtek's chained fixup checks&lt;br /&gt;
:   &lt;br /&gt;
:   The check of chained fixup list entry was done against the wrong element.&lt;br /&gt;
:   A stupid mistake during refactoring.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Constify fixup and other array data in patch_via.c&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Constify fixup and other array data in patch_sigmatel.c&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Constify fixup and other array data in patch_si3054.c&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Constify fixup and other array data in patch_hdmi.c&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Constify fixup and other array data in patch_conexant.c&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Constify fixup and other array data in patch_cirrus.c&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Constify fixup and other array data in patch_ca0110.c&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Constify fixup and other array data in patch_cmedia.c&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Constify fixup and other array data in patch_analog.c&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Constify fixup and other array data in patch_realtek.c&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Constify some API function arguments&lt;br /&gt;
:   &lt;br /&gt;
:   Also fixed the assignment of multiout.dac_nids to satisfy const.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Constify fixup and other array data in patch_realtek.c&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Constify some API function arguments&lt;br /&gt;
:   &lt;br /&gt;
: - Revert &amp;quot;ALSA: hda - Fix pin-config of Gigabyte mobo&amp;quot;&lt;br /&gt;
:   &lt;br /&gt;
:   This reverts commit c6b358748e19ce7e230b0926ac42696bc485a562.&lt;br /&gt;
:   &lt;br /&gt;
:   It turned out that there are different pin configurations for this&lt;br /&gt;
:   PCI SSID, including multi-channel modes.  And more proper fix for&lt;br /&gt;
:   allowing line-out mutes will come up in 2.6.40 tree, so we won't need&lt;br /&gt;
:   this fixup any more there.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Andrew Clayton &amp;amp;lt;andrew@digital-domain.net&amp;amp;gt;&lt;br /&gt;
:   Reported-by: Emmanuel Benisty &amp;amp;lt;benisty.e@gmail.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: HDA: Fix automute for Gateway NV79&lt;br /&gt;
:   &lt;br /&gt;
:   The PCI SSID is 1025:031c and the codec SSID is 1025:031d,&lt;br /&gt;
:   so the driver mistakes this for a SKU value, but looking at&lt;br /&gt;
:   the numbers, this is obviously wrong.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: http://bugs.launchpad.net/bugs/761861&lt;br /&gt;
: - ALSA: hda - Show the line-out type in snd_hda_parse_pin_def_config()&lt;br /&gt;
:   &lt;br /&gt;
:   Helpful for debugging.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda: add beep quirk for Realtek 0x1043:831a&lt;br /&gt;
:   &lt;br /&gt;
:   PC Beep was not being reported as enabled on my EeePC 901:&lt;br /&gt;
:   SKU: enable_pcbeep=0x0&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add Auto-Mute Mode enum for two-output cases&lt;br /&gt;
:   &lt;br /&gt;
:   The Auto-Mute Mode control is useful even when only two outputs&lt;br /&gt;
:   (e.g. HP and speaker) are available.  Then user can enable/disable&lt;br /&gt;
:   the auto-mute behavior on the fly.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - More line-out auto-mute support for Realtek&lt;br /&gt;
:   &lt;br /&gt;
:   Not only supporting the line-out automute as additional feature&lt;br /&gt;
:   to the existing headphone automute, now the headphone jack can&lt;br /&gt;
:   mute the line-out alone even without the speaker outs.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add support for Line-Out automute to Realtek auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   By popular demands, I add the functionality to mute / unmute the&lt;br /&gt;
:   line-out jacks per the headphone plug / unplug.  For achieving this&lt;br /&gt;
:   and keeping the compatibility with the old behavior, the new mixer&lt;br /&gt;
:   enum &amp;quot;Auto-Mute Mode&amp;quot; is added.  With this, user can control the&lt;br /&gt;
:   auto-mute behavior either disabled, speaker-only or lineout+speaker.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - More reduction of redundant automute codes in Realtek parser&lt;br /&gt;
:   &lt;br /&gt;
:   Removed the redundant codes by replacing with the common helper&lt;br /&gt;
:   functions.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Consolidate auto-mute with master-switch for Realtek&lt;br /&gt;
:   &lt;br /&gt;
:   Yet another consolidation of auto-mute functions for the devices&lt;br /&gt;
:   controlling the output muts together with the master mixer switch,&lt;br /&gt;
:   typically found for ALC262 machines.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add support of line-out automute for Realtek&lt;br /&gt;
:   &lt;br /&gt;
:   Add the common helper function and flags to support the auto-mute&lt;br /&gt;
:   per line-out jack detection, and also the mute of line-out jacks.&lt;br /&gt;
:   &lt;br /&gt;
:   A few model-specific implementations are replaced with the common&lt;br /&gt;
:   helpers.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add common automute support for mxier-amp on/off for Reatek&lt;br /&gt;
:   &lt;br /&gt;
:   Some models do mute on/off the connected mixer widget for the automatic&lt;br /&gt;
:   muting, instead of controlling the pin widget itself.  This patch adds&lt;br /&gt;
:   the implementation of such type of auto-mute in the common helper&lt;br /&gt;
:   function, and reduces the redundant codes for each model preset.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Consolidate default automute functions for Realtek&lt;br /&gt;
:   &lt;br /&gt;
:   There are two entry points for the headphone automute functions for&lt;br /&gt;
:   Realtek, alc_automute_amp() and alc_automute_pin().  These call the&lt;br /&gt;
:   same function in the end, so we can basically consolidate these&lt;br /&gt;
:   with a flag in spec.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - VIA: Fix notify_aa_path_ctls() invalid issue.&lt;br /&gt;
:   &lt;br /&gt;
:   In notify_aa_path_ctls(), adds 'rear mic' item and confirms the A-A&lt;br /&gt;
:   path control existing before notifying card that the A-A path volume&lt;br /&gt;
:   is muted if smart5.1 is enabled.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add channel-mode support to Realtek auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds the support of &amp;quot;Channel Mode&amp;quot; enum control to Realtek&lt;br /&gt;
:   auto-parser.  When line-in or mic-in jacks are capable to output and&lt;br /&gt;
:   free DACs are available, the driver allows to switch to multi-channel&lt;br /&gt;
:   mode via &amp;quot;Channel Mode&amp;quot; enum switch, as already implemented in some&lt;br /&gt;
:   preset cases.&lt;br /&gt;
:   &lt;br /&gt;
:   Not implemented in all Realtek codecs.  Currently, ALC880, 882, 861,&lt;br /&gt;
:   662 and the compatible codecs are supported.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Minor update for alc662-parser functions&lt;br /&gt;
:   &lt;br /&gt;
:   Allow alc662_dac_to_mix() and alc662_look_for_dac() to parse&lt;br /&gt;
:   down the selector widget that is found in ALC880-type codecs,&lt;br /&gt;
:   and rename them to alc_auto_*() accordingly.&lt;br /&gt;
:   This is for the next coming multi-io extensions.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - VIA: Fix Smart5.1 isn't useful for 6 audio jacks motherboard.&lt;br /&gt;
:   &lt;br /&gt;
:   For some motherboards with 5 or 6 audio jacks which had six or eight multiple&lt;br /&gt;
:   channels output, smart5.1 item is no useful and should be removed.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Enable sync_write workaround for AMD generically&lt;br /&gt;
:   &lt;br /&gt;
:   The workaround for AMD chipset via sync_write flag seems needed for&lt;br /&gt;
:   machines with Realtek codecs.  So, it's better to activate it&lt;br /&gt;
:   generically in hda_intel.c from the beginning.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Move EAPD power-down into shutup callback for AD codecs&lt;br /&gt;
:   &lt;br /&gt;
:   EAPD power-down should be called also for normal shutup cases.&lt;br /&gt;
:   Let's move to there.   This also fixes the compile warnings when&lt;br /&gt;
:   CONFIG_PM isn't set automatically.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Enable sync_write for AMD chipset with IDT 92HD8x codecs&lt;br /&gt;
:   &lt;br /&gt;
:   The AMD chipset seems unstable in the normal operation mode, and it&lt;br /&gt;
:   seems requring more sensible access for each verb.  Enabling sync_write&lt;br /&gt;
:   mode and allowing bus-reset is a sort of workaround for these chipset&lt;br /&gt;
:   stability issues.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix unused warnings when !SND_HDA_NEEDS_RESUME&lt;br /&gt;
:   &lt;br /&gt;
:   When SND_HDA_NEEDS_RESUME is not defined, the compiler identifies that&lt;br /&gt;
:   the following symbols are static but not used:&lt;br /&gt;
:   &lt;br /&gt;
:   restore_shutup_pins&lt;br /&gt;
:   hda_cleanup_all_streams&lt;br /&gt;
:   &lt;br /&gt;
:   Fix warnings by adding SND_HDA_NEEDS_RESUME guards.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add a fix-up for Acer dmic with ALC271x codec&lt;br /&gt;
:   &lt;br /&gt;
:   Acer laptops with ALC271x needs a magic initialization for digital-mic&lt;br /&gt;
:   to make it working with mono streams (and PulseAudio).&lt;br /&gt;
:   Added a fix-up applied to Acer with ALC271x generically.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - sound/pci/hda/hda_codec.c: fix warning&lt;br /&gt;
:   &lt;br /&gt;
:   sound/pci/hda/hda_codec.c: In function 'snd_hda_get_connections':&lt;br /&gt;
:   sound/pci/hda/hda_codec.c:332: warning: unused variable 'j'&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remember connection lists&lt;br /&gt;
:   &lt;br /&gt;
:   The connection lists are static and we can reuse the previous results&lt;br /&gt;
:   instead of querying via verb at each time.  This will reduce the I/O&lt;br /&gt;
:   in the runtime especially for some codec auto-parsers.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Don't query connections for widgets have no connections&lt;br /&gt;
:   &lt;br /&gt;
:   Fixes the kernel warnings with IDT codecs like&lt;br /&gt;
:   hda_codec: connection list not available for 0x1e&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix unused variable warning in patch_realtek.c&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove superfluous inits for ALC662 auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   Since we now set up the connections and mutes dynamically in the&lt;br /&gt;
:   auto-parser, all static initializations via alc662_init_verbs &amp;amp; co are&lt;br /&gt;
:   no longer needed.  Let's drop them.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Mute ADC as default in ALC882 and other auto-parsers&lt;br /&gt;
:   &lt;br /&gt;
:   Mute the ADC as default in the auto-parser dynamically instead of relying&lt;br /&gt;
:   on the static init verbs.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Unmute mixer dynamically in alc662 auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of static init array, better to determine the connection and&lt;br /&gt;
:   the mute status of the pin/mixer/DAC route dynamically.  This fixes the&lt;br /&gt;
:   uninitialized mixer 0x0f on ALC892.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Fix single internal mic on ALC275 (Sony Vaio VPCSB1C5E)&lt;br /&gt;
:   &lt;br /&gt;
:   In cases where there is only one internal mic connected to ADC 0x11,&lt;br /&gt;
:   alc275_setup_dual_adc won't handle the case, so we need to add the&lt;br /&gt;
:   ADC node to the array of candidates.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: http://bugs.launchpad.net/bugs/752792&lt;br /&gt;
:   Reported-by: Vincenzo Pii&lt;br /&gt;
: - ALSA: hda - HDMI: Fix MCP7x audio infoframe checksums&lt;br /&gt;
:   &lt;br /&gt;
:   The MCP7x hardware computes the audio infoframe channel count&lt;br /&gt;
:   automatically, but requires the audio driver to set the audio&lt;br /&gt;
:   infoframe checksum manually via the Nv_VERB_SET_Info_Frame_Checksum&lt;br /&gt;
:   control verb.&lt;br /&gt;
:   &lt;br /&gt;
:   When audio starts playing, nvhdmi_8ch_7x_pcm_prepare sets the checksum&lt;br /&gt;
:   to (0x71 - chan - chanmask).  For example, for 2ch audio, chan == 1&lt;br /&gt;
:   and chanmask == 0 so the checksum is set to 0x70.  When audio playback&lt;br /&gt;
:   finishes and the device is closed, nvhdmi_8ch_7x_pcm_close resets the&lt;br /&gt;
:   channel formats, causing the channel count to revert to 8ch.  Since&lt;br /&gt;
:   the checksum is not reset, the hardware starts generating audio&lt;br /&gt;
:   infoframes with invalid checksums.  This causes some displays to blank&lt;br /&gt;
:   the video.&lt;br /&gt;
:   &lt;br /&gt;
:   Fix this by updating the checksum and channel mask when the device is&lt;br /&gt;
:   closed and also when it is first initialized.  In addition, make sure&lt;br /&gt;
:   that the channel mask is appropriate for an 8ch infoframe by setting&lt;br /&gt;
:   it to 0x13 (FL FR LFE FC RL RR RLC RRC).&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Rewrite alc269_suspend to alc269_shutup&lt;br /&gt;
:   &lt;br /&gt;
:   alc269_suspend is just calling the shut-up, so we can use the new shutup&lt;br /&gt;
:   callback for the purpose.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Introduce shutup callback to Realtek spec struct&lt;br /&gt;
:   &lt;br /&gt;
:   Add shutup callback to be called codec-specifically for avoiding pop&lt;br /&gt;
:   noises at suspend or shutdown.  As a generic callback, just turn EAPD&lt;br /&gt;
:   off.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Refactoring EAPD controls&lt;br /&gt;
:   &lt;br /&gt;
:   Reduced the duplicated codes.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Split EAPD init to a separate array from alc662_init_verbs&lt;br /&gt;
:   &lt;br /&gt;
:   So far, alc662_init_verbs[] is used for all ALC662-compatible chips,&lt;br /&gt;
:   but the EAPD controls for 0x15 in there is invalid for ALC892.&lt;br /&gt;
:   Also, since EAPDs should be set up in alc_auto_init_amp(), these static&lt;br /&gt;
:   elements aren't needed for auto-parser, too.&lt;br /&gt;
:   &lt;br /&gt;
:   In this patch, the EAPD init verbs are split from alc662_init_verbs,&lt;br /&gt;
:   and applied only to static quirks.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix mix-&amp;amp;gt;DAC deduction for ALC892&lt;br /&gt;
:   &lt;br /&gt;
:   The current alc662 parser doesn't set the DAC for the mixer 0x0f&lt;br /&gt;
:   properly for ALC892, which has 4 DACs while ALC662 has 3.&lt;br /&gt;
:   Fixed by implementing alc662_mix_to_dac() more genericly with the&lt;br /&gt;
:   dynamic widget list.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Correct initial dac_nids for some ALC272-quirks&lt;br /&gt;
:   &lt;br /&gt;
:   Some ALC272-quirks use alc662_dac_nids instead of alc272_dac_nids.&lt;br /&gt;
:   This patch fixes these entries.  No functional change since the first&lt;br /&gt;
:   two elements are identical in both arrays.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix alc662_dac_nid and change &amp;quot;6stack-dig&amp;quot; to &amp;quot;5stack-dig&amp;quot;&lt;br /&gt;
:   &lt;br /&gt;
:   alc662 series only have 3 DAC, so it can only support 5stack-dig&lt;br /&gt;
:   instead of 6stack-dig.&lt;br /&gt;
:   &lt;br /&gt;
:   [updated HD-Audio-Models.txt as well by tiwai]&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Fix dock mic for Lenovo X220-tablet&lt;br /&gt;
:   &lt;br /&gt;
:   Without the &amp;quot;thinkpad&amp;quot; quirk, the dock mic in&lt;br /&gt;
:   Lenovo X220 tablet edition won't work.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: http://bugs.launchpad.net/bugs/751033&lt;br /&gt;
:   Tested-by: James Ferguson &amp;amp;lt;james.ferguson@canonical.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: HDA: Add dock mic quirk for Lenovo Thinkpad X220&lt;br /&gt;
:   &lt;br /&gt;
:   This quirk is needed for the docking station mic of&lt;br /&gt;
:   Lenovo Thinkpad X220 to function correctly.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: http://bugs.launchpad.net/bugs/746259&lt;br /&gt;
:   Tested-by: James Ferguson &amp;amp;lt;james.ferguson@canonical.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - Fix pin-config of Gigabyte mobo&lt;br /&gt;
:   &lt;br /&gt;
:   Use pin-fix instead of the static quirk for Gigabyte mobos 1458:a002.&lt;br /&gt;
:   &lt;br /&gt;
:   Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=677256&lt;br /&gt;
: - ALSA: HDA: New AD1984A model for Dell Precision R5500&lt;br /&gt;
:   &lt;br /&gt;
:   For codec AD1984A, add a new model to support Dell Precision R5500&lt;br /&gt;
:   or the microphone jack won't work correctly.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: http://bugs.launchpad.net/bugs/741516&lt;br /&gt;
:   Tested-by: Kent Baxley &amp;amp;lt;kent.baxley@canonical.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - VIA: Update unsolicited event function&lt;br /&gt;
:   &lt;br /&gt;
:   Update unsolicited event process function via_unsol_event() to&lt;br /&gt;
:   make it can process more unsolicited events.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - VIA: Update VT2002P initial verbs&lt;br /&gt;
:   &lt;br /&gt;
:   Add some hardware related verbs in VT2002P initial verbs.&lt;br /&gt;
:   These verbs are used to fix Class-D speaker no sound issue.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - VIA: Update VT1718S initial verbs&lt;br /&gt;
:   &lt;br /&gt;
:   Add a verb to enable control amplifier of stereo mixer in VT1718S&lt;br /&gt;
:   initial verbs. Set stereo mixer default amplifier value as un-mute.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - VIA: Update VT1708 initial verbs&lt;br /&gt;
:   &lt;br /&gt;
:   Add a verb of power down jack detect in VT1708 initial verbs.&lt;br /&gt;
:   This verb is used to avoid noise caused by hardware issue.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - VIA: Add VT1802 check in via_speaker_automute function&lt;br /&gt;
:   &lt;br /&gt;
:   Add VT1802 check in via_speaker_automute() function.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - VIA: Fix side channel mute invalid issue&lt;br /&gt;
:   &lt;br /&gt;
:   Modify side_mute_channel() and update_side_mute_status() functions&lt;br /&gt;
:   to fix invalid side channel mute issue of VT2002P, VT1812 and VT1802&lt;br /&gt;
:   codecs.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix SPDIF out regression on ALC889&lt;br /&gt;
:   &lt;br /&gt;
:   The commit 5a8cfb4e8ae317d283f84122ed20faa069c5e0c4&lt;br /&gt;
:   ALSA: hda - Use ALC_INIT_DEFAULT for really default initialization&lt;br /&gt;
:   changed to use the default initialization method for ALC889, but&lt;br /&gt;
:   this caused a regression on SPDIF output on some machines.&lt;br /&gt;
:   This seems due to the COEF setup included in the default init procedure.&lt;br /&gt;
:   For making SPDIF working again, the COEF-setup has to be avoided for&lt;br /&gt;
:   the id 0889.&lt;br /&gt;
:   &lt;br /&gt;
:   Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=24342&lt;br /&gt;
: - ALSA: hda - VIA: Add support for VT1802&lt;br /&gt;
:   &lt;br /&gt;
:   Add support for VT1802 codec, which is similiar with VT2002P&lt;br /&gt;
:   except VT1802 has no Class-D and has some different pin widget&lt;br /&gt;
:   id.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - VIA: Add support for VT1705&lt;br /&gt;
:   &lt;br /&gt;
:   Add support for VT1705 codec, which is similiar with VT1708S&lt;br /&gt;
:   except it has 6 channels output.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - VIA: Add new power management function.&lt;br /&gt;
:   &lt;br /&gt;
:   Use set_widgets_power_state() function to seperately control different&lt;br /&gt;
:   codecs' power management actions and to replace the original large&lt;br /&gt;
:   function. Also fix some wrong widgets power up sequence which caused&lt;br /&gt;
:   no sound issue under Smart5.1 mode and Independent HP mode.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Realtek: Avoid unnecessary volume control index on Surround/Side&lt;br /&gt;
:   &lt;br /&gt;
:   Similar to commit 7e59e097c09b82760bb0fe08b0fa2b704d76c3f4, this patch&lt;br /&gt;
:   avoids unnecessary volume control indices for more&lt;br /&gt;
:   Realtek auto-parsers, e g the ALC66x family, on the &amp;quot;Surround&amp;quot; and &amp;quot;Side&amp;quot;&lt;br /&gt;
:   controls.&lt;br /&gt;
:   These indices cause these volume controls to be ignored by PulseAudio and&lt;br /&gt;
:   vmaster and should be removed whenever possible.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Jan Losinski &amp;amp;lt;losinski@wh2.tu-dresden.de&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - VIA: Fix VT1708 can't build up Headphone control issue&lt;br /&gt;
:   &lt;br /&gt;
:   Since VT1708 didn't support the control of getting connection number,&lt;br /&gt;
:   building of headphone control will fail in via_hp_build() function.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - VIA: Correct stream names for VT1818S&lt;br /&gt;
:   &lt;br /&gt;
:   Correct stream names of analog playback and capture streams&lt;br /&gt;
:   for VT1818S.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - VIA: Fix codec type for VT1708BCE at the right timing&lt;br /&gt;
:   &lt;br /&gt;
:   Add get_codec_type() in via_new_spec() function to make sure getting&lt;br /&gt;
:   correct codec type before building mixer controls.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - VIA: Fix invalid A-A path volume adjust issue&lt;br /&gt;
:   &lt;br /&gt;
:   Modify vt_auto_create_analog_input_ctls() function to fix invalid a-a path&lt;br /&gt;
:   volume adjust issue for VT1708S, VT1702 and VT1716S codecs.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - VIA: Add missing support for VT1718S in A-A path&lt;br /&gt;
:   &lt;br /&gt;
:   Modify mute_aa_path() function to support VT1718S codec.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - VIA: Fix independent headphone no sound issue&lt;br /&gt;
:   &lt;br /&gt;
:   Modify via_independent_hp_put() function to support VT1718S and VT1812&lt;br /&gt;
:   codecs, and fix independent headphone no sound issue.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - VIA: Fix stereo mixer recording no sound issue&lt;br /&gt;
:   &lt;br /&gt;
:   Modify function via_mux_enum_put() to fix stereo mixer recording&lt;br /&gt;
:   no sound issue.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Set EAPD for Realtek ALC665&lt;br /&gt;
:   &lt;br /&gt;
:   Set EAPD for Realtek ALC665 (Vendor Id: 0x10eSet EAPD for Realtek&lt;br /&gt;
:   ALC665 (Vendor Id: 0x10ec0665).&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove an unused variable in patch_realtek.c&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - pin-adc-mux-dmic auto-configuration of 92HD8X codecs&lt;br /&gt;
:   &lt;br /&gt;
:   This patch replaces use of the harcoded arrays of pins, muxes, digital&lt;br /&gt;
:   mics and adcs with the auto-generated ones using codec parsing and&lt;br /&gt;
:   auto-discovers all actually connected digital mic pins on 92HD8X-like&lt;br /&gt;
:   codecs&lt;br /&gt;
:   &lt;br /&gt;
:   This patch also adds the support for d-mic on pin 0x20.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - fix digital mic selection in mixer on 92HD8X codecs&lt;br /&gt;
:   &lt;br /&gt;
:   When the mux for digital mic is different from the mux for other mics,&lt;br /&gt;
:   the current auto-parser doesn't handle them in a right way but provides&lt;br /&gt;
:   only one mic.  This patch fixes the issue.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Move default input-src selection to init part&lt;br /&gt;
:   &lt;br /&gt;
:   Move the default input-src selection code for alc268/269 to the init&lt;br /&gt;
:   part instead of the parser.  The input-src selection might be overwritten&lt;br /&gt;
:   by init verbs.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Initialize special cases for input src in init phase&lt;br /&gt;
:   &lt;br /&gt;
:   Currently some special handling for the unusual case like dual-ADCs&lt;br /&gt;
:   or a single-input-src is done in the tree-parse time in&lt;br /&gt;
:   set_capture_mixer().  But this setup could be overwritten by static&lt;br /&gt;
:   init verbs.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch moves the initialization into the init phase so that&lt;br /&gt;
:   such input-src setup won't be lost.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Realtek ALC88x: Do not over-initialize speakers and hp that are primary outputs&lt;br /&gt;
:   &lt;br /&gt;
:   Do not initialize again the what has already been initialized as&lt;br /&gt;
:   multi outs, as this breaks surround speakers.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Bartłomiej Żogała &amp;amp;lt;nusch88@gmail.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: HDA: Fixup unnecessary volume control index on Realtek ALC88x&lt;br /&gt;
:   &lt;br /&gt;
:   Without this change, a volume control named &amp;quot;Surround&amp;quot; or &amp;quot;Side&amp;quot; would&lt;br /&gt;
:   get an unnecessary index, causing it to be ignored by the vmaster and&lt;br /&gt;
:   PulseAudio.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Bartłomiej Żogała &amp;amp;lt;nusch88@gmail.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: HDA: Fix volume control naming for surround speakers on Realtek auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   When more than one pair of internal speakers is present, allow names&lt;br /&gt;
:   according to their channels.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Bartłomiej Żogała &amp;amp;lt;nusch88@gmail.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: HDA: Enable surround and subwoofer on Lenovo Ideapad Y530&lt;br /&gt;
:   &lt;br /&gt;
:   The pin config values would change the association instead of the&lt;br /&gt;
:   sequence, this commit fixes that up.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Bartłomiej Żogała &amp;amp;lt;nusch88@gmail.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - Make common input-jack helper functions&lt;br /&gt;
:   &lt;br /&gt;
:   Since multiple codec drivers already use the input-jack stuff, let's&lt;br /&gt;
:   make common helper functions to reduce the duplicated codes.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Don't set to D3 in Cirrus errata init verbs&lt;br /&gt;
:   &lt;br /&gt;
:   The errata init verbs for CS42xx codecs contain the verbs to set&lt;br /&gt;
:   the power-state of SPDIF nodes to D3, which seem to break the SPDIF&lt;br /&gt;
:   output on some MacBooks.  Since this is executed during the power-up&lt;br /&gt;
:   initialization, we shouldn't turn them down there.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Arun Raghavan &amp;amp;lt;arun.raghavan@collabora.co.uk&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - add new Fermi 5xx codec IDs to snd-hda&lt;br /&gt;
:   &lt;br /&gt;
:   Added the missing HDMI codec IDs for new Nvidia stuff.&lt;br /&gt;
:   Note that ID 0x17 isn't assigned to anything so far, as suggested by&lt;br /&gt;
:   Stephen.&lt;br /&gt;
:   &lt;br /&gt;
:   [Modified to get rid of 0x17 by tiwai]&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix unable to record issue on ASUS N82JV&lt;br /&gt;
:   &lt;br /&gt;
:   The codec of N82JV is ALC269VB.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Realtek: Fixup jack detection to input subsystem&lt;br /&gt;
:   &lt;br /&gt;
:   This patch fixes an error in the jack detection reporting,&lt;br /&gt;
:   causing the jack detection sometimes not to be reported&lt;br /&gt;
:   correctly to the input subsystem. It should apply to several&lt;br /&gt;
:   Realtek codecs.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - patch_realtek.c remove one to many l's in the word.&lt;br /&gt;
:   &lt;br /&gt;
:   The patch below removes an extra &amp;quot;l&amp;quot; in the word.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - 4930g add internal lfe slider&lt;br /&gt;
:   &lt;br /&gt;
:   Lately I sent patch that switched lfe with side in mixer for&lt;br /&gt;
:   acer-aspire-4930g. Then I connected 5.1 speaker system and noticed that&lt;br /&gt;
:   lfe slider wasn't working and that old lfe slider worked. What I'm doing&lt;br /&gt;
:   now is:&lt;br /&gt;
:   &lt;br /&gt;
:   - reverting old patch&lt;br /&gt;
:   - adding internal lfe slider&lt;br /&gt;
:   - removing side as it is superfluous (ALC888S-VC is 7.1 but in fact&lt;br /&gt;
:   laptop can only do 5.1 and it is so in drivers for MS Windows)&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add support for new IDT 92HD98 and 92HD99 codecs&lt;br /&gt;
:   &lt;br /&gt;
:   Also fix number of 92HD87 pins to exclude invalid pins.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Add ideapad quirk for two Dell machines&lt;br /&gt;
:   &lt;br /&gt;
:   These two Dell machines have been reported working well with&lt;br /&gt;
:   the ideapad model.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: http://bugs.launchpad.net/bugs/723676&lt;br /&gt;
:   Tested-by: David Chen &amp;amp;lt;david.chen@canonical.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: HDA: Add a new Conexant codec 506e (20590)&lt;br /&gt;
:   &lt;br /&gt;
:   Conexant 506e/20590 has the same graph as the rest of the 5066 family.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: http://bugs.launchpad.net/bugs/723672&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Fix mic initialization in VIA auto parser&lt;br /&gt;
:   &lt;br /&gt;
:   This typo caused some microphone inputs not to be correctly&lt;br /&gt;
:   initialized on VIA codecs.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-By: Mark Goldstein &amp;amp;lt;goldstein.mark@gmail.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: HDA: Do not announce false surround in Conexant auto&lt;br /&gt;
:   &lt;br /&gt;
:   Without this patch, one line-out and one speaker and&lt;br /&gt;
:   Conexant's auto parser would announce (non-working) surround&lt;br /&gt;
:   capabilities.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: http://bugs.launchpad.net/bugs/721126&lt;br /&gt;
: - ALSA: HDA: Conexant auto: Handle multiple connections to ADC node&lt;br /&gt;
:   &lt;br /&gt;
:   Conexant 20641 has several inputs to its ADC node, with one selector&lt;br /&gt;
:   and individual amps for all inputs. This patch adds support in the&lt;br /&gt;
:   Conexant auto parser to handle that case.&lt;br /&gt;
:   &lt;br /&gt;
:   It also means that the pin node's volume is being renamed to &amp;quot;Boost&amp;quot;&lt;br /&gt;
:   to avoid name clash with the new volume controls on the ADC node.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: http://bugs.launchpad.net/bugs/719524&lt;br /&gt;
: - ALSA: hda - simplify multistreaming playback model of ad1988&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Avoid cast with union data for HDMI audio infoframe&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - add quirk for Ordissimo EVE using a realtek ALC662&lt;br /&gt;
:   &lt;br /&gt;
:   This netbook has a only one jack output and an internal mic.&lt;br /&gt;
:   &lt;br /&gt;
:   By default, mic and jack sense aren't working. Using lenovo-101e&lt;br /&gt;
:   parameters makes both work.&lt;br /&gt;
:   &lt;br /&gt;
:   The device seems based on a Sharetronic Q70, so this should fix audio for&lt;br /&gt;
:   this model too.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Add subwoofer quirk for Acer Aspire 8942G&lt;br /&gt;
:   &lt;br /&gt;
:   According to the reporter, node 0x15 needs to be muted for subwoofer&lt;br /&gt;
:   to stop sounding. This pin is marked as unused by BIOS, so fix that.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: http://bugs.launchpad.net/bugs/715877&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Hans Peter&lt;br /&gt;
: - ALSA: hda - Fix missing CA initialization for HDMI/DP&lt;br /&gt;
:   &lt;br /&gt;
:   The commit 53d7d69d8ffdfa60c5b66cc2e9ee0774aaaef5c0&lt;br /&gt;
:   ALSA: hdmi - support infoframe for DisplayPort&lt;br /&gt;
:   dropped the initialization of CA field accidentally.&lt;br /&gt;
:   This resulted in only two-channel LPCM mode on Nvidia machines.&lt;br /&gt;
:   &lt;br /&gt;
:   Reference: kernel bug 28592&lt;br /&gt;
:   https://bugzilla.kernel.org/show_bug.cgi?id=28592&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - switch lfe with side in mixer for 4930g&lt;br /&gt;
:   &lt;br /&gt;
:   Built-in sub-woofer can now be controlled by lfe slider instead of&lt;br /&gt;
:   side slider on Acer Aspire 5930g&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix memory leaks in conexant jack arrays&lt;br /&gt;
:   &lt;br /&gt;
:   The Conexant codec driver adds the jack arrays in init callback which&lt;br /&gt;
:   may be called also in each PM resume.  This results in the addition of&lt;br /&gt;
:   new jack element at each time.&lt;br /&gt;
:   &lt;br /&gt;
:   The fix is to check whether the requested jack is already present in&lt;br /&gt;
:   the array.&lt;br /&gt;
:   &lt;br /&gt;
:   Reference: Novell bug 668929&lt;br /&gt;
:   https://bugzilla.novell.com/show_bug.cgi?id=668929&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Fix microphone(s) on Lenovo Edge 13&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: http://bugs.launchpad.net/bugs/708521&lt;br /&gt;
:   &lt;br /&gt;
:   This Edge 13 model has an internal mic at 0x1a and should&lt;br /&gt;
:   therefore use the asus quirk.&lt;br /&gt;
:   &lt;br /&gt;
: - Revert &amp;quot;ALSA: HDA: Create mixers on ALC887&amp;quot;&lt;br /&gt;
:   &lt;br /&gt;
:   This reverts commit 03b7a1ab557efe34e8f79b78660e514bd7374248.&lt;br /&gt;
:   &lt;br /&gt;
:   This commit was mistakenly re-introduced.  While the change is harmless&lt;br /&gt;
:   (as ALC887 uses patch_alc888() now), we should get rid of any wrong code.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Create mixers on ALC887&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: http://launchpad.net/bugs/669092&lt;br /&gt;
:   &lt;br /&gt;
:   ALC887 does not have any volume control ability on the mixer NIDs,&lt;br /&gt;
:   so put the volume controls on the dac NIDs instead. Without this&lt;br /&gt;
:   patch, ALC887 users cannot use alsamixer at all.&lt;br /&gt;
:   &lt;br /&gt;
===HDA Intel driver===&lt;br /&gt;
: - ALSA: hda - Use bint for enable_msi option&lt;br /&gt;
:   &lt;br /&gt;
:   The new bint module option type suits well with this one.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Use LPIB position fix for Macbook Pro 7,1&lt;br /&gt;
:   &lt;br /&gt;
:   Several users have reported &amp;quot;choppy&amp;quot; audio under the 3.2 kernel,&lt;br /&gt;
:   and that changing position_fix to 1 has resolved their problem.&lt;br /&gt;
:   The chip is an nVidia Corporation MCP89 High Definition Audio,&lt;br /&gt;
:   [10de:0d94] (rev a2).&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: https://bugs.launchpad.net/bugs/909419&lt;br /&gt;
: - ALSA: HDA: Remove Poulsbo position fix quirks&lt;br /&gt;
:   &lt;br /&gt;
:   Now that we have changed the poulsbo chip to use LPIB position fix,&lt;br /&gt;
:   we can remove the individual machine quirks that do the same thing.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Use LPIB position fix for Oaktrail&lt;br /&gt;
:   &lt;br /&gt;
:   According to the thread on alsa-devel, the LPIB method is to prefer&lt;br /&gt;
:   for Oaktrail controller chip.&lt;br /&gt;
:   &lt;br /&gt;
:   Reference: http://mailman.alsa-project.org/pipermail/alsa-devel/2012-January/047800.html&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda_intel: Add Oaktrail identifiers&lt;br /&gt;
:   &lt;br /&gt;
:   Oaktrail has 0x8086, 0x080a - AZX_DRIVER_SCH&lt;br /&gt;
:   &lt;br /&gt;
:   Taken from the Meego patches for Oaktrail&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Check non-snoop in a single place&lt;br /&gt;
:   &lt;br /&gt;
:   Merge the checks for VIA and ATI-HDMI into a single place for better&lt;br /&gt;
:   code-flow management.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Add support for new AMD products&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds HDMI audio support for new AMD products. As HW default&lt;br /&gt;
:   disable snoop, force non-snoop mode in HD audio driver.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Supports more audio streams&lt;br /&gt;
:   &lt;br /&gt;
:   So far, the driver supports up to 10 streams.  This is a restriction in&lt;br /&gt;
:   hda_intel.c and hda_codec.c: in the former, the fixed array size limits&lt;br /&gt;
:   the amount, and in the latter, the fixed device-number assignment table&lt;br /&gt;
:   (in get_empty_pcm_device()) limits the possibility.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch reduces the restriction by&lt;br /&gt;
:   - using linked list for managing PCM instances in hda_intel.c, and&lt;br /&gt;
:   - assigning non-fixed device numbers for the extra devices&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Use LPIB Position fix for Intel SCH Poulsbo&lt;br /&gt;
:   &lt;br /&gt;
:   Several people with this chipset have reported inconsistent/sloppy&lt;br /&gt;
:   values for position reporting when the DMA position buffer is used,&lt;br /&gt;
:   and that setting position_fix=1 have fixed their problems.&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: https://bugs.launchpad.net/bugs/825709&lt;br /&gt;
: - ALSA: HDA: Set position fix to LPIB for an Atom/Poulsbo based device&lt;br /&gt;
:   &lt;br /&gt;
:   For the Asus 1101HA, reporting position by reading the DMA position&lt;br /&gt;
:   buffer map seems unstable and often wrong. The reporter says that&lt;br /&gt;
:   position_fix=LPIB works much better (although not 100%, but this is&lt;br /&gt;
:   probably due to other issues).&lt;br /&gt;
:   &lt;br /&gt;
:   The controller chip is an Intel Poulsbo 8086:811b (rev 07) controller,&lt;br /&gt;
:   and complete alsa-info is available here:&lt;br /&gt;
:   https://launchpadlibrarian.net/86691768/alsa-info.txt.1TNwyE5Ea7&lt;br /&gt;
:   &lt;br /&gt;
:   BugLink: http://bugs.launchpad.net/bugs/825709&lt;br /&gt;
:   Tested-by: Stefano Lodi&lt;br /&gt;
: - ALSA: hda_intel - revert a quirk that affect VIA chipsets&lt;br /&gt;
:   &lt;br /&gt;
:   This quirk sould be reverted. It has the following probems:&lt;br /&gt;
:   &lt;br /&gt;
:   1) The quirk was intended to &amp;quot;ASUS MV2-MX SE&amp;quot; motherboards only, but the&lt;br /&gt;
:   ID used matches a much broader range, potentially all boards containing a&lt;br /&gt;
:   VIA chipset model in the family of vendor VIA 0x1106 and audio device ID&lt;br /&gt;
:   0x3288, which encompasses VIA-VT82xx, VIA-VT1xx and VIA-VT20xx chipsets.&lt;br /&gt;
:   &lt;br /&gt;
:   2) VIA chipsets rely on azx_via_get_position() to handle correctly dma&lt;br /&gt;
:   transfers during capture. Using POS_FIX_LPIB instead of POS_FIX_VIACOMBO&lt;br /&gt;
:   leads to partially corrupted input buffers during capture. The effects&lt;br /&gt;
:   of this bug are not immediately visible, it took strong DSP expertise,&lt;br /&gt;
:   some expensive signal generator and a spectrum analyzer to identify it&lt;br /&gt;
:   and verify correct behaviour using original default.&lt;br /&gt;
:   &lt;br /&gt;
:   3) It's almost certain that the quirk did not fix the real problem,&lt;br /&gt;
:   if there was one. Refer to original submission:&lt;br /&gt;
:   http://mailman.alsa-project.org/pipermail/alsa-devel/2010-February/025109.html&lt;br /&gt;
:   &lt;br /&gt;
:   Signed-of-by: Marc Vertes &amp;amp;lt;mvertes@sigfox.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - Fix a regression for DMA-position check with CA0110&lt;br /&gt;
:   &lt;br /&gt;
:   The regression-fix in 3.1 for the check of DMA-position validity caused&lt;br /&gt;
:   yet another regression for CA0110.  As usual, this hardware seems working&lt;br /&gt;
:   only with LPIB properly.  Adding the appropriate driver-caps bit to force&lt;br /&gt;
:   LPIB fixes the problem.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-and-tested-by: Andres Freund &amp;amp;lt;andres@anarazel.de&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - Add position_fix quirk for Dell Inspiron 1010&lt;br /&gt;
:   &lt;br /&gt;
:   The previous fix for the position-buffer check gives yet another&lt;br /&gt;
:   regression on a Dell laptop.  The safest fix right now is to add a&lt;br /&gt;
:   static quirk for this device (and better to apply it for stable&lt;br /&gt;
:   kernels too).&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Éric Piel &amp;amp;lt;Eric.Piel@tremplin-utc.net&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - Distinguish each substream for better sticky assignment&lt;br /&gt;
:   &lt;br /&gt;
:   The commit ef18beded8ddbaafdf4914bab209f77e60ae3a18 introduced a&lt;br /&gt;
:   mechanism to assign the previously used slot for the next reopen of a&lt;br /&gt;
:   PCM stream.  But the PCM device number isn't always unique (it may&lt;br /&gt;
:   have multiple substreams), and also the code doesn't check the stream&lt;br /&gt;
:   direction, thus both playback and capture streams share the same&lt;br /&gt;
:   device number.&lt;br /&gt;
:   &lt;br /&gt;
:   For avoiding this conflict, make a unique key for each substream and&lt;br /&gt;
:   store/check this value at reopening.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix a regression of the position-buffer check&lt;br /&gt;
:   &lt;br /&gt;
:   The commit a810364a0424c297242c6c66071a42f7675a5568&lt;br /&gt;
:   ALSA: hda - Handle -1 as invalid position, too&lt;br /&gt;
:   caused a regression on some machines that require the position-buffer&lt;br /&gt;
:   instead of LPIB, e.g. resulting in noises with mic recording with&lt;br /&gt;
:   PulseAudio.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch fixes the detection by delaying the test at the timing as&lt;br /&gt;
:   same as 3.0, i.e. doing the position check only when requested in&lt;br /&gt;
:   azx_position_ok().&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-and-tested-by: Rocko Requin &amp;amp;lt;rockorequin@hotmail.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - Add snoop option&lt;br /&gt;
:   &lt;br /&gt;
:   Added a new option &amp;quot;snoop&amp;quot; for the traffic control of the HD-audio&lt;br /&gt;
:   controller chip.  When set to 0, the non-snooping mode is used with&lt;br /&gt;
:   the traffic control bit is set in each stream control register.&lt;br /&gt;
:   This may allow better operations in the low power mode, but the actual&lt;br /&gt;
:   implementation is depending pretty much on the chipset.&lt;br /&gt;
:   &lt;br /&gt;
:   As already implemented, more or less each chipset has own snoop-control&lt;br /&gt;
:   register bit.  Now this setup refers to the snoop option, too.&lt;br /&gt;
:   &lt;br /&gt;
:   Also, a new VIA chipset may require the non-snooping mode when set so&lt;br /&gt;
:   in BIOS.  In such a case, the option value is overridden.&lt;br /&gt;
:   &lt;br /&gt;
:   As default, it's still set to snoop=1 for keeping the same behavior as&lt;br /&gt;
:   before.  In near future, it'll be set to 0 as default after checking&lt;br /&gt;
:   it works in every system well.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda: option to enable arbitrary buffer/period sizes&lt;br /&gt;
:   &lt;br /&gt;
:   Add new parameter to disable rounding of buffer/period sizes to&lt;br /&gt;
:   multiples of 128 bytes. This is more efficient in terms of memory&lt;br /&gt;
:   access but isn't required by the HDA spec and prevents users from&lt;br /&gt;
:   specifying exact period/buffer sizes. For example for 44.1kHz, a&lt;br /&gt;
:   period size set to 20ms will be rounded to 19.59ms.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested and enabled on Intel HDA controllers. Option is disabled by&lt;br /&gt;
:   default for other controllers.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Wu Fengguang &amp;amp;lt;fengguang.wu@intel.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - Add Kconfig for the default buffer size&lt;br /&gt;
:   &lt;br /&gt;
:   Add a Kconfig entry to specify the default buffer size.&lt;br /&gt;
:   Distros using PulseAudio can choose a larger value here.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Remove redundant LPIB quirks for ATI chipset&lt;br /&gt;
:   &lt;br /&gt;
:   Now that we have changed the position_fix default for ATI and AMD&lt;br /&gt;
:   to be LPIB (see commit 50e3bbf989), we can remove the quirks that&lt;br /&gt;
:   were added for ATI chipsets.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix SSYNC register value for non-Intel controllers&lt;br /&gt;
:   &lt;br /&gt;
:   SSYNC register was once defined as 0x34-37 in the old Intel datasheet,&lt;br /&gt;
:   but corrected later to 0x38-3b.  For fixing the register usage, a new&lt;br /&gt;
:   bit-flag is introduced for indicating the old ICH SSYNC register, and&lt;br /&gt;
:   ICH* PCI entries are added explicitly to enable this quirk.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Judge playback stream from stream id in&lt;br /&gt;
:   azx_via_get_position()&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of checking the azx_dev index with a fixed number (4), check&lt;br /&gt;
:   the stream direction of the assigned substream.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Handle -1 as invalid position, too&lt;br /&gt;
:   &lt;br /&gt;
:   When reading from the position-buffer results in -1, handle as it's&lt;br /&gt;
:   invalid and falls back to LPIB mode as well as 0.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda: Allow multple SPDIF controls per codec&lt;br /&gt;
:   &lt;br /&gt;
:   Currently, the data that backs the kcontrols created by&lt;br /&gt;
:   snd_hda_create_spdif_out_ctls is stored directly in struct hda_codec. When&lt;br /&gt;
:   multiple sets of these controls are stored, they will all manipulate the&lt;br /&gt;
:   same data, causing confusion. Instead, store an array of this data, one&lt;br /&gt;
:   copy per converter, to isolate the controls.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch would cause a behavioural change in the case where&lt;br /&gt;
:   snd_hda_create_spdif_out_ctls was called multiple times for a single codec.&lt;br /&gt;
:   As best I can tell, this is never the case for any codec.&lt;br /&gt;
:   &lt;br /&gt;
:   This will be relevant at least for some HDMI audio codecs, such as the&lt;br /&gt;
:   NVIDIA GeForce 520 and Intel Ibex Peak. A future change will modify the&lt;br /&gt;
:   driver's handling of those codecs to create multiple PCMs per codec. Note&lt;br /&gt;
:   that this issue isn't affected by whether one creates a PCM-per-converter&lt;br /&gt;
:   or PCM-per-pin; there are multiple of both within a single codec in both&lt;br /&gt;
:   of those codecs.&lt;br /&gt;
:   &lt;br /&gt;
:   Note that those codecs don't currently create multiple PCMs for the codec&lt;br /&gt;
:   due to the default HW mux state of all pins being to point at the same&lt;br /&gt;
:   converter, hence there is only a single converter routed to any pin, and&lt;br /&gt;
:   hence only a single PCM.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: fix hda AZX_DCAPS_NO_TCSEL quirk check in driver_caps&lt;br /&gt;
:   &lt;br /&gt;
:   Commit 9477c58e3308 (&amp;quot;ALSA: hda - Reorganize controller quriks with bit&lt;br /&gt;
:   flags&amp;quot;) changed the driver type compares into various quirk bits.&lt;br /&gt;
:   However, the check for AZX_DCAPS_NO_TCSEL got reverted: instead of&lt;br /&gt;
:   clearing TCSEL for chipsets that have that standard capability, it&lt;br /&gt;
:   cleared then when the NO_TCSEL bit was set.&lt;br /&gt;
:   &lt;br /&gt;
:   This can lead to noise and repeated sounds - a weird &amp;quot;echo&amp;quot; behavior.&lt;br /&gt;
:   As the comment just above says: &amp;quot;Ensuring these bits are 0 clears&lt;br /&gt;
:   playback static on some HD Audio codecs&amp;quot;.  Which is definitely true at&lt;br /&gt;
:   least on my Core i5 Westmere system.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Reorganize controller quriks with bit flags&lt;br /&gt;
:   &lt;br /&gt;
:   Introduce bit-flags indicating the necessary controller quirks, and&lt;br /&gt;
:   set them in pci driver_data field.  This simplifies the checks in the&lt;br /&gt;
:   driver code and avoids the pci-id lookup in different places.&lt;br /&gt;
:   &lt;br /&gt;
:   Also, this patch adds the PCI ID entry for AMD Hudson.  AMD Hudson&lt;br /&gt;
:   requires a similar workaround like ATI SB while other generic ATI and&lt;br /&gt;
:   AMD controllers don't need but some ATI-HDMI quirks.  So, we need a&lt;br /&gt;
:   different entry for Hudson.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Use LPIB for ATI/AMD chipsets as default&lt;br /&gt;
:   &lt;br /&gt;
:   ATI and AMD chipsets seem not providing the proper position-buffer&lt;br /&gt;
:   information, and it also doesn't provide FIFO register required by&lt;br /&gt;
:   VIACOMBO fix.  It's better to use LPIB for these.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: David Henningsson &amp;amp;lt;david.henningsson@canonical.com&amp;amp;gt;&lt;br /&gt;
: - Revert &amp;quot;ALSA: hda - Use position_fix=3 as default for AMD chipsets&amp;quot;&lt;br /&gt;
:   &lt;br /&gt;
:   This reverts commit 447ee6a7cbbfb5ae7ab8f9b8b058b4a04fe398bf.&lt;br /&gt;
:   &lt;br /&gt;
:   The workaround introduced by this commit seems bogus.&lt;br /&gt;
:   The AMD chipsets don't provide proper position-buffer nor FIFO value&lt;br /&gt;
:   required by VIACOMBO fix.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Enable snoop bit for AMD controllers&lt;br /&gt;
:   &lt;br /&gt;
:   AMD Hudson controllers give noisy outputs when the buffer data is&lt;br /&gt;
:   rewritten on the fly as PulseAudio does.  This seems fixed by the&lt;br /&gt;
:   snoop bit enabled just like ATI chipset.&lt;br /&gt;
:   &lt;br /&gt;
:   Also, disable 64bit DMA as now, to be sure.&lt;br /&gt;
:   We can revisit this later.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Use position_fix=3 as default for AMD chipsets&lt;br /&gt;
:   &lt;br /&gt;
:   AMD chipsets often behave pretty badly regarding the DMA position&lt;br /&gt;
:   reporting.  It results in the bad quality audio recording.&lt;br /&gt;
:   Using position_fix=3 works well in general for them, so let's enable&lt;br /&gt;
:   it as default for AMD.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Enable sync_write workaround for AMD generically&lt;br /&gt;
:   &lt;br /&gt;
:   The workaround for AMD chipset via sync_write flag seems needed for&lt;br /&gt;
:   machines with Realtek codecs.  So, it's better to activate it&lt;br /&gt;
:   generically in hda_intel.c from the beginning.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - ALSA HD Audio patch for Intel Panther Point DeviceIDs&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds the HD Audio Controller DeviceIDs for the Intel Panther Point PCH.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda: Prevent writing ICH6_PCIREG_TCSEL on AMD systems&lt;br /&gt;
:   &lt;br /&gt;
:   azx_init_pci() always writes PCI config register ICH6_PCIREG_TCSEL&lt;br /&gt;
:   although this looks to be only defined on Intel systems and has a&lt;br /&gt;
:   different meaning on AMD systems. On AMD systems the PCI interrupt pin&lt;br /&gt;
:   control register is modified instead.&lt;br /&gt;
:   &lt;br /&gt;
:   Since the meaning of offset 0x44 in device specific configuration space is&lt;br /&gt;
:   unknown for devices by other vendors, we only exclude AMD systems to&lt;br /&gt;
:   retain the current behaviour.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Add position_fix quirk for an Asus device&lt;br /&gt;
:   &lt;br /&gt;
:   The bug reporter claims that position_fix=1 is needed for his&lt;br /&gt;
:   microphone to work. The controller PCI vendor-id is [1002:4383] (rev 40).&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Kjell L.&lt;br /&gt;
:   BugLink: http://bugs.launchpad.net/bugs/718402&lt;br /&gt;
: - ALSA: hda - Don't handle empty patch files&lt;br /&gt;
:   &lt;br /&gt;
:   When an empty string is passed to patch option, the driver should&lt;br /&gt;
:   ignore it.  Otherwise it gets an error by trying to load it.&lt;br /&gt;
:   &lt;br /&gt;
===HDA generic driver===&lt;br /&gt;
: - Refreshed patches&lt;br /&gt;
:   &lt;br /&gt;
:   Mainly for bool modparm changes.&lt;br /&gt;
:   &lt;br /&gt;
: - Fix builds of hda_intel.c with old kernels below 2.6.29&lt;br /&gt;
:   &lt;br /&gt;
:   Some old kernels have no pgprog_writecombine() although they have&lt;br /&gt;
:   set_pages_wc().&lt;br /&gt;
:   &lt;br /&gt;
: - Add workarounds for older kernels to set non-cached page flags in hda_intel.c&lt;br /&gt;
:   &lt;br /&gt;
: - Fix fuzz of pci/hda/hda_intel.patch&lt;br /&gt;
:   &lt;br /&gt;
: - Add pci/hda/hda_jack.c build stub&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Avoid conflict of unsol-events with static quirks&lt;br /&gt;
:   &lt;br /&gt;
:   The recently added jack-kctl support sets the unsol event tags&lt;br /&gt;
:   dynamically, while static quirks usually set the fixed tags in the&lt;br /&gt;
:   init_verbs array.  Due to this conflict, the own unsol event handler&lt;br /&gt;
:   can't retrieve the tag and handle it properly any more.&lt;br /&gt;
:   &lt;br /&gt;
:   For fixing this, avoid calling snd_hda_jack_add_kctls() for static&lt;br /&gt;
:   quirks, and always let them use own handlers instead of the standard&lt;br /&gt;
:   one for the auto-pareser.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: David Henningsson &amp;amp;lt;david.henningsson@canonical.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - Return the error from get_wcaps_type() for invalid NIDs&lt;br /&gt;
:   &lt;br /&gt;
:   When an invalid NID is given, get_wcaps() returns zero as the error,&lt;br /&gt;
:   but get_wcaps_type() takes it as the normal value and returns a bogus&lt;br /&gt;
:   AC_WID_AUD_OUT value.  This confuses the parser.&lt;br /&gt;
:   &lt;br /&gt;
:   With this patch, get_wcaps_type() returns -1 when value 0 is given,&lt;br /&gt;
:   i.e. an invalid NID is passed to get_wcaps().&lt;br /&gt;
:   &lt;br /&gt;
:   Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=740118&lt;br /&gt;
:   &lt;br /&gt;
: - Merge all missing things from upstream.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Manage unsol tags in hda_jack.c&lt;br /&gt;
:   &lt;br /&gt;
:   Manage the tags assigned for unsolicited events dynamically together&lt;br /&gt;
:   with the jack-detection routines.  Basically this is almost same as what&lt;br /&gt;
:   we've done in patch_sigmatel.c.  Assign the new tag number for each new&lt;br /&gt;
:   unsol event, associate with the given NID and the action type, etc.&lt;br /&gt;
:   &lt;br /&gt;
:   With this change, now all pins looked over in snd_hda_jack_add_kctls()&lt;br /&gt;
:   are actually enabled for detection now even if the pins aren't used for&lt;br /&gt;
:   jack-retasking by the driver.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add missing inclusion of linux/export.h&lt;br /&gt;
:   &lt;br /&gt;
:   This is needed newly since 3.2...&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Integrate input-jack stuff into kctl-jack&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of managing input-jack stuff separately, call all stuff inside&lt;br /&gt;
:   the kctl-jack creation, deletion and report.  The caller no longer needs&lt;br /&gt;
:   to care about input-jack.&lt;br /&gt;
:   &lt;br /&gt;
:   The better integration between input-jack and kctl-jack should be done&lt;br /&gt;
:   in the upper layer in near future, but for now, it's implemented locally&lt;br /&gt;
:   for more tests.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Give more unique names by snd_hda_get_pin_label()&lt;br /&gt;
:   &lt;br /&gt;
:   The function now gives more unique names for the output pins by adding&lt;br /&gt;
:   some prefix and suffix for the location and the channels.  Otherwise, it&lt;br /&gt;
:   can pass the index number.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/jack - Fix the assignment of input jack-type&lt;br /&gt;
:   &lt;br /&gt;
:   The type field was lost during the transition.  Restored.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/jack - Fix NULL-dereference at probing&lt;br /&gt;
:   &lt;br /&gt;
:   At probing time, the elements that aren't assigned to kctl or jack may&lt;br /&gt;
:   be called.  Need proper NULL-checks.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Jack: Export required functions from hda_jack.c&lt;br /&gt;
:   &lt;br /&gt;
:   These two functions are being used by the codec-idt and codec-hdmi&lt;br /&gt;
:   modules, so they need to be exported properly.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Merge input-jack helpers to hda_jack.c&lt;br /&gt;
:   &lt;br /&gt;
:   We can use the very same table in hda_jack.c for managing the list for&lt;br /&gt;
:   input-jack elements, too.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Create jack-detection kcontrols&lt;br /&gt;
:   &lt;br /&gt;
:   Create kcontrols for pin jack-detections, which work similarly like&lt;br /&gt;
:   jack-input layer.  Each control will notify when the jack is plugged or&lt;br /&gt;
:   unplugged, and also user can read the value at any time via the normal&lt;br /&gt;
:   control API.&lt;br /&gt;
:   &lt;br /&gt;
:   The control elements are created with iface=CARD, so that they won't&lt;br /&gt;
:   appear in the mixer apps.&lt;br /&gt;
:   &lt;br /&gt;
:   So far, only the pins that enabled the jack-detection are registered.&lt;br /&gt;
:   For covering all pins, the transition of the common unsol-tag handling&lt;br /&gt;
:   would be needed.  Stay tuned.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Cache the jack-detection value&lt;br /&gt;
:   &lt;br /&gt;
:   Introduce a table containing the pins and their jack-detection states&lt;br /&gt;
:   for avoiding the unnecessary verbs to check the pin status at each time.&lt;br /&gt;
:   &lt;br /&gt;
:   When the unsol event is enabled via snd_hda_jack_detect_enable(), it&lt;br /&gt;
:   automatically adds the given NID to the table.  Then the driver supposes&lt;br /&gt;
:   that the codec driver will set the dirty flag appropariately when an&lt;br /&gt;
:   unsolicited event is invoked for that pin.&lt;br /&gt;
:   &lt;br /&gt;
:   The behavior for reading other pins that aren't registered in the table&lt;br /&gt;
:   doesn't change.  Only the pins assigned to the table are cached, so far.&lt;br /&gt;
:   &lt;br /&gt;
:   In near futre, this table can be extended to use the central place for&lt;br /&gt;
:   the unsolicited events of all pins, etc, and eventually include the&lt;br /&gt;
:   jack-detect kcontrols that replace the current input-jack stuff.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Introduce snd_hda_get_pin_label()&lt;br /&gt;
:   &lt;br /&gt;
:   Create a new helper function snd_hda_get_pin_label() for getting a label&lt;br /&gt;
:   string for both input and output pins.  hda_get_input_pin_label() is&lt;br /&gt;
:   obsoleted by this function, and the callers are replaced appropriately&lt;br /&gt;
:   now by this patch.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Move ALC880 model=lg-lw to auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   ALC880 model=lg-lw works fine with the auto-parser as is.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Move ALC880 model=medion-rim to auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   Translate ALC880 medion-rim static configs to the auto-parser with the&lt;br /&gt;
:   additional GPIO2 verb and COEF setup.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - fail ELD reading early&lt;br /&gt;
:   &lt;br /&gt;
:   With the ELD repoll mechanism, we can (and should) fail the ELD reading&lt;br /&gt;
:   immediately when find something obviously wrong and let the caller retry&lt;br /&gt;
:   after some delay.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - move eld-&amp;amp;gt;spk_alloc fixup to hdmi_update_eld()&lt;br /&gt;
:   &lt;br /&gt;
:   It looks more natural and saves two lines of code.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - fix ELD memory leak&lt;br /&gt;
:   &lt;br /&gt;
:   memset(eld) clears eld-&amp;amp;gt;proc_entry which will leak the struct&lt;br /&gt;
:   snd_info_entry when unloading module.&lt;br /&gt;
:   &lt;br /&gt;
:   Fix it by&lt;br /&gt;
:   - memset only the fields before eld-&amp;amp;gt;eld_buffer&lt;br /&gt;
:   - set eld-&amp;amp;gt;eld_valid to true _after_ all eld fields have been filled&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Move ALC885 macpro and imac24 models to auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   The ALC882 macpro and imac24 static configs can be transferred to the&lt;br /&gt;
:   auto-parser with the additional GPIO setup.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Remove left-over chunks in alc882_quirks.c&lt;br /&gt;
:   &lt;br /&gt;
:   Remove unused variables.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Rewrite ALC882 acer-aspire-* models with the auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   Now we can move the big acer-aspire-* static quirks to the auto-paresr&lt;br /&gt;
:   with some additional pin-configs and verbs.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Drop ALC882 desktop model quirks&lt;br /&gt;
:   &lt;br /&gt;
:   Now we're touching the desktop static configs for ALC88x codecs.&lt;br /&gt;
:   These are mostly OK with the auto-parser, but some models need careful&lt;br /&gt;
:   handling; ALC889 intel mobo requires the COEF setup, and W2JC needs&lt;br /&gt;
:   GPIO1 and COEF.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Remove ALC882 targa-* models&lt;br /&gt;
:   &lt;br /&gt;
:   All ALC882 targa-* models can be replaced with the auto-parser just&lt;br /&gt;
:   with the additional GPIO3 setup.  And it's generically applied to all&lt;br /&gt;
:   MSI boards unless other quirks are present.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Move ALC882 model=acer-aspire to auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   The ALC882 model=acer-aspire requires the additional COEF setup.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Drop ALC882 model=acer quirk&lt;br /&gt;
:   &lt;br /&gt;
:   This quirk is anyway not used any more, so no problem to remove.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Drop ALC882 model=clevo-m720 quirk&lt;br /&gt;
:   &lt;br /&gt;
:   This works well without any special handling with the auto-parser.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Drop ALC882 3stack-hp, 6stack-dell and clevo-m540r models&lt;br /&gt;
:   &lt;br /&gt;
:   These static configs are no longer needed by replacement with the&lt;br /&gt;
:   auto-parser.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Replace ALC882 arima, medion and laptop-eapd quirks&lt;br /&gt;
:   &lt;br /&gt;
:   Move these quitks to the auto-parser.  They just need some EAPD setups&lt;br /&gt;
:   in addition.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Drop ALC882 mitac and fujitsu-xa3530 static configs&lt;br /&gt;
:   &lt;br /&gt;
:   These are working well with the auto-parser although they have&lt;br /&gt;
:   relatively complex setup.  Let's go forward.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Drop ALC882 lenovo and haier-w66 static configs&lt;br /&gt;
:   &lt;br /&gt;
:   Remove all ALC882 static configurations for all Lenovo and Haier-w66&lt;br /&gt;
:   quirks.  They work fine with the auto-parser now.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Drop lenovo-sky, asus-m90v, fujitsu-pi2515 quirks&lt;br /&gt;
:   &lt;br /&gt;
:   These machines are working well with the auto-parser without static&lt;br /&gt;
:   configurations.  More diet.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Drop ALC882 asus-a7j and asus-a7m models&lt;br /&gt;
:   &lt;br /&gt;
:   These models work fine with the auto-parser with the additional COEF&lt;br /&gt;
:   setup.  The iMac 7,1 (106b:3200) also uses the same quirk, so remove it&lt;br /&gt;
:   too.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Move ALC888 ASUS EEE1601 config to auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   The ASUS EEE1601 works almost fine with the auto-parser but the static&lt;br /&gt;
:   configuration has a certain specific COEF verb.  Add this to the fix-up&lt;br /&gt;
:   list so that we can drop the whole EEE1601 static config from&lt;br /&gt;
:   alc882_quirks.c.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Drop ALC882 model=asus-p5q static config&lt;br /&gt;
:   &lt;br /&gt;
:   It works well with the auto-parser and the default BIOS setup.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Rewrite ALC882 model=vaio-tt with auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   Providing a pincfg fix for VAIO-TT with ALC889 codec to work with the&lt;br /&gt;
:   auto-parser, and drop the static configuration.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Remove all ALC262-quirk codes&lt;br /&gt;
:   &lt;br /&gt;
:   Now that model=ultra is supported well by the auto-parser, we can get rid&lt;br /&gt;
:   of the whole alc262_quirks.c and its related codes.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Drop ALC262 model=basic static configs&lt;br /&gt;
:   &lt;br /&gt;
:   Now most of ALC262 stuff has been moved to the auto-parser, and no longer&lt;br /&gt;
:   need for keeping model=basic.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Drop ALC262 model=hippo static quirks&lt;br /&gt;
:   &lt;br /&gt;
:   Both entries for ALC262 model=hippo work well with the auto-parser and&lt;br /&gt;
:   the default BIOS setup.  No static configs are needed, so drop them.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Drop ALC262 model=hippo static quirks&lt;br /&gt;
:   &lt;br /&gt;
:   This model (actually BenQ Joybook) works fine with the default auto-parser&lt;br /&gt;
:   and the BIOS setup.  Just drop the static quirks.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Convert ALC262 model=fujitsu to auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   It works well with the auto-parse and the default BIOS setup when an&lt;br /&gt;
:   additional COEF setup (for benq) is used.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Convert ALC262 benq and benq-t31 to fixup-lists&lt;br /&gt;
:   &lt;br /&gt;
:   The conversion from ALC262 model=benq and model=benq-t31 static configs&lt;br /&gt;
:   to auto-parser requires the manual COEF setups for corresponding models.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Convert ALC262 lenovo-3000 quirks to fixup-list&lt;br /&gt;
:   &lt;br /&gt;
:   The static quirks for ALC262 Lenovo 3000 can be covered by the auto-&lt;br /&gt;
:   parser with a fixup of the mic-pin to VREF50 and the additional COEF&lt;br /&gt;
:   verb.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Drop ALC262 model=nec quirk&lt;br /&gt;
:   &lt;br /&gt;
:   This laptop works also fine with the auto-parser and the BIOS setup.&lt;br /&gt;
:   A good boy.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Drop ALC262 model=toshiba-s06&lt;br /&gt;
:   &lt;br /&gt;
:   This laptop works fine with the current auto-parser and the BIOS setup,&lt;br /&gt;
:   so let's drop the static configuration.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Convert ALC262 model=toshiba-rx1 to a fixup-list&lt;br /&gt;
:   &lt;br /&gt;
:   Use the auto-parser for ALC262 model=toshiba-rx1 with the fixed pin-&lt;br /&gt;
:   configs.  The BIOS table seems incorrect, so many pin entries are&lt;br /&gt;
:   overwritten to match with the former quirk.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Convert alc262 model=tyan to a fixup-list&lt;br /&gt;
:   &lt;br /&gt;
:   Use the auto-parser for ALC262 model=tyan with a pin-config fix-up and&lt;br /&gt;
:   drop the static configuration.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Re-enable the check NO_PRESENCE misc bit&lt;br /&gt;
:   &lt;br /&gt;
:   We disabled the check of NO_PRESENCE bit of the default pin-config&lt;br /&gt;
:   in commit f4419172 temporarily.  One problem was that the first&lt;br /&gt;
:   implementation was wrong -- the bit after the shift must be checked.&lt;br /&gt;
:   However, this would still give many regressions on machines with broken&lt;br /&gt;
:   BIOS.  They set this bit wrongly even on active pins.&lt;br /&gt;
:   &lt;br /&gt;
:   A workaround is to check whether all pins contain this bit.  As far as&lt;br /&gt;
:   I've checked, broken BIOSen set this bit on all pins, no matter whether&lt;br /&gt;
:   active or not.  In such a case, the driver should ignore this bit check.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Revert the check of NO_PRESENCE pincfg default bit&lt;br /&gt;
:   &lt;br /&gt;
:   The implementation on commit [08a1f5eb: ALSA: hda - Check NO_PRESENCE&lt;br /&gt;
:   pincfg default bit] seems like a mis-interpretation of specification.&lt;br /&gt;
:   The spec gives the reversed bit definition.  But, following the spec&lt;br /&gt;
:   also causes to change so many existing device configurations, thus we&lt;br /&gt;
:   can't change it so easily for now.  For 3.2-rc1, it's safer to revert&lt;br /&gt;
:   this check (actually this patch comments out the code).&lt;br /&gt;
:   &lt;br /&gt;
:   We may re-introduced the fixed version once after the wider test-case&lt;br /&gt;
:   coverages are done.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Refactor Realtek's automute&lt;br /&gt;
:   &lt;br /&gt;
:   Increase readability and understandability in the automute code.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Check NO_PRESENCE pincfg default bit&lt;br /&gt;
:   &lt;br /&gt;
:   HD-audio spec defines a bit in pin default configuration for indicating&lt;br /&gt;
:   that the pin isn't used for jack-detection although the codec is capable&lt;br /&gt;
:   of it.  Better to check this bit as well in jack_is_detectable() helper&lt;br /&gt;
:   function.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Raymond Yau &amp;amp;lt;superquad.vortex2@gmail.com&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda_hwdep: Fix possible buffer overflow&lt;br /&gt;
:   &lt;br /&gt;
:   If a line in the firmware file is larger than the given buffer size (and&lt;br /&gt;
:   so the firmware file size), size is set to a value larger than the actual&lt;br /&gt;
:   buffer size. This results in an overflow in the buffer passed.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/realtek - Fix missing volume controls with ALC260&lt;br /&gt;
:   &lt;br /&gt;
:   ALC260 has multiple mixer widgets connected to the shared DAC, but the&lt;br /&gt;
:   driver currently doesn't check this possibility and ignores when the DAC&lt;br /&gt;
:   is shared with others.  This resulted in the silent output from some&lt;br /&gt;
:   routes because of lack of the amp setup.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds the workaround for it by checking the route even with the&lt;br /&gt;
:   shared DAC, but also checking the conflict with the existing control for&lt;br /&gt;
:   the very same widget NID.&lt;br /&gt;
:   &lt;br /&gt;
:   Reference: https://bugzilla.novell.com/show_bug.cgi?id=726812&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Moved snd_print_pcm_rates() back into hda_proc.c&lt;br /&gt;
:   &lt;br /&gt;
:   Since hda_proc.c is now the only user of snd_print_pcm_rates(), better to&lt;br /&gt;
:   put it back locally to hda_proc.c and revert to the old style.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hdmi: fix printout of SAD sampling rates&lt;br /&gt;
:   &lt;br /&gt;
:   SAD sampling rate information reported in&lt;br /&gt;
:   /proc/asound/cardX/eldX is incorrect due to a mismatch&lt;br /&gt;
:   between HDA and HDMI frequencies. Add new routine to provide&lt;br /&gt;
:   relevant values.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda/hdmi: expose ELD control&lt;br /&gt;
:   &lt;br /&gt;
:   Applications may want to read ELD information to&lt;br /&gt;
:   understand what codecs are supported on the HDMI&lt;br /&gt;
:   receiver and handle the a-v delay for better lip-sync.&lt;br /&gt;
:   &lt;br /&gt;
:   ELD information is exposed in a device-specific&lt;br /&gt;
:   IFACE_PCM kcontrol. Tested both with amixer and&lt;br /&gt;
:   PulseAudio; with a corresponding patch passthrough modes&lt;br /&gt;
:   are enabled automagically.&lt;br /&gt;
:   &lt;br /&gt;
:   ELD control size is set to zero in case of errors or&lt;br /&gt;
:   wrong configurations. No notifications are implemented&lt;br /&gt;
:   for now, it is expected that jack detection is used to&lt;br /&gt;
:   reconfigure the audio outputs.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Allow patching with any vendor/subsystem ids&lt;br /&gt;
:   &lt;br /&gt;
:   In the ugly real world, there area really broken devices that don't set&lt;br /&gt;
:   codec SSID correctly.  In such a case, the ID can be random, thus the&lt;br /&gt;
:   patching won't work reliably.&lt;br /&gt;
:   &lt;br /&gt;
:   For applying the patch forcibly to such a device, the driver will skip&lt;br /&gt;
:   the vendor and/or subsystem ID checks when zero or a negative number is&lt;br /&gt;
:   given in [codec] section.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove the rest of ALC662 quirks&lt;br /&gt;
:   &lt;br /&gt;
:   The rest of ALC662 quirks are only for desktops, and they should work&lt;br /&gt;
:   with the auto-parser.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove ALC662 ASUS eeepc-ep20 model quirk&lt;br /&gt;
:   &lt;br /&gt;
:   Since the recent fixes, this device works with the auto-parser well.&lt;br /&gt;
:   Let's kill it.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove ALC662 ASUS M51VA, G71V, H13 and G50V model quirks&lt;br /&gt;
:   &lt;br /&gt;
:   These models work now with the BIOS auto-parser, so let's drop them.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Rewrite ALC269 laptop-amic,dmic,&amp;amp;co quirks with fixups&lt;br /&gt;
:   &lt;br /&gt;
:   Similarly like ALC662 asus-mode* models, rewrite the laptop-amic and&lt;br /&gt;
:   dmic models with the static pin-config tables.&lt;br /&gt;
:   &lt;br /&gt;
:   Now we can get rid of all alc269_quirks.c.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Rewrite ALC662 asus-mode* models with fixups&lt;br /&gt;
:   &lt;br /&gt;
:   Re-implement the asus-mode[1-8] quirks with the pin-config tables.&lt;br /&gt;
:   They are provided in case where BIOS is broken on the device, so it's&lt;br /&gt;
:   not enabled in PCI SSID lookup table.  User needs to specify it via model&lt;br /&gt;
:   option explicitly if the driver doesn't work with the BIOS setup as is.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add multi-headphone NIDs in multiout struct&lt;br /&gt;
:   &lt;br /&gt;
:   For supporting both the multiple headphones and the multiple speakers,&lt;br /&gt;
:   add the new field in struct hda_multi_out, and evaluate in the standard&lt;br /&gt;
:   setup functions.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove all ALC861 and ALC861-VD quirks&lt;br /&gt;
:   &lt;br /&gt;
:   Let's remove the rest of ALC861 and ALC861-VD quirks.&lt;br /&gt;
:   If any breakage is found, it can be fixed easily via the pin-config&lt;br /&gt;
:   table update.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Rename to snd_hda_parse_pin_defcfg()&lt;br /&gt;
:   &lt;br /&gt;
:   ... and add a new bit-flags argument to specify the behavior of the&lt;br /&gt;
:   function.  The older function is kept as is (as a wrapper).&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Don't spew too many ELD errors&lt;br /&gt;
:   &lt;br /&gt;
:   Currently HD-audio driver shows the all error ELD byte as an error&lt;br /&gt;
:   in the kernel message.  This is annoying when the video driver doesn't&lt;br /&gt;
:   set the correct ELD from the beginning. e.g. radeon sends a zero-byte&lt;br /&gt;
:   data, but we still check ELD with the fixed 128 byte as a workaround&lt;br /&gt;
:   for some broken devices, it spews 128-times errors.&lt;br /&gt;
:   &lt;br /&gt;
:   For avoiding this, the driver aborts reading when the first byte is&lt;br /&gt;
:   invalid.  In such a case, the whole data is certainly invalid.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove ALC662 model=levono-101e model quirk&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove ALC662 eeepc-p701 and ecs models&lt;br /&gt;
:   &lt;br /&gt;
:   These are confirmed to work with the auto-parser with pincfg fixups.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Get rid of left-over chunks by previous cleanups&lt;br /&gt;
:   &lt;br /&gt;
:   Also update the model description, too.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove ALC861 uniwill-m31, toshiba, asus and asus-laptop models&lt;br /&gt;
:   &lt;br /&gt;
:   These are confirmed to work with the auto-parser.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove ALC268 model quirks&lt;br /&gt;
:   &lt;br /&gt;
:   Get rid of the rest of ALC268 model quirks.  They are all confirmed to&lt;br /&gt;
:   work with the auto-parser, too.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Replace ALC269 quanta and lifebook models with fixups&lt;br /&gt;
:   &lt;br /&gt;
:   Implement new fixup entries for Quanta FL1 and Fujitsu Lifebook&lt;br /&gt;
:   specific COEF and pin configurations.  Removed the model entries&lt;br /&gt;
:   from alc269_quirks.c.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove acer, acer-aspire and acer-dmic models for ALC268&lt;br /&gt;
:   &lt;br /&gt;
:   Moved some code to alc269_quirks.c for dependency, too.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix duplicated capture-volume creation for ALC268 models&lt;br /&gt;
:   &lt;br /&gt;
:   Fix the duplicated creation of capture-mixer elements for some static&lt;br /&gt;
:   ALC268 configurations.  The capture mixers must be put to cap_mixer field&lt;br /&gt;
:   instead of mixers array.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove ALC269 model=futjisu and Acer&lt;br /&gt;
:   &lt;br /&gt;
:   Both are supported by the auto-parser.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove dell, dell-zm1 and samsung-nc10 models for ALC272&lt;br /&gt;
:   &lt;br /&gt;
:   The auto-parser works for these models.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove ALC861VD Lenovo, Dallas, HP and V1S model quirks&lt;br /&gt;
:   &lt;br /&gt;
:   These are covered by the auto-parser well enough.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove ALC680 model quirks&lt;br /&gt;
:   &lt;br /&gt;
:   The auto-parser works fine.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove ALC268 Dell, Toshiba and Zapto model quirks&lt;br /&gt;
:   &lt;br /&gt;
:   These models work fine with the BIOS auto-parser.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove ALC260 HP model quirks&lt;br /&gt;
:   &lt;br /&gt;
:   ALC260 HP models work with the BIOS auto-parser.  Let's cut them off.&lt;br /&gt;
:   Also move alc260_hp_master_*() to alc262_quirks.c as these are still&lt;br /&gt;
:   referred from there.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Remove ALC262 HP and sony-assamd quirks&lt;br /&gt;
:   &lt;br /&gt;
:   HP and sony-assamd models work with the BIOS auto-parser nowadays,&lt;br /&gt;
:   so let's reduce the unnecessary code.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add snd_hda_override_pin_caps() helper function&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add tracepoint for unsolicited events&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add basic tracepoints&lt;br /&gt;
:   &lt;br /&gt;
:   Add a few tracepoints to HD-audio driver.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Use auto-parser for ASUS UX50, Eee PC P901, S101 and P1005&lt;br /&gt;
:   &lt;br /&gt;
:   It works fine with auto-parser and now the digital mic workaround was&lt;br /&gt;
:   implemented in auto-parser fixup, let's drop the static model quirks for&lt;br /&gt;
:   these models.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Make CONFIG_SND_HDA_POWER_SAVE depending on CONFIG_PM&lt;br /&gt;
:   &lt;br /&gt;
:   It makes little sense to enable power-saving without PM.&lt;br /&gt;
:   This removes SND_HDA_NEEDS_RESUME define so that we can use CONFIG_PM&lt;br /&gt;
:   in all places.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - fix up typos in Kconfig help for default buffer size introduced in acfa634f&lt;br /&gt;
:   &lt;br /&gt;
:   This commit is a fix up for commit acfa634f.&lt;br /&gt;
:   &lt;br /&gt;
:   commit acfa634f7e199193ec28282e82a5a6dd8edebcb7&lt;br /&gt;
:   Author: Takashi Iwai &amp;amp;lt;tiwai@suse.de&amp;amp;gt;&lt;br /&gt;
:   Date:   Tue Jul 12 17:27:46 2011 +0200&lt;br /&gt;
:   &lt;br /&gt;
:   ALSA: hda - Add Kconfig for the default buffer size&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add Kconfig for the default buffer size&lt;br /&gt;
:   &lt;br /&gt;
:   Add a Kconfig entry to specify the default buffer size.&lt;br /&gt;
:   Distros using PulseAudio can choose a larger value here.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Always read raw connections for proc output&lt;br /&gt;
:   &lt;br /&gt;
:   In the codec proc outputs, read the raw connections instead of the&lt;br /&gt;
:   cached connection list, i.e. proc files contain only raw values.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Split quirk codes from patch_realtek.c&lt;br /&gt;
:   &lt;br /&gt;
:   Put the all static quirk codes out of patch_realtek.c, split into the&lt;br /&gt;
:   file for each codec model.  For controlling the build of quirk codes,&lt;br /&gt;
:   a new Kconfig, CONFIG_SND_HDA_ENABLE_REALTEK_QUIRKS is introduced.&lt;br /&gt;
:   By setting this off, all quirk codes won't be built, thus you can save&lt;br /&gt;
:   lots of memory.&lt;br /&gt;
:   &lt;br /&gt;
:   The codes in patch_realtek.c are also shuffled and more comments are&lt;br /&gt;
:   given, but the contents aren't changed.  This is just a refactoring.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - remove SND_HDA_POWER_SAVE protection of struct hda_loopback_check&lt;br /&gt;
:   &lt;br /&gt;
:   to fix build problems when it is disabled.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add Creative CA0132 HDA codec support&lt;br /&gt;
:   &lt;br /&gt;
:   Create patch_ca0132.c, to add support for devices featuring the&lt;br /&gt;
:   Creative CA0132 HD-audio codec.&lt;br /&gt;
:   &lt;br /&gt;
:   This driver implements :-&lt;br /&gt;
:   * 1 playback subdevice to headphone and speaker&lt;br /&gt;
:   * 2 capture subdevices:&lt;br /&gt;
:   i - Mic-in&lt;br /&gt;
:   ii- Line-in&lt;br /&gt;
:   * mixer device&lt;br /&gt;
:   &lt;br /&gt;
:   Advanced DSP features are not yet included.&lt;br /&gt;
:   Developed and maintained by Creative Labs, Inc.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDMI - fix ELD monitor name length&lt;br /&gt;
:   &lt;br /&gt;
:   I noticed that the last character of the ELD monitor name is lost,&lt;br /&gt;
:   this fixes the issue.&lt;br /&gt;
:   &lt;br /&gt;
:   This fix should be confirming to the HDA spec, and works together with&lt;br /&gt;
:   the DRM part of the ELD patch.&lt;br /&gt;
:   &lt;br /&gt;
:   The HDA spec does not mention that Monitor_Name_String is an '\0'&lt;br /&gt;
:   ending string, and it allows NML to be 1, which is only valid when MNL&lt;br /&gt;
:   does not count the possible ending '\0'.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix missing static inline to beep dummy function&lt;br /&gt;
:   &lt;br /&gt;
:   The commit 2308f4add3de9f6c9c9f02e49461e94d84bb200a missed static inline&lt;br /&gt;
:   thus it resulted in multiple-definitions error at linking.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Fix beep_device compilation warnings&lt;br /&gt;
:   &lt;br /&gt;
:   Using static inline functions can reduce compilation messages&lt;br /&gt;
:   and macro misuse.&lt;br /&gt;
:   &lt;br /&gt;
:   sound/pci/hda/patch_conexant.c: In function ‘patch_cxt5045’:&lt;br /&gt;
:   sound/pci/hda/patch_conexant.c:1232:3: warning: statement with no effect&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda: hdmi_eld_update_pcm_info: update a stream in place&lt;br /&gt;
:   &lt;br /&gt;
:   A future change won't store an entire hda_pcm_stream just to represent&lt;br /&gt;
:   the capabilities of a codec; a custom data-structure will be used. To&lt;br /&gt;
:   ease that transition, modify hdmi_eld_update_pcm_info to expect the&lt;br /&gt;
:   hda_pcm_stream to be pre-initialized with the codec's capabilities, and&lt;br /&gt;
:   to update those capabilities in-place based on the ELD.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda: Virtualize SPDIF out controls&lt;br /&gt;
:   &lt;br /&gt;
:   The SPDIF output controls apply to converter widgets. A future change&lt;br /&gt;
:   will create a PCM device per pin widget, and hence a set of SPDIF output&lt;br /&gt;
:   controls per pin widget, for certain HDMI codecs. To support this, we&lt;br /&gt;
:   need the ability to virtualize the SPDIF output controls. Specifically:&lt;br /&gt;
:   &lt;br /&gt;
:   * Controls can be &amp;quot;unassigned&amp;quot; from real hardware when a converter is&lt;br /&gt;
:   not used for the PCM the control was created for.&lt;br /&gt;
:   * Control puts only write to hardware when they are assigned.&lt;br /&gt;
:   * Controls can be &amp;quot;assigned&amp;quot; to real hardware when a converter is picked&lt;br /&gt;
:   to support output for a particular PCM.&lt;br /&gt;
:   * When a converter is assigned, the hardware is updated to the cached&lt;br /&gt;
:   configuration.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: HDA: Unify HDMI hotplug handling.&lt;br /&gt;
:   &lt;br /&gt;
:   This change unifies the initial handling of a pin's state with the code to&lt;br /&gt;
:   update a pin's state after a hotplug (unsolicited response) event. The&lt;br /&gt;
:   initial probing, and all updates, are now routed through hdmi_present_sense.&lt;br /&gt;
:   &lt;br /&gt;
:   The stored PD and ELDV status is now always derived from GetPinSense verb&lt;br /&gt;
:   execution, and not from the data in the unsolicited response. This means:&lt;br /&gt;
:   &lt;br /&gt;
:   a) The WAR for NVIDIA codec's UR.PD values (&amp;quot;old_pin_detect&amp;quot;) can be&lt;br /&gt;
:   removed, since this only affected the no-longer-used unsolicited&lt;br /&gt;
:   response payload.&lt;br /&gt;
:   &lt;br /&gt;
:   b) In turn, this means that most NVIDIA codecs can simply use&lt;br /&gt;
:   patch_generic_hdmi instead of having a custom variant just to set&lt;br /&gt;
:   old_pin_detect.&lt;br /&gt;
:   &lt;br /&gt;
:   c) When PD &amp;amp;&amp;amp; ELDV becomes true, no extra verbs are executed, because the&lt;br /&gt;
:   GetPinSense that was previously executed by snd_hdmi_get_eld (really,&lt;br /&gt;
:   hdmi_eld_valid) has simply moved into hdmi_present_sense.&lt;br /&gt;
:   &lt;br /&gt;
:   d) When PD &amp;amp;&amp;amp; ELDV becomes false, there is a single extra GetPinSense verb&lt;br /&gt;
:   executed for codecs where old_pin_detect wasn't set, i.e. some NVIDIA,&lt;br /&gt;
:   and all ATI/AMD and Intel codecs. I doubt this will be a performance&lt;br /&gt;
:   issue.&lt;br /&gt;
:   &lt;br /&gt;
:   The new unified code in hdmi_present_sense also ensures that eld-&amp;amp;gt;eld_valid&lt;br /&gt;
:   is not set unless eld-&amp;amp;gt;monitor_present is also set. This protects against&lt;br /&gt;
:   potential invalid combinations of PD and ELDV received from HW, and&lt;br /&gt;
:   transitively from a graphics driver.&lt;br /&gt;
:   &lt;br /&gt;
:   Also, print the derived PD/ELDV bits from hdmi_present_sense so the kernel&lt;br /&gt;
:   log always displays the actual state stored, which will differ from the&lt;br /&gt;
:   values in the unsolicited response for NVIDIA HW where old_pin_detect was&lt;br /&gt;
:   previously set.&lt;br /&gt;
:   &lt;br /&gt;
:   Finally, a couple of small tweaks originally by Takashi:&lt;br /&gt;
:   &lt;br /&gt;
:   * Clear the ELD content to zero before reading it, so that if it's not&lt;br /&gt;
:   read (i.e. when !(PD &amp;amp;&amp;amp; ELDV)) it's in a known state.&lt;br /&gt;
:   &lt;br /&gt;
:   * Don't show ELD fields in /proc ELD files when the ELD isn't valid.&lt;br /&gt;
:   &lt;br /&gt;
:   The only possibility I can see for regression here is a codec where the&lt;br /&gt;
:   GetPinSense verb returns incorrect data. However, we're already exposed&lt;br /&gt;
:   to that, since that data is used (a) from hdmi_add_pin to set up the&lt;br /&gt;
:   initial pin state, and (b) within snd_hda_input_jack_report to query&lt;br /&gt;
:   a pin's presence value. As such, I don't believe any HW has bugs here.&lt;br /&gt;
:   &lt;br /&gt;
:   Includes-changes-by: Takashi Iwai &amp;amp;lt;tiwai@suse.de&amp;amp;gt;&lt;br /&gt;
: - ALSA: hda - Check unsol-cap in is_jack_detectalbe()&lt;br /&gt;
:   &lt;br /&gt;
:   Also replace more open-codes with this function.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Add automute-mode enum to Conexant auto-parser&lt;br /&gt;
:   &lt;br /&gt;
:   Implement the same functionality as Realtek's auto-mute mode control.&lt;br /&gt;
:   Now Conexant auto-parser can also mutes line-out and provide the enum&lt;br /&gt;
:   control for different automute behavior.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Constify some API function arguments&lt;br /&gt;
:   &lt;br /&gt;
:   Also fixed the assignment of multiout.dac_nids to satisfy const.&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Constify some API function arguments&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: hda - Make common input-jack helper functions&lt;br /&gt;
:   &lt;br /&gt;
:   Since multiple codec drivers already use the input-jack stuff, let's&lt;br /&gt;
:   make common helper functions to reduce the duplicated codes.&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Perex</name></author>	</entry>

	<entry>
		<id>http://alsa-project.org/main/index.php/Detailed_SoC_changes_v1.0.24_v1.0.25</id>
		<title>Detailed SoC changes v1.0.24 v1.0.25</title>
		<link rel="alternate" type="text/html" href="http://alsa-project.org/main/index.php/Detailed_SoC_changes_v1.0.24_v1.0.25"/>
				<updated>2012-01-25T09:19:47Z</updated>
		
		<summary type="html">&lt;p&gt;Perex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
=Detailed SoC changelog between 1.0.24 and 1.0.25 releases=&lt;br /&gt;
&lt;br /&gt;
==alsa-driver==&lt;br /&gt;
===SoC PXA2xx Core===&lt;br /&gt;
: - ASoC: Fix dependency for SND_SOC_RAUMFELD and SND_PXA2XX_SOC_HX4700&lt;br /&gt;
:   &lt;br /&gt;
:   SND_SOC_RAUMFELD selects SND_SOC_CS4270 which needs CONFIG_I2C,&lt;br /&gt;
:   and also selects SND_SOC_AK4104 which needs SPI_MASTER.&lt;br /&gt;
:   Thus make SND_SOC_RAUMFELD depend on I2C &amp;amp;&amp;amp; SPI_MASTER.&lt;br /&gt;
:   &lt;br /&gt;
:   Add depend on SPI_MASTER to fix below build error if CONFIG_SPI_MASTER&lt;br /&gt;
:   is not selected.&lt;br /&gt;
:   &lt;br /&gt;
:   LD      .tmp_vmlinux1&lt;br /&gt;
:   sound/built-in.o: In function `ak4104_spi_write':&lt;br /&gt;
:   last.c:(.text+0x290cc): undefined reference to `spi_sync'&lt;br /&gt;
:   sound/built-in.o: In function `ak4104_probe':&lt;br /&gt;
:   last.c:(.text+0x292a0): undefined reference to `spi_write_then_read'&lt;br /&gt;
:   sound/built-in.o: In function `ak4104_spi_probe':&lt;br /&gt;
:   last.c:(.text+0x29398): undefined reference to `spi_setup'&lt;br /&gt;
:   sound/built-in.o: In function `ak4104_init':&lt;br /&gt;
:   last.c:(.init.text+0x4ec): undefined reference to `spi_register_driver'&lt;br /&gt;
:   make: *** [.tmp_vmlinux1] Error 1&lt;br /&gt;
:   &lt;br /&gt;
:   Add depend on I2C to fix below build error if CONFIG_I2C is not selected:&lt;br /&gt;
:   CC      sound/soc/codecs/cs4270.o&lt;br /&gt;
:   sound/soc/codecs/cs4270.c: In function 'cs4270_i2c_probe':&lt;br /&gt;
:   sound/soc/codecs/cs4270.c:657: error: implicit declaration of function 'i2c_smbus_read_byte_data'&lt;br /&gt;
:   sound/soc/codecs/cs4270.c: In function 'cs4270_init':&lt;br /&gt;
:   sound/soc/codecs/cs4270.c:730: error: implicit declaration of function 'i2c_add_driver'&lt;br /&gt;
:   sound/soc/codecs/cs4270.c: In function 'cs4270_exit':&lt;br /&gt;
:   sound/soc/codecs/cs4270.c:736: error: implicit declaration of function 'i2c_del_driver'&lt;br /&gt;
:   make[3]: *** [sound/soc/codecs/cs4270.o] Error 1&lt;br /&gt;
:   make[2]: *** [sound/soc/codecs] Error 2&lt;br /&gt;
:   make[1]: *** [sound/soc] Error 2&lt;br /&gt;
:   make: *** [sound] Error 2&lt;br /&gt;
:   &lt;br /&gt;
:   SND_PXA2XX_SOC_HX4700 selects SND_SOC_AK4641 which needs CONFIG_I2C.&lt;br /&gt;
:   Thus make SND_PXA2XX_SOC_HX4700 depend on I2C.&lt;br /&gt;
:   &lt;br /&gt;
:   Add depend on I2C to fix below build error if CONFIG_I2C is not selected:&lt;br /&gt;
:   CC      sound/soc/codecs/ak4641.o&lt;br /&gt;
:   sound/soc/codecs/ak4641.c: In function 'ak4641_modinit':&lt;br /&gt;
:   sound/soc/codecs/ak4641.c:646: error: implicit declaration of function 'i2c_add_driver'&lt;br /&gt;
:   sound/soc/codecs/ak4641.c: In function 'ak4641_exit':&lt;br /&gt;
:   sound/soc/codecs/ak4641.c:656: error: implicit declaration of function 'i2c_del_driver'&lt;br /&gt;
:   make[3]: *** [sound/soc/codecs/ak4641.o] Error 1&lt;br /&gt;
:   make[2]: *** [sound/soc/codecs] Error 2&lt;br /&gt;
:   make[1]: *** [sound/soc] Error 2&lt;br /&gt;
:   make: *** [sound] Error 2&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Make SND_SOC_SAARB and SND_SOC_TAVOREVB3 select MFD_88PM860X&lt;br /&gt;
:   &lt;br /&gt;
:   In saarb_pm860x_init() and evb3_pm860x_init(), we call&lt;br /&gt;
:   pm860x_hs_jack_detect() and pm860x_mic_jack_detect() which in turn&lt;br /&gt;
:   calls pm860x_set_bits().&lt;br /&gt;
:   Thus make SND_SOC_SAARB and SND_SOC_TAVOREVB3 select MFD_88PM860X.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch fixes below build error if CONFIG_MFD_88PM860X is not configured.&lt;br /&gt;
:   &lt;br /&gt;
:   LD      .tmp_vmlinux1&lt;br /&gt;
:   sound/built-in.o: In function `pm860x_write_reg_cache':&lt;br /&gt;
:   last.c:(.text+0x29e9c): undefined reference to `pm860x_reg_write'&lt;br /&gt;
:   sound/built-in.o: In function `pm860x_set_bias_level':&lt;br /&gt;
:   last.c:(.text+0x29ecc): undefined reference to `pm860x_set_bits'&lt;br /&gt;
:   last.c:(.text+0x29f00): undefined reference to `pm860x_reg_write'&lt;br /&gt;
:   last.c:(.text+0x29f18): undefined reference to `pm860x_reg_write'&lt;br /&gt;
:   sound/built-in.o: In function `pm860x_read_reg_cache':&lt;br /&gt;
:   last.c:(.text+0x29f40): undefined reference to `pm860x_reg_read'&lt;br /&gt;
:   sound/built-in.o: In function `pm860x_probe':&lt;br /&gt;
:   last.c:(.text+0x2a034): undefined reference to `pm860x_bulk_read'&lt;br /&gt;
:   sound/built-in.o: In function `pm860x_codec_handler':&lt;br /&gt;
:   last.c:(.text+0x2a344): undefined reference to `pm860x_reg_read'&lt;br /&gt;
:   last.c:(.text+0x2a354): undefined reference to `pm860x_reg_read'&lt;br /&gt;
:   sound/built-in.o: In function `pm860x_mic_jack_detect':&lt;br /&gt;
:   last.c:(.text+0x2a450): undefined reference to `pm860x_set_bits'&lt;br /&gt;
:   sound/built-in.o: In function `pm860x_hs_jack_detect':&lt;br /&gt;
:   last.c:(.text+0x2a4d0): undefined reference to `pm860x_set_bits'&lt;br /&gt;
:   last.c:(.text+0x2a4f8): undefined reference to `pm860x_set_bits'&lt;br /&gt;
:   last.c:(.text+0x2a510): undefined reference to `pm860x_set_bits'&lt;br /&gt;
:   make: *** [.tmp_vmlinux1] Error 1&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: pxa2xx-pcm: remove unused variable 'dai'&lt;br /&gt;
:   &lt;br /&gt;
:   Remove unused variable 'dai' to eliminate below warning.&lt;br /&gt;
:   &lt;br /&gt;
:   CC      sound/soc/pxa/pxa2xx-pcm.o&lt;br /&gt;
:   sound/soc/pxa/pxa2xx-pcm.c: In function 'pxa2xx_soc_pcm_new':&lt;br /&gt;
:   sound/soc/pxa/pxa2xx-pcm.c:91: warning: unused variable 'dai'&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: pxa-ssp: Correct check for stream presence&lt;br /&gt;
:   &lt;br /&gt;
:   Don't rely on the codec's channels_min information to decide wheter or&lt;br /&gt;
:   not allocate a substream's DMA buffer. Rather check if the substream&lt;br /&gt;
:   itself was allocated previously.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: add iPAQ hx4700 machine driver&lt;br /&gt;
:   &lt;br /&gt;
:   AK4641 connected via I2S and I2C, jack detection via GPIO.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: PXA: Fix oops in __pxa2xx_pcm_prepare&lt;br /&gt;
:   &lt;br /&gt;
:   pxa2xx_pcm_hw_free frees dma channel and sets prtd-&amp;amp;gt;dma_ch to -1,&lt;br /&gt;
:   but does not set prtd-&amp;amp;gt;params to NULL, so if pxa2xx_pcm_hw_params will&lt;br /&gt;
:   be called immediately, it leaves prtd-&amp;amp;gt;dma_ch initialized with -1,&lt;br /&gt;
:   and it results in oops in __pxa2xx_pcm_prepare. This bug is triggered&lt;br /&gt;
:   via SDL.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds check for prtd-&amp;amp;gt;dma_ch to __pxa2xx_pcm_prepare and&lt;br /&gt;
:   cleans prtd-&amp;amp;gt;params, so now it works properly.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Audio for Freecale i.MX1x i.MX2x CPUs===&lt;br /&gt;
: - ASoC: Fix DMA channel leak in imx-pcm-dma-mx2 driver.&lt;br /&gt;
:   &lt;br /&gt;
:   &amp;quot;snd_imx_pcm_hw_params&amp;quot; callback can be called&lt;br /&gt;
:   several times by the user (i.e. OSS emulation)&lt;br /&gt;
:   leading to a DMA channel leak.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: imx: Add .owner to struct snd_soc_card&lt;br /&gt;
:   &lt;br /&gt;
:   Add missing .owner of struct snd_soc_card. This prevents the module from being&lt;br /&gt;
:   removed from underneath its users.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Lothar Waßmann &amp;amp;lt;LW@KARO-electronics.de&amp;amp;gt;&lt;br /&gt;
: - ASoC: Add missed MODULE_LICENSE(&amp;quot;GPL&amp;quot;) for imx-pcm-fiq&lt;br /&gt;
:   &lt;br /&gt;
:   This driver can be built as module and the file header indicates that&lt;br /&gt;
:   the driver is published under the GPL.&lt;br /&gt;
:   Thus add MODULE_LICENSE(&amp;quot;GPL&amp;quot;) for it.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert imx directory to module_platform_driver&lt;br /&gt;
:   &lt;br /&gt;
:   Factor out some boilerplate code.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Make SND_SOC_MX27VIS_AIC32X4 depend on I2C&lt;br /&gt;
:   &lt;br /&gt;
:   SND_SOC_MX27VIS_AIC32X4 selects SND_SOC_TLV320AIC32X4,&lt;br /&gt;
:   but SND_SOC_TLV320AIC32X4 needs CONFIG_I2C.&lt;br /&gt;
:   So we need to make SND_SOC_MX27VIS_AIC32X4 depend on I2C.&lt;br /&gt;
:   otherwise I got below build error if CONFIG_I2C is not selected.&lt;br /&gt;
:   &lt;br /&gt;
:   CC      sound/soc/codecs/tlv320aic32x4.o&lt;br /&gt;
:   sound/soc/codecs/tlv320aic32x4.c: In function 'aic32x4_read':&lt;br /&gt;
:   sound/soc/codecs/tlv320aic32x4.c:323: error: implicit declaration of function 'i2c_smbus_read_byte_data'&lt;br /&gt;
:   sound/soc/codecs/tlv320aic32x4.c: In function 'aic32x4_probe':&lt;br /&gt;
:   sound/soc/codecs/tlv320aic32x4.c:641: error: 'i2c_master_send' undeclared (first use in this function)&lt;br /&gt;
:   sound/soc/codecs/tlv320aic32x4.c:641: error: (Each undeclared identifier is reported only once&lt;br /&gt;
:   sound/soc/codecs/tlv320aic32x4.c:641: error: for each function it appears in.)&lt;br /&gt;
:   sound/soc/codecs/tlv320aic32x4.c: In function 'aic32x4_modinit':&lt;br /&gt;
:   sound/soc/codecs/tlv320aic32x4.c:763: error: implicit declaration of function 'i2c_add_driver'&lt;br /&gt;
:   sound/soc/codecs/tlv320aic32x4.c: In function 'aic32x4_exit':&lt;br /&gt;
:   sound/soc/codecs/tlv320aic32x4.c:774: error: implicit declaration of function 'i2c_del_driver'&lt;br /&gt;
:   make[3]: *** [sound/soc/codecs/tlv320aic32x4.o] Error 1&lt;br /&gt;
:   make[2]: *** [sound/soc/codecs] Error 2&lt;br /&gt;
:   make[1]: *** [sound/soc] Error 2&lt;br /&gt;
:   make: *** [sound] Error 2&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: imx: Remove unused variable 'dai'&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: imx: Fix build warning of unused 'card' variable&lt;br /&gt;
:   &lt;br /&gt;
:   Fixes the following warning:&lt;br /&gt;
:   &lt;br /&gt;
:   CC      sound/soc/imx/imx-pcm-fiq.o&lt;br /&gt;
:   sound/soc/imx/imx-pcm-fiq.c: In function 'imx_pcm_fiq_new':&lt;br /&gt;
:   sound/soc/imx/imx-pcm-fiq.c:243: warning: unused variable 'card'&lt;br /&gt;
:   CC      sound/soc/imx/imx-pcm-dma-mx2.o&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove unused function declaration in imx-ssi.h&lt;br /&gt;
:   &lt;br /&gt;
:   These functions are removed in commit f0fba2ad&lt;br /&gt;
:   &amp;quot;ASoC: multi-component - ASoC Multi-Component Support&amp;quot;.&lt;br /&gt;
:   Let's remove the leftover function declaration in header file.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: imx: eukrea_tlv320 needs i2c&lt;br /&gt;
:   &lt;br /&gt;
:   Add a missing dependency that is required for random configurations.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: imx: use more robust checking of available streams&lt;br /&gt;
:   &lt;br /&gt;
:   Replace the channels_min check with a check for the relevant substream&lt;br /&gt;
:   being present. Suggested here [1] when mxs implemented the&lt;br /&gt;
:   audio-support.&lt;br /&gt;
:   &lt;br /&gt;
:   [1] http://www.spinics.net/lists/arm-kernel/msg133010.html&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: imx-ssi: use dma_writecombine consistently&lt;br /&gt;
:   &lt;br /&gt;
:   If the channel is allocated as writecombine, then mmaping it should also&lt;br /&gt;
:   use writecombine. Also, add a proper device for the call. Ported from a&lt;br /&gt;
:   similar fix for mach-mxs.&lt;br /&gt;
:   &lt;br /&gt;
: - ARM i.MX dma: Fix burstsize settings&lt;br /&gt;
:   &lt;br /&gt;
:   dmaengine expects the maxburst parameter in words, not bytes.&lt;br /&gt;
:   The imxdma driver and its users do this wrong. Fix this.&lt;br /&gt;
:   &lt;br /&gt;
:   As a side note the imx-pcm-dma-mx2 driver was 'fixed' to work&lt;br /&gt;
:   with imx-dma. This broke the driver with imx-sdma support which&lt;br /&gt;
:   correctly takes the maxburst parameter in words. This patch&lt;br /&gt;
:   puts the sdma based sound back to work.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: imx: add missing module informations&lt;br /&gt;
:   &lt;br /&gt;
:   - add some modules aliases&lt;br /&gt;
:   - add module license to avoid tainted kernel when loading the imx-pcm-audio&lt;br /&gt;
:   driver&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: imx: Remove unused Kconfig SND_MXC_SOC_SSI entry&lt;br /&gt;
:   &lt;br /&gt;
:   SND_MXC_SOC_SSI looks to be unused, so kill it.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: imx: remove superfluous code in imx-ssi.c&lt;br /&gt;
:   &lt;br /&gt;
:   Checking if IMX_SSI_DMA is set and then set it again is useless.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: imx: fix burstsize for DMA&lt;br /&gt;
:   &lt;br /&gt;
:   SSI counts in words, the DMA engine in bytes. (Wrong) factor got removed&lt;br /&gt;
:   in bf974a0 (ASoC i.MX: switch to new DMA api).&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: imx: set watermarks for mx2-dma&lt;br /&gt;
:   &lt;br /&gt;
:   They got accidently removed by f0fba2a (ASoC: multi-component - ASoC&lt;br /&gt;
:   Multi-Component Support). Reintroduce them and get rid of the&lt;br /&gt;
:   superfluous defines because the fiq-driver has its own hardcoded values.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add machine driver for Visstrim_M10 board.&lt;br /&gt;
:   &lt;br /&gt;
:   Visstrim_M10 boards have an external tlcv320aic3205 codec&lt;br /&gt;
:   attached to SSI1. This driver glues together both interfaces.&lt;br /&gt;
:   External amplifier is not supported in this first version.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix burstsize and DSP_B format problems in imx-ssi.&lt;br /&gt;
:   &lt;br /&gt;
:   When choosing IMX_DMA flag, burtsizes are set to its default&lt;br /&gt;
:   value (0) which leads to driver malfunction. Change them to 4.&lt;br /&gt;
:   &lt;br /&gt;
:   DSP_B interface needs additional flag to match DSP_B formats&lt;br /&gt;
:   as described in several codecs as wm8741 and aic3205.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: eukrea-tlv320: add MBIMXSD51 support&lt;br /&gt;
:   &lt;br /&gt;
: - eukrea-tlv320: fix platform_name&lt;br /&gt;
:   &lt;br /&gt;
:   commit f0fba2ad1b6b53d5360125c41953b7afcd6deff0 included a mistake&lt;br /&gt;
:   on the name of the platform in the snd_soc_dai_link structure.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Audio for TXx9===&lt;br /&gt;
: - ASoC: txx9: Add .owner to struct snd_soc_card&lt;br /&gt;
:   &lt;br /&gt;
:   Add missing .owner of struct snd_soc_card. This prevents the module from being&lt;br /&gt;
:   removed from underneath its users.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Lothar Waßmann &amp;amp;lt;LW@KARO-electronics.de&amp;amp;gt;&lt;br /&gt;
: - ASoC: Convert txx9 directory to module_platform_driver&lt;br /&gt;
:   &lt;br /&gt;
:   Factor out some boilerplate code.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: txx9: Add __exit_p at necessary place&lt;br /&gt;
:   &lt;br /&gt;
:   We have __exit annotation for txx9aclc_generic_remove(),&lt;br /&gt;
:   thus add __devexit_p to wrap it.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix txx9aclc.c build&lt;br /&gt;
:   &lt;br /&gt;
:   552d1ef6b5a98d7b95959d5b139071e3c90cebf1 [ASoC: core - Optimise and refactor&lt;br /&gt;
:   pcm_new() to pass only rtd] breaks compilation of txx9aclc.c:&lt;br /&gt;
:   &lt;br /&gt;
:   CC [M]  sound/soc/txx9/txx9aclc.o&lt;br /&gt;
:   /home/ralf/src/linux/linux-mips/sound/soc/txx9/txx9aclc.c: In function 'txx9aclc_pcm_new':&lt;br /&gt;
:   /home/ralf/src/linux/linux-mips/sound/soc/txx9/txx9aclc.c:318:3: error: 'card' undeclared (first use in this function)&lt;br /&gt;
:   /home/ralf/src/linux/linux-mips/sound/soc/txx9/txx9aclc.c:318:3: note: each undeclared identifier is reported only once for each function it appears in&lt;br /&gt;
:   make[5]: *** [sound/soc/txx9/txx9aclc.o] Error 1&lt;br /&gt;
:   &lt;br /&gt;
:   Fixed by providing a definition for card.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Audio for the Atmel AT32/AT91 System-on-Chip===&lt;br /&gt;
: - ASoC: Fix recursive dependency due to select ATMEL_SSC in SND_ATMEL_SOC_SSC&lt;br /&gt;
:   &lt;br /&gt;
:   commit 739be96 &amp;quot;ASoC: Fix build dependency for SND_ATMEL_SOC_SSC&amp;quot;&lt;br /&gt;
:   introduces below build warnings:&lt;br /&gt;
:   &lt;br /&gt;
:   drivers/misc/Kconfig:212:error: recursive dependency detected!&lt;br /&gt;
:   drivers/misc/Kconfig:212:       symbol ATMEL_SSC is selected by SND_ATMEL_SOC_SSC&lt;br /&gt;
:   sound/soc/atmel/Kconfig:9:      symbol SND_ATMEL_SOC_SSC is selected by SND_AT91_SOC_SAM9G20_WM8731&lt;br /&gt;
:   sound/soc/atmel/Kconfig:18:     symbol SND_AT91_SOC_SAM9G20_WM8731 depends on ATMEL_SSC&lt;br /&gt;
:   &lt;br /&gt;
:   SND_ATMEL_SOC_SSC needs ATMEL_SSC to pass compilation.&lt;br /&gt;
:   This patch remove the &amp;quot;select ATMEL_SSC&amp;quot; from SND_ATMEL_SOC_SSC to avoid above&lt;br /&gt;
:   warnings. And then ensures all the machine drivers that select SND_ATMEL_SOC_SSC&lt;br /&gt;
:   need to depend on ATMEL_SSC.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Stephen Rothwell &amp;amp;lt;sfr@canb.auug.org.au&amp;amp;gt;&lt;br /&gt;
: - ASoC: check for substream not channels_min in pcm engines&lt;br /&gt;
:   &lt;br /&gt;
:   This is a follow up on 53dea36c70c1857 which fixes the other affected&lt;br /&gt;
:   pcm engines.&lt;br /&gt;
:   &lt;br /&gt;
:   Description from 53dea36c70c1857:&lt;br /&gt;
:   Don't rely on the codec's channels_min information to decide wheter or&lt;br /&gt;
:   not allocate a substream's DMA buffer. Rather check if the substream&lt;br /&gt;
:   itself was allocated previously.&lt;br /&gt;
:   &lt;br /&gt;
:   Without this patch I was seeing null-pointer dereferenc in atmel-pcm.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix build dependency for SND_ATMEL_SOC_SSC&lt;br /&gt;
:   &lt;br /&gt;
:   Make SND_ATMEL_SOC_SSC select ATMEL_SSC to fix below build errors:&lt;br /&gt;
:   &lt;br /&gt;
:   LD      .tmp_vmlinux1&lt;br /&gt;
:   sound/built-in.o: In function `atmel_ssc_remove':&lt;br /&gt;
:   sound/soc/atmel/atmel_ssc_dai.c:713: undefined reference to `ssc_free'&lt;br /&gt;
:   sound/built-in.o: In function `atmel_ssc_probe':&lt;br /&gt;
:   sound/soc/atmel/atmel_ssc_dai.c:700: undefined reference to `ssc_request'&lt;br /&gt;
:   sound/built-in.o: In function `atmel_ssc_set_audio':&lt;br /&gt;
:   sound/soc/atmel/atmel_ssc_dai.c:845: undefined reference to `ssc_request'&lt;br /&gt;
:   sound/soc/atmel/atmel_ssc_dai.c:851: undefined reference to `ssc_free'&lt;br /&gt;
:   make: *** [.tmp_vmlinux1] Error 1&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: atmel: Add .owner to struct snd_soc_card&lt;br /&gt;
:   &lt;br /&gt;
:   Missed .owner of struct snd_soc_card will prevent the module from being&lt;br /&gt;
:   removed from underneath its users.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Lothar Waßmann &amp;amp;lt;LW@KARO-electronics.de&amp;amp;gt;&lt;br /&gt;
: - ASoC: Convert atmel directory to module_platform_driver&lt;br /&gt;
:   &lt;br /&gt;
:   Factor out some boilerplate code.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Constify snd_soc_dai_ops structs&lt;br /&gt;
:   &lt;br /&gt;
:   Commit 1ee46ebd(&amp;quot;ASoC: Make the DAI ops constant in the DAI structure&amp;quot;)&lt;br /&gt;
:   introduced the possibility to have constant DAI ops structures, yet this is&lt;br /&gt;
:   barley used in both existing drivers and also new drivers being submitted,&lt;br /&gt;
:   although none of them modifies its DAI ops structure. The later is not&lt;br /&gt;
:   surprising since existing drivers are often used as templates for new drivers.&lt;br /&gt;
:   So this patch just constifies all existing snd_soc_dai_ops structs to eliminate&lt;br /&gt;
:   the issue altogether.&lt;br /&gt;
:   &lt;br /&gt;
:   The patch was generated with the following coccinelle semantic patch:&lt;br /&gt;
:   // &amp;amp;lt;smpl&amp;amp;gt;&lt;br /&gt;
:   @@&lt;br /&gt;
:   identifier ops;&lt;br /&gt;
:   @@&lt;br /&gt;
:   -struct snd_soc_dai_ops ops =&lt;br /&gt;
:   +const struct snd_soc_dai_ops ops =&lt;br /&gt;
:   { ... };&lt;br /&gt;
:   // &amp;amp;lt;/smpl&amp;amp;gt;&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: drop support for PlayPaq with WM8510&lt;br /&gt;
:   &lt;br /&gt;
:   SoC Audio support for PlayPaq with WM8510 got added in commit 9aaca9683b&lt;br /&gt;
:   (&amp;quot;[ALSA] Revised AT32 ASoC Patch&amp;quot;). That support depends on&lt;br /&gt;
:   BOARD_PLAYPAQ. That Kconfig symbol didn't exist when that support got&lt;br /&gt;
:   added in v2.6.27. It still doesn't. It has never been possible to even&lt;br /&gt;
:   build this driver. Drop it.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove redundant snd_soc_dapm_sync() calls from machine drivers&lt;br /&gt;
:   &lt;br /&gt;
:   The core will sync DAPM as part of the card initialization, there is no&lt;br /&gt;
:   need for machine drivers to do so during their setup.&lt;br /&gt;
:   &lt;br /&gt;
:   OMAP drivers are omitted as I know Peter already has patches for them.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: playpaq_wm8510: Return proper error if clk_get fails&lt;br /&gt;
:   &lt;br /&gt;
:   Return proper error instead of 0 if clk_get fails.&lt;br /&gt;
:   &lt;br /&gt;
: - sound: sound/atmel_ssc_dai: add a missing space to an error message&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: core - Optimise and refactor pcm_new() to pass only rtd&lt;br /&gt;
:   &lt;br /&gt;
:   Currently pcm_new() passes in 3 arguments :- card, pcm and DAI.&lt;br /&gt;
:   &lt;br /&gt;
:   Refactor this to only pass in 1 argument (i.e. the rtd) since struct rtd contains&lt;br /&gt;
:   card, pcm and DAI along with other members too that are useful too.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add context parameter to card DAPM callbacks&lt;br /&gt;
:   &lt;br /&gt;
:   The card callback will get called for each DAPM context in the card so it&lt;br /&gt;
:   can be useful for it to know which device is currently undergoing a&lt;br /&gt;
:   transition.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: atmel_ssc: Don't try to free ssc if request failed&lt;br /&gt;
:   &lt;br /&gt;
:   We should only call ssc_free() when ssc_request() succeeds or bad&lt;br /&gt;
:   things will happen.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: atmel_ssc_dai: fix ssc error path&lt;br /&gt;
:   &lt;br /&gt;
:   We do not have to free a resource that is not allocated yet.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: trivial: typo in atmel_pcm_dma_params strucutre comment&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: trivial: typo in debug comment&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sam9g20_wm8731: use the proper SYSCKL value&lt;br /&gt;
:   &lt;br /&gt;
:   at91sam9g20 is providing master clock to wm8731: not using a crystal but an&lt;br /&gt;
:   external MCLK. We can avoid conflict and save power using WM8731_SYSCLK_MCLK as&lt;br /&gt;
:   we do not need oscillator to be powered.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove -codec from WM8731 driver name&lt;br /&gt;
:   &lt;br /&gt;
===SoC Audio for the Samsung chips===&lt;br /&gt;
: - ASoC: Fix idma build after update for channel count check&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add trivial pm_runtime usage to Samsung DAI drivers&lt;br /&gt;
:   &lt;br /&gt;
:   Currently this won't actually do anything but using this will help the&lt;br /&gt;
:   core SoC code track when the system is idle.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: samsung: Add .owner to struct snd_soc_card&lt;br /&gt;
:   &lt;br /&gt;
:   Missed .owner of struct snd_soc_card will prevent the module from being&lt;br /&gt;
:   removed from underneath its users.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Lothar Waßmann &amp;amp;lt;LW@KARO-electronics.de&amp;amp;gt;&lt;br /&gt;
: - ASoC: Remove export of s3c_pcm_dai&lt;br /&gt;
:   &lt;br /&gt;
:   We don't need to export s3c_pcm_dai after multi-component patch.&lt;br /&gt;
:   Thus remove export of s3c_pcm_dai and make it static.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Complete initialisation before registering Samsung PCM DAI&lt;br /&gt;
:   &lt;br /&gt;
:   Otherwise there's a race where the DAI might get used without everything&lt;br /&gt;
:   having been set up.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Staticise asoc_idma_platform&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Raise Speyside audio system clock rate to 512fs&lt;br /&gt;
:   &lt;br /&gt;
:   To support advanced system functionality for additional components; the&lt;br /&gt;
:   actively used clocks will remain the same for current components. Also&lt;br /&gt;
:   factor the rate out to a single #define while we're at it.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix a typo in s3c24xx_simtec_tlv320aic23 driver&lt;br /&gt;
:   &lt;br /&gt;
:   Fix a typo introduced by commit e00c3f55&lt;br /&gt;
:   &amp;quot;ASoC: Convert Samsung directory to module_platform_driver&amp;quot;.&lt;br /&gt;
:   &lt;br /&gt;
:   This fixes the build error:&lt;br /&gt;
:   CC      sound/soc/samsung/s3c24xx_simtec_tlv320aic23.o&lt;br /&gt;
:   sound/soc/samsung/s3c24xx_simtec_tlv320aic23.c: In function 'simtec_audio_tlv320aic32_driver_init':&lt;br /&gt;
:   sound/soc/samsung/s3c24xx_simtec_tlv320aic23.c:105: error: 'simtec_audio_tlv320aic32_driver' undeclared (first use in this function)&lt;br /&gt;
:   sound/soc/samsung/s3c24xx_simtec_tlv320aic23.c:105: error: (Each undeclared identifier is reported only once&lt;br /&gt;
:   sound/soc/samsung/s3c24xx_simtec_tlv320aic23.c:105: error: for each function it appears in.)&lt;br /&gt;
:   sound/soc/samsung/s3c24xx_simtec_tlv320aic23.c: In function 'simtec_audio_tlv320aic32_driver_exit':&lt;br /&gt;
:   sound/soc/samsung/s3c24xx_simtec_tlv320aic23.c:105: error: 'simtec_audio_tlv320aic32_driver' undeclared (first use in this function)&lt;br /&gt;
:   make[3]: *** [sound/soc/samsung/s3c24xx_simtec_tlv320aic23.o] Error 1&lt;br /&gt;
:   make[2]: *** [sound/soc/samsung] Error 2&lt;br /&gt;
:   make[1]: *** [sound/soc] Error 2&lt;br /&gt;
:   make: *** [sound] Error 2&lt;br /&gt;
:   &lt;br /&gt;
:   I think we had better naming it with *driver, thus I change&lt;br /&gt;
:   it to simtec_audio_tlv320aic23_driver.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert Samsung I2S driver to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Make SND_SOC_LITTLEMILL select MFD_WM8994&lt;br /&gt;
:   &lt;br /&gt;
:   SND_SOC_LITTLEMILL selects SND_SOC_WM8994, but SND_SOC_WM8994 needs MFD_WM8994.&lt;br /&gt;
:   Thus we need to select MFD_WM8994 to fix below build error:&lt;br /&gt;
:   &lt;br /&gt;
:   LD      .tmp_vmlinux1&lt;br /&gt;
:   sound/built-in.o: In function `wm8994_write':&lt;br /&gt;
:   sound/soc/codecs/wm8994.c:201: undefined reference to `wm8994_reg_write'&lt;br /&gt;
:   sound/built-in.o: In function `wm8994_read':&lt;br /&gt;
:   sound/soc/codecs/wm8994.c:222: undefined reference to `wm8994_reg_read'&lt;br /&gt;
:   sound/built-in.o: In function `wm8994_resume':&lt;br /&gt;
:   sound/soc/codecs/wm8994.c:2847: undefined reference to `wm8994_reg_read'&lt;br /&gt;
:   sound/built-in.o: In function `wm8994_codec_probe':&lt;br /&gt;
:   sound/soc/codecs/wm8994.c:3501: undefined reference to `wm8994_reg_read'&lt;br /&gt;
:   sound/soc/codecs/wm8994.c:3660: undefined reference to `wm8994_reg_read'&lt;br /&gt;
:   sound/soc/codecs/wm8994.c:3672: undefined reference to `wm8994_reg_read'&lt;br /&gt;
:   sound/built-in.o: In function `wm8958_dsp2_fw':&lt;br /&gt;
:   sound/soc/codecs/wm8958-dsp2.c:154: undefined reference to `wm8994_bulk_write'&lt;br /&gt;
:   make: *** [.tmp_vmlinux1] Error 1&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Map microphones on Littlemill&lt;br /&gt;
:   &lt;br /&gt;
:   Littlemill has one analogue microphone on the board (connected to IN1LN)&lt;br /&gt;
:   and an array of four DMICs connected to both DMICDAT lines. The biases&lt;br /&gt;
:   can be selected by jumpers but pick the default jumper fit.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add WM8958 based headset detection on Littlemill&lt;br /&gt;
:   &lt;br /&gt;
:   The board supports CODECs that won't work with this but the CODEC driver&lt;br /&gt;
:   will check to see if it's running on the right chip for us.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Rename Speyside WM8962 to Tobermory&lt;br /&gt;
:   &lt;br /&gt;
:   All the other machine drivers for non-default configurations are named&lt;br /&gt;
:   after the relevant audio module so do so for Tobermory also.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix __iomem annotation for IDMA registers&lt;br /&gt;
:   &lt;br /&gt;
:   We always store the register address as __iomem but pass it around as a&lt;br /&gt;
:   plain void * which upsets sparse.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert smdk_wm8994pcm to use module_platform_driver()&lt;br /&gt;
:   &lt;br /&gt;
:   Use the module_platform_driver() macro which makes&lt;br /&gt;
:   the code smaller and a bit simpler.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add basic 1277-EV1 Littlemill audio driver&lt;br /&gt;
:   &lt;br /&gt;
:   The Littlemill audio card supports a number of pluggable miniboards,&lt;br /&gt;
:   normally for the WM8994 family of devices. As all these devices look&lt;br /&gt;
:   mostly the same from an external configuration point of view and are&lt;br /&gt;
:   runtime enumerable we can write a standard machine driver which will&lt;br /&gt;
:   work out of the box with any of them. Start doing that with the bare&lt;br /&gt;
:   bones of a driver, only supporting AIF1.&lt;br /&gt;
:   &lt;br /&gt;
:   Future patches will flesh this out to be more fully featured.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert Samsung directory to module_platform_driver&lt;br /&gt;
:   &lt;br /&gt;
:   Saves some boilerplate code.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add fully_routed flag to Speyside machines&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add Lowland machine driver&lt;br /&gt;
:   &lt;br /&gt;
:   The Lowland platform is based on the Cragganmore system like Speyside but&lt;br /&gt;
:   uses the WM5100 audio CODEC.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Include linux/module.h for smdk2443_wm9710&lt;br /&gt;
:   &lt;br /&gt;
:   Include linux/module.h to fix below build error:&lt;br /&gt;
:   CC      sound/soc/samsung/smdk2443_wm9710.o&lt;br /&gt;
:   sound/soc/samsung/smdk2443_wm9710.c:64: error: expected declaration specifiers or '...' before string constant&lt;br /&gt;
:   sound/soc/samsung/smdk2443_wm9710.c:64: warning: data definition has no type or storage class&lt;br /&gt;
:   sound/soc/samsung/smdk2443_wm9710.c:64: warning: type defaults to 'int' in declaration of 'MODULE_AUTHOR'&lt;br /&gt;
:   sound/soc/samsung/smdk2443_wm9710.c:64: warning: function declaration isn't a prototype&lt;br /&gt;
:   sound/soc/samsung/smdk2443_wm9710.c:65: error: expected declaration specifiers or '...' before string constant&lt;br /&gt;
:   sound/soc/samsung/smdk2443_wm9710.c:65: warning: data definition has no type or storage class&lt;br /&gt;
:   sound/soc/samsung/smdk2443_wm9710.c:65: warning: type defaults to 'int' in declaration of 'MODULE_DESCRIPTION'&lt;br /&gt;
:   sound/soc/samsung/smdk2443_wm9710.c:65: warning: function declaration isn't a prototype&lt;br /&gt;
:   sound/soc/samsung/smdk2443_wm9710.c:66: error: expected declaration specifiers or '...' before string constant&lt;br /&gt;
:   sound/soc/samsung/smdk2443_wm9710.c:66: warning: data definition has no type or storage class&lt;br /&gt;
:   sound/soc/samsung/smdk2443_wm9710.c:66: warning: type defaults to 'int' in declaration of 'MODULE_LICENSE'&lt;br /&gt;
:   sound/soc/samsung/smdk2443_wm9710.c:66: warning: function declaration isn't a prototype&lt;br /&gt;
:   make[3]: *** [sound/soc/samsung/smdk2443_wm9710.o] Error 1&lt;br /&gt;
:   make[2]: *** [sound/soc/samsung] Error 2&lt;br /&gt;
:   make[1]: *** [sound/soc] Error 2&lt;br /&gt;
:   make: *** [sound] Error 2&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix a typo in jive_wm8750&lt;br /&gt;
:   &lt;br /&gt;
:   Fix a typo in jive_wm8750 that introduces below build error.&lt;br /&gt;
:   Also removes an unused err variable.&lt;br /&gt;
:   &lt;br /&gt;
:   CC      sound/soc/samsung/jive_wm8750.o&lt;br /&gt;
:   sound/soc/samsung/jive_wm8750.c: In function 'jive_wm8750_init':&lt;br /&gt;
:   sound/soc/samsung/jive_wm8750.c:104: warning: unused variable 'err'&lt;br /&gt;
:   sound/soc/samsung/jive_wm8750.c: At top level:&lt;br /&gt;
:   sound/soc/samsung/jive_wm8750.c:134: error: unknown field 'dapm_widgtets' specified in initializer&lt;br /&gt;
:   sound/soc/samsung/jive_wm8750.c:134: warning: initialization from incompatible pointer type&lt;br /&gt;
:   make[3]: *** [sound/soc/samsung/jive_wm8750.o] Error 1&lt;br /&gt;
:   make[2]: *** [sound/soc/samsung] Error 2&lt;br /&gt;
:   make[1]: *** [sound/soc] Error 2&lt;br /&gt;
:   make: *** [sound] Error 2&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Correct name of Speyside Main Speaker widget&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SAMSUNG: Fix build error&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds &amp;amp;lt;linux/modules.h&amp;amp;gt; to fix following build errors.&lt;br /&gt;
:   &lt;br /&gt;
:   sound/soc/codecs/wm8994.c: In function 'wm8994_readable':&lt;br /&gt;
:   sound/soc/codecs/wm8994.c:58: warning: unused variable 'wm8994'&lt;br /&gt;
:   sound/soc/samsung/smdk_wm8994.c:176: error: expected declaration specifiers or '...' before string constant&lt;br /&gt;
:   sound/soc/samsung/smdk_wm8994.c:176: warning: data definition has no type or storage class&lt;br /&gt;
:   sound/soc/samsung/smdk_wm8994.c:176: warning: type defaults to 'int' in declaration of 'MODULE_DESCRIPTION'&lt;br /&gt;
:   sound/soc/samsung/smdk_wm8994.c:176: warning: function declaration isn't a prototype&lt;br /&gt;
:   sound/soc/samsung/smdk_wm8994.c:177: error: expected declaration specifiers or '...' before string constant&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Flush Samsung DMA on free&lt;br /&gt;
:   &lt;br /&gt;
:   Ever since it was written the Samsung DMA driver has had a TODO in the&lt;br /&gt;
:   hw_free() function wondering if we need to flush the DMA buffers. Up until&lt;br /&gt;
:   now the answer has been no but with the recent improvements Boojin has&lt;br /&gt;
:   done to the DMA infrastructure for the Samsung port the answer has changed&lt;br /&gt;
:   to yes for at least S3C6410 systems.&lt;br /&gt;
:   &lt;br /&gt;
:   If we don't then when we next prepare() the channel the API will get&lt;br /&gt;
:   confused trying to run callbacks on the transfers hanging around from the&lt;br /&gt;
:   previous time the stream was open and oops.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Samsung: Update DMA interface&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds to support the DMA PL330 driver that uses&lt;br /&gt;
:   DMA generic API. Samsung sound driver uses DMA generic API&lt;br /&gt;
:   if architecture supports it. Otherwise, use samsung specific&lt;br /&gt;
:   S3C-PL330 API driver to transfer PCM data.&lt;br /&gt;
:   &lt;br /&gt;
:   [kgene.kim@samsung.com: removed useless variable]&lt;br /&gt;
: - ASoC: Convert Goni to data based DAPM init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert Jive to table based init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert SMDK WM8580 to table based DAPM init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert SmartQ to table based init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert RX1950 to table based init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert H1940 to table based init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert Simtec machines to table based DAPM init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: samsung: s3c-i2s-v2.c needs module.h&lt;br /&gt;
:   &lt;br /&gt;
:   Include &amp;amp;lt;linux/module.h&amp;amp;gt; to fix below build error:&lt;br /&gt;
:   &lt;br /&gt;
:   CC      sound/soc/samsung/s3c-i2s-v2.o&lt;br /&gt;
:   sound/soc/samsung/s3c-i2s-v2.c:573: warning: data definition has no type or storage class&lt;br /&gt;
:   sound/soc/samsung/s3c-i2s-v2.c:573: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'&lt;br /&gt;
:   sound/soc/samsung/s3c-i2s-v2.c:573: warning: parameter names (without types) in function declaration&lt;br /&gt;
:   sound/soc/samsung/s3c-i2s-v2.c:638: warning: data definition has no type or storage class&lt;br /&gt;
:   sound/soc/samsung/s3c-i2s-v2.c:638: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'&lt;br /&gt;
:   sound/soc/samsung/s3c-i2s-v2.c:638: warning: parameter names (without types) in function declaration&lt;br /&gt;
:   sound/soc/samsung/s3c-i2s-v2.c:677: warning: data definition has no type or storage class&lt;br /&gt;
:   sound/soc/samsung/s3c-i2s-v2.c:677: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'&lt;br /&gt;
:   sound/soc/samsung/s3c-i2s-v2.c:677: warning: parameter names (without types) in function declaration&lt;br /&gt;
:   sound/soc/samsung/s3c-i2s-v2.c: In function 's3c_i2sv2_register_dai':&lt;br /&gt;
:   sound/soc/samsung/s3c-i2s-v2.c:736: warning: initialization discards qualifiers from pointer target type&lt;br /&gt;
:   sound/soc/samsung/s3c-i2s-v2.c: At top level:&lt;br /&gt;
:   sound/soc/samsung/s3c-i2s-v2.c:754: warning: data definition has no type or storage class&lt;br /&gt;
:   sound/soc/samsung/s3c-i2s-v2.c:754: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'&lt;br /&gt;
:   sound/soc/samsung/s3c-i2s-v2.c:754: warning: parameter names (without types) in function declaration&lt;br /&gt;
:   sound/soc/samsung/s3c-i2s-v2.c:756: error: expected declaration specifiers or '...' before string constant&lt;br /&gt;
:   sound/soc/samsung/s3c-i2s-v2.c:756: warning: data definition has no type or storage class&lt;br /&gt;
:   sound/soc/samsung/s3c-i2s-v2.c:756: warning: type defaults to 'int' in declaration of 'MODULE_LICENSE'&lt;br /&gt;
:   sound/soc/samsung/s3c-i2s-v2.c:756: warning: function declaration isn't a prototype&lt;br /&gt;
:   make[3]: *** [sound/soc/samsung/s3c-i2s-v2.o] Error 1&lt;br /&gt;
:   make[2]: *** [sound/soc/samsung] Error 2&lt;br /&gt;
:   make[1]: *** [sound/soc] Error 2&lt;br /&gt;
:   make: *** [sound] Error 2&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: samsung: WM8994 depends on MFD_WM8994&lt;br /&gt;
:   &lt;br /&gt;
:   Any driver that selects SND_SOC_WM8994 should also make sure that&lt;br /&gt;
:   MFD_WM8994 is set, since the codec relies on the mfd code:&lt;br /&gt;
:   &lt;br /&gt;
:   sound/built-in.o: In function `wm8994_read':&lt;br /&gt;
:   last.c:(.text+0x20160): undefined reference to `wm8994_reg_read'&lt;br /&gt;
:   sound/built-in.o: In function `wm8994_write':&lt;br /&gt;
:   last.c:(.text+0x20e68): undefined reference to `wm8994_reg_write'&lt;br /&gt;
:   &lt;br /&gt;
:   This solves the problem by selecting the MFD driver directly&lt;br /&gt;
:   and adding extra 'depends on' statements to make sure that we&lt;br /&gt;
:   respect the dependencies of that driver.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Staticise simtec_audio_resume()&lt;br /&gt;
:   &lt;br /&gt;
:   It is exported via resume callback of struct dev_pm_ops rather than referenced&lt;br /&gt;
:   directly and so should be staticised.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Staticise samsung_spdif_dai&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: samsung: Add __devexit_p at necessary places&lt;br /&gt;
:   &lt;br /&gt;
:   According to the comments in include/linux/init.h:&lt;br /&gt;
:   &lt;br /&gt;
:   &amp;quot;Pointers to __devexit functions must use __devexit_p(function_name), the&lt;br /&gt;
:   wrapper will insert either the function_name or NULL, depending on the confi&lt;br /&gt;
:   options.&amp;quot;&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Use dai_fmt in speyside_wm8962&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add DMIC control to Speyside WM8962 board&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add support for on-board analogue microphones on Speyside WM8962&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert WM8962 MICBIAS to a supply widget&lt;br /&gt;
:   &lt;br /&gt;
:   A supply widget is generally clearer than a MICBIAS widget and a mic bias&lt;br /&gt;
:   is just a type of supply so use a supply widget for the MICBIAS. This also&lt;br /&gt;
:   avoids confusion with the routing when connected to multiple inputs.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Support a wider range of sample rates on Speyside WM8962&lt;br /&gt;
:   &lt;br /&gt;
:   As we've only got one audio interface and it is symmetric we can just set&lt;br /&gt;
:   SYSCLK based on the sample rate requested by the application layer. Provide&lt;br /&gt;
:   a default so bypass paths work before audio playback.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add line loads to the list of supported detections for Speyside&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: samsung: Fix checking return value of clk_get&lt;br /&gt;
:   &lt;br /&gt;
:   clk_get() returns a pointer to the struct clk or an ERR_PTR().&lt;br /&gt;
:   This patch also use PTR_ERR() for return value.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SAMSUNG: Add Kconfig to support SMDK4212&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds Kconfig to support SMDK4212.&lt;br /&gt;
:   SMDK4212 is based on samsung exynos4212 SoC.&lt;br /&gt;
:   And WM8994 is used for audio codec.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add Springbank I/O card to Speyside Kconfig&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Ensure we only run Speyside WM8962 bias level callbacks once&lt;br /&gt;
:   &lt;br /&gt;
:   We get called once per DAPM context but only need to run once. When DAPM&lt;br /&gt;
:   was serialized this was a series of noops but now it can run in parallel&lt;br /&gt;
:   we need to take proper care.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Run Speyside WM8962 at 512fs&lt;br /&gt;
:   &lt;br /&gt;
:   Ensure we have access to all the advanced DSP functinality offered by the&lt;br /&gt;
:   WM8962 by running the system clock at 512fs.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: rx1950: Fix compilation error due to missing header&lt;br /&gt;
:   &lt;br /&gt;
:   Add linux/types.h to fix this compilation error:&lt;br /&gt;
:   &lt;br /&gt;
:   In file included from arch/arm/mach-s3c2410/include/mach/gpio-fns.h:27:0,&lt;br /&gt;
:   from arch/arm/mach-s3c2410/include/mach/gpio.h:27,&lt;br /&gt;
:   from /home/anarsoul/work/pda-linux/linux-next/arch/arm/include/asm/gpio.h:5,&lt;br /&gt;
:   from include/linux/gpio.h:18,&lt;br /&gt;
:   from sound/soc/samsung/rx1950_uda1380.c:20:&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:29:34: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘s3c_gpio_pull_t’&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:30:34: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘s5p_gpio_drvstr_t’&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:57:2: error: expected specifier-qualifier-list before ‘s3c_gpio_pull_t’&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:148:47: error: expected declaration specifiers or ‘...’ before ‘s3c_gpio_pull_t’&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:156:24: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘s3c_gpio_getpull’&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:175:24: error: expected declaration specifiers or ‘...’ before ‘s3c_gpio_pull_t’&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h: In function ‘s3c_gpio_cfgrange_nopull’:&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:180:47: error: ‘s3c_gpio_pull_t’ undeclared (first use in this function)&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:180:47: note: each undeclared identifier is reported only once for each function it appears in&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:180:47: error: expected ‘)’ before numeric constant&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:180:47: error: too many arguments to function ‘s3c_gpio_cfgall_range’&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:174:12: note: declared here&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h: At top level:&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:199:26: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘s5p_gpio_get_drvstr’&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:210:50: error: expected declaration specifiers or ‘...’ before ‘s5p_gpio_drvstr_t’&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: h1940: Fix compilation error due to missing header&lt;br /&gt;
:   &lt;br /&gt;
:   Add linux/types.h to fix this compilation error:&lt;br /&gt;
:   &lt;br /&gt;
:   In file included from arch/arm/mach-s3c2410/include/mach/gpio-fns.h:27:0,&lt;br /&gt;
:   from arch/arm/mach-s3c2410/include/mach/gpio.h:27,&lt;br /&gt;
:   from /home/anarsoul/work/pda-linux/linux-next/arch/arm/include/asm/gpio.h:5,&lt;br /&gt;
:   from include/linux/gpio.h:18,&lt;br /&gt;
:   from sound/soc/samsung/rx1950_uda1380.c:20:&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:29:34: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘s3c_gpio_pull_t’&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:30:34: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘s5p_gpio_drvstr_t’&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:57:2: error: expected specifier-qualifier-list before ‘s3c_gpio_pull_t’&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:148:47: error: expected declaration specifiers or ‘...’ before ‘s3c_gpio_pull_t’&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:156:24: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘s3c_gpio_getpull’&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:175:24: error: expected declaration specifiers or ‘...’ before ‘s3c_gpio_pull_t’&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h: In function ‘s3c_gpio_cfgrange_nopull’:&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:180:47: error: ‘s3c_gpio_pull_t’ undeclared (first use in this function)&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:180:47: note: each undeclared identifier is reported only once for each function it appears in&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:180:47: error: expected ‘)’ before numeric constant&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:180:47: error: too many arguments to function ‘s3c_gpio_cfgall_range’&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:174:12: note: declared here&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h: At top level:&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:199:26: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘s5p_gpio_get_drvstr’&lt;br /&gt;
:   arch/arm/plat-samsung/include/plat/gpio-cfg.h:210:50: error: expected declaration specifiers or ‘...’ before ‘s5p_gpio_drvstr_t’&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Allow userspace control of Speyside headphone output&lt;br /&gt;
:   &lt;br /&gt;
:   In order to facilitate the widest range of use cases (especially things&lt;br /&gt;
:   like speakerphone) allow the headphone output to be enabled and disabled&lt;br /&gt;
:   by the application layer.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Update SMDKs for WM8580 -codec removal&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SAMSUNG: Add I2S0 internal dma driver&lt;br /&gt;
:   &lt;br /&gt;
:   I2S in Exynos4 and S5PC110(S5PV210) has a internal dma.&lt;br /&gt;
:   It can be used low power audio mode and 2nd channel transfer.&lt;br /&gt;
:   This patch can support idma.&lt;br /&gt;
:   &lt;br /&gt;
:   [Reapplied after dependencies propagated through in 3.1-rc1. --broonie]&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix warning in Speyside WM8962&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix binding of WM8750 on Jive&lt;br /&gt;
:   &lt;br /&gt;
:   The I2C address is misformatted and would never match.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Revert &amp;quot;ASoC: SAMSUNG: Add I2S0 internal dma driver&amp;quot;&lt;br /&gt;
:   &lt;br /&gt;
:   This reverts commit d7c3e9525ac8e898f1156a1f3a7c5038f6560186 as it does&lt;br /&gt;
:   not currently build due to missing dependencies in the Samsung tree.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SAMSUNG: Add I2S0 internal dma driver&lt;br /&gt;
:   &lt;br /&gt;
:   I2S in Exynos4 and S5PC110(S5PV210) has a internal dma.&lt;br /&gt;
:   It can be used low power audio mode and 2nd channel transfer.&lt;br /&gt;
:   This patch can support idma.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SAMSUNG: Modify I2S driver to support idma&lt;br /&gt;
:   &lt;br /&gt;
:   Previously, I2S driver only can support system dma.&lt;br /&gt;
:   In this patch, i2s driver can support internal dma too.&lt;br /&gt;
:   IDMA h/w configuration is initialized on idma.c&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Improve error reporting in Speyside WM8962 driver&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SAMSUNG: Add idma related register definition&lt;br /&gt;
:   &lt;br /&gt;
:   This patch add idma related register definitions to support idma.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SAMSUNG: 24-bit audio playback on Exynos4210&lt;br /&gt;
:   &lt;br /&gt;
:   Using 256fs or 512fs will result in distortion of 24-bit&lt;br /&gt;
:   audio samples. This is because the lrclk generated is not&lt;br /&gt;
:   proper. Using 384 fs generates proper output.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SAMSUNG: Move I2S common register definition&lt;br /&gt;
:   &lt;br /&gt;
:   I2S registers can be used for control idma.&lt;br /&gt;
:   Previously, register is defined in i2s.c.&lt;br /&gt;
:   For sharing the registers, It is moved to i2s-regs.h&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SAMSUNG: Add WM8994 PCM Machine driver&lt;br /&gt;
:   &lt;br /&gt;
:   This patch add WM8994 PCM machine driver to support PCM audio&lt;br /&gt;
:   on SMDKV310, SMDKC210 boards.&lt;br /&gt;
:   Playback and Capture supports 8kHz sampling rates.&lt;br /&gt;
:   and It is tested on SMDKV310, SMDKC210.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SMDKV310: Enable SPDIF device&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix mismerge of Speyside set_bias_level_post()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Support Speyside build variants with WM8962 fitted&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Manage Speyside system clocking only in bias management&lt;br /&gt;
:   &lt;br /&gt;
:   Now that the CODEC driver supports it defer configuration of the system&lt;br /&gt;
:   clock until bias management which is a much more idiomatic place to do&lt;br /&gt;
:   system power control and makes things a lot more happy when we're using&lt;br /&gt;
:   both interfaces.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Update speyside audio driver for hardware revision 2&lt;br /&gt;
:   &lt;br /&gt;
:   Revision 2 of the Speyside platform supplies a 32kHz clock on MCLK2 rather&lt;br /&gt;
:   than MCLK1.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SAMSUNG: Fix the incorrect referencing of I2SCON register&lt;br /&gt;
:   &lt;br /&gt;
:   If DMA active status should be checked, I2SCON register should be referenced.&lt;br /&gt;
:   In this patch, Fix the incorrect referencing of I2SCON register.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by : Lakkyung Jung &amp;amp;lt;lakkyung.jung@samsung.com&amp;amp;gt;&lt;br /&gt;
: - ASoC: Don't specify the DMA driver for Speyside baseband link&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Mark Speyside widgets as ignoring suspend&lt;br /&gt;
:   &lt;br /&gt;
:   Allow audio paths through the Speyside system to be kept active while the&lt;br /&gt;
:   system is suspended (for example, when on a voice call) by marking all the&lt;br /&gt;
:   external widgets and the DAI link to the WM1250-EV1 baseband module as&lt;br /&gt;
:   ignoring suspend.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add stub baseband link on Speyside&lt;br /&gt;
:   &lt;br /&gt;
:   Demonstrate the connection of a baseband to the system. We add a DAI for&lt;br /&gt;
:   the link to the baseband. This will become visible to the application&lt;br /&gt;
:   layer - audio should be started from the application layer using an&lt;br /&gt;
:   application such as this:&lt;br /&gt;
:   &lt;br /&gt;
:   http://opensource.wolfsonmicro.com/~gg/bluetooth-pcm/bluetooth_pcm.c&lt;br /&gt;
:   &lt;br /&gt;
:   which starts up audio as for CPU based playback and record up to the point&lt;br /&gt;
:   where data is streamed.&lt;br /&gt;
:   &lt;br /&gt;
:   Due to non-availability of baseband simulation hardware we reuse the&lt;br /&gt;
:   configuration for the CPU link with the CODEC acting as clock master,&lt;br /&gt;
:   allowing signals to be observed with a scope. A more standard system&lt;br /&gt;
:   would have separate configuration for the baseband with its own ops&lt;br /&gt;
:   structure and operations. Normally the baseband would be clock master&lt;br /&gt;
:   as the baseband audio will be synchronised to the external telephony&lt;br /&gt;
:   network.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add pin switches for fixed analogue inputs and outputs on Speyside&lt;br /&gt;
:   &lt;br /&gt;
:   Pin switches enable direct control of the DAPM state from userspace,&lt;br /&gt;
:   enabling simple enabling and disabling of the path. This is especially&lt;br /&gt;
:   useful for outputs such as the speaker which are composed of several&lt;br /&gt;
:   physical devices as it allows them to be controlled as a group.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add Speyside headset jack detection support&lt;br /&gt;
:   &lt;br /&gt;
:   Speyside makes use of support the WM8915 has for detecting the polarity&lt;br /&gt;
:   of the microphone and ground connections on headsets, using a GPIO to&lt;br /&gt;
:   control the polarity of the ground connection and switching between the&lt;br /&gt;
:   two microphone bias supplies available on the device in order to do so.&lt;br /&gt;
:   As a result of this the detection support is more involved than for most&lt;br /&gt;
:   other CODECs, using a callback to configure the current polarity of the&lt;br /&gt;
:   jack and translate this into the board-specific connections required for&lt;br /&gt;
:   the current scenario.&lt;br /&gt;
:   &lt;br /&gt;
:   On Android some additional work is required to hook this up to the&lt;br /&gt;
:   application layer as the Android HeadsetObserver monitors a custom&lt;br /&gt;
:   drivers/switch API rather than the standard Linux APIs.  This can be&lt;br /&gt;
:   done by either updating HeadsetObserver or modifying the ALSA core to&lt;br /&gt;
:   report via drivers/switch as well.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Support the sub speaker driver on Speyside&lt;br /&gt;
:   &lt;br /&gt;
:   Speyside includes a WM9081 configured as an external speaker driver taking&lt;br /&gt;
:   an analogue input from HPOUT2 on the WM8915 on the system. Add support for&lt;br /&gt;
:   this to the driver, using a prefix of &amp;quot;Sub&amp;quot; for the WM9081 controls to&lt;br /&gt;
:   ensure we avoid collisions with controls on the WM8915.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Optimise clock management for WM8915 Speyside&lt;br /&gt;
:   &lt;br /&gt;
:   Dynamically enable and disable the FLL on the WM8915, configuring the&lt;br /&gt;
:   system clock to 256fs for 48kHz when the device is active but reverting&lt;br /&gt;
:   to using the input 32.768kHz clock directly at other times to support&lt;br /&gt;
:   features such as jack detection with minimal power consumption.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add basic widgets for WM8915 Speyside&lt;br /&gt;
:   &lt;br /&gt;
:   Provide widgets for the basic widgets connected directly to the WM8915&lt;br /&gt;
:   on Speyside - the headphones, speaker, digital and analogue microphones.&lt;br /&gt;
:   For the outputs this is just documentation, for the inputs this ensures&lt;br /&gt;
:   that the relevant microphone biases are enabled when they are in use.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove to support sound for S5P6442&lt;br /&gt;
:   &lt;br /&gt;
:   According to removing ARCH_S5P6442, we don't need to support&lt;br /&gt;
:   sound for S5P6442.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Don't specify the DMA driver for Goni baseband link&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Don't specify the DMA driver for OpenMoko baseband link&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix CODEC DAI names for Goni&lt;br /&gt;
:   &lt;br /&gt;
:   Immediately after sending the last fix I realised that the CODEC DAI names&lt;br /&gt;
:   also don't correspond to the WM8994 driver. Update the DAI names to match.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix CODEC name in Goni&lt;br /&gt;
:   &lt;br /&gt;
:   This was typoed at some point in the multi-component merge, though the&lt;br /&gt;
:   driver was added along with that.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Initial audio support for Speyside on Cragganmore 6410&lt;br /&gt;
:   &lt;br /&gt;
:   This is minimal code required to get audio out of the Speyside audio&lt;br /&gt;
:   subsystem on the Wolfson Cragganmore 6410 reference platform.  It sets&lt;br /&gt;
:   up the link between the CPU and AIF1 of the WM8915 on the system,&lt;br /&gt;
:   enabling audio playback via the headphone and speaker outputs of the&lt;br /&gt;
:   device (which require no further configuration except runtime).  It&lt;br /&gt;
:   allows verification of basic functionality of the system.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SAMSUNG: Add WM8580 PCM Machine driver&lt;br /&gt;
:   &lt;br /&gt;
:   This patch add WM8580 PCM machine driver to support PCM audio&lt;br /&gt;
:   on SMDKC110, SMDKV210, SMDK6450, SMDK6440 boards.&lt;br /&gt;
:   Playback and Capture supports 8kHz sampling rates.&lt;br /&gt;
:   and It is tested on SMDKC110, SMDKV210, SMDK6450&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SAMSUNG: Fix the inverted clocks handling for pcm driver&lt;br /&gt;
:   &lt;br /&gt;
:   Fix the inverted clocks handling for pcm cpu driver.&lt;br /&gt;
:   By using SND_SOC_DAIFMT_NB_NF, Audio noise can be generated on SMDK.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: mini2440: Fix uda134x codec problem.&lt;br /&gt;
:   &lt;br /&gt;
:   ASoC audio for mini2440 platform in current kenrel doesn't work.&lt;br /&gt;
:   First problem is samsung_asoc_dma device is missing in initialization.&lt;br /&gt;
:   Next problem is with codec. Codec is initialized but never probed&lt;br /&gt;
:   because no platform_device exist for codec driver. It leads to errors&lt;br /&gt;
:   during codec binding to asoc dai. Next problem was platform data which&lt;br /&gt;
:   was passed from board to asoc main driver but not passed to codec when&lt;br /&gt;
:   called codec_soc_probe().&lt;br /&gt;
:   &lt;br /&gt;
:   Following patch should fix issues. But not sure if in correct way.&lt;br /&gt;
:   Please review.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Change dependency of ARCH_EXYNOS4&lt;br /&gt;
:   &lt;br /&gt;
:   This patch changes dependency of ARCH_EXYNOS4 from ARCH_S5PV310&lt;br /&gt;
:   according to the change of ARCH name, EXYNOS4.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Samsung: Merge neo1937_wm8753 and neo1973_gta02_wm8753 sound board driver&lt;br /&gt;
:   &lt;br /&gt;
:   The neo1973(GTA01) and neo1973_gta02(GTA02) have a very similar audio hardware&lt;br /&gt;
:   setup. They both use the same codec with the same routing to the gsm modem and&lt;br /&gt;
:   bluetooth chip. But they do use different AMPs though and there are some minor&lt;br /&gt;
:   differences in the speaker setup.&lt;br /&gt;
:   &lt;br /&gt;
:   As a result most of the code of those two drivers is identical.&lt;br /&gt;
:   So from a maintenance point of view it makes sense to merge them into a single&lt;br /&gt;
:   driver. It also reduces the size of kernel images supporting both the GTA01 and&lt;br /&gt;
:   GTA02.&lt;br /&gt;
:   &lt;br /&gt;
:   As a side-effect of this merge the GTA01 for example gains support for routing&lt;br /&gt;
:   audio to and from the bluetooth DAI.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: neo1973_wm8753: Remove scenario management code.&lt;br /&gt;
:   &lt;br /&gt;
:   It has been proven to be inflexible to do scenario management in kernel space.&lt;br /&gt;
:   &lt;br /&gt;
:   Since actual neo1973 board support has not been merged in mainline and this&lt;br /&gt;
:   patch has been in the neo1973 tree for some time now it should be safe to remove&lt;br /&gt;
:   this functionality without breaking existing userspace.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: remove one to many l's in the word&lt;br /&gt;
:   &lt;br /&gt;
:   The patch below removes an extra &amp;quot;l&amp;quot; in the word.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: neo1973_wm8753 audio support does not require scoop&lt;br /&gt;
:   &lt;br /&gt;
:   This driver does not use any of the functionality provided by the scoop&lt;br /&gt;
:   hardware.  Remove the unneeded header.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Blackfin===&lt;br /&gt;
: - Add missing soc/* stub files&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: check for substream not channels_min in pcm engines&lt;br /&gt;
:   &lt;br /&gt;
:   This is a follow up on 53dea36c70c1857 which fixes the other affected&lt;br /&gt;
:   pcm engines.&lt;br /&gt;
:   &lt;br /&gt;
:   Description from 53dea36c70c1857:&lt;br /&gt;
:   Don't rely on the codec's channels_min information to decide wheter or&lt;br /&gt;
:   not allocate a substream's DMA buffer. Rather check if the substream&lt;br /&gt;
:   itself was allocated previously.&lt;br /&gt;
:   &lt;br /&gt;
:   Without this patch I was seeing null-pointer dereferenc in atmel-pcm.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: blackfin: Add .owner to struct snd_soc_card&lt;br /&gt;
:   &lt;br /&gt;
:   Missed .owner of struct snd_soc_card will prevent the module from being&lt;br /&gt;
:   removed from underneath its users.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Lothar Waßmann &amp;amp;lt;LW@KARO-electronics.de&amp;amp;gt;&lt;br /&gt;
: - ASoC: Convert blackfin directory to module_platform_driver&lt;br /&gt;
:   &lt;br /&gt;
:   Factor out some boilerplate code.&lt;br /&gt;
:   &lt;br /&gt;
: - blackfin: add module.h to files implicitly expecting to use it.&lt;br /&gt;
:   &lt;br /&gt;
:   Its presence was implicit everywhere, but we are aiming to fix that,&lt;br /&gt;
:   so call out the users explicitly.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Staticise bf5xx_pcm_i2s_new()&lt;br /&gt;
:   &lt;br /&gt;
:   It is not used outside this driver so no need to make the symbol global.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Staticise bf5xx_pcm_ac97_new()&lt;br /&gt;
:   &lt;br /&gt;
:   It is not used outside this driver so no need to make the symbol global.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: bf5xx-ad73311: Fix prototype for bf5xx_probe&lt;br /&gt;
:   &lt;br /&gt;
:   Fix below build warning:&lt;br /&gt;
:   sound/soc/blackfin/bf5xx-ad73311.c: warning: initialization from incompatible pointer type&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Blackfin: bf5xx-ad193x: Fix codec device name&lt;br /&gt;
:   &lt;br /&gt;
:   Fix the codec_name field of the dai_link to match the actual device name&lt;br /&gt;
:   of the codec. Otherwise the card won't be instantiated.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Blackfin: ADAU1373 eval board support&lt;br /&gt;
:   &lt;br /&gt;
:   Add a machine driver to support the EVAL-ADAU1373 board connected to a&lt;br /&gt;
:   Analog Devices BF5XX evaluation board.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ad193x: fix system clock&lt;br /&gt;
:   &lt;br /&gt;
:   system clock is 24.576MHz instead of 12.288MHz&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Blackfin: Add machine driver for EVAL-ADAV80X boards&lt;br /&gt;
:   &lt;br /&gt;
:   Add a machine driver to support the EVAL-ADAV801 and EVAL-ADAV803 boards&lt;br /&gt;
:   connected to a Analog Devices BF5XX evaluation board.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Blackfin: allow SPI for SSM2602 parts&lt;br /&gt;
:   &lt;br /&gt;
:   This board has hardware switches for selecting SPI or I2C, so don't&lt;br /&gt;
:   require I2C for this driver.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Blackfin: Add bf5xx-adau1701 machine driver&lt;br /&gt;
:   &lt;br /&gt;
:   Add a machine driver to support the ADAU1701 SigmaDSP processors on&lt;br /&gt;
:   Analog Devices BF5XX evaluation boards.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Clean up some coding style nits in the bf5xx-i2s-pcm driver&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix Blackfin I2S _pointer() implementation return in bounds values&lt;br /&gt;
:   &lt;br /&gt;
:   The Blackfin DMA controller can report one frame beyond the end of the&lt;br /&gt;
:   buffer in the wraparound case but ALSA requires that the pointer always&lt;br /&gt;
:   be in the buffer. Do the wraparound to handle this. A similar bug is&lt;br /&gt;
:   likely to apply to the other Blackfin PCM drivers but the code is less&lt;br /&gt;
:   obvious to inspection and I don't have a user to test.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Kieran O'Leary &amp;amp;lt;Kieran.O'Leary@wolfsonmicro.com&amp;amp;gt;&lt;br /&gt;
: - ASoC: Blackfin: bf5xx-ad1836: Fix codec device name&lt;br /&gt;
:   &lt;br /&gt;
:   Fix the codec_name field of the dai_link to match the actual device name&lt;br /&gt;
:   of the codec. Otherwise the card won't be instantiated.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Blackfin: push down SPORT settings from global variables&lt;br /&gt;
:   &lt;br /&gt;
:   Now that we have multi-component support, take the time to unify the&lt;br /&gt;
:   SPORT implementations a bit and make the setup dynamic.  This kills&lt;br /&gt;
:   off the global sport_handle which was shared across all the Blackfin&lt;br /&gt;
:   machine drivers.  The pin management aspect is off loaded to platform&lt;br /&gt;
:   resources, and now multiple SPORTs can be instantiated simultaneously.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Blackfin: standardize machine driver names&lt;br /&gt;
:   &lt;br /&gt;
:   Some machine drivers were using &amp;quot;bf5xx-&amp;quot;, others were using &amp;quot;bf5xx_&amp;quot;,&lt;br /&gt;
:   while others were using &amp;quot;bfin-&amp;quot;.  Further, some were using the same&lt;br /&gt;
:   name in the transport layer which makes it hard to use different codecs&lt;br /&gt;
:   at the same time.  So standardize all of them to &amp;quot;bfin-&amp;quot; and make sure&lt;br /&gt;
:   they are name spaced according to their driver name.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Blackfin: drop &amp;quot;-codec&amp;quot; from codec names&lt;br /&gt;
:   &lt;br /&gt;
:   The recent multi-component patch incorrectly added &amp;quot;-codec&amp;quot; suffixes to&lt;br /&gt;
:   parts which are not MFD.  Drop the suffix from the machine drivers too.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Blackfin: add ad193x sysclk configuration&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Blackfin I2S: add 8-bit sample support&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec 88PM860x===&lt;br /&gt;
: - Add missing soc/* stub files&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert 88pm860x-codec to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert 88pm860x-codec to table based DAPM and control init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert CODEC drivers to module_platform_driver&lt;br /&gt;
:   &lt;br /&gt;
:   Factors out a bit of boilerplate.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Include delay.h in 88pm860x&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Stephen Rothwell &amp;amp;lt;sfr@canb.auug.org.au&amp;amp;gt;&lt;br /&gt;
: - ASoC: 88pm860x-codec - reset the codec correctly&lt;br /&gt;
:   &lt;br /&gt;
:   Reset the codec according to the Audio power-up delay errata for the 88PM8607.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: 88pm860x-codec - Allow independent use of both I2S playback and capture&lt;br /&gt;
:   &lt;br /&gt;
:   Introduce a I2S CLK supply so playback and capture can operate independently.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: s/w-&amp;amp;gt;kcontrols/w-&amp;amp;gt;kcontrol_news/g&lt;br /&gt;
:   &lt;br /&gt;
:   A future change will modify struct snd_soc_dapm_widget to store the&lt;br /&gt;
:   actual kcontrol pointers for each kcontrol_new in a field named&lt;br /&gt;
:   kcontrols. Rename the existing kcontrols field to enable this.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec AC97===&lt;br /&gt;
: - ASoC: Drop unused state parameter from CODEC suspend callback&lt;br /&gt;
:   &lt;br /&gt;
:   The existence of this parameter is purely historical. None of the CODEC drivers&lt;br /&gt;
:   uses it and we always pass in the same value anyway, so it should be safe to&lt;br /&gt;
:   remove it.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert CODEC drivers to module_platform_driver&lt;br /&gt;
:   &lt;br /&gt;
:   Factors out a bit of boilerplate.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec AD1836===&lt;br /&gt;
: - ASoC: Convert ad1836 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Drop unused state parameter from CODEC suspend callback&lt;br /&gt;
:   &lt;br /&gt;
:   The existence of this parameter is purely historical. None of the CODEC drivers&lt;br /&gt;
:   uses it and we always pass in the same value anyway, so it should be safe to&lt;br /&gt;
:   remove it.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix wrong define for AD1836_ADC_WORD_OFFSET&lt;br /&gt;
:   &lt;br /&gt;
:   According to the datasheet:&lt;br /&gt;
:   The BIT[5:4] of ADC Control Register 2 is to control the word width.&lt;br /&gt;
:   00 = 25 Bits&lt;br /&gt;
:   01 = 20 Bits&lt;br /&gt;
:   10 = 16 Bits&lt;br /&gt;
:   11 = Invalid&lt;br /&gt;
:   &lt;br /&gt;
:   Thus, the AD1836_ADC_WORD_OFFSET should be defined as 4.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: AD1836: rename suspend/resume funcs&lt;br /&gt;
:   &lt;br /&gt;
:   Use less specific names for suspend/resume to match the probe/remove funcs&lt;br /&gt;
:   where these are now used.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: AD1836: fix codec name&lt;br /&gt;
:   &lt;br /&gt;
:   The codec name should not have a &amp;quot;-codec&amp;quot; suffix since this is not part of&lt;br /&gt;
:   a MFD.  This was incorrectly changed during the multi-component updated.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: AD1836: fix intermixed tab/space indentation&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: AD1836: drop unnecessary spi register check&lt;br /&gt;
:   &lt;br /&gt;
:   The only thing the init func does is register a spi driver, so if that&lt;br /&gt;
:   fails, we return the value back up to the caller who will display an&lt;br /&gt;
:   error message for us.  So drop the redundant checking/message.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: AD1836: clean up comment headers&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: AD1836: Fix build error&lt;br /&gt;
:   &lt;br /&gt;
:   Commit f97d0c6d5f94 (&amp;quot;ASoC: AD1836: Add input gain control for ADC2&amp;quot;) contained&lt;br /&gt;
:   a typo in the register name, causing a build error. This patch fixes it.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: AD1836: Add input gain control for ADC2&lt;br /&gt;
:   &lt;br /&gt;
:   The AD1836 has a PGA for its second ADC. This patch adds a control for&lt;br /&gt;
:   adjusting the the gain of the PGA.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: AD1836: Remove unused fields from private struct&lt;br /&gt;
:   &lt;br /&gt;
:   The control_type field is never used, so it can be removed.  The&lt;br /&gt;
:   control_data field is used to initialize the codec's control_data field,&lt;br /&gt;
:   but since this is also done by the snd-soc-cache core, the redundant&lt;br /&gt;
:   assignment can be removed and the field can be dropped.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: AD1836: Add AD1835/AD1837/AD1838/AD1839 support&lt;br /&gt;
:   &lt;br /&gt;
:   The AD183X codec devices are mostly register compatible and can easily be&lt;br /&gt;
:   supported by the same driver.  The main difference between those devices&lt;br /&gt;
:   is the number of DACs and ADCs.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adjusts the driver to allocate the controls, DAPM widgets and&lt;br /&gt;
:   routes for the DACs and ADCs dynamically based on the chip type.&lt;br /&gt;
:   &lt;br /&gt;
:   The AD1836 is a bit special in that it supports different modes for its second&lt;br /&gt;
:   ADC, so it needs some special handling. Right now the driver hardcodes the mode&lt;br /&gt;
:   to the differential PGA mode.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: AD1836: Use snd_soc_update_bits for read-modify-write&lt;br /&gt;
:   &lt;br /&gt;
:   Use snd_soc_update_bits for read-modify-write register access instead of&lt;br /&gt;
:   open-coding it using snd_soc_read and snd_soc_write.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: AD1836: Add ADC/DAC controls helper macros&lt;br /&gt;
:   &lt;br /&gt;
:   The different ADC and DAC controls follow the same scheme, so add some helper&lt;br /&gt;
:   macros for declaring them.&lt;br /&gt;
:   This should make the code a bit more readable and also decreases the code size&lt;br /&gt;
:   a bit.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: AD1836: Fix setting the PCM format&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec AD1938===&lt;br /&gt;
: - Add missing soc/* stub files&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec AD193X===&lt;br /&gt;
: - ASoC: Convert ad193x to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ad193x: Convert to direct regmap API usage&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ad193x: Use snd_soc_update_bits where appropriate&lt;br /&gt;
:   &lt;br /&gt;
:   We can reduce the code size here a bit by using snd_soc_update_bits instead of&lt;br /&gt;
:   open-coding the read-modify-write cycle. The conversion done in this patch is&lt;br /&gt;
:   not completely straightforward and some minor code restructuring has been&lt;br /&gt;
:   incorporated to further reduce the code size.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ad193x: Add sysclk DAPM supply&lt;br /&gt;
:   &lt;br /&gt;
:   Add a DAPM supply widget for the internal sysclk, so it can be disabled&lt;br /&gt;
:   automatically when not needed.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ad193x: Remove non-functional DAPM route controls&lt;br /&gt;
:   &lt;br /&gt;
:   DAPM route controls only take effect on paths where the sink is a mixer or a&lt;br /&gt;
:   mux, furthermore the control must be a control assigned to the mixer or mux.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ad193x: Make enum items const char * const&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ad193x: Provide dB ranges for the volume controls&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ad193x: Use table based DAPM and controls setup&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ad193x: Use snd_soc_update_bits for read-modify-write&lt;br /&gt;
:   &lt;br /&gt;
:   Use snd_soc_update_bits for read-modify-write register access instead of&lt;br /&gt;
:   open-coding it using snd_soc_read and snd_soc_write&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ad193x: Fix define of AD193X_PLL_INPUT_MASK&lt;br /&gt;
:   &lt;br /&gt;
:   Current code defines AD193X_PLL_INPUT_MASK as (~0x6) which is quite&lt;br /&gt;
:   different from other MASK defines.&lt;br /&gt;
:   To make it consistent with other mask defines, define AD193X_PLL_INPUT_MASK&lt;br /&gt;
:   as 0x6 and change the code accordingly.&lt;br /&gt;
:   I think this change improves the readability.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ad193x: Setup regmap read and write flag masks for SPI&lt;br /&gt;
:   &lt;br /&gt;
:   Currently register read-back for the ad193x is broken, because it expects bit 0&lt;br /&gt;
:   of the upper byte to be set to indicate a read operation, while the regmap&lt;br /&gt;
:   default for SPI is to use bit 7.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch also addresses another oddity of the device. There are SPI and I2C&lt;br /&gt;
:   versions of this codec. In both cases the registers are 8-bit wide and numbered&lt;br /&gt;
:   from 0x0 to 0x10, but in the SPI case there is also a so called&lt;br /&gt;
:   'global address' which is prefixed in-front of the register address. The global&lt;br /&gt;
:   address mimics I2C behaviour and includes a static device address the and the&lt;br /&gt;
:   read/write flag. This basically extends the register address to an 16-bit value&lt;br /&gt;
:   numbered from 0x800 to 0x810. These are the register numbers which are&lt;br /&gt;
:   currently used by the driver. This works, because I2C will ignore the upper&lt;br /&gt;
:   8 bits of the register, but it is still a bit confusing, as there are no such&lt;br /&gt;
:   register numbers in the I2C case.&lt;br /&gt;
:   &lt;br /&gt;
:   The approach taken by this patch is to number the registers from 0x00 to 0x10&lt;br /&gt;
:   and encode the global address for SPI mode into the read and write flag masks.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ad193x: remove cache support&lt;br /&gt;
:   &lt;br /&gt;
:   asoc cache layer can't support this kind of spi registers well.&lt;br /&gt;
:   remove cache support and read/write registers directly&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ad193x: fix dac word len setting&lt;br /&gt;
:   &lt;br /&gt;
:   dac word len value should left shift before setting&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ad193x: fix registers definition&lt;br /&gt;
:   &lt;br /&gt;
:   fix dac word len mask and adc tdm fmt shift value&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ad193x: fix codec name&lt;br /&gt;
:   &lt;br /&gt;
:   The codec name should not have a &amp;quot;-codec&amp;quot; suffix since this is not part of&lt;br /&gt;
:   a MFD.  This was incorrectly changed during the multi-component updated.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ad193x: tweak style to match other codecs&lt;br /&gt;
:   &lt;br /&gt;
:   Rename the snd_soc_control_type field from &amp;quot;bus_type&amp;quot; to &amp;quot;control_type&amp;quot;,&lt;br /&gt;
:   and drop the now unused &amp;quot;control_data&amp;quot; field.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec AD1980===&lt;br /&gt;
: - ASoC: Convert CODEC drivers to module_platform_driver&lt;br /&gt;
:   &lt;br /&gt;
:   Factors out a bit of boilerplate.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Drop exporting ad1980_dai&lt;br /&gt;
:   &lt;br /&gt;
:   ad1980_dai is not used outside this driver,&lt;br /&gt;
:   thus drop exporting it.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ad1980: Return proper error if vendor id mismatch&lt;br /&gt;
:   &lt;br /&gt;
:   Return -ENODEV instead of 0 if vendor id mismatch.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ad1980: fix codec name&lt;br /&gt;
:   &lt;br /&gt;
:   The codec name should not have a &amp;quot;-codec&amp;quot; suffix since this is not part of&lt;br /&gt;
:   a MFD.  This was incorrectly changed during the multi-component updated.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec AD73311===&lt;br /&gt;
: - ASoC: Convert CODEC drivers to module_platform_driver&lt;br /&gt;
:   &lt;br /&gt;
:   Factors out a bit of boilerplate.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ad73311: fix codec name&lt;br /&gt;
:   &lt;br /&gt;
:   The codec name should not have a &amp;quot;-codec&amp;quot; suffix since this is not part of&lt;br /&gt;
:   a MFD.  This was incorrectly changed during the multi-component updated.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec ADAU1373===&lt;br /&gt;
: - ASoC: Convert adau1373 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Drop unused state parameter from CODEC suspend callback&lt;br /&gt;
:   &lt;br /&gt;
:   The existence of this parameter is purely historical. None of the CODEC drivers&lt;br /&gt;
:   uses it and we always pass in the same value anyway, so it should be safe to&lt;br /&gt;
:   remove it.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Cleanup duplicated const&lt;br /&gt;
:   &lt;br /&gt;
:   Commit 85e7652(&amp;quot;ASoC: Constify snd_soc_dai_ops structs&amp;quot;) accidentally&lt;br /&gt;
:   introduced a few duplicated consts. This patch cleans it up.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: adau1373: fix DB_RANGE size&lt;br /&gt;
:   &lt;br /&gt;
:   Give the correct number of entries to TLV_DB_RANGE_HEAD to prevent&lt;br /&gt;
:   reading more data than actually is in the array.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix setting adau1373_dai-&amp;amp;gt;master for SND_SOC_DAIFMT_CBS_CFS&lt;br /&gt;
:   &lt;br /&gt;
:   In the case of SND_SOC_DAIFMT_CBS_CFS, adau1373_dai-&amp;amp;gt;master should be false.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add ADAU1373 codec support&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds support for the Analog Devices ADAU1373 audio codec.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec ADAU1701===&lt;br /&gt;
: - ASoC: Convert adau1701 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Move SigmaDSP firmware loader to ASoC&lt;br /&gt;
:   &lt;br /&gt;
:   It has been pointed out previously, that the firmware subsystem is not the right&lt;br /&gt;
:   place for the SigmaDSP firmware loader. Furthermore the SigmaDSP is currently&lt;br /&gt;
:   only used in audio products and we are aiming for better integration into the&lt;br /&gt;
:   ASoC framework in the future, with support for ALSA controls for firmware&lt;br /&gt;
:   parameters and support dynamic power management as well. So the natural choice&lt;br /&gt;
:   for the SigmaDSP firmware loader is the ASoC subsystem.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Cleanup duplicated const&lt;br /&gt;
:   &lt;br /&gt;
:   Commit 85e7652(&amp;quot;ASoC: Constify snd_soc_dai_ops structs&amp;quot;) accidentally&lt;br /&gt;
:   introduced a few duplicated consts. This patch cleans it up.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: adau1701: Fix prototype for adau1701_set_sysclk&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: adau1701: Initialize codec-&amp;amp;gt;control_data before using it&lt;br /&gt;
:   &lt;br /&gt;
:   Currently codec-&amp;amp;gt;control_data is not initialized before calling&lt;br /&gt;
:   process_sigma_firmware(codec-&amp;amp;gt;control_data, ADAU1701_FIRMWARE).&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: adau1701: signedness bug in adau1701_write()&lt;br /&gt;
:   &lt;br /&gt;
:   &amp;quot;ret&amp;quot; is supposed to be signed here.  The current code will only&lt;br /&gt;
:   return -EIO on error, instead of a more appropriate error code such&lt;br /&gt;
:   as -EAGAIN etc.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add ADAU1701 codec driver&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds support for the Analog Devices ADAU1701 SigmaDSP.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec ADAV80x===&lt;br /&gt;
: - ASoC: Allow source specification for CODEC level sysclk&lt;br /&gt;
:   &lt;br /&gt;
:   Similarly to PLLs/FLLs some modern CODECs provide selectable system clock&lt;br /&gt;
:   sources. When the clock is the clock for a DAI we do not usually need to&lt;br /&gt;
:   identify which clock is being configured so can use clk_id for the source&lt;br /&gt;
:   clock but with CODEC wide system clocks we will need to specify both the&lt;br /&gt;
:   clock being configured and the source.&lt;br /&gt;
:   &lt;br /&gt;
:   Add a source argument to the CODEC driver set_sysclk() operation to&lt;br /&gt;
:   reflect this. As this operation is not as widely used as the DAI&lt;br /&gt;
:   set_sysclk() operation the change is not very invasive. We probably&lt;br /&gt;
:   ought to go and make the same alternation for DAIs at some point.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Report an error for unknown adav80x formats&lt;br /&gt;
:   &lt;br /&gt;
:   Not only fixes error handling but also some uninitialized variable&lt;br /&gt;
:   warnings.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add ADAV80x codec driver&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds support for the Analog Devices ADAV801 and ADAV803 audio codec.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec AK4104===&lt;br /&gt;
: - ASoC: Convert ak4104 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix reg_word_size for ak4104&lt;br /&gt;
:   &lt;br /&gt;
:   According to the register map in datasheet, the registers are 8 bit.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove module probe announcements from CODEC drivers&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec AK4535===&lt;br /&gt;
: - ASoC: Convert ak4535 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove unneeded platform_device.h inclusions from CODECs&lt;br /&gt;
:   &lt;br /&gt;
:   They've not been needed for a long time if they were ever required.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ak4535: fixup cache register table&lt;br /&gt;
:   &lt;br /&gt;
:   ak4535_reg should be 8bit, but cache table is defined as 16bit.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ak4535: convert to soc-cache&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Use data based init for ak4535 DAPM&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec AK4641===&lt;br /&gt;
: - ASoC: Fix return value of ak4641_pcm_set_dai_fmt()&lt;br /&gt;
:   &lt;br /&gt;
:   We can't just pass back the return value of snd_soc_update_bits() as it&lt;br /&gt;
:   will be 1 if a bit changed rather than zero.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert ak4641 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove unneeded platform_device.h inclusions from CODECs&lt;br /&gt;
:   &lt;br /&gt;
:   They've not been needed for a long time if they were ever required.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ak4641: Use SND_SOC_DAPM_DAC for Voice Playback stream widget&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ak4641: Remove unused codec field from struct ak4641_priv&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Staticize ak4641_dai&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Asahi Kasei AK4641 codec driver&lt;br /&gt;
:   &lt;br /&gt;
:   A driver for the AK4641 codec used in iPAQ hx4700 and Glofiish M800&lt;br /&gt;
:   among others.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec AK4642===&lt;br /&gt;
: - ASoC: Convert ak4642 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove unneeded platform_device.h inclusions from CODECs&lt;br /&gt;
:   &lt;br /&gt;
:   They've not been needed for a long time if they were ever required.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove driver versioning from ak4642&lt;br /&gt;
:   &lt;br /&gt;
:   It's never been updated so it can't be that useful and it makes the&lt;br /&gt;
:   driver needlessly chatty.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ak4642: add ak4648 support&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ak4642: add Line out support&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ak4642: add headphone mute switch control&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ak4642: add DAPM support for HeadPhone Output&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ak4642: add ak4642_set_bias_level()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ak4642: ak4642 was tested&lt;br /&gt;
:   &lt;br /&gt;
:   ak4642 was tested by ms7724se board&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ak4642: fixup cache register table&lt;br /&gt;
:   &lt;br /&gt;
:   ak4642 register was 8bit, but cache table was defined as 16bit.&lt;br /&gt;
:   ak4642 doesn't work correctry without this patch.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ak4642: convert to soc-cache&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ak4642: fixup snd_soc_update_bits mask for PW_MGMT2&lt;br /&gt;
:   &lt;br /&gt;
:   mask didn't cover update-data&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ak4642: add SND_SOC_DAIFMT_FORMAT support&lt;br /&gt;
:   &lt;br /&gt;
:   This patch support LEFT_J / I2S only for now&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec AK4671===&lt;br /&gt;
: - ASoC: Convert ak4671 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ak4671: Use snd_soc_update_bits for read-modify-write&lt;br /&gt;
:   &lt;br /&gt;
:   Use snd_soc_update_bits for read-modify-write register access instead of&lt;br /&gt;
:   open-coding it using snd_soc_read and snd_soc_write&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove unneeded hw_write initialisation in ak4671&lt;br /&gt;
:   &lt;br /&gt;
:   It is not required now.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove unused &amp;quot;control_data&amp;quot; field of struct ak4671_priv&lt;br /&gt;
:   &lt;br /&gt;
:   The control_data field is used to initialize the codec's control_data field,&lt;br /&gt;
:   but since this is also done by the snd-soc-cache core, the redundant&lt;br /&gt;
:   assignment can be removed and the field can be dropped.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Use data based init for ak4671 DAPM&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec CQ0093 Voice===&lt;br /&gt;
: - mfd: Use mfd cell platform_data for davinci cells platform bits&lt;br /&gt;
:   &lt;br /&gt;
:   With the addition of a platform device mfd_cell pointer, MFD drivers&lt;br /&gt;
:   can go back to passing platform back to their sub drivers.&lt;br /&gt;
:   This allows for an mfd_cell-&amp;amp;gt;mfd_data removal and thus keep the&lt;br /&gt;
:   sub drivers MFD agnostic. This is mostly needed for non MFD aware&lt;br /&gt;
:   sub drivers.&lt;br /&gt;
:   &lt;br /&gt;
: - asoc: davinci_voicecodec: use mfd_data instead of driver_data&lt;br /&gt;
:   &lt;br /&gt;
:   Use mfd_data for passing information from mfd drivers to soc&lt;br /&gt;
:   clients.  The mfd_cell's driver_data field is being phased out.&lt;br /&gt;
:   &lt;br /&gt;
:   Clients that were using driver_data now access .mfd_data&lt;br /&gt;
:   via mfd_get_data().&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: DaVinci: fix kernel panic due to uninitialized platform_data&lt;br /&gt;
:   &lt;br /&gt;
:   This patch fixes the Kernel panic issue on accessing davinci_vc in&lt;br /&gt;
:   cq93vc_probe function. struct davinci_vc is part of platform device's&lt;br /&gt;
:   private driver data(codec-&amp;amp;gt;dev-&amp;amp;gt;p-&amp;amp;gt;driver_data) and this is populated&lt;br /&gt;
:   by DaVinci Voice Codec MFD driver.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec CS4270===&lt;br /&gt;
: - ASoC: Convert cs4270 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: cs4720: use snd_soc_cache_sync()&lt;br /&gt;
:   &lt;br /&gt;
:   Replace the manual register restore mechanism in cs4270.c and call the&lt;br /&gt;
:   generic snd_soc_cache_sync() handler instead.&lt;br /&gt;
:   &lt;br /&gt;
:   This factors code out in favour of core facilities and also fixes a&lt;br /&gt;
:   bus confusion that is most probably caused by intermixing i2c-regmap&lt;br /&gt;
:   functions and i2c_smbus_* accessors.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-and-tested-by: Sven Neumann &amp;amp;lt;s.neumann@raumfeld.com&amp;amp;gt;&lt;br /&gt;
: - ASoC: Return early with -EINVAL if invalid dai format is detected&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove unused &amp;quot;control_data&amp;quot; field of struct cs4270_private&lt;br /&gt;
:   &lt;br /&gt;
:   The control_data field is used to initialize the codec's control_data field,&lt;br /&gt;
:   but since this is also done by the snd-soc-cache core, the redundant&lt;br /&gt;
:   assignment can be removed and the field can be dropped.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix comment in cs4270 codec driver&lt;br /&gt;
:   &lt;br /&gt;
:   The comment does not reflect reality anymore since the multi-component&lt;br /&gt;
:   monster patch landed. Things are matched by names now, and not by&lt;br /&gt;
:   exporting and referencing a struct. Fix it to avoid confusion.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Constify i2c_device_id table&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove module probe announcements from CODEC drivers&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec CS42L51===&lt;br /&gt;
: - ASoC: Convert cs42l51 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert cs42l51 to table based DAPM and control init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: cs42l51: Fix off-by-one for reg_cache_size&lt;br /&gt;
:   &lt;br /&gt;
:   Just checking the code in cs42l51_fill_cache():&lt;br /&gt;
:   The cache pointer points to codec-&amp;amp;gt;reg_cache + 1.&lt;br /&gt;
:   I think it is because CS42L51_FIRSTREG is 0x01,&lt;br /&gt;
:   so codec-&amp;amp;gt;reg_cache[0] is not used here.&lt;br /&gt;
:   &lt;br /&gt;
:   Then we read CS42L51_NUMREGS bytes to cache.&lt;br /&gt;
:   So we need reg_cache_size to be CS42L51_NUMREGS + 1.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Avoid a redundant read in cs42l51_pdn_event&lt;br /&gt;
:   &lt;br /&gt;
:   snd_soc_update_bits already does read-modify-write,&lt;br /&gt;
:   no need to read the register before calling snd_soc_update_bits.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Return early with -EINVAL if invalid dai format is detected&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove unused &amp;quot;control_data&amp;quot; field of struct cs42l51_private&lt;br /&gt;
:   &lt;br /&gt;
:   The control_data field is used to initialize the codec's control_data field,&lt;br /&gt;
:   but since this is also done by the snd-soc-cache core, the redundant&lt;br /&gt;
:   assignment can be removed and the field can be dropped.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec CS42L73===&lt;br /&gt;
: - ASoC: cs42l73: Fix clear wrong bits in cs42l73_set_dai_fmt&lt;br /&gt;
:   &lt;br /&gt;
:   What we want is to clear BIT[5:4](PCM_MODE_MASK) and BIT[3](PCM_BIT_ORDER) bits,&lt;br /&gt;
:   but current code clears BIT[2:0].&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert CS42L73 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Staticise and constify cs42l73_reg_defaults&lt;br /&gt;
:   &lt;br /&gt;
:   It's not exported and doesn't need to change.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: cs42l73: Make inv and format to be unsigned int&lt;br /&gt;
:   &lt;br /&gt;
:   Fix below smatch warning:&lt;br /&gt;
:   &lt;br /&gt;
:   sound/soc/codecs/cs42l73.c +1030 cs42l73_set_dai_fmt(53) error: inv is never equal to 1024 (wrong type 0 - 255).&lt;br /&gt;
:   sound/soc/codecs/cs42l73.c +1032 cs42l73_set_dai_fmt(55) error: inv is never equal to 768 (wrong type 0 - 255).&lt;br /&gt;
:   sound/soc/codecs/cs42l73.c +1036 cs42l73_set_dai_fmt(59) error: inv is never equal to 1024 (wrong type 0 - 255).&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Dan Carpenter &amp;amp;lt;dan.carpenter@oracle.com&amp;amp;gt;&lt;br /&gt;
: - ASoC: cs42l73: Unify the way to define bits of register&lt;br /&gt;
:   &lt;br /&gt;
:   Current code defines some bits with left shift to the proper bit defined in&lt;br /&gt;
:   datasheet, but some don't.&lt;br /&gt;
:   Unify the definition with proper left shift and adjust the code accordingly.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove redundant regcache_sync call in cs42l73_resume&lt;br /&gt;
:   &lt;br /&gt;
:   It's done in cs42l73_set_bias_level when the dapm.bias_level is switching&lt;br /&gt;
:   from SND_SOC_BIAS_OFF to SND_SOC_BIAS_STANDBY.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: cs42l73: Show correct revision id&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: cs42l73: Return proper error code if device id mismatch&lt;br /&gt;
:   &lt;br /&gt;
:   Return -ENODEV instead of 0 if device id mismatch.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add support for CS42L73 codec&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds support for the Cirrus Logic CS42L73 low power stereo&lt;br /&gt;
:   codec.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec CX20442===&lt;br /&gt;
: - ASoC: cx20442: add bias control over a platform provided regulator&lt;br /&gt;
:   &lt;br /&gt;
:   Now that a regulator device for controlling the codec chip reset state&lt;br /&gt;
:   over a platform agnostic regulator API is available on the only board&lt;br /&gt;
:   using this driver so far, extend the driver with a bias control function&lt;br /&gt;
:   which will request virtual power to the codec chip from that virtual&lt;br /&gt;
:   regulator, and will supersede the present implementation existing at the&lt;br /&gt;
:   sound card level.&lt;br /&gt;
:   &lt;br /&gt;
:   Thanks to the regulator sharing mechanism, both the old (the sound card)&lt;br /&gt;
:   and the new (the codec) implementations should coexist smoothly until&lt;br /&gt;
:   the sound card file is updated. For this to work as expected, update the&lt;br /&gt;
:   sound card .set_bias_level callback to not touch codec-&amp;amp;gt;dapm.bias_level.&lt;br /&gt;
:   &lt;br /&gt;
:   While extending the cx20442 structure, drop unused control_type member.&lt;br /&gt;
:   &lt;br /&gt;
:   Created against linxu-3.2-rc6, tested on top of patch 1/4 &amp;quot;ARM: OMAP1:&lt;br /&gt;
:   ams-delta: set up a regulator over the modem reset GPIO pin&amp;quot;.&lt;br /&gt;
:   &lt;br /&gt;
: - Revert &amp;quot;ASoC: Update cx20442 for TTY API change&amp;quot;&lt;br /&gt;
:   &lt;br /&gt;
:   This reverts commit ed0bd2333cffc3d856db9beb829543c1dfc00982.&lt;br /&gt;
:   &lt;br /&gt;
:   Since we reverted the TTY API change, we should revert the ASoC update&lt;br /&gt;
:   to it too.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Update cx20442 for TTY API change&lt;br /&gt;
:   &lt;br /&gt;
:   receive_buf() was recently changed to return the number of bytes&lt;br /&gt;
:   received but the cx20442 driver wasn't updated to match the new API.&lt;br /&gt;
:   I don't have any hardware but since we don't actually appears to be&lt;br /&gt;
:   listening to the data at all just report that we accepted all the data&lt;br /&gt;
:   that was offered to us.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Use data based init for cx20442 DAPM&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: CX20442: fix wrong reg_cache_default content&lt;br /&gt;
:   &lt;br /&gt;
:   Content of the CX20442's snd_soc_codec_driver.reg_cache_default pointed&lt;br /&gt;
:   area, introduced with my recent NULL pointer dereferece fix (commit&lt;br /&gt;
:   f019ee5feb344ff0b22b58df4568676295aae14f), occured wrong after further&lt;br /&gt;
:   testing, more thorough than just booting successfully. There are two&lt;br /&gt;
:   problems with it:&lt;br /&gt;
:   &lt;br /&gt;
:   1) It should read&lt;br /&gt;
:   (1 &amp;amp;lt;&amp;amp;lt; CX20442_TELOUT) | (1 &amp;amp;lt;&amp;amp;lt; CX20442_MIC),&lt;br /&gt;
:   not&lt;br /&gt;
:   CX20442_TELOUT | CX20442_MIC.&lt;br /&gt;
:   &lt;br /&gt;
:   2) While correctly matching actual codec hardware state on boot when&lt;br /&gt;
:   fixed per 1), a few more code modifications would still be required&lt;br /&gt;
:   to reflect that state not only into register cache, but also force&lt;br /&gt;
:   them into DAPM pins state, otherwise an inconsitency occures which&lt;br /&gt;
:   may prevent further codec state changes from being applied correctly.&lt;br /&gt;
:   As a result, the phone stops ringing after reboot, until someone&lt;br /&gt;
:   picks up the handset for the first time.&lt;br /&gt;
:   &lt;br /&gt;
:   Revert that reg_cache_default content to a working, previous de facto&lt;br /&gt;
:   default value of 0, in hope this change can still be accepted as an rc&lt;br /&gt;
:   cycle fix.&lt;br /&gt;
:   &lt;br /&gt;
:   Created and tested against linux-2.6.38-rc4&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: CX20442: fix NULL pointer dereference&lt;br /&gt;
:   &lt;br /&gt;
:   The CX20442 codec driver never provided the snd_soc_codec_driver's&lt;br /&gt;
:   .reg_cache_default member. With the latest ASoC framework changes, it&lt;br /&gt;
:   seems to be referred unconditionally, resulting in a NULL pointer&lt;br /&gt;
:   dereference if missing. Provide it.&lt;br /&gt;
:   &lt;br /&gt;
:   Created and tested on Amstrad Delta against linux-2.6.38-rc2&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec Cirrus Logic CS4271===&lt;br /&gt;
: - ASoC: cs4271: Fix wrong mask parameter in some snd_soc_update_bits calls&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove unused &amp;quot;control_data&amp;quot; field of struct cs4271_private&lt;br /&gt;
:   &lt;br /&gt;
:   The control_data field is used to initialize the codec's control_data field,&lt;br /&gt;
:   but since this is also done by the snd-soc-cache core, the redundant&lt;br /&gt;
:   assignment can be removed and the field can be dropped.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Manage mode and rate bits correctly for CS4271 CODEC.&lt;br /&gt;
:   &lt;br /&gt;
:   Manage mode and rate bits correctly, according to datasheet in CS4271 CODEC.&lt;br /&gt;
:   This is done to make capture work properly.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Extend range of supported sample rates for CS4271 CODEC.&lt;br /&gt;
:   &lt;br /&gt;
:   Extend range of supported sample rates for CS4271 CODEC.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Constify i2c_device_id table&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: CS4271: Move Chip Select control out of the CODEC code.&lt;br /&gt;
:   &lt;br /&gt;
:   Move Chip Select control out of the CODEC code for CS4271.&lt;br /&gt;
:   &lt;br /&gt;
:   Reviewed-by: H Hartley Sweeten &amp;amp;lt;hsweeten@visionengravers.com&amp;amp;gt;&lt;br /&gt;
: - ASoC: Staticise non-exported symbols in cs4271&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: cs4271.c: improve error handling&lt;br /&gt;
:   &lt;br /&gt;
:   CS4271 CODEC driver adapted to recently introduced error handling in&lt;br /&gt;
:   snd_soc_update_bits().&lt;br /&gt;
:   Added snd_soc_cache_sync() error handling.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: CS4271 codec support&lt;br /&gt;
:   &lt;br /&gt;
:   Added support for CS4271 codec to ASoC.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec DA7210===&lt;br /&gt;
: - ASoC: da7210: Add support for line input and mic&lt;br /&gt;
:   &lt;br /&gt;
:   DA7210 has three line inputs (AUX1 Left, AUX1 Right and AUX2) and&lt;br /&gt;
:   a stereo MIC. This patch adds gain controls for MIC, AUX1, AUX2 as&lt;br /&gt;
:   well as INPGA.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert da7210 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix duplicate const warnings in da7210.c&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: da7210: Add support for line out and DAC&lt;br /&gt;
:   &lt;br /&gt;
:   DA7210 has three line outputs. OUT1 Left, OUT1 Right and OUT2 (mono).&lt;br /&gt;
:   This patch adds support for gain controls for these three line outs.&lt;br /&gt;
:   It also adds support for overall DAC gain control.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: da7210: Add support for DAPM&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds support for DAPM covering all inputs and outputs&lt;br /&gt;
:   as well as ADC and DAC.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: da7210: Add support for ALC and Noise suppression&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds controls to set following ALC parameters,&lt;br /&gt;
:   - Max gain, Min gain, Noise gain, Attack rate, Release rate and delay&lt;br /&gt;
:   &lt;br /&gt;
:   It also adds a switch to enable/disable noise suppression.&lt;br /&gt;
:   &lt;br /&gt;
:   As per DA7210 data sheet, ALC and noise suppression can be enabled&lt;br /&gt;
:   only if certain conditions are met. This condition checks are handled&lt;br /&gt;
:   by simply using &amp;quot;_EXT&amp;quot; version of controls to capture change events.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: da7210: Add support for mute and zero cross controls&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds support for below set of controls,&lt;br /&gt;
:   (1) Mute controls for MIC, AUX and ADC&lt;br /&gt;
:   (2) Zero cross controls for head phone, AUX, INPGA and line out&lt;br /&gt;
:   (3) Head phone mode selection - class H or G&lt;br /&gt;
:   &lt;br /&gt;
:   It also adds digital_mute() call back.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: da7210: Add support for High pass and Voice filters for ADC and DAC&lt;br /&gt;
:   &lt;br /&gt;
:   This patch add controls for setting cut-off for high pass and voice&lt;br /&gt;
:   filters of ADC and DAC. There are also switches to enable/disable&lt;br /&gt;
:   these filters.&lt;br /&gt;
:   &lt;br /&gt;
:   Also removed hard coded, fixed  values of these parameters used by&lt;br /&gt;
:   previous version of driver.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: da7210: Add support for ADC &amp;amp; DAC equalizers&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds support for ADC and DAC five band equalizers&lt;br /&gt;
:   available on DA7210 codec.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: da7210: bugfix for head phone volume control&lt;br /&gt;
:   &lt;br /&gt;
:   This patch takes care of reserved bits of headphone volume&lt;br /&gt;
:   register by using correct volume range.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert DA7210 to table based DAPM init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: da7210: Add support for other DAI word lengths, format and mode&lt;br /&gt;
:   &lt;br /&gt;
:   This patchs adds support for following,&lt;br /&gt;
:   (1) DAI 20 and 32 bit word sizes&lt;br /&gt;
:   (2) DAI left and right justified formats&lt;br /&gt;
:   (3) DAI slave mode&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: da7210: convert to soc-cache&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec DFBM-CS320 bluethooth===&lt;br /&gt;
: - ASoC: Add driver for the dfbmcs320 bluetooth module&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds a codec driver for the dfbmcs320 bluetooth module, which is used&lt;br /&gt;
:   on the neo1973 boards.&lt;br /&gt;
:   &lt;br /&gt;
:   The patch also modifies the neo1937_wm8753 sound board driver to use the new&lt;br /&gt;
:   driver instead of registering the bluetooth DAI manually.&lt;br /&gt;
:   Previously there was a name mismatch between the bluetooth DAI and the bluetooth&lt;br /&gt;
:   DAI link and the sound card was not instantiated, with this patch the issue is&lt;br /&gt;
:   no longer present and sound support works again.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec DIT SPDI/F===&lt;br /&gt;
: - ASoC: spdif-dit: Add missing MODULE_*&lt;br /&gt;
:   &lt;br /&gt;
:   MODULE_ALIAS is required so that the module will auto-load based on a&lt;br /&gt;
:   platform_device registration in the board file.&lt;br /&gt;
:   &lt;br /&gt;
:   While we're at it, add some other MODULE_*.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec Freescale SGTL5000===&lt;br /&gt;
: - ASoC: sgtl5000: update author email address&lt;br /&gt;
:   &lt;br /&gt;
:   Update MODULE_AUTHOR email address.&lt;br /&gt;
:   &lt;br /&gt;
: - regulator: pass additional of_node to regulator_register()&lt;br /&gt;
:   &lt;br /&gt;
:   With device tree support for regulators, its needed that the&lt;br /&gt;
:   regulator_dev-&amp;amp;gt;dev device has the right of_node attached.&lt;br /&gt;
:   To be able to do this add an additional parameter to the&lt;br /&gt;
:   regulator_register() api, wherein the dt-adapted driver can&lt;br /&gt;
:   then pass this additional info onto the regulator core.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert sgtl5000 to use devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
:   Convert sgtl5000 codec driver to use devm_kzalloc().&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sgtl5000: Fix voltage units in dev_err message&lt;br /&gt;
:   &lt;br /&gt;
:   vdda, vddio and vddd are voltages expressed in milivolts (mV), so use the&lt;br /&gt;
:   proper annotation.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sgtl5000: fix DB_RANGE size&lt;br /&gt;
:   &lt;br /&gt;
:   Give the correct number of entries to TLV_DB_RANGE_HEAD to prevent&lt;br /&gt;
:   reading more data than actually is in the array.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sgtl5000: Fix wrong mask in some snd_soc_update_bits calls&lt;br /&gt;
:   &lt;br /&gt;
:   Ensure all mask bits are clear before setting new value.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Use SGTL5000_LINREG_VDDD_MASK instead of hardcoded mask value&lt;br /&gt;
:   &lt;br /&gt;
:   We have defined SGTL5000_LINREG_VDDD_MASK in sgtl5000.h,&lt;br /&gt;
:   use it instead of hardcoded (0x1 &amp;amp;lt;&amp;amp;lt; 4) - 1 for the mask.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Set sgtl5000-&amp;amp;gt;ldo in ldo_regulator_register&lt;br /&gt;
:   &lt;br /&gt;
:   Otherwise calling ldo_regulator_remove() does not unregister regulator&lt;br /&gt;
:   and free memories.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sgtl5000: Fix setting mic bias resistor&lt;br /&gt;
:   &lt;br /&gt;
:   According to the datasheet:&lt;br /&gt;
:   CHIP_MIC_CTRL 0x002A&lt;br /&gt;
:   &lt;br /&gt;
:   BITS[9:8] BIAS_RESISTOR&lt;br /&gt;
:   0x0 = Powerd off&lt;br /&gt;
:   0x1 = 2.0 kohm&lt;br /&gt;
:   0x2 = 4.0 kohm&lt;br /&gt;
:   0x3 = 8.0 kohm&lt;br /&gt;
:   &lt;br /&gt;
:   To set mic bias resistor, we need to update bits[9:8] of&lt;br /&gt;
:   SGTL5000_CHIP_MIC_CTRL register.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sgtl5000: Fix define for SGTL5000_BIAS_R_MASK&lt;br /&gt;
:   &lt;br /&gt;
:   According to the datasheet:&lt;br /&gt;
:   CHIP_MIC_CTRL 0x002A&lt;br /&gt;
:   &lt;br /&gt;
:   BITS[9:8] BIAS_RESISTOR&lt;br /&gt;
:   0x0 = Powerd off&lt;br /&gt;
:   0x1 = 2.0 kohm&lt;br /&gt;
:   0x2 = 4.0 kohm&lt;br /&gt;
:   0x3 = 8.0 kohm&lt;br /&gt;
:   &lt;br /&gt;
:   Thus SGTL5000_BIAS_R_MASK should be defined as 0x0300 instead of 0x0200.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sgtl5000: fix module device table type for sgtl5000_dt_ids&lt;br /&gt;
:   &lt;br /&gt;
:   The module device table for of_device_id should use &amp;quot;of&amp;quot; type.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sgtl5000: add device tree probe support&lt;br /&gt;
:   &lt;br /&gt;
:   It adds device tree probe support for sgtl5000 driver.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sgtl5000: fix cache handling&lt;br /&gt;
:   &lt;br /&gt;
:   Cache handling in this driver is broken. The chip has 16-bit registers, yet the&lt;br /&gt;
:   register numbers also increase by 2 per register, i.e.  there are only&lt;br /&gt;
:   even-numbered registers. The cache in this driver, though, simply increments&lt;br /&gt;
:   register numbers, so it does need some mapping as seen in&lt;br /&gt;
:   sgtl5000_restore_regs(), note the '&amp;amp;gt;&amp;amp;gt; 1':&lt;br /&gt;
:   &lt;br /&gt;
:   snd_soc_write(codec, SGTL5000_CHIP_LINREG_CTRL,&lt;br /&gt;
:   cache[SGTL5000_CHIP_LINREG_CTRL &amp;amp;gt;&amp;amp;gt; 1]);&lt;br /&gt;
:   &lt;br /&gt;
:   That, of course, won't work with snd_soc_update_bits(). (Thus, we won't even&lt;br /&gt;
:   notice the missing register 0x1c in the default regs which shifted all follwing&lt;br /&gt;
:   registers to wrong values.) Noticed on the MX28EVK where enabling the regulators&lt;br /&gt;
:   simply locked up the chip.&lt;br /&gt;
:   &lt;br /&gt;
:   Refactor the routines and use a properly sized default_regs array which matches&lt;br /&gt;
:   the register layout of the underlying chip, i.e. create a truly flat cache.&lt;br /&gt;
:   This also saves some code which should make up for the bigger array a little.&lt;br /&gt;
:   When soc-core will somewhen have another cache type which handles a step size,&lt;br /&gt;
:   this conversion will also ease the transition.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Dong Aisheng &amp;amp;lt;b29396@freescale.com&amp;amp;gt;&lt;br /&gt;
:   Tested-by: Shawn Guo &amp;amp;lt;shawn.guo@linaro.org&amp;amp;gt;&lt;br /&gt;
: - ASoC: sgtl5000: guide user when regulator support is needed&lt;br /&gt;
:   &lt;br /&gt;
:   Print a hint when the user has a setup where CONFIG_REGULATOR is really&lt;br /&gt;
:   needed to make the driver work.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Dong Aisheng &amp;amp;lt;b29396@freescale.com&amp;amp;gt;&lt;br /&gt;
:   Tested-by: Shawn Guo &amp;amp;lt;shawn.guo@freescale.com&amp;amp;gt;&lt;br /&gt;
: - ASoC: sgtl5000: refactor registering internal ldo&lt;br /&gt;
:   &lt;br /&gt;
:   The code for registering the internal ldo was present twice. Turn it&lt;br /&gt;
:   into a function instead. Also, inform the user if LDO is used now.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Dong Aisheng &amp;amp;lt;b29396@freescale.com&amp;amp;gt;&lt;br /&gt;
:   Tested-by: Shawn Guo &amp;amp;lt;shawn.guo@freescale.com&amp;amp;gt;&lt;br /&gt;
: - ASoC: Support !REGULATOR build for sgtl5000&lt;br /&gt;
:   &lt;br /&gt;
:   The regulator is optional depending on board design.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sgtl5000: use after free in ldo_regulator_register()&lt;br /&gt;
:   &lt;br /&gt;
:   The &amp;quot;ldo&amp;quot; variable was dereferenced after free on the error path.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Staticise non-exported symbols in SGTL5000&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: remove unnecessary header including in SGTL5000 codec driver&lt;br /&gt;
:   &lt;br /&gt;
:   Remove unnecessary headers:&lt;br /&gt;
:   - mach/hardware.h in sgtl5000.c&lt;br /&gt;
:   - linux/i2c.h in sgtl5000.h&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add Freescale SGTL5000 codec support&lt;br /&gt;
:   &lt;br /&gt;
:   Add Freescale SGTL5000 codec support.&lt;br /&gt;
:   Supported features:&lt;br /&gt;
:   - line-in and mic input&lt;br /&gt;
:   - headphone and line-out output&lt;br /&gt;
:   - line-in bypass ADC and DAC to headphone&lt;br /&gt;
:   - 16, 20, 24, 32 bit audio&lt;br /&gt;
:   - 8 ~ 96k sample rates&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec General Digital MICs===&lt;br /&gt;
: - ASoC: DMIC codec - Add input widget&lt;br /&gt;
:   &lt;br /&gt;
:   Digital microphones can have some additional elements in their&lt;br /&gt;
:   audio path (like microphone bias). An input widget is required&lt;br /&gt;
:   for digital microphone CODEC driver to allow external connections&lt;br /&gt;
:   in machine drivers.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec Ingenic JZ4740===&lt;br /&gt;
: - ASoC: Convert jz4740 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Include linux/io.h for jz4740 codec&lt;br /&gt;
:   &lt;br /&gt;
:   Include linux/io.h to fix below build errors:&lt;br /&gt;
:   &lt;br /&gt;
:   CC      sound/soc/codecs/jz4740.o&lt;br /&gt;
:   sound/soc/codecs/jz4740.c: In function 'jz4740_codec_read':&lt;br /&gt;
:   sound/soc/codecs/jz4740.c:82: error: implicit declaration of function 'readl'&lt;br /&gt;
:   sound/soc/codecs/jz4740.c: In function 'jz4740_codec_write':&lt;br /&gt;
:   sound/soc/codecs/jz4740.c:92: error: implicit declaration of function 'writel'&lt;br /&gt;
:   sound/soc/codecs/jz4740.c: In function 'jz4740_codec_probe':&lt;br /&gt;
:   sound/soc/codecs/jz4740.c:373: error: implicit declaration of function 'ioremap'&lt;br /&gt;
:   sound/soc/codecs/jz4740.c:373: warning: assignment makes pointer from integer without a cast&lt;br /&gt;
:   sound/soc/codecs/jz4740.c:393: error: implicit declaration of function 'iounmap'&lt;br /&gt;
:   make[3]: *** [sound/soc/codecs/jz4740.o] Error 1&lt;br /&gt;
:   make[2]: *** [sound/soc/codecs] Error 2&lt;br /&gt;
:   make[1]: *** [sound/soc] Error 2&lt;br /&gt;
:   make: *** [sound] Error 2&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: codecs: JZ4740: Convert to table based controls and DAPM setup&lt;br /&gt;
:   &lt;br /&gt;
:   Use the newly introduced dapm_widgets, dpam_routes and controls fields of the&lt;br /&gt;
:   snd_soc_dai_driver struct to setup controls and DAPM.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: codecs: JZ4740: Fix OOPS&lt;br /&gt;
:   &lt;br /&gt;
:   Commit ce6120cc(ASoC: Decouple DAPM from CODECs) changed the signature of&lt;br /&gt;
:   snd_soc_dapm_widgets_new to take an pointer to a snd_soc_dapm_context instead of&lt;br /&gt;
:   a snd_soc_codec. The call to snd_soc_dapm_widgets_new in jz4740_codec_dev_probe&lt;br /&gt;
:   was not updated to reflect this change, which results in a compiletime warning&lt;br /&gt;
:   and a runtime OOPS.&lt;br /&gt;
:   &lt;br /&gt;
:   Since the core code calls snd_soc_dapm_widgets_new after the codec has been&lt;br /&gt;
:   registered it can be dropped here.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec LM4857===&lt;br /&gt;
: - ASoC: Convert lm4857 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove references to linux@wolfsonmicro.com&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: neo1973_wm8753: Move lm4857 specefic code to its own module&lt;br /&gt;
:   &lt;br /&gt;
:   This patch moves the code for the lm4857 AMP from the neo1973_wm8753 sound&lt;br /&gt;
:   board driver to its own module.&lt;br /&gt;
:   The lm4857 is a generic AMP IC and not specific to the neo1973.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec MAX98088===&lt;br /&gt;
: - ASoC: Convert max98088 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: max98088 codec: Catch driver bugs for eq channel name&lt;br /&gt;
:   &lt;br /&gt;
:   Move the EQ channel names to a separate array and iterate over it in&lt;br /&gt;
:   max98088_get_channel rather than duplicating the hardcoded channel&lt;br /&gt;
:   names. Add an error message if an invalid channel is passed and check&lt;br /&gt;
:   the error in the callers.&lt;br /&gt;
:   &lt;br /&gt;
:   Also added a BUILD_BUG_ON to ensure that the eq_mode_name and controls&lt;br /&gt;
:   arrays are the same size.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove unused &amp;quot;control_data&amp;quot; field of struct max98088_priv&lt;br /&gt;
:   &lt;br /&gt;
:   The control_data field is used to initialize the codec's control_data field,&lt;br /&gt;
:   but since this is also done by the snd-soc-cache core, the redundant&lt;br /&gt;
:   assignment can be removed and the field can be dropped.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove redundant freq assignment for&lt;br /&gt;
:   max98095-&amp;amp;gt;sysclk/max98088-&amp;amp;gt;sysclk&lt;br /&gt;
:   &lt;br /&gt;
:   Current implementation set max98095-&amp;amp;gt;sysclk/max98088-&amp;amp;gt;sysclk to freq twice.&lt;br /&gt;
:   Set it once is enough, this patch removes the first assignment in case&lt;br /&gt;
:   we may set invalid clock frequency to max98095-&amp;amp;gt;sysclk/max98088-&amp;amp;gt;sysclk.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: codecs: max98088: Added digital mute function in DAI1 and DAI2&lt;br /&gt;
:   &lt;br /&gt;
:   Added digital mute function in DAI1 and DAI2.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: codecs: max98088: Moved the EX Limiter Mode from dapm widget to control&lt;br /&gt;
:   &lt;br /&gt;
:   Moved the EX Limiter Mode from dapm widget to control, because it was not&lt;br /&gt;
:   required DAPM route.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: codecs: max98088: Fixed invalid register definitions in mixer controls&lt;br /&gt;
:   &lt;br /&gt;
:   Fixed invalid register definitions in mixer controls such as left&lt;br /&gt;
:   speaker mixer, left hp mixer and left rec mixer.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Use data based init for max98088 DAPM&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec MAX98095===&lt;br /&gt;
: - ASoC: Convert max98095 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: max98095: Convert codec-&amp;amp;gt;hw_write to snd_soc_write&lt;br /&gt;
:   &lt;br /&gt;
:   codec-&amp;amp;gt;hw_write is broken now, convert codec-&amp;amp;gt;hw_write to snd_soc_write.&lt;br /&gt;
:   &lt;br /&gt;
:   The hardware has 2 banks of registers sharing a section in I2C register space.&lt;br /&gt;
:   The 1st bank is the primary one and is cached.&lt;br /&gt;
:   The 2nd bank is for loading coefficients only and they do not need cache.&lt;br /&gt;
:   These coefficients registers are therefore direct writes.&lt;br /&gt;
:   Thus we set cache_bypass flag to deal with this before calling snd_soc_write.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: max98095 codec: Catch driver bugs for biquad channel name&lt;br /&gt;
:   &lt;br /&gt;
:   Move the biquad channel names to a separate array and iterate over it in&lt;br /&gt;
:   max98095_get_bq_channel rather than duplicating the hardcoded channel&lt;br /&gt;
:   names. Add an error message if an invalid channel is passed and check&lt;br /&gt;
:   the error in the callers.&lt;br /&gt;
:   &lt;br /&gt;
:   Also added a BUILD_BUG_ON to ensure that the bq_mode_name and controls&lt;br /&gt;
:   arrays are the same size.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove unused &amp;quot;control_data&amp;quot; field of struct max98095_priv&lt;br /&gt;
:   &lt;br /&gt;
:   The control_data field is used to initialize the codec's control_data field,&lt;br /&gt;
:   but since this is also done by the snd-soc-cache core, the redundant&lt;br /&gt;
:   assignment can be removed and the field can be dropped.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: codecs: Max98095: Fix logging of hardware revision.&lt;br /&gt;
:   &lt;br /&gt;
:   The base hardware revision of the Maxim 98095 part is 0x40; the code&lt;br /&gt;
:   which outputs the revision of the hardware has been updated to&lt;br /&gt;
:   properly use uppercase alphabetic values for the revision numbers.&lt;br /&gt;
:   &lt;br /&gt;
:   Also, the use of a constant for the length 'max98095_dai' has been&lt;br /&gt;
:   replaced with ARRAY_SIZE().&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Max98095: Move existing NULL check before pointer dereference.&lt;br /&gt;
:   &lt;br /&gt;
:   Visual inspection shows that max98095_put_eq_enum() and&lt;br /&gt;
:   max98095_put_bq_enum() each have a possible NULL deref of 'pdata'.&lt;br /&gt;
:   &lt;br /&gt;
:   This change moves the NULL check above the use.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add EQ and filter to max98095 CODEC driver&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds the equalizer and biquad filter controls.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove redundant freq assignment for&lt;br /&gt;
:   max98095-&amp;amp;gt;sysclk/max98088-&amp;amp;gt;sysclk&lt;br /&gt;
:   &lt;br /&gt;
:   Current implementation set max98095-&amp;amp;gt;sysclk/max98088-&amp;amp;gt;sysclk to freq twice.&lt;br /&gt;
:   Set it once is enough, this patch removes the first assignment in case&lt;br /&gt;
:   we may set invalid clock frequency to max98095-&amp;amp;gt;sysclk/max98088-&amp;amp;gt;sysclk.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add max98095 CODEC driver&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds the MAX98095 CODEC driver.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec MAX9850===&lt;br /&gt;
: - ASoC: Convert max9850 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert max9850 to table based DAPM and control init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix spacing in MAX8950&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add MAX9850 codec driver&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds ASoC support for the MAX9850 codec with headphone&lt;br /&gt;
:   amplifier.&lt;br /&gt;
:   &lt;br /&gt;
:   Supported features:&lt;br /&gt;
:   - Playback&lt;br /&gt;
:   - 16, 20 and 24 bit audio&lt;br /&gt;
:   - 8k - 48k sample rates&lt;br /&gt;
:   - DAPM&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec MAX9877===&lt;br /&gt;
: - ASoC: max9877: Update register if either val or val2 is changed&lt;br /&gt;
:   &lt;br /&gt;
:   In the case of ((max9877_regs[reg] &amp;amp;gt;&amp;amp;gt; shift) &amp;amp; mask) != val&lt;br /&gt;
:   but ((max9877_regs[reg2] &amp;amp;gt;&amp;amp;gt; shift) &amp;amp; mask) == val2,&lt;br /&gt;
:   current code does not update the registers.&lt;br /&gt;
:   &lt;br /&gt;
:   Fix the logic to update registers if either val or val2 is changed.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec Philips UDA134x===&lt;br /&gt;
: - ASoC: UDA134x: Remove POWER_OFF_ON_STANDBY define.&lt;br /&gt;
:   &lt;br /&gt;
:   Define POWER_OFF_ON_STANDBY cause trobles when trying to get some&lt;br /&gt;
:   sound from codec because code for bias setup was not compiled&lt;br /&gt;
:   (define wasn't defined). This define was removed in commit:&lt;br /&gt;
:   cc3202f5 but again introduced by commit: f0fba2ad1 which then&lt;br /&gt;
:   completely break codec functionality so remove it again.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: mini2440: Fix uda134x codec problem.&lt;br /&gt;
:   &lt;br /&gt;
:   ASoC audio for mini2440 platform in current kenrel doesn't work.&lt;br /&gt;
:   First problem is samsung_asoc_dma device is missing in initialization.&lt;br /&gt;
:   Next problem is with codec. Codec is initialized but never probed&lt;br /&gt;
:   because no platform_device exist for codec driver. It leads to errors&lt;br /&gt;
:   during codec binding to asoc dai. Next problem was platform data which&lt;br /&gt;
:   was passed from board to asoc main driver but not passed to codec when&lt;br /&gt;
:   called codec_soc_probe().&lt;br /&gt;
:   &lt;br /&gt;
:   Following patch should fix issues. But not sure if in correct way.&lt;br /&gt;
:   Please review.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec Philips UDA1380===&lt;br /&gt;
: - ASoC: Convert uda1380 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert uda1380 to table based DAPM and control init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: uda1380: Convert to gpio_request_one()&lt;br /&gt;
:   &lt;br /&gt;
:   Using gpio_request_one can make the error handling simpler.&lt;br /&gt;
:   &lt;br /&gt;
:   Also remove a redundant &amp;quot;Failed to issue reset&amp;quot; error message.&lt;br /&gt;
:   We already show the error message in uda1380_reset() error path.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: uda1380: Return proper error in uda1380_modinit failure path&lt;br /&gt;
:   &lt;br /&gt;
:   Return proper error for uda1380_modinit if i2c_add_driver() fails.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec RT5631===&lt;br /&gt;
: - ASoC: Convert rt5631 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: rt5631: fix DB_RANGE size&lt;br /&gt;
:   &lt;br /&gt;
:   Give the correct number of entries to TLV_DB_RANGE_HEAD to prevent&lt;br /&gt;
:   the last entry from being omitted.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: rt5631: Remove unused codec field from struct rt5631_priv&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove unused function check_vdac_to_outmix from rt5631&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Staticise non-exported symbols in rt5631&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Staticize rt5631_dai&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add driver for rt5631&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec SSM2602===&lt;br /&gt;
: - ASoC: Convert ssm2602 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ssm2602: Use snd_soc_update_bits for read-modify-write&lt;br /&gt;
:   &lt;br /&gt;
:   Use snd_soc_update_bits for read-modify-write register access instead of&lt;br /&gt;
:   open-coding it using snd_soc_read and snd_soc_write&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ssm2602: Support setting the oscillator and the clock output state&lt;br /&gt;
:   &lt;br /&gt;
:   Currently the oscillator is always enabled and the clock output is always&lt;br /&gt;
:   disabled. This patch adds support for controlling the oscillator and clock&lt;br /&gt;
:   output state through snd_soc_dai_set_sysclk. Which makes it possible to&lt;br /&gt;
:   disable or enable them dynamically according to the requirements of the board&lt;br /&gt;
:   on which the CODEC is used.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch also slightly modifies the behavior as to when the oscillator is&lt;br /&gt;
:   going to be disabled in low-power states. Previously it would only be disabled&lt;br /&gt;
:   in BIAS_OFF, now it is also going to be disabled in BIAS_STANDBY, since no&lt;br /&gt;
:   components which depend on it should be active in this state.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ssm2602: Set initial bias level to standby&lt;br /&gt;
:   &lt;br /&gt;
:   Set the initial bias level to standby during CODEC probe instead of leaving the&lt;br /&gt;
:   CODEC powered off.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ssm2602: Re-enable oscillator after suspend&lt;br /&gt;
:   &lt;br /&gt;
:   Currently the the internal oscillator is powered down when entering BIAS_OFF&lt;br /&gt;
:   state, but not re-enabled when going back to BIAS_STANDBY. As a result the&lt;br /&gt;
:   CODEC will stop working after suspend if the internal oscillator is used to&lt;br /&gt;
:   generate the sysclock signal. This patch fixes it by clearing the appropriate&lt;br /&gt;
:   bit in the power down register when the CODEC is re-enabled.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: ssm2602: Do not dereference codec-&amp;amp;gt;control_data&lt;br /&gt;
:   &lt;br /&gt;
:   The driver assumes that control_data points to the drivers i2c_client struct,&lt;br /&gt;
:   but this is no longer the case since the ASoC core has switched to regmap.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix NULL vs. 0 warning in SSM2602&lt;br /&gt;
:   &lt;br /&gt;
:   sparse complains if 0 is used as a NULL pointer constant.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SSM2602: Provide dB ranges for the volume controls&lt;br /&gt;
:   &lt;br /&gt;
:   Also fix the maximum value for the capture volume control.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SSM2602: Model power supply for the digital core as a DAPM widget&lt;br /&gt;
:   &lt;br /&gt;
:   Model the power supply for the digital core as a DAPM_SUPPLY widget. This allows&lt;br /&gt;
:   to cleanup the code a bit.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SSM2602: Add entry for the ssm2603 to the device id table&lt;br /&gt;
:   &lt;br /&gt;
:   The SSM2603 is mostly register compatible with the SSM2602 and can be supported&lt;br /&gt;
:   by the current driver without any changes.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SSM2602: Add SSM2604 support&lt;br /&gt;
:   &lt;br /&gt;
:   The SSM2604 is basically a lightweight variant of the SSM2602 with a compatible&lt;br /&gt;
:   register layout. Thus we can easily support both devices by the same driver,&lt;br /&gt;
:   by providing a slightly set of controls, widgets and routes.&lt;br /&gt;
:   &lt;br /&gt;
:   Compared to the SSM2602 the SSM2604 has no microphone input and no headphone&lt;br /&gt;
:   output.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SSM2602: Fix reg_cache_size&lt;br /&gt;
:   &lt;br /&gt;
:   reg_cache_size is supposed to be the number of elements in the register cache,&lt;br /&gt;
:   not the size in bytes.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SSM2602: Do not power the codec up in probe&lt;br /&gt;
:   &lt;br /&gt;
:   It is not required to have the codec powered at this stage and DAPM will power&lt;br /&gt;
:   the ADC and DAC down again after probe has run anyway.&lt;br /&gt;
:   Thus we avoid some unnecessary writes by this change.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SSM2602: Fix default register cache&lt;br /&gt;
:   &lt;br /&gt;
:   Some of the values in the default register cache did not represent the codecs&lt;br /&gt;
:   state after reset. This patch fixes it.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SSM2602: Remove unused struct and define&lt;br /&gt;
:   &lt;br /&gt;
:   Those are leftovers from a pre-multicomponent era.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SSM2602: Remove duplicate control&lt;br /&gt;
:   &lt;br /&gt;
:   There are currently two controls which allow selecting the capture source, one&lt;br /&gt;
:   as a normal control, the other as part of a DAPM_MUX widget.&lt;br /&gt;
:   Remove the normal control.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SSM2602: Cleanup coeff handling&lt;br /&gt;
:   &lt;br /&gt;
:   Drop unused field from the coeff struct, precalculate the srate register at&lt;br /&gt;
:   compile-time and cleanup up the naming.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SSM2602: Fix 'Mic Boost2' control&lt;br /&gt;
:   &lt;br /&gt;
:   The 'Mic Boost2' control's shift was off by one and thus was not working.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SSM2602: Properly annotate i2c probe and remove functions&lt;br /&gt;
:   &lt;br /&gt;
:   Annotate the i2c probe and remove functions with __devinit and __devexit.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SSM2602: add SPI support&lt;br /&gt;
:   &lt;br /&gt;
:   The ssm2602 codec has a SPI interface as well as I2C, so add the simple&lt;br /&gt;
:   bit of glue to make it usable.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SSM2602: convert to soc-cache&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SSM2602: fix codec name&lt;br /&gt;
:   &lt;br /&gt;
:   The codec name should not have a &amp;quot;-codec&amp;quot; suffix since this is not part of&lt;br /&gt;
:   a MFD.  This was incorrectly changed during the multi-component updated.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec STA32X===&lt;br /&gt;
: - ASoC: sta32x: Optimize the array work to find rate_min and rate_max&lt;br /&gt;
:   &lt;br /&gt;
:   For a given ir and fs, there is at most one possible match for the case&lt;br /&gt;
:   mclk_ratios[ir][j].ratio * fs == freq.&lt;br /&gt;
:   Thus we can break from the inner loop once a match is found.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert sta32x to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Staticise non-exported symbols in sta32x&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sta32x: add workaround for ESD reset issue&lt;br /&gt;
:   &lt;br /&gt;
:   sta32x resets and loses all configuration during ESD test.&lt;br /&gt;
:   Work around by polling the CONFA register once a second&lt;br /&gt;
:   and restore all coeffcients and registers when CONFA&lt;br /&gt;
:   changes unexpectedly.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sta32x: add platform data definition&lt;br /&gt;
:   &lt;br /&gt;
:   Add a structure for platform specific configuration and use it,&lt;br /&gt;
:   thereby removing a few FIXMEs which marked hard-coded values.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sta32x: preserve coefficient RAM&lt;br /&gt;
:   &lt;br /&gt;
:   The coefficient RAM must be saved in a shadow so it can&lt;br /&gt;
:   be restored when the codec is powered on using&lt;br /&gt;
:   regulator_bulk_enable().&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sta32x: Write the register default value to cache for reserved registers&lt;br /&gt;
:   &lt;br /&gt;
:   Chip documentation explicitly requires that the reset values&lt;br /&gt;
:   of reserved register bits are left untouched.&lt;br /&gt;
:   &lt;br /&gt;
:   codec-&amp;amp;gt;hw_read is broken now.&lt;br /&gt;
:   Here we use below trick to avoid writing to reserved registers while resume.&lt;br /&gt;
:   Write the register default value to cache for reserved registers,&lt;br /&gt;
:   so the write to the these registers are suppressed by the cache&lt;br /&gt;
:   restore code when it skips writes of default registers.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sta32x: Set reg_cache_default to sta32x_regs&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sta32x: Move resource allocation and release to the corresponding callback functions&lt;br /&gt;
:   &lt;br /&gt;
:   This patch includes below small fixes:&lt;br /&gt;
:   &lt;br /&gt;
:   1. Move sta32x_set_bias_level() from sta32x_i2c_remove() to sta32x_remove().&lt;br /&gt;
:   2. Remove a redundant regulator_bulk_free() call in sta32x_i2c_remove(),&lt;br /&gt;
:   as we will call regulator_bulk_free() in sta32x_remove().&lt;br /&gt;
:   3. Remove unneeded snd_soc_codec_set_drvdata(codec, NULL) in sta32x_i2c_remove.&lt;br /&gt;
:   The i2c core will set the clientdata to NULL.&lt;br /&gt;
:   &lt;br /&gt;
:   Johannes Stezenbach &amp;amp;lt;js@sig21.net&amp;amp;gt;&lt;br /&gt;
: - ASoC: sta32x: shortcut the for loop to get ir and mcs&lt;br /&gt;
:   &lt;br /&gt;
:   There is exactly one match or no match at all during the for loop iteration,&lt;br /&gt;
:   thus we can break from the for loop once a match is found.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sta32x: Fix a memory leak if snd_soc_register_codec fails&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: STA32x: Preserve reserved register bits&lt;br /&gt;
:   &lt;br /&gt;
:   Chip documentation explicitly requires that the reset values&lt;br /&gt;
:   of reserved register bits are left untouched.  It is possible&lt;br /&gt;
:   there are differences between STA326 and STA328 or future&lt;br /&gt;
:   chip revisions in these bits, and clobbering them might&lt;br /&gt;
:   cause malfunction.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: STA32x: Add mixer controls for biquad coefficients&lt;br /&gt;
:   &lt;br /&gt;
:   The STA32x has a number of preset EQ settings, but also&lt;br /&gt;
:   allows full user control of the biquad filter coeffcients&lt;br /&gt;
:   (when &amp;quot;Automode EQ&amp;quot; is set to &amp;quot;User&amp;quot;).&lt;br /&gt;
:   Each biquad has five signed, 24bit, fixed-point coefficients&lt;br /&gt;
:   representing the range -1...1.  The five biquad coefficients&lt;br /&gt;
:   can be uploaded in one atomic operation into on-chip&lt;br /&gt;
:   coefficient RAM.&lt;br /&gt;
:   There are also a few prescale, postscale and mixing&lt;br /&gt;
:   coefficients, in the same numeric format and range&lt;br /&gt;
:   (a negative coefficient inverts phase).&lt;br /&gt;
:   &lt;br /&gt;
:   These coefficients are made available as SNDRV_CTL_ELEM_TYPE_BYTES&lt;br /&gt;
:   mixer controls.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: add STA32X codec driver&lt;br /&gt;
:   &lt;br /&gt;
:   [zonque@gmail.com: transform to new ASoC structure]&lt;br /&gt;
===SoC Codec STAC9766===&lt;br /&gt;
: - ASoC: Fix reg_cache_size for stac9766&lt;br /&gt;
:   &lt;br /&gt;
:   reg_cache_size is supposed to be the number of elements in the register cache,&lt;br /&gt;
:   not the size in bytes.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec SigmaDSP Firmare Loader===&lt;br /&gt;
: - ASoC: SigmaDSP: Add regmap support&lt;br /&gt;
:   &lt;br /&gt;
:   Add support for loading the SigmaDSP firmware using regmap. This allows us&lt;br /&gt;
:   to transparently use SPI or I2C as the transport protocol on devices which&lt;br /&gt;
:   support them.&lt;br /&gt;
:   &lt;br /&gt;
:   For now we keep the old I2C support since we have one user of this which is not&lt;br /&gt;
:   straight forward to convert to regmap, due to variable length registers.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SigmaDSP: Move private structs and functions to C file&lt;br /&gt;
:   &lt;br /&gt;
:   Move the structs and functions only used by SigmaDSP firmware loader itself&lt;br /&gt;
:   from the header to the C file.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: SigmaDSP: Provide diagnostic error messages&lt;br /&gt;
:   &lt;br /&gt;
:   Provide some error messages when loading the firmware fails, so it is possible&lt;br /&gt;
:   to diagnose the reason for the failure.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec TI sn95031===&lt;br /&gt;
: - ASoC: Remove needless codec-&amp;amp;gt;dapm.bias_level assignment to SND_SOC_BIAS_OFF&lt;br /&gt;
:   &lt;br /&gt;
:   This assignment is done by the snd_soc_register_codec so there is no need&lt;br /&gt;
:   to redo it in probe function of a codec driver.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sn95031: Do not use static variable for channel_index&lt;br /&gt;
:   &lt;br /&gt;
:   No reason to use static variable for channel_index.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Drop exporting sn95031_get_mic_bias&lt;br /&gt;
:   &lt;br /&gt;
:   sn95031_get_mic_bias() is not used outside this driver&lt;br /&gt;
:   and it is a static function now.&lt;br /&gt;
:   Thus drop exporting sn95031_get_mic_bias.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Staticize sn95031_dais&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sn95031: Staticize sn95031_pcm_hw_params&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sn95031: Fix the logic to find free channel&lt;br /&gt;
:   &lt;br /&gt;
:   In the case of no free channel available,&lt;br /&gt;
:   current implementation returns 0 instead of negative errno.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch fixes the logic to return -EINVAL if no free channel available.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sn95031: decorate function with __devexit_p()&lt;br /&gt;
:   &lt;br /&gt;
:   According to the comments in include/linux/init.h:&lt;br /&gt;
:   &lt;br /&gt;
:   &amp;quot;Pointers to __devexit functions must use __devexit_p(function_name), the&lt;br /&gt;
:   wrapper will insert either the function_name or NULL, depending on the config&lt;br /&gt;
:   options.&amp;quot;&lt;br /&gt;
:   &lt;br /&gt;
:   Fix this issue in codecs sn95031.&lt;br /&gt;
:   &lt;br /&gt;
: - sound: Add delay.h to sound/soc/codecs/sn95031.c&lt;br /&gt;
:   &lt;br /&gt;
:   This is further fallout from delay.h removal from asm/apic.h and asm/dma.h:&lt;br /&gt;
:   &lt;br /&gt;
:   ca444564a947: x86: Stop including &amp;amp;lt;linux/delay.h&amp;amp;gt; in two asm header files&lt;br /&gt;
:   &lt;br /&gt;
:   Which caused this build failure:&lt;br /&gt;
:   &lt;br /&gt;
:   sound/soc/codecs/sn95031.c: In function ‘sn95031_get_mic_bias’:&lt;br /&gt;
:   sound/soc/codecs/sn95031.c:153:2: error: implicit declaration of function ‘msleep’ [-Werror=implicit-function-declaration]&lt;br /&gt;
:   &lt;br /&gt;
:   LKML-Reference: &amp;amp;lt;20110325152014.297890ec@endymion.delvare&amp;amp;gt;&lt;br /&gt;
: - ASoC: Use data based init for sn95031 DAPM&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sn95031: fix the amic tlv scale&lt;br /&gt;
:   &lt;br /&gt;
:   The tlv scale is defined as (min, step, mute). The mute is not supported here so&lt;br /&gt;
:   put the value to 0&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sn95031: fix the DMIC path routing&lt;br /&gt;
:   &lt;br /&gt;
:   This patch makes the DMIC dynamically connect to TX Mux, earlier code had&lt;br /&gt;
:   erroneously made this as static path&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sn95031: make playback rails depend on actual pins they control&lt;br /&gt;
:   &lt;br /&gt;
:   This patch makes the codec playback rails (headset and speaker) depend on&lt;br /&gt;
:   actual pins they control. This enables better power management of the codec&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: mid-x86: Use the soc-jack apis for jack type detection&lt;br /&gt;
:   &lt;br /&gt;
:   This patch modifies the mfld_machine to use the new jack apis for adding the&lt;br /&gt;
:   voltage zones for jack type detection. It also modifed TI sn95031 codec driver&lt;br /&gt;
:   to use these new apis&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sn95031: Add support for reading mic bias&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds support to read the mic bias voltage&lt;br /&gt;
:   when a jack is inserted. It uses ADC to measure.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sn95031: Add jack support in the codec&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds support for jack detection and reporting in the codec&lt;br /&gt;
:   It however is not fully functional as it doesn't measure adc to figure&lt;br /&gt;
:   out what got inserted which will be added later&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: sn95031: add capture support&lt;br /&gt;
:   &lt;br /&gt;
:   This patch adds the support for capture path in sn95031 codec.&lt;br /&gt;
:   This codec supports upto 6DMICs, 2 AMICs and Linein. The linein and AMICs&lt;br /&gt;
:   are connected through a MUX to ADC. The TX paths can be assigned to any of the&lt;br /&gt;
:   ADCs or DMICs.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec TLV320AIC23===&lt;br /&gt;
: - ASoC: Convert tlv320aic23 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: tlv320aic23: Clear TLV320AIC23_MS_MASTER bit for slave mode&lt;br /&gt;
:   &lt;br /&gt;
:   According to the datasheet:&lt;br /&gt;
:   &lt;br /&gt;
:   Digital Audio Interface Format (07h) register:&lt;br /&gt;
:   BIT6:	Master/slave mode&lt;br /&gt;
:   0: Slave&lt;br /&gt;
:   1: Master&lt;br /&gt;
:   &lt;br /&gt;
:   Current code sets TLV320AIC23_MS_MASTER bit for master mode,&lt;br /&gt;
:   but does not clear it for slave mode.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: tlv320aic23: convert to soc-cache&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Consolidate use of controls with custom get/put function&lt;br /&gt;
:   &lt;br /&gt;
:   Use the macros for controls require custom get/put function.&lt;br /&gt;
:   This is to make sure that the soc_mixer_control is used&lt;br /&gt;
:   consistently among the drivers.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Use data based init for tlv320aic23 DAPM&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec TLV320AIC26===&lt;br /&gt;
: - ASoC: Convert tlv320aic26 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - audio: tlv320aic26: fix PLL register configuration&lt;br /&gt;
:   &lt;br /&gt;
:   The current PLL configuration code for the tlc320aic26 codec appears to assume a&lt;br /&gt;
:   hardcoded system clock of 12 MHz.  Use the clock value provided by the DAI_OPS&lt;br /&gt;
:   API for the calculation.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested using a MityDSP-L138 platform providing a 24.576 MHz clock.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec TLV320AIC3X===&lt;br /&gt;
: - ASoC: Convert tlv320aic3x to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove conditional I2C usage from tlv320aic3x driver&lt;br /&gt;
:   &lt;br /&gt;
:   The driver only supports I2C so doesn't need to do things conditionally.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: tlv320aic3x: Use snd_soc_update_bits for read-modify-write&lt;br /&gt;
:   &lt;br /&gt;
:   Use snd_soc_update_bits for read-modify-write register access instead of&lt;br /&gt;
:   open-coding it using snd_soc_read and snd_soc_write&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: tlv320aic3x: Clear BIT_CLK_MASTER and WORD_CLK_MASTER bits for for slave mode&lt;br /&gt;
:   &lt;br /&gt;
:   According to the datasheet:&lt;br /&gt;
:   &lt;br /&gt;
:   Page0 / Register8: Audio Serial Data interface Control Register A&lt;br /&gt;
:   BIT 7: Bit Clock Directional Control&lt;br /&gt;
:   0: Bit clock is an input (slave mode)&lt;br /&gt;
:   1: Bit clock is an output (master mode)&lt;br /&gt;
:   &lt;br /&gt;
:   BIT 6: Word Clock Directional Control&lt;br /&gt;
:   0: Word clock is an input (slave mode)&lt;br /&gt;
:   1: Word clock is an output (master mode)&lt;br /&gt;
:   &lt;br /&gt;
:   Current code sets BIT_CLK_MASTER and WORD_CLK_MASTER bits for master mode,&lt;br /&gt;
:   but does not clear these bits for slave mode.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: tlv320aic3x: Convert codec-&amp;amp;gt;hw_read to snd_soc_read&lt;br /&gt;
:   &lt;br /&gt;
:   codec-&amp;amp;gt;hw_read is broken now, let's covert to snd_soc_read.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix DAPM sync for TLV320AIC3x custom DAPM widget&lt;br /&gt;
:   &lt;br /&gt;
:   We really should be doing this in the core, not in a driver...&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Jarkko Nikula &amp;amp;lt;jarkko.nikula@bitmer.com&amp;amp;gt;&lt;br /&gt;
: - ASoC: tlv320aic3x: Use driver_data field of struct i2c_device_id to identify models&lt;br /&gt;
:   &lt;br /&gt;
:   Save model information in driver_data so we can simplify the implementation.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove unused &amp;quot;control_data&amp;quot; field of struct aic3x_priv&lt;br /&gt;
:   &lt;br /&gt;
:   The control_data field is used to initialize the codec's control_data field,&lt;br /&gt;
:   but since this is also done by the snd-soc-cache core, the redundant&lt;br /&gt;
:   assignment can be removed and the field can be dropped.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: omap: Update e-mail address of Jarkko Nikula&lt;br /&gt;
:   &lt;br /&gt;
:   My gmail account got disabled and I'm not going to reopen it.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: tlv320aic3x: Add correct hw registers to Line1 cross connect muxes&lt;br /&gt;
:   &lt;br /&gt;
:   Commit af46800 (&amp;quot;ASoC: Implement mux control sharing&amp;quot;) revealed that&lt;br /&gt;
:   &amp;quot;Left Line1[L | R] Mux&amp;quot; and &amp;quot;Right Line1[L | R] Mux&amp;quot; widgets were pointing&lt;br /&gt;
:   to the same kcontrols and codec registers and thus soc-core falsely detected&lt;br /&gt;
:   them as shared controls. This is actually wrong since there are separate&lt;br /&gt;
:   registers in hardware that configure Line1L to RADC and Line1R to LADC cross&lt;br /&gt;
:   connects so these muxes should not be shared.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: tlv320aic3x: Do soft reset to codec when going to bias off state&lt;br /&gt;
:   &lt;br /&gt;
:   TLV320AIC33, TLV320AIC34 and I believe others too in this family have some&lt;br /&gt;
:   hw bugs that cause that analogue and digital VDD supplies remain leaking&lt;br /&gt;
:   up to a few mA of current after certain use cases even the hw blocks inside&lt;br /&gt;
:   codec are driven to off.&lt;br /&gt;
:   &lt;br /&gt;
:   Highest leakages occur after using the bypass paths inside codec but it&lt;br /&gt;
:   is possible to get smaller leakages just by toggling mute switches in&lt;br /&gt;
:   unused audio paths (i.e. no DAPM changes) while codec is on due another&lt;br /&gt;
:   active audio path.&lt;br /&gt;
:   &lt;br /&gt;
:   While some cases are able to workaroud by making sure that e.g. output mixer&lt;br /&gt;
:   switches are muted before powering down the output stage this doesn't help&lt;br /&gt;
:   all the cases.&lt;br /&gt;
:   &lt;br /&gt;
:   Therefore use the software reset command to clear possible leakage currents&lt;br /&gt;
:   since that works in every cases and affects only this codec instance. Only&lt;br /&gt;
:   drawback is that now cache sync is required everytime when codec bias comes&lt;br /&gt;
:   out from bias off state, not only when supply regulators were off.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: tlv320aic3x: Don't sync first two registers from register cache&lt;br /&gt;
:   &lt;br /&gt;
:   There is no need to sync first two registers from cache to hw after a reset.&lt;br /&gt;
:   First one is used to select page for register access and this driver is&lt;br /&gt;
:   normally accessing page 0 only. Second one does a software reset which is&lt;br /&gt;
:   obviously unneeded after hardware or previous software reset command.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix wrong data type access in a few codec drivers&lt;br /&gt;
:   &lt;br /&gt;
:   Commit fafd217 (&amp;quot;ASoC: Store a list of widgets in a DAPM mux/mixer kcontrol&amp;quot;)&lt;br /&gt;
:   changed the control private data type that is passed to snd_soc_cnew when&lt;br /&gt;
:   creating dapm mixer and mux controls. Commit did not update a few codec&lt;br /&gt;
:   drivers that are using their own put callbacks and thus are accessing a&lt;br /&gt;
:   wrong data type.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Stephen Warren &amp;amp;lt;swarren@nvidia.com&amp;amp;gt;&lt;br /&gt;
===SoC Codec TLV320DAC33===&lt;br /&gt;
: - ASoC: Convert tlv320dac33 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: tlv320dac33: Convert to table based init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: tlv320dac33: Add guarding parentheses to macros&lt;br /&gt;
:   &lt;br /&gt;
:   Put parentheses around macro argument uses. This avoids pitfalls&lt;br /&gt;
:   for the programmer, where the argument expansion does not give the&lt;br /&gt;
:   expected result, for example:&lt;br /&gt;
:   &lt;br /&gt;
:   SAMPLES_TO_US(substream-&amp;amp;gt;runtime-&amp;amp;gt;rate, dac33-&amp;amp;gt;uthr - DAC33_MODE7_MARGIN + 1);&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: tlv320dac33: Update e-mail address&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: tlv320dac33: Lower the OSC calibration time&lt;br /&gt;
:   &lt;br /&gt;
:   To get correct calibration, we can decrease the time&lt;br /&gt;
:   needed for the OSC to calibrate itself.&lt;br /&gt;
:   With this change we can save ~15ms in the OSC&lt;br /&gt;
:   calibration phase.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: tlv320dac33: Move codec power up to DAPM&lt;br /&gt;
:   &lt;br /&gt;
:   Move the codec power on (in reg 0x01, bit 4) from&lt;br /&gt;
:   set_bias_level:SND_SOC_BIAS_ON to a DAPM supply.&lt;br /&gt;
:   In this way we can be sure, that all the things within&lt;br /&gt;
:   the codec is powered before the external amp is&lt;br /&gt;
:   going to be enabled.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: tlv320dac33: Restore L/R DAC power control register&lt;br /&gt;
:   &lt;br /&gt;
:   Register 0x40, 0x41 need to be restored after power up, since&lt;br /&gt;
:   it contains gain related fields, which affects playback volume.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: tlv320dac33: Fix inconsistent spinlock usage&lt;br /&gt;
:   &lt;br /&gt;
:   The lock is used within the interrupt handler.&lt;br /&gt;
:   Correct the spinlock usage, and use irqsave/irqrestore&lt;br /&gt;
:   flavour of spin_lock/unlock.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: tlv320dac33: add MODULE_DEVICE_TABLE&lt;br /&gt;
:   &lt;br /&gt;
:   The device table is required to load modules based on modaliases.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec TPA6130A2===&lt;br /&gt;
: - ASoC: Convert tpa6130a2 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: tpa6130a2: Remove model_id from platform data&lt;br /&gt;
:   &lt;br /&gt;
:   The model_id is no longer needed within the platform_data&lt;br /&gt;
:   for the TPA driver since the model of TPA specified&lt;br /&gt;
:   with the device name (tpa6130a2/tpa6140a2).&lt;br /&gt;
:   &lt;br /&gt;
:   Also update rx51 (the only affected user) to use the device name rather&lt;br /&gt;
:   than platform data.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Jarkko Nikula &amp;amp;lt;jarkko.nikula@bitmer.com&amp;amp;gt;&lt;br /&gt;
: - ASoC: tpa6130a2: Model support cleanup&lt;br /&gt;
:   &lt;br /&gt;
:   Use the device name and driver_data to identify&lt;br /&gt;
:   the TPA model supported by the driver.&lt;br /&gt;
:   Board files should use either &amp;quot;tpa6130a2&amp;quot; or&lt;br /&gt;
:   &amp;quot;tpa6140a2&amp;quot; as device name to specify the model&lt;br /&gt;
:   in used on the specific board.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Jarkko Nikula &amp;amp;lt;jarkko.nikula@bitmer.com&amp;amp;gt;&lt;br /&gt;
: - ASoC: tpa6130a2: Remove obsolete cleanup for clientdata&lt;br /&gt;
:   &lt;br /&gt;
:   The i2c core will clear the clientdata pointer automatically,&lt;br /&gt;
:   we don't have to set the `data' field to NULL in remove() or&lt;br /&gt;
:   if probe() failed anymore.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: tpa6130a2: Update e-mail address&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec TWL4030===&lt;br /&gt;
: - ASoC: twl4030: Convert to table based init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Consolidate use of controls with custom get/put function&lt;br /&gt;
:   &lt;br /&gt;
:   Use the macros for controls require custom get/put function.&lt;br /&gt;
:   This is to make sure that the soc_mixer_control is used&lt;br /&gt;
:   consistently among the drivers.&lt;br /&gt;
:   &lt;br /&gt;
: - MFD: twl4030-audio: Rename platform data&lt;br /&gt;
:   &lt;br /&gt;
:   Allign the platform data names for twl4030 audio submodule:&lt;br /&gt;
:   twl4030_audio_data: for the core MFD driver&lt;br /&gt;
:   twl4030_codec_data: for ASoC codec driver&lt;br /&gt;
:   twl4030_vibra_data: for the input/ForceFeedback driver&lt;br /&gt;
:   &lt;br /&gt;
:   To avoid breakage, change all depending drivers, files&lt;br /&gt;
:   to use the new types.&lt;br /&gt;
:   &lt;br /&gt;
: - MFD: twl4030-codec -&amp;amp;gt; twl4030-audio: Rename the driver&lt;br /&gt;
:   &lt;br /&gt;
:   Rename the driver, and header file from twl4030-codec to&lt;br /&gt;
:   twl4030-audio.&lt;br /&gt;
:   To avoid breakage change depending drivers at the same time.&lt;br /&gt;
:   &lt;br /&gt;
: - mfd: Use mfd cell platform_data for twl4030 codec cells platform&lt;br /&gt;
:   bits&lt;br /&gt;
:   &lt;br /&gt;
:   With the addition of a platform device mfd_cell pointer, MFD drivers&lt;br /&gt;
:   can go back to passing platform data back to their sub drivers.&lt;br /&gt;
:   This allows for an mfd_cell-&amp;amp;gt;mfd_data removal and thus keep the&lt;br /&gt;
:   sub drivers MFD agnostic. This is mostly needed for non MFD aware&lt;br /&gt;
:   sub drivers.&lt;br /&gt;
:   &lt;br /&gt;
: - mfd: mfd_cell is now implicitly available to twl4030 drivers&lt;br /&gt;
:   &lt;br /&gt;
:   The cell's platform_data is now accessed with a helper function;&lt;br /&gt;
:   change clients to use that, and remove the now-unused data_size.&lt;br /&gt;
:   &lt;br /&gt;
: - mfd: Use mfd cell platform_data for twl4030 codec cells platform bits&lt;br /&gt;
:   &lt;br /&gt;
:   With the addition of a platform device mfd_cell pointer, MFD drivers&lt;br /&gt;
:   can go back to passing platform data back to their sub drivers.&lt;br /&gt;
:   This allows for an mfd_cell-&amp;amp;gt;mfd_data removal and thus keep the&lt;br /&gt;
:   sub drivers MFD agnostic. This is mostly needed for non MFD aware&lt;br /&gt;
:   sub drivers.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix spacing in MAX8950&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec TWL6040===&lt;br /&gt;
: - ASoC: twl6040 - Add method to query optimum PDM_DL1 gain&lt;br /&gt;
:   &lt;br /&gt;
:   The DL1 PDM interface adds a little gain depending on the output device.&lt;br /&gt;
:   Add a method to retrieve the gain value for machine driver usage.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Request core to inline the DAPM sequence&lt;br /&gt;
:   &lt;br /&gt;
:   We need to have as less time between McPDM shutdown,&lt;br /&gt;
:   and power down of the DAC on the twl6040 codec as possible.&lt;br /&gt;
:   Request core to ignore the pmdown_time for the playback&lt;br /&gt;
:   stream.&lt;br /&gt;
:   Backround: with the McPDM protocol we are sendning not only&lt;br /&gt;
:   the pure audio stream, but OMAP McPDM also transmits&lt;br /&gt;
:   additional information (for example offset cancellation).&lt;br /&gt;
:   If McPDM is stopped prior to the DAC this information will&lt;br /&gt;
:   be not sent to the codec, which can result noise rendered&lt;br /&gt;
:   by the twl6040 codec.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Rename the Earphone Driver event handler&lt;br /&gt;
:   &lt;br /&gt;
:   Since the event handler is only used by the Earphone Driver, it is better&lt;br /&gt;
:   to rename it from twl6040_power_mode_event to twl6040_ep_drv_event.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Change event ordering for Earphone driver&lt;br /&gt;
:   &lt;br /&gt;
:   It is better to switch HS Power Mode (if it was in low power mode) before&lt;br /&gt;
:   we enable the Earpiece driver. The switched off EP driver can filter out&lt;br /&gt;
:   noise coming from the Low Power to High Performance transition on the&lt;br /&gt;
:   HSL DAC.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Remove PLL usage restrictions&lt;br /&gt;
:   &lt;br /&gt;
:   There is no limitation dictated by outputs or inputs regarding to the&lt;br /&gt;
:   selected PLL (LP/HP).&lt;br /&gt;
:   Remove the checks for this, and allow all path with any PLL configuration.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Remove Capture restriction for 17.64MHz sysclk&lt;br /&gt;
:   &lt;br /&gt;
:   Capture is supported in all PLL configuration.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Workaround for headset DC offset caused pop noise&lt;br /&gt;
:   &lt;br /&gt;
:   Both Headset DAC need to be turned on/off at the same time before&lt;br /&gt;
:   any of the output drivers are enabled (HS Left/Right, Earpiece).&lt;br /&gt;
:   Move the HS DAC enable code to sequenced DAPM_SUPPLY, and attach&lt;br /&gt;
:   it to the DACs.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Support for vibra output paths&lt;br /&gt;
:   &lt;br /&gt;
:   twl6040 have two vibra output drivers.&lt;br /&gt;
:   They can be operated with audio stream coming through&lt;br /&gt;
:   the PDM interface (fifth channel).&lt;br /&gt;
:   The vibra outputs can be controlled via the input/FF&lt;br /&gt;
:   driver as well.&lt;br /&gt;
:   Selection between the two mode is implemented within&lt;br /&gt;
:   the codec driver, the input/FF driver can only operate if&lt;br /&gt;
:   the routing is set to &amp;quot;Input FF&amp;quot;.&lt;br /&gt;
:   Changing from &amp;quot;Input FF&amp;quot; to &amp;quot;Audio PDM&amp;quot; mode is protected&lt;br /&gt;
:   as well: The switchin can only be done, if there is no&lt;br /&gt;
:   running effect from the input/FF.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Convert to table based init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Warn user in twl6040_put_volsw for error case&lt;br /&gt;
:   &lt;br /&gt;
:   Let the user know, that the callback has been called with unexpected&lt;br /&gt;
:   register parameter.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Simply call snd_soc_put_volsw form the custom code&lt;br /&gt;
:   &lt;br /&gt;
:   The ASoC core now have one callback function, which can handle&lt;br /&gt;
:   single, and double register mixer controls.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Prepare for core put_volsw/volsw_2r merger&lt;br /&gt;
:   &lt;br /&gt;
:   Avoid using the mc-&amp;amp;gt;rreg to identify the 2r type of gain control.&lt;br /&gt;
:   Introduce a variable to track this.&lt;br /&gt;
:   This change is needed to avoid breakage with the upcoming volsw volsw_2r&lt;br /&gt;
:   merger.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Simplify custom get_volsw callback&lt;br /&gt;
:   &lt;br /&gt;
:   The custom get_volsw does not need to call any core get_volsw calls,&lt;br /&gt;
:   since we are returning the shadow values for the gains.&lt;br /&gt;
:   Return -EINVAL in the unlikely event, if the function has been called&lt;br /&gt;
:   for unhandled control. This way we can remove one check in the code.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Consolidate use of controls with custom get/put function&lt;br /&gt;
:   &lt;br /&gt;
:   Use the macros for controls require custom get/put function.&lt;br /&gt;
:   This is to make sure that the soc_mixer_control is used&lt;br /&gt;
:   consistently among the drivers.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Simplify custom put_volsw callback&lt;br /&gt;
:   &lt;br /&gt;
:   Return -EINVAL in the unlikely event, if the function has been called&lt;br /&gt;
:   for unhandled control. This way we can remove one check in the code.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Simplify code in out_drv_event for pending work check&lt;br /&gt;
:   &lt;br /&gt;
:   Instead of checking, if the work is pending, it is safer to cancel&lt;br /&gt;
:   the pending work, or wait till the scheduled work finishes.&lt;br /&gt;
:   This way we can avoid modifying the variables used by the work&lt;br /&gt;
:   function.&lt;br /&gt;
:   Since we know that no work is pending, we can remove the two additional&lt;br /&gt;
:   checks in POST_PMU, and PRE_PMD for non pending works.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Shift 2 identifies the HS output in out_drv_event&lt;br /&gt;
:   &lt;br /&gt;
:   None of the driver handled by out_drv_event have it's power&lt;br /&gt;
:   bit shifted by 3.&lt;br /&gt;
:   Remove the case for shift 3, and also add comment for the cases.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: correct loop counters for HS/HF ramp code&lt;br /&gt;
:   &lt;br /&gt;
:   The Headset gain range is 0 - 0xf (4 bit resolution)&lt;br /&gt;
:   The Handsfree gain range is 0 - 0x1d (5 bit resolution,&lt;br /&gt;
:   0x1e, and 0x1f values are invalid)&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: One workqueue should be enough&lt;br /&gt;
:   &lt;br /&gt;
:   It is a bit overkill to have three (3) separate&lt;br /&gt;
:   workqueue for a single driver.&lt;br /&gt;
:   We can manage things with one workqueue nicely.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: No need to change delay during HF ramp&lt;br /&gt;
:   &lt;br /&gt;
:   The Handsfree gain have 2dB steps all the way, so there is no&lt;br /&gt;
:   reason to have different delays as we approaching to the&lt;br /&gt;
:   end of the scale.&lt;br /&gt;
:   The comment was also wrong, since we have 0dB at 0x3 raw, at 16 the gain&lt;br /&gt;
:   is -26dB.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: No need to change delay during HS ramp&lt;br /&gt;
:   &lt;br /&gt;
:   The Headset gain have 2dB steps all the way, so there is no&lt;br /&gt;
:   reason to have different delays as we approaching to the&lt;br /&gt;
:   end of the scale.&lt;br /&gt;
:   The comment was also wrong, since we have 0dB at 0x0 raw at&lt;br /&gt;
:   one end of the range, and not in the middle.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Move the delayed_work for HS detection under twl6040_jack_data&lt;br /&gt;
:   &lt;br /&gt;
:   The delayed_work named 'delayed_work' is for the headset detection,&lt;br /&gt;
:   so move it to the twl6040_jack_data struct.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Move delayed_work struct inside twl6040_output for HS/HF&lt;br /&gt;
:   &lt;br /&gt;
:   The delayed works for the output can be moved within the&lt;br /&gt;
:   twl6040_output struct (from the twl6040_data) to be better&lt;br /&gt;
:   organized.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Combine the custom volsw get, and put functions&lt;br /&gt;
:   &lt;br /&gt;
:   We can manage with one set of get, and put function for the gain&lt;br /&gt;
:   controls we need to handle with custom code due to the shadowing&lt;br /&gt;
:   of the register.&lt;br /&gt;
:   For both get, and put function we can call decide based on the&lt;br /&gt;
:   mc-&amp;amp;gt;rreg value, if we need to call the volsw, or the vlosw_2r&lt;br /&gt;
:   variant (in 2r case rreg is not 0).&lt;br /&gt;
:   Handling of the shadow values are the same for both type of&lt;br /&gt;
:   controls.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Rename pga_event to out_drv_event&lt;br /&gt;
:   &lt;br /&gt;
:   This event handler is used with the OUT_DRV widgets.&lt;br /&gt;
:   The name pga_event was misleading.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Function to fetch the TRIM values&lt;br /&gt;
:   &lt;br /&gt;
:   Provide API to fetch the TRIM values (for machine drivers)&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Read the TRIM values from the chip&lt;br /&gt;
:   &lt;br /&gt;
:   Update the reg_cache with values from chip regarding to TRIM.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: No need to read the INTID register&lt;br /&gt;
:   &lt;br /&gt;
:   Since our irq handler has been called, it is granted, that&lt;br /&gt;
:   the reason was either PLUGINT, or UNPLUGINT.&lt;br /&gt;
:   The INTID register has been checked in the MFD part of&lt;br /&gt;
:   twl6040 driver (twl6040-irq.c).&lt;br /&gt;
:   We have no reason to read from chip again here.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC/MFD: twl6040: Combine bit definitions for Headset control registers&lt;br /&gt;
:   &lt;br /&gt;
:   Use one set of defines for the HS bits, since they are identical in both&lt;br /&gt;
:   control register.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040/sdp4430: Change legacy DAI name&lt;br /&gt;
:   &lt;br /&gt;
:   Change the legacy DAI name from &amp;quot;twl6040-hifi&amp;quot; to &amp;quot;twl6040-legacy&amp;quot; to&lt;br /&gt;
:   be more intuitive.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Support for AUX L/R output&lt;br /&gt;
:   &lt;br /&gt;
:   AUX L/R outputs can be driver from the Handsfree PGA output.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Use consistent names for Headset path&lt;br /&gt;
:   &lt;br /&gt;
:   Use &amp;quot;Headset XYZ&amp;quot; for user visible controls, while the internal DAPM&lt;br /&gt;
:   widgets can use &amp;quot;HS XYZ&amp;quot;.&lt;br /&gt;
:   In this way we can group the Headset related controls in UI&lt;br /&gt;
:   (alsamixer for example).&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Use consistent names for Handsfree path&lt;br /&gt;
:   &lt;br /&gt;
:   Use &amp;quot;Handsfree XYZ&amp;quot; for user visible controls, while the internal DAPM&lt;br /&gt;
:   widgets can use &amp;quot;HF XYZ&amp;quot;.&lt;br /&gt;
:   In this way we can group the Handsfree related controls in UI&lt;br /&gt;
:   (alsamixer for example).&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Earphone path correction&lt;br /&gt;
:   &lt;br /&gt;
:   Fix the DAPM routing for the earphone path.&lt;br /&gt;
:   Convert the DAPM_SWITCH_E to DAPM_OUT_DRV_E, so we can have correct&lt;br /&gt;
:   power up, and down sequence for EP.&lt;br /&gt;
:   Introduce mute control (Earphone Playback Switch) for users to&lt;br /&gt;
:   enable/disable the EP path.&lt;br /&gt;
:   Note: the EP does not have it's own dedicated DAC. EP is connected to&lt;br /&gt;
:   HSL DAC.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Introduce SW only shadow register&lt;br /&gt;
:   &lt;br /&gt;
:   Software only shadow register to be used by the driver.&lt;br /&gt;
:   For example Earpiece path will need this shadow register.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Remove strings &amp;quot;NULL&amp;quot; from DAPM route&lt;br /&gt;
:   &lt;br /&gt;
:   Replace the string with plain NULL.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Fix comments for register names&lt;br /&gt;
:   &lt;br /&gt;
:   Change the register name strings in the comments for the&lt;br /&gt;
:   twl6040_reg table, so it is easier to search for specific&lt;br /&gt;
:   register.&lt;br /&gt;
:   &lt;br /&gt;
:   This is cosmetic change.&lt;br /&gt;
:   &lt;br /&gt;
:   Before we had for example:&lt;br /&gt;
:   TWL6040_REG_HSLCTL as register definition.&lt;br /&gt;
:   &lt;br /&gt;
:   At the register table we had:&lt;br /&gt;
:   TWL6040_HSLCTL&lt;br /&gt;
:   &lt;br /&gt;
:   Searching for TWL6040_HSLCTL resulted no hits.&lt;br /&gt;
:   &lt;br /&gt;
:   While if we look for REG_HSLCTL, we can find the places&lt;br /&gt;
:   the register has been used.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Lower the power on gain values at startup&lt;br /&gt;
:   &lt;br /&gt;
:   The default gains on outputs/inputs are set to 0dB.&lt;br /&gt;
:   This is fixing the pop noise issue at the first playback, which&lt;br /&gt;
:   caused by the wrong starting point of the ramp code.&lt;br /&gt;
:   The ramp code for the outputs expects the gains to be in&lt;br /&gt;
:   their lowest configuration in order to be effective.&lt;br /&gt;
:   After the playback stops, the ramp code takes care of&lt;br /&gt;
:   ramping down the gains to their minimum.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Correct supported number of playback channels&lt;br /&gt;
:   &lt;br /&gt;
:   twl6040 supports 5 playback, and 2 capture channels&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Fix the number of channels for vibra&lt;br /&gt;
:   &lt;br /&gt;
:   Only mono audio can be used for vibra (DL4 channel).&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Use chip defaults in the initial reg_cache&lt;br /&gt;
:   &lt;br /&gt;
:   Reset the twl6040_reg array to hold the chip default values.&lt;br /&gt;
:   The only changed values were for the microphone input selection.&lt;br /&gt;
:   Select no input for the microphones in the twl6040_init_chip function.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Chip initialization cleanup&lt;br /&gt;
:   &lt;br /&gt;
:   There is no need to write to the vio registers at probe time, since most&lt;br /&gt;
:   them either read only, or shared with MFD or not used.&lt;br /&gt;
:   On the other hand it is a good idea to updated the ASICREV register in&lt;br /&gt;
:   the cache at this time.&lt;br /&gt;
:   &lt;br /&gt;
:   After power up we need to restore some registers. Clean up the list to&lt;br /&gt;
:   contain only the registers we are going to restore.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Add back support for legacy mode&lt;br /&gt;
:   &lt;br /&gt;
:   The legacy mode has been accidentaly removed by commit:&lt;br /&gt;
:   ASoC: twl6040: add all ABE DAIs&lt;br /&gt;
:   &lt;br /&gt;
:   Add back the twl6040-hifi dai.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: No need to convert the PLL ID&lt;br /&gt;
:   &lt;br /&gt;
:   Since the PLL handling has been simplified, and&lt;br /&gt;
:   rebased on 0, there is no longer need for converting&lt;br /&gt;
:   the PLL ID.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Configure PLL only once&lt;br /&gt;
:   &lt;br /&gt;
:   Avoid configuring the PLL several times during audio startup.&lt;br /&gt;
:   We can configure the PLL at prepare time with parameters collected&lt;br /&gt;
:   earlier hw_param, and set_dai_sysclk calls.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Simplify sample rate constraint handling&lt;br /&gt;
:   &lt;br /&gt;
:   We can manage the sample rate constraints without the need&lt;br /&gt;
:   to maintain a variable and a pointer.&lt;br /&gt;
:   This simplifies the handling of the constraint, and makes it&lt;br /&gt;
:   more robust.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Move PLL selection to codec driver&lt;br /&gt;
:   &lt;br /&gt;
:   It is better if the selection between the Low power,&lt;br /&gt;
:   and High performance PLL is handled within the codec&lt;br /&gt;
:   driver, not in machine driver(s) to avoid duplicated&lt;br /&gt;
:   code, and also to have consistent tracking of the selected&lt;br /&gt;
:   PLL, and the resulting differences in supported sample&lt;br /&gt;
:   rates.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Use neutral name for power mode text/enum&lt;br /&gt;
:   &lt;br /&gt;
:   Change the variable names to be neutral (not refering to HS).&lt;br /&gt;
:   This will ease up the introduction of PLL selection, which&lt;br /&gt;
:   going to use the same enum strings.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Do not use wrapper for irq request&lt;br /&gt;
:   &lt;br /&gt;
:   The twl6040_request_irq/free_irq inline functions are going&lt;br /&gt;
:   to be removed, so replace them with direct calls.&lt;br /&gt;
:   The irq number is provided by the core driver via resource.&lt;br /&gt;
:   &lt;br /&gt;
:   Reviewed-by: Felipe Balbi &amp;amp;lt;balbi@ti.com&amp;amp;gt;&lt;br /&gt;
: - ASoC: twl6040: Configure ramp step based on platform&lt;br /&gt;
:   &lt;br /&gt;
:   Enable ramp down/up step to be configured based on&lt;br /&gt;
:   platform.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: set default constraints.&lt;br /&gt;
:   &lt;br /&gt;
:   Set default sysclk constraints to high performance mode.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Remove pll and headset mode dependency&lt;br /&gt;
:   &lt;br /&gt;
:   Remove dependency between pll (hppll, lppll) and headset power&lt;br /&gt;
:   mode (low-power, high-performance), as headset power mode can&lt;br /&gt;
:   be used with any pll.&lt;br /&gt;
:   &lt;br /&gt;
:   A new control is created to allow headset power mode configuration&lt;br /&gt;
:   from userspace. Changing headset power mode during earpiece related&lt;br /&gt;
:   usecases is not propagated down to the codec as earpiece requires&lt;br /&gt;
:   HS DAC in HP mode.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Support other sample rates in constraints.&lt;br /&gt;
:   &lt;br /&gt;
:   Add other supported sample rates to LP and HP modes.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: add all ABE DAIs&lt;br /&gt;
:   &lt;br /&gt;
:   Add all DAIs to fully support OMAP4 ABE.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Convert into TWL6040 MFD child&lt;br /&gt;
:   &lt;br /&gt;
:   Convert TWL6040 CODEC driver into a TWL6040 MFD child, it implies&lt;br /&gt;
:   that MFD-level operations like register accesses, clock setting&lt;br /&gt;
:   and power management are done through MFD APIs, not directly by&lt;br /&gt;
:   CODEC driver anymore. To avoid conflicts with the other MFD child,&lt;br /&gt;
:   vibrator registers are skipped in CODEC driver.&lt;br /&gt;
:   &lt;br /&gt;
: - MFD: twl4030-audio: Rename platform data&lt;br /&gt;
:   &lt;br /&gt;
:   Allign the platform data names for twl4030 audio submodule:&lt;br /&gt;
:   twl4030_audio_data: for the core MFD driver&lt;br /&gt;
:   twl4030_codec_data: for ASoC codec driver&lt;br /&gt;
:   twl4030_vibra_data: for the input/ForceFeedback driver&lt;br /&gt;
:   &lt;br /&gt;
:   To avoid breakage, change all depending drivers, files&lt;br /&gt;
:   to use the new types.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040 - According to TWL6040 specification, gain start at 6dB and not -6dB.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040 - fix LINEGAIN volume control&lt;br /&gt;
:   &lt;br /&gt;
:   Fix the TWL6040 LINEGAIN volume control to match the TRM.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: twl6040: Return -ENOMEM if create_singlethread_workqueue fails&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Staticise twl6040_hs_jack_report()&lt;br /&gt;
:   &lt;br /&gt;
:   It's an internal function so shouldn't be exported (as sparse points&lt;br /&gt;
:   out).&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WL1273===&lt;br /&gt;
: - ASoC: Remove unneeded mutex_init in wl1273_probe()&lt;br /&gt;
:   &lt;br /&gt;
:   Since f0fba2ad &amp;quot;ASoC: multi-component - ASoC Multi-Component Support&amp;quot;,&lt;br /&gt;
:   snd_soc_register_codec() now does all the codec list and mutex init.&lt;br /&gt;
:   Thus don't need to call mutex_init(&amp;amp;codec-&amp;amp;gt;mutex) in wl1273_probe() any more.&lt;br /&gt;
:   &lt;br /&gt;
: - mfd: Use mfd cell platform_data for wl1273 cells platform bits&lt;br /&gt;
:   &lt;br /&gt;
:   With the addition of a platform device mfd_cell pointer, MFD drivers&lt;br /&gt;
:   can go back to passing platform data back to their sub drivers.&lt;br /&gt;
:   This allows for an mfd_cell-&amp;amp;gt;mfd_data removal and thus keep the&lt;br /&gt;
:   sub drivers MFD agnostic. This is mostly needed for non MFD aware&lt;br /&gt;
:   sub drivers.&lt;br /&gt;
:   &lt;br /&gt;
: - mfd: mfd_cell is now implicitly available to wl1273 drivers&lt;br /&gt;
:   &lt;br /&gt;
:   The cell's platform_data is now accessed with a helper function;&lt;br /&gt;
:   change clients to use that, and remove the now-unused data_size.&lt;br /&gt;
:   &lt;br /&gt;
: - [media] ASoC: WL1273 FM radio: Access I2C IO functions through pointers&lt;br /&gt;
:   &lt;br /&gt;
:   These changes are needed to keep up with the changes in the&lt;br /&gt;
:   MFD core and V4L2 parts of the wl1273 FM radio driver.&lt;br /&gt;
:   &lt;br /&gt;
:   Use function pointers instead of exported functions for I2C IO.&lt;br /&gt;
:   Also move all preprocessor constants from the wl1273.h to&lt;br /&gt;
:   include/linux/mfd/wl1273-core.h.&lt;br /&gt;
:   &lt;br /&gt;
:   Also update the year in the copyright statement.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM1250-EV1===&lt;br /&gt;
: - ASoC: Convert wm1250-ev1 driver to use devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Set idle_bias_off for WM1250 EV1&lt;br /&gt;
:   &lt;br /&gt;
:   The WM1250 EV1 is functionally digital in a system (the analogue I/O&lt;br /&gt;
:   is either ground referenced or always powered) so flag it as idle_bias_off.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add platform data for WM1250 EV1 GPIOs&lt;br /&gt;
:   &lt;br /&gt;
:   The WM1250 EV1 has some GPIOs which can be used to control the behaviour&lt;br /&gt;
:   at runtime. Request them all if supplied and add a set_bias_level()&lt;br /&gt;
:   function to start and stop the clocks.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Correct revision display for WM1250-EV1 module&lt;br /&gt;
:   &lt;br /&gt;
:   The hardware documentation uses revision numbers starting at 1.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix warning in WM1250-EV1 driver&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Parse board ID/revision information from WM1250-EV1 board&lt;br /&gt;
:   &lt;br /&gt;
:   The WM1250-EV1 board has an ID chip on it, check the board ID and display&lt;br /&gt;
:   the board revision during startup.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm1250-ev1: Define &amp;quot;WM1250 Output&amp;quot; with SND_SOC_DAPM_OUTPUT&lt;br /&gt;
:   &lt;br /&gt;
:   Codec output pin should be defined with SND_SOC_DAPM_OUTPUT.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix mis cherry-pick of wm1250-ev1 driver&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add initial WM1250-EV1 Springbank audio I/O module driver&lt;br /&gt;
:   &lt;br /&gt;
:   The WM1250-EV1 Springbank audio I/O module for the Wolfson Glenfarclas&lt;br /&gt;
:   reference platform provides a simple audio I/O with an independant clock&lt;br /&gt;
:   domain, intended to simulate cellular modem and bluetooth subsystems&lt;br /&gt;
:   within the platform.&lt;br /&gt;
:   &lt;br /&gt;
:   The card supports some limited GPIO based control but this is currently not&lt;br /&gt;
:   implemented.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM2000===&lt;br /&gt;
: - ASoC: Convert WM2000 into a standard CODEC driver&lt;br /&gt;
:   &lt;br /&gt;
:   We've been able to handle external amps for a while now.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert wm2000 to use regmap API&lt;br /&gt;
:   &lt;br /&gt;
:   The driver wasn't even using the ASoC common code.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove unused struct wm2000_setup_data&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert WM2000 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Move WM2000 to dev_pm_ops&lt;br /&gt;
:   &lt;br /&gt;
:   There's a general move to use dev_pm_ops rather than bus specific functions&lt;br /&gt;
:   in order to facilitate work on the PM core. Do this conversion to WM2000.&lt;br /&gt;
:   The driver ought to be updated to work better in a multi-component model&lt;br /&gt;
:   but the mechanical conversion ensures that we avoid blocking PM core work&lt;br /&gt;
:   until that happens.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM5100===&lt;br /&gt;
: - ASoC: Enable ASoC register map dump for some regmap CODECs&lt;br /&gt;
:   &lt;br /&gt;
:   It's still useful to be able to poke around in the register map at&lt;br /&gt;
:   runtime.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Make WM5100 tone generator widgets signal generators&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Use devm_kzalloc() in wm5100&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove WM5100 DSP memory windows from register default data&lt;br /&gt;
:   &lt;br /&gt;
:   They're all volatile so shouldn't have defaults and as we've got pages&lt;br /&gt;
:   into the DSP memory the registers themselves aren't that useful - a&lt;br /&gt;
:   further patch adding support for the DSPs will provide direct diagnostic&lt;br /&gt;
:   access to the DSP memories.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Move WM5100 platform data based setup into I2C probe&lt;br /&gt;
:   &lt;br /&gt;
:   Get things configured as early as possible, especially useful for the&lt;br /&gt;
:   GPIOs which might be useful anyway.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert WM5100 gpiolib support to direct regmap API usage&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Move most WM5100 resource allocation to I2C probe&lt;br /&gt;
:   &lt;br /&gt;
:   More standard Linuxish.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Mark WM5100 MISC CONTROL as readable&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Need to convert wm5100 cache sync to direct regmap usage too&lt;br /&gt;
:   &lt;br /&gt;
:   ASoC knows nothing about the cache now.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert wm5100 to direct regmap API usage&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix return value of wm5100_gpio_direction_out()&lt;br /&gt;
:   &lt;br /&gt;
:   We can't just pass back the return value of snd_soc_update_bits() as it&lt;br /&gt;
:   will be 1 if a bit changed rather than zero.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Update WM5100 accessory detection for revision A&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Implement WM5100 accessory detection support&lt;br /&gt;
:   &lt;br /&gt;
:   The WM5100 includes an advanced, low power, accessory detect subsystem&lt;br /&gt;
:   capable of detecting both accessory presence and button presses while&lt;br /&gt;
:   the device is in an ultra low power mode. Implement initial support for&lt;br /&gt;
:   this.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add missing default for WM5100 Clocking 1&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix typo in 24.576MHz rate in WM5100&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add missed free_irq in wm5100_remove and wm5100_probe error path&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add missed BCLK rate to WM5100 driver&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Axel Lin &amp;amp;lt;axel.lin@gmail.com&amp;amp;gt;&lt;br /&gt;
: - ASoC: Dynamically manage DBVDD2 and DBVDD3 on WM5100&lt;br /&gt;
:   &lt;br /&gt;
:   Allow the DBVDD2 and DBVDD3 rails to be powered down when idle, helping&lt;br /&gt;
:   fully power down connected devices when idle.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove needless codec-&amp;amp;gt;dapm.bias_level assignment to SND_SOC_BIAS_OFF&lt;br /&gt;
:   &lt;br /&gt;
:   This assignment is done by the snd_soc_register_codec so there is no need&lt;br /&gt;
:   to redo it in probe function of a codec driver.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add WM5100 driver&lt;br /&gt;
:   &lt;br /&gt;
:   The WM5100 is a highly integrated low power audio subsystem with advanced&lt;br /&gt;
:   digital signal processing capabilities including effects, speech clarity&lt;br /&gt;
:   enhancement and active noise cancellation.  This initial driver provides&lt;br /&gt;
:   support for basic audio paths, further patches will provide more&lt;br /&gt;
:   complete functionality.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8350===&lt;br /&gt;
: - ASoC: Convert WM8350 to table based DAPM and control init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert WM8350 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Replace remaining use of *_volsw_2r with *_volsw&lt;br /&gt;
:   &lt;br /&gt;
:   The snd_soc_*_volsw_2r functionality has been merged to&lt;br /&gt;
:   *volsw callbacks.&lt;br /&gt;
:   Few places still used the get, or put variant of volsw_2r,&lt;br /&gt;
:   replace those with the corresponding *_volsw.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8400===&lt;br /&gt;
: - ASoC: Convert WM8400 to table based DAPM and control init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert WM8400 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert wm8400 MICBIAS to a supply widget&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8400: Fix setting Fout clock divider for FLL Control 4&lt;br /&gt;
:   &lt;br /&gt;
:   What we want here is to clear the WM8400_FLL_OUTDIV_MASK bits then&lt;br /&gt;
:   OR with factors.outdiv.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8400: Fix wrong bit setting for WM8400_POWER_MANAGEMENT_2&lt;br /&gt;
:   &lt;br /&gt;
:   If (fakepower &amp;amp; ((1 &amp;amp;lt;&amp;amp;lt; WM8400_INMIXR_PWR) | (1 &amp;amp;lt;&amp;amp;lt; WM8400_AINRMUX_PWR)))&lt;br /&gt;
:   is false, we should clear WM8400_AINR_ENA bits instead of WM8400_AINL_ENA.&lt;br /&gt;
:   &lt;br /&gt;
: - mfd: Use mfd cell platform_data for wm8400 cells platform bits&lt;br /&gt;
:   &lt;br /&gt;
:   With the addition of a platform device mfd_cell pointer, MFD drivers&lt;br /&gt;
:   can go back to passing platform data back to their sub drivers.&lt;br /&gt;
:   This allows for an mfd_cell-&amp;amp;gt;mfd_data removal and thus keep the&lt;br /&gt;
:   sub drivers MFD agnostic. This is mostly needed for non MFD aware&lt;br /&gt;
:   sub drivers.&lt;br /&gt;
:   &lt;br /&gt;
:   Reviewed-by: Mark Brown &amp;amp;lt;broonie@opensource.wolfsonmicro.com&amp;amp;gt;&lt;br /&gt;
: - asoc: wm8400-codec: Use mfd_data instead of driver_data&lt;br /&gt;
:   &lt;br /&gt;
:   Use mfd_data for passing information from mfd drivers to soc&lt;br /&gt;
:   clients.  The mfd_cell's driver_data field is being phased out.&lt;br /&gt;
:   &lt;br /&gt;
:   Clients that were using driver_data now access .mfd_data&lt;br /&gt;
:   via mfd_get_data().&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8510===&lt;br /&gt;
: - ASoC: Convert WM8510 to table based DAPM and control init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove unused -codec from Wolfson device driver names&lt;br /&gt;
:   &lt;br /&gt;
:   Devices that aren't MFDs don't need to distinguish this.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8510: Convert to snd_soc_cache_sync&lt;br /&gt;
:   &lt;br /&gt;
:   Convert to snd_soc_cache_sync for sync reg_cache with the hardware.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add device tree binding for WM8510&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8523===&lt;br /&gt;
: - ASoC: Remove unneeded hw_write initialisation in wm8523&lt;br /&gt;
:   &lt;br /&gt;
:   It is not required after commit 8d50e447&lt;br /&gt;
:   &amp;quot;ASoC: Factor out I/O for Wolfson 8 bit data 16 bit register CODECs&amp;quot;&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert WM8523 to table based control and DAPM initialization&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add device tree binding for WM8523&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove -codec from WM8523 driver name&lt;br /&gt;
:   &lt;br /&gt;
:   It's redundant to specify it.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8580===&lt;br /&gt;
: - ASoC: Fix return value of wm8580_set_sysclk()&lt;br /&gt;
:   &lt;br /&gt;
:   We can't just pass back the return value of snd_soc_update_bits() as it&lt;br /&gt;
:   will be 1 if a bit changed rather than zero.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert WM8580 to table based DAPM and control init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8580: Use snd_soc_update_bits for read-modify-write&lt;br /&gt;
:   &lt;br /&gt;
:   Use snd_soc_update_bits for read-modify-write register access instead of&lt;br /&gt;
:   open-coding it using snd_soc_read and snd_soc_write&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Replace remaining use of *_volsw_2r with *_volsw&lt;br /&gt;
:   &lt;br /&gt;
:   The snd_soc_*_volsw_2r functionality has been merged to&lt;br /&gt;
:   *volsw callbacks.&lt;br /&gt;
:   Few places still used the get, or put variant of volsw_2r,&lt;br /&gt;
:   replace those with the corresponding *_volsw.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add device tree support for WM8580&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove redundant -codec from WM8580 driver name&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8711===&lt;br /&gt;
: - ASoC: Convert WM8711 to table based control init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Leave input audio data bit length settings untouched in wm8711_set_dai_fmt&lt;br /&gt;
:   &lt;br /&gt;
:   Current implementation in wm8711_set_dai_fmt always clear BIT[3:2]&lt;br /&gt;
:   (the Input Audio Data Bit Length Select) of WM8711_IFACE(07h) register.&lt;br /&gt;
:   Input Audio Data Bit Length Select bits are set by wm8711_hw_params,&lt;br /&gt;
:   we should leave BIT[3:2] untouched in wm8711_set_dai_fmt.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8711: Fix wrong mask for setting input audio data bit length select&lt;br /&gt;
:   &lt;br /&gt;
:   The Input Audio Data Bit Length Select is controlled by BIT[3:2] of&lt;br /&gt;
:   WM8711_IFACE(07h) register.&lt;br /&gt;
:   Current code incorrectly masks BIT[1:0] which is for Audio Data Format Select.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8711: Convert to snd_soc_cache_sync&lt;br /&gt;
:   &lt;br /&gt;
:   Convert to snd_soc_cache_sync for sync reg_cache with the hardware.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove references to linux@wolfsonmicro.com&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8711: Use snd_soc_update_bits for read-modify-write&lt;br /&gt;
:   &lt;br /&gt;
:   Use snd_soc_update_bits for read-modify-write register access instead of&lt;br /&gt;
:   open-coding it using snd_soc_read and snd_soc_write&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8711: Use snd_soc_update_bits for read-modify-write&lt;br /&gt;
:   &lt;br /&gt;
:   Use snd_soc_update_bits for read-modify-write register access instead of&lt;br /&gt;
:   open-coding it using snd_soc_read and snd_soc_write&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add device tree binding for WM8711&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove some more redundant -codecs from driver names&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Use data based init for wm8711 DAPM&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8727===&lt;br /&gt;
: - ASoC: Remove unused -codec from Wolfson device driver names&lt;br /&gt;
:   &lt;br /&gt;
:   Devices that aren't MFDs don't need to distinguish this.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8728===&lt;br /&gt;
: - ASoC: Convert WM8728 to table based control init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add device tree binding for WM8728&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove some more redundant -codecs from driver names&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Use data based init for wm8728 DAPM&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8731===&lt;br /&gt;
: - ASoC: Use table based init for wm8731_snd_controls&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Ensure WM8731 register cache is synced when resuming from disabled&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8731: Convert to snd_soc_cache_sync&lt;br /&gt;
:   &lt;br /&gt;
:   Convert to snd_soc_cache_sync for sync reg_cache with the hardware.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add device tree binding for WM8731&lt;br /&gt;
:   &lt;br /&gt;
:   Tested with the famous &amp;quot;hey, look! this compiles&amp;quot; test plan.&lt;br /&gt;
:   &lt;br /&gt;
:   Acked by: Grant Likely &amp;amp;lt;grant.likely@secretlab.ca&amp;amp;gt;&lt;br /&gt;
: - ASoC: Manage WM8731 ACTIVE bit as a supply widget&lt;br /&gt;
:   &lt;br /&gt;
:   Now we have supply widgets there's no need to open code the handling of&lt;br /&gt;
:   the ACTIVE bit.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Nicolas Ferre &amp;amp;lt;nicolas.ferre@atmel.com&amp;amp;gt;&lt;br /&gt;
: - ASoC: wm8731: fix wm8731_check_osc() connected condition&lt;br /&gt;
:   &lt;br /&gt;
:   The crystal oscillator is only enabled if the WM8731_SYSCLK_XTAL master clock&lt;br /&gt;
:   is specified. Fix the connected() struct snd_soc_dapm_route function to take&lt;br /&gt;
:   this into account. Oscillator is not enabled on machine that need it otherwise.&lt;br /&gt;
:   &lt;br /&gt;
:   Machine drivers have to make sure that they use the proper SYSCLK value.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert WM8731 to table based DAPM setup&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8737===&lt;br /&gt;
: - ASoC: Add device tree binding for WM8737&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8741===&lt;br /&gt;
: - ASoC: Convert WM8741 to table based DAPM and control init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert WM8741 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8741: Use snd_soc_cache_sync to sync reg_cache with the hardware&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8741: Fix setting interface format for DSP modes&lt;br /&gt;
:   &lt;br /&gt;
:   According to the datasheet:&lt;br /&gt;
:   Format Control (05h)&lt;br /&gt;
:   BITS[3:2]&lt;br /&gt;
:   FMT[1:0] Audio data format selection&lt;br /&gt;
:   00 = right justified mode&lt;br /&gt;
:   01 = left justified mode&lt;br /&gt;
:   10 = I2S mode&lt;br /&gt;
:   11 = DSP mode&lt;br /&gt;
:   BIT[4]  LRP Polarity selec for LRCLK/DSP mode select&lt;br /&gt;
:   0 = normal LRCLK poalrity/DSP mode A&lt;br /&gt;
:   1 = inverted LRCLK poarity/DSP mode B&lt;br /&gt;
:   &lt;br /&gt;
:   For SND_SOC_DAIFMT_DSP_A, we should set 0x000C instead of 0x0003.&lt;br /&gt;
:   For SND_SOC_DAIFMT_DSP_B, we should set 0x001C instead of 0x0013.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix setting update bits for WM8741_DACRMSB_ATTENUATION&lt;br /&gt;
:   &lt;br /&gt;
:   After checking the code and datasheet, I think what we want in the second&lt;br /&gt;
:   snd_soc_update_bits call is to update WM8741_DACRMSB_ATTENUATION register&lt;br /&gt;
:   instead of WM8741_DACRLSB_ATTENUATION.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add device tree binding for WM8741&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add SPI support for WM8741&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Refactor WM8741 regulator handling into CODEC generic code&lt;br /&gt;
:   &lt;br /&gt;
:   No meaningful runtime impact but is more in line with other CODECs and&lt;br /&gt;
:   will support further work.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove some more redundant -codecs from driver names&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8750===&lt;br /&gt;
: - ASoC: Convert WM8750 to table based DAPM and control init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert WM8750 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8750: Convert to snd_soc_cache_sync&lt;br /&gt;
:   &lt;br /&gt;
:   Convert to snd_soc_cache_sync for sync reg_cache with the hardware.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8750: Use snd_soc_update_bits for read-modify-write&lt;br /&gt;
:   &lt;br /&gt;
:   Use snd_soc_update_bits for read-modify-write register access instead of&lt;br /&gt;
:   open-coding it using snd_soc_read and snd_soc_write&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove redundant -codec from WM8750&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add device tree binding for WM8750&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix compile warning in wm8750.c&lt;br /&gt;
:   &lt;br /&gt;
:   sound/soc/codecs/wm8750.c:784:2: warning: missing braces around initializer&lt;br /&gt;
:   sound/soc/codecs/wm8750.c:784:2: warning: (near initialization for ‘wm8750_spi_ids[2].name’)&lt;br /&gt;
:   &lt;br /&gt;
:   It's because struct spi_device_id.name is a char array, not a pointer,&lt;br /&gt;
:   while the driver initializes explicitly with 0.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Terminate WM8750 SPI device ID table&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Stephen Rothwell &amp;amp;lt;sfr@canb.auug.org.au&amp;amp;gt;&lt;br /&gt;
: - ASoC: Fix typo in wm8750 spi_ids&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Stephen Rothwell &amp;amp;lt;sfr@canb.auug.org.au&amp;amp;gt;&lt;br /&gt;
: - ASoC: Fix SPI driver binding for WM8987&lt;br /&gt;
:   &lt;br /&gt;
:   As we had no id_table only the driver name would be matched against&lt;br /&gt;
:   meaning that WM8987 devices wouldn't be bound.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8753===&lt;br /&gt;
: - ASoC: Convert WM8753 to table based DAPM and control init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8753: Skip noop reconfiguration of DAI mode&lt;br /&gt;
:   &lt;br /&gt;
:   This patch makes it possible to set DAI mode to its currently applied&lt;br /&gt;
:   value even if codec is active. This is necessary to allow&lt;br /&gt;
:   &lt;br /&gt;
:   aplay -t raw -r 44100 -f S16_LE -c 2 &amp;amp;lt; /dev/urandom &amp;amp;&lt;br /&gt;
:   alsactl store -f backup.state&lt;br /&gt;
:   alsactl restore -f backup.state&lt;br /&gt;
:   &lt;br /&gt;
:   to work without returning errors. This patch is based on a patch sent&lt;br /&gt;
:   by Klaus Kurzmann &amp;amp;lt;mok@fluxnetz.de&amp;amp;gt;.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix setting update bits for WM8753_LADC and WM8753_RADC&lt;br /&gt;
:   &lt;br /&gt;
:   Current code set update bits for WM8753_LDAC and WM8753_RDAC twice,&lt;br /&gt;
:   but missed setting update bits for WM8753_LADC and WM8753_RADC.&lt;br /&gt;
:   &lt;br /&gt;
:   I think it is a copy-paste bug in commit 776065&lt;br /&gt;
:   &amp;quot;ASoC: codecs: wm8753: Fix register cache incoherency&amp;quot;.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add device tree binding for WM8753&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove unneeded -codec from WM8753 driver name&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: codecs: wm8753: Fix DAI mode switching&lt;br /&gt;
:   &lt;br /&gt;
:   The wm8753 codec supports switching between different DAI modes.&lt;br /&gt;
:   The current drivers tries to implement this by changing the DAI driver at&lt;br /&gt;
:   runtime. But to properly work this would require support from the ASoC core.&lt;br /&gt;
:   &lt;br /&gt;
:   So this patch takes a different approch on how the DAI mode switching is&lt;br /&gt;
:   implemented.&lt;br /&gt;
:   &lt;br /&gt;
:   The only difference, from a driver point of view, between the different DAI modes&lt;br /&gt;
:   is how to program the DAI format to the hardware. So what this patch is, it&lt;br /&gt;
:   stores the current format for each DAI in the drivers private struct and when&lt;br /&gt;
:   the DAI mode is changed the format gets simply reprogrammed according to the&lt;br /&gt;
:   new DAI mode.&lt;br /&gt;
:   &lt;br /&gt;
:   Futhermore this patch restricts the changing of the DAI format to when the&lt;br /&gt;
:   codec is inactive.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8770===&lt;br /&gt;
: - ASoC: Convert wm8770 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Make WM8770 SPI usage unconditional&lt;br /&gt;
:   &lt;br /&gt;
:   The device only supports SPI.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add device tree binding for WM8770&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8776===&lt;br /&gt;
: - ASoC: Convert WM8776 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove unused variable in wm8776 driver&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert wm8776 to table based control and DAPM init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8776: add missing break in sample size switch&lt;br /&gt;
:   &lt;br /&gt;
:   Broken in commit d1dc698a54259cb454284456483b45f67c865cf8&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8776: Convert to snd_soc_cache_sync&lt;br /&gt;
:   &lt;br /&gt;
:   Convert to snd_soc_cache_sync for sync reg_cache with the hardware.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: support all possible sample rates in the WM8776 driver&lt;br /&gt;
:   &lt;br /&gt;
:   The WM8776 supports a continuous range of sample rates rather than&lt;br /&gt;
:   discrete values and supports a wider range of sample rates on the&lt;br /&gt;
:   playback path than is currently supported.  Update the constraints on&lt;br /&gt;
:   the DAIs to reflect this.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: support sample sizes properly in the WM8776 codec driver&lt;br /&gt;
:   &lt;br /&gt;
:   Use snd_pcm_format_width() to determine the sample size, instead of&lt;br /&gt;
:   checking specify sample formats and assuming that those are the only&lt;br /&gt;
:   valid format.&lt;br /&gt;
:   &lt;br /&gt;
:   This change adds support for big-endian architectures (which use the _BE&lt;br /&gt;
:   formats) and the packed 24-bit format (SNDRV_PCM_FORMAT_S24_3xE).&lt;br /&gt;
:   &lt;br /&gt;
:   [Fixed single letter variable name legibility problem -- broonie]&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add device tree binding for WM8776&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove redundant -codec from WM8776 driver name&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8782===&lt;br /&gt;
: - ASoC: wm8782: Add __devexit_p at necessary place&lt;br /&gt;
:   &lt;br /&gt;
:   According to the comments in include/linux/init.h:&lt;br /&gt;
:   &lt;br /&gt;
:   &amp;quot;Pointers to __devexit functions must use __devexit_p(function_name), the&lt;br /&gt;
:   wrapper will insert either the function_name or NULL, depending on the config&lt;br /&gt;
:   options.&amp;quot;&lt;br /&gt;
:   &lt;br /&gt;
:   We have __devexit annotation for wm8782_remove(), thus add __devexit_p at&lt;br /&gt;
:   necessary place.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: add WM8782 ADC Codec Driver&lt;br /&gt;
:   &lt;br /&gt;
:   [zonque@gmail.com: transform to new ASoC structure]&lt;br /&gt;
===SoC Codec WM8804===&lt;br /&gt;
: - ASoC: Convert WM8804 to table based control init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add device tree binding for WM8804&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: WM8804 does not support sample rates below 32kHz&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Kieran O'Leary &amp;amp;lt;Kieran.O'Leary@wolfsonmicro.com&amp;amp;gt;&lt;br /&gt;
===SoC Codec WM8900===&lt;br /&gt;
: - ASoC: Convert WM8900 to table based DAPM and control init&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove unused -codec from Wolfson device driver names&lt;br /&gt;
:   &lt;br /&gt;
:   Devices that aren't MFDs don't need to distinguish this.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert wm8900 MICBIAS to a supply widget&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8900: Use snd_soc_update_bits for read-modify-write&lt;br /&gt;
:   &lt;br /&gt;
:   Use snd_soc_update_bits for read-modify-write register access instead of&lt;br /&gt;
:   open-coding it using snd_soc_read and snd_soc_write&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8900: Fix the mask defines&lt;br /&gt;
:   &lt;br /&gt;
:   Now we have done bitwise NOT against the mask bits for the defines of&lt;br /&gt;
:   WM8900_REG_CLOCKING1_BCLK_MASK,&lt;br /&gt;
:   WM8900_REG_CLOCKING1_OPCLK_MASK and WM8900_LRC_MASK.&lt;br /&gt;
:   &lt;br /&gt;
:   But we don't have the bitwise NOT against the mask bits for the defines of&lt;br /&gt;
:   WM8900_REG_CLOCKING2_DAC_CLKDIV,&lt;br /&gt;
:   WM8900_REG_CLOCKING2_ADC_CLKDIV and WM8900_REG_DACCTRL_AIF_LRCLKRATE.&lt;br /&gt;
:   &lt;br /&gt;
:   It is error prone to mix the inconsistent meaning for different mask defines.&lt;br /&gt;
:   So lets make the defines for each mask to be corresponding to the bits&lt;br /&gt;
:   defines in datasheet. Don't add extra &amp;quot;bitwise NOT&amp;quot; to the defines.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8900: Fix wrong mask for setting DAC_CLKDIV/ADC_CLKDIV/LRCLK_MODE&lt;br /&gt;
:   &lt;br /&gt;
:   After checking the datasheet, I think what we want to do here is to&lt;br /&gt;
:   clear the WM8900_REG_CLOCKING2_DAC_CLKDIV/WM8900_REG_CLOCKING2_ADC_CLKDIV/&lt;br /&gt;
:   WM8900_REG_DACCTRL_AIF_LRCLKRATE bits and then OR with div value.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8900: fix a memory leak if wm8900_set_fll fails&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8903===&lt;br /&gt;
: - ASoC: Fix return value of wm8903_gpio_direction_in() and wm8903_gpio_direction_out()&lt;br /&gt;
:   &lt;br /&gt;
:   We can't just pass back the return value of snd_soc_update_bits() as it&lt;br /&gt;
:   will be 1 if a bit changed rather than zero.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: WM8903: Add of_match_table&lt;br /&gt;
:   &lt;br /&gt;
:   This allows the device to be matched against the device tree using the&lt;br /&gt;
:   compatible flag directly, as is standard, rather than falling back to&lt;br /&gt;
:   matching .id_table against the non-vendor portion of the first compatible&lt;br /&gt;
:   property value.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Don't fail if we can't read the IRQ type in WM8903&lt;br /&gt;
:   &lt;br /&gt;
:   If we fail to read the IRQ type from the interrupt controller don't&lt;br /&gt;
:   fail, just assume a value and solider on - we may fail later when we try&lt;br /&gt;
:   to request the IRQ but it's possible we'll succeed.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: WM8903: Add device tree binding&lt;br /&gt;
:   &lt;br /&gt;
:   Document the device tree binding for the WM8903 codec, and modify the&lt;br /&gt;
:   driver to extract platform data from the device tree, if present.&lt;br /&gt;
:   &lt;br /&gt;
:   Based on work by John Bonesio, but significantly reworked since then.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: WM8903: Get default irq_active_low from IRQ controller&lt;br /&gt;
:   &lt;br /&gt;
:   If the WM8903 is hooked up to an interrupt, set the irq_active_low flag&lt;br /&gt;
:   in the default platform data based on the IRQ's IRQ_TYPE. Map IRQ_TYPE_NONE&lt;br /&gt;
:   (a lack of explicit configuration/restriction) to irq_active_low = false;&lt;br /&gt;
:   the previous default.&lt;br /&gt;
:   &lt;br /&gt;
:   This code is mainly added to support device tree interrupt bindings,&lt;br /&gt;
:   although will work perfectly well in a non device tree system too.&lt;br /&gt;
:   &lt;br /&gt;
:   Any interrupt controller that supports only a single IRQ_TYPE could&lt;br /&gt;
:   set each IRQ's type based on that restriction. This applies equally&lt;br /&gt;
:   with and without device tree. To cater for interrupt controllers&lt;br /&gt;
:   that don't do this, for which irqd_get_trigger_type() will return&lt;br /&gt;
:   IRQ_TYPE_NONE, the platform data irq_active_low field may be used&lt;br /&gt;
:   in systems that don't use device tree.&lt;br /&gt;
:   &lt;br /&gt;
:   With device tree, every IRQ must have some IRQ_TYPE set.&lt;br /&gt;
:   &lt;br /&gt;
:   Controllers that support DT and multiple IRQ_TYPEs must define the&lt;br /&gt;
:   interrupts property (as used in interrupt source nodes) such that it&lt;br /&gt;
:   defines the IRQ_TYPE to use. When the core DT setup code initializes&lt;br /&gt;
:   wm8903-&amp;amp;gt;irq, the interrupts property will be parsed, and as a side-&lt;br /&gt;
:   effect, set the IRQ's IRQ_TYPE for the WM8903 probe() function to read.&lt;br /&gt;
:   &lt;br /&gt;
:   Controllers that support DT and a single IRQ_TYPE could arrange to&lt;br /&gt;
:   set the IRQ_TYPE somehow during their initialization, or hard-code&lt;br /&gt;
:   it during the processing of the child interrupts property.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: WM8903: Remove conditionals checking pdata != NULL&lt;br /&gt;
:   &lt;br /&gt;
:   The pdata pointer is now always valid. Remove any conditions that check&lt;br /&gt;
:   its validity.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch is mostly just removing an indentation level. One variable had&lt;br /&gt;
:   to be moved due to the removal of a scope, and one comment was split into&lt;br /&gt;
:   two. Viewing the patch with git show/diff -b will show that it's actually&lt;br /&gt;
:   very small.&lt;br /&gt;
:   &lt;br /&gt;
:   Note that WM8903_MIC_BIAS_CONTROL_0 is now written unconditionally,&lt;br /&gt;
:   whereas it used to be written only if pdata was supplied. Since&lt;br /&gt;
:   defpdata.micdet_cfg = 0, this unconditional write simply echos the HW&lt;br /&gt;
:   defaults in the case where pdata is not supplied.&lt;br /&gt;
:   &lt;br /&gt;
:   Based on work by John Bonesio, but significantly reworked since then.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: WM8903: Fix platform data gpio_cfg confusion&lt;br /&gt;
:   &lt;br /&gt;
:   wm8903_platform_data.gpio_cfg[] was intended to be interpreted as follows:&lt;br /&gt;
:   0:       Don't touch this GPIO's configuration register&lt;br /&gt;
:   1..7fff: Write that value to the GPIO's configuration register&lt;br /&gt;
:   8000:    Write zero to the GPIO's configuration register&lt;br /&gt;
:   other:   Undefined (invalid)&lt;br /&gt;
:   &lt;br /&gt;
:   The rationale is that platform data is usually global data, and a value of&lt;br /&gt;
:   zero means that the field wasn't explicitly set to anything (e.g. because&lt;br /&gt;
:   the field was new to the pdata type, and existing users weren't update to&lt;br /&gt;
:   initialize it) and hence the value zero should be ignored. 0x8000 is an&lt;br /&gt;
:   explicit way to get 0 in the register.&lt;br /&gt;
:   &lt;br /&gt;
:   The code worked this way until commit 7cfe561 &amp;quot;ASoC: wm8903: Expose GPIOs&lt;br /&gt;
:   through gpiolib&amp;quot;, where the behaviour was changed due to my lack of&lt;br /&gt;
:   awareness of the above rationale.&lt;br /&gt;
:   &lt;br /&gt;
:   This patch reverts to the intended behaviour, and updates all in-tree users&lt;br /&gt;
:   to use the correct scheme. This also makes WM8903 consistent with other&lt;br /&gt;
:   devices that use a similar scheme.&lt;br /&gt;
:   &lt;br /&gt;
:   WM8903_GPIO_NO_CONFIG is also renamed to WM8903_GPIO_CONFIG_ZERO so that&lt;br /&gt;
:   its name accurately reflects its purpose.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: WM8903: Create default platform data structure&lt;br /&gt;
:   &lt;br /&gt;
:   When no platform data is supplied, point pdata at a default platform&lt;br /&gt;
:   structure. This enables two future changes:&lt;br /&gt;
:   &lt;br /&gt;
:   a) Defines the default platform data values in a single place.&lt;br /&gt;
:   b) There is always a valid pdata pointer, so some conditional code can&lt;br /&gt;
:   be simplified by a later patch.&lt;br /&gt;
:   &lt;br /&gt;
:   Based on work by John Bonesio, but significantly reworked since then.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Move initial WM8903 identification and reset to I2C probe&lt;br /&gt;
:   &lt;br /&gt;
:   Get control of the device earlier and avoid trying to do an ASoC probe&lt;br /&gt;
:   on a card that won't work.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Stephen Warren &amp;amp;lt;swarren@nvidia.com&amp;amp;gt;&lt;br /&gt;
: - ASoC: Convert WM8903 to direct regmap API usage&lt;br /&gt;
:   &lt;br /&gt;
:   Converting to an rbtree cache as regcache doesn't have a flat cache.&lt;br /&gt;
:   Since the top of the register map is fairly sparse this should be an&lt;br /&gt;
:   overall win.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Stephen Warren &amp;amp;lt;swarren@nvidia.com&amp;amp;gt;&lt;br /&gt;
: - ASoC: Don't resync WM8903 register cache on reset&lt;br /&gt;
:   &lt;br /&gt;
:   We only do this on initial power on so it's at best a waste of time as&lt;br /&gt;
:   the core will have already defaulted to the same values.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Stephen Warren &amp;amp;lt;swarren@nvidia.com&amp;amp;gt;&lt;br /&gt;
: - ASoC: Use a normal cache sync for WM8903&lt;br /&gt;
:   &lt;br /&gt;
:   The driver used to use a complicated method to sync the register cache&lt;br /&gt;
:   after having brought the bias level up to standby in resume due to the&lt;br /&gt;
:   use of the write sequencer to manage the initial power up. Now that we&lt;br /&gt;
:   don't use the write sequencer there is no need for this and we can just&lt;br /&gt;
:   use snd_soc_cache_sync() directly.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Stephen Warren &amp;amp;lt;swarren@nvidia.com&amp;amp;gt;&lt;br /&gt;
: - ASoC: WM8903 only supports I2C so don't ifdef it&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Stephen Warren &amp;amp;lt;swarren@nvidia.com&amp;amp;gt;&lt;br /&gt;
: - ASoC: Use table based control init for WM8903&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Stephen Warren &amp;amp;lt;swarren@nvidia.com&amp;amp;gt;&lt;br /&gt;
: - ASoC: Convert WM8903 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Stephen Warren &amp;amp;lt;swarren@nvidia.com&amp;amp;gt;&lt;br /&gt;
: - ASoC: WM8903: Disallow all invalid gpio_cfg pdata values&lt;br /&gt;
:   &lt;br /&gt;
:   The GPIO registers are 15 bits wide. Hence values, higher than 0x7fff are&lt;br /&gt;
:   not legal GPIO register values. Modify the pdata.gpio_cfg handling code&lt;br /&gt;
:   to reject all illegal values, not just WM8903_GPIO_NO_CONFIG (0x8000). This&lt;br /&gt;
:   will allow the later use of 0xffffffff as an invalid value in future device&lt;br /&gt;
:   tree bindings, meaning &amp;quot;don't touch this GPIO's configuration&amp;quot;.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert WM8903 MICBIAS to a supply widget&lt;br /&gt;
:   &lt;br /&gt;
:   Also rename it to MICBIAS to reflect the pin name and help any out of tree&lt;br /&gt;
:   users notice the change.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: WM8903: Free IRQ on device removal&lt;br /&gt;
:   &lt;br /&gt;
:   Without this, request_irq on subsequent device initialization fails, and&lt;br /&gt;
:   the codec cannot be used.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix wrong data type access in a few codec drivers&lt;br /&gt;
:   &lt;br /&gt;
:   Commit fafd217 (&amp;quot;ASoC: Store a list of widgets in a DAPM mux/mixer kcontrol&amp;quot;)&lt;br /&gt;
:   changed the control private data type that is passed to snd_soc_cnew when&lt;br /&gt;
:   creating dapm mixer and mux controls. Commit did not update a few codec&lt;br /&gt;
:   drivers that are using their own put callbacks and thus are accessing a&lt;br /&gt;
:   wrong data type.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Stephen Warren &amp;amp;lt;swarren@nvidia.com&amp;amp;gt;&lt;br /&gt;
: - ASoC: WM8903: Fix Digital Capture Volume range&lt;br /&gt;
:   &lt;br /&gt;
:   Increase the range of the Digital Capture Volume control to be 120 steps.&lt;br /&gt;
:   Each step is 0.75dB, and the range starts at -72dB, giving a max setting&lt;br /&gt;
:   of 18dB, which matches the latest datasheet, to the precision of the step&lt;br /&gt;
:   size.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: WM8903: Implement DMIC support&lt;br /&gt;
:   &lt;br /&gt;
:   In addition to the currently supported analog capture path, the WM8903&lt;br /&gt;
:   also supports digital mics.&lt;br /&gt;
:   &lt;br /&gt;
:   The analog and digital capture paths are exclusive; a mux is present to&lt;br /&gt;
:   select the capture source.&lt;br /&gt;
:   &lt;br /&gt;
:   Logically, the mux exists to select the decimator's input, from either&lt;br /&gt;
:   the ADC or DMIC block outputs. However, the ADC power domain also&lt;br /&gt;
:   includes the DMIC interface. Consequently, this change represents the&lt;br /&gt;
:   mux as existing immediately before the ADC, and selecting between the&lt;br /&gt;
:   Input PGA and DMIC block outputs.&lt;br /&gt;
:   &lt;br /&gt;
:   An alternative might be to represent the mux in its correct location,&lt;br /&gt;
:   and associate the ADC power enable controls with both the real ADC, and&lt;br /&gt;
:   a fake ADC for the DMIC?&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: WM8903: HP and Line out PGA/mixer DAPM fixes&lt;br /&gt;
:   &lt;br /&gt;
:   Update the headphone and line out mixers and PGAs use the same logical&lt;br /&gt;
:   set of register bits and sequencing as the speaker mixer/PGA.&lt;br /&gt;
:   &lt;br /&gt;
:   This allows ALSA controls for mute and volume on headphone and line out&lt;br /&gt;
:   to operate correctly.&lt;br /&gt;
:   &lt;br /&gt;
:   Per conversation on alsa-devel, earlier datasheets indicated that the&lt;br /&gt;
:   POWER_MANAGEMENT_* register bits 0 and 1 were aliases to ANALOG_* register&lt;br /&gt;
:   bits 0 and 4, and hence only one copy of those bits was programmed.&lt;br /&gt;
:   However, later datasheets corrected this.&lt;br /&gt;
:   &lt;br /&gt;
:   [swarren: Applied same change to headphone widgets]&lt;br /&gt;
: - ASoC: Convert WM8903 to table based DAPM setup&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Warn if WM8903 platform data is used to enable microphone IRQ&lt;br /&gt;
:   &lt;br /&gt;
:   The WM8903 interrupts are clear on read so if the WM8903 detection is&lt;br /&gt;
:   enabled from platform data when the IRQ is in use (rather than using a&lt;br /&gt;
:   direct signal from a GPIO) status may be lost during startup. Help users&lt;br /&gt;
:   spot this misconfiguration by adding a WARN_ON().&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Use explicit sequence for WM8903 bias off&lt;br /&gt;
:   &lt;br /&gt;
:   This makes no real difference compared to the write sequencer sequence&lt;br /&gt;
:   that was previously used but can run without a clock being provided.&lt;br /&gt;
:   Also remove the write sequencer support code as this was the last use&lt;br /&gt;
:   of it.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Don't use write sequencer to power up WM8903&lt;br /&gt;
:   &lt;br /&gt;
:   The write sequencer sequencer sequence takes longer than is desirable&lt;br /&gt;
:   as it brings up a full playback path which is not required at this&lt;br /&gt;
:   point. Open coding the sequence cuts the startup time by two thirds.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert WM8903 bias management to use snd_soc_update_bits()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Actively manage WM8903 DC servo configuration&lt;br /&gt;
:   &lt;br /&gt;
:   Explicitly cache the DC servo offsets for digital paths in the driver,&lt;br /&gt;
:   allowing them to be preserved over suspend and resume, and ensure that&lt;br /&gt;
:   we recalibrate analogue outputs paths when they are in use so that we&lt;br /&gt;
:   cover any changes in the input offset.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix WM8903 DAC mute default&lt;br /&gt;
:   &lt;br /&gt;
:   The WM8903 register map does not mute the DAC by default at startup&lt;br /&gt;
:   so we need to explicitly do so.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Dynamically manage CLK_SYS in WM8903&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert WM8903 to use PGA_S for output stage enables&lt;br /&gt;
:   &lt;br /&gt;
:   This simplfies the code and slightly reduces the startup time.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add support for AIF channel muxing on WM8903&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Display WM8903 chip revision alphabetically&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove redundant -codec from WM8903 driver name&lt;br /&gt;
:   &lt;br /&gt;
:   It causes noisy -codecs to appear in things like .codec_name.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Correct definition of WM8903_VMID_RES_5K&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: WM8903: Fix mic detection enable logic&lt;br /&gt;
:   &lt;br /&gt;
:   The mic detection HW should be enabled when either mic or short detection&lt;br /&gt;
:   is required, not when only both are required.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: WM8903: Fix mic detection register definitions&lt;br /&gt;
:   &lt;br /&gt;
:   * There is no hysteresis enable field in the current datasheet.&lt;br /&gt;
:   * Mic detection threshold field is only 2 bits wide.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Accept any logical value WM8903 GPIO set()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8903: Expose GPIOs through gpiolib&lt;br /&gt;
:   &lt;br /&gt;
:   Also, update platform_data GPIO handling to have an explicit &amp;quot;don't&lt;br /&gt;
:   touch this pin&amp;quot; option.&lt;br /&gt;
:   &lt;br /&gt;
:   Add #defines for the GPIO pin functions.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8904===&lt;br /&gt;
: - ASoC: Remove unused -codec from Wolfson device driver names&lt;br /&gt;
:   &lt;br /&gt;
:   Devices that aren't MFDs don't need to distinguish this.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert wm8904 MICBIAS to a supply widget&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: WM8904: Set `invert' bit for Capture Switch&lt;br /&gt;
:   &lt;br /&gt;
:   Set `invert' bit for Capture Switch. Otherwise analogue is muted when&lt;br /&gt;
:   Capture Switch is ON.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove unused &amp;quot;control_data&amp;quot; field of struct wm8904_priv&lt;br /&gt;
:   &lt;br /&gt;
:   The control_data field is used to initialize the codec's control_data field,&lt;br /&gt;
:   but since this is also done by the snd-soc-cache core, the redundant&lt;br /&gt;
:   assignment can be removed and the field can be dropped.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add basic WM8918 support&lt;br /&gt;
:   &lt;br /&gt;
:   The WM8918 is register compatible with the WM8904 with a subset of the&lt;br /&gt;
:   functionality. Add the device ID, a subsequent patch will ensure that only&lt;br /&gt;
:   the relevant functionality is exported to userspace.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8915===&lt;br /&gt;
: - ASoC: Rename WM8915 to WM8996&lt;br /&gt;
:   &lt;br /&gt;
:   For marketing reasons the part will be called WM8996. In order to avoid&lt;br /&gt;
:   user confusion rename the driver to reflect this.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Allow WM8915 BCLK calculation outside hw_params()&lt;br /&gt;
:   &lt;br /&gt;
:   Allow more dynamic management of the device clocking by allowing BCLK to&lt;br /&gt;
:   be calculated when we set SYSCLK. This means that if the system is idle&lt;br /&gt;
:   when hw_params() runs then we don't try to use the SYSCLK used in that case&lt;br /&gt;
:   to set up the BCLK dividers, we can instead wait until a later point such&lt;br /&gt;
:   as bias level configuration. This makes it easier to manage low power modes.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Error out when FLL lock interrupt is not delivered on WM8915&lt;br /&gt;
:   &lt;br /&gt;
:   When the FLL locks on the WM8915 an interrupt is generated.  For safety&lt;br /&gt;
:   error out if we don't get that interrupt when the IRQ output of the&lt;br /&gt;
:   WM8915 is hooked up.  Since we *really* expect an interrupt but the&lt;br /&gt;
:   threaded IRQ handler may take a bit longer than expected to get&lt;br /&gt;
:   scheduled also dramatically increase the delay in this case.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Suppress noop SYSCLK updates in WM8915&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Use a lower detection rate when monitoring headphones on WM8915&lt;br /&gt;
:   &lt;br /&gt;
:   We only need to increase the detection rate to maximum if we're monitoring&lt;br /&gt;
:   for button presses as the response times needed for user interaction there&lt;br /&gt;
:   are much lower.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove internally generated WM8915 supplies&lt;br /&gt;
:   &lt;br /&gt;
:   DCVDD and MICVDD are intended to be (and almost always are) generated by&lt;br /&gt;
:   on-board LDOs which are transparently controlled by the driver so we&lt;br /&gt;
:   shouldn't really be requesting them from the regulator API. If the driver&lt;br /&gt;
:   is updated to support external supply of these then we will need to change&lt;br /&gt;
:   the way we handle this.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Support edge triggered IRQs for WM8915&lt;br /&gt;
:   &lt;br /&gt;
:   Really this should be something the IRQ core can cope with for us but since&lt;br /&gt;
:   it doesn't currently do so (at least for threaded interrupts like this) do&lt;br /&gt;
:   so in the driver. This allows us to run with interrupt controllers that&lt;br /&gt;
:   only support edge triggered interrupts.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add missing break in WM8915 FLL source selection&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Only update SYSCLK_ENA when pausing WM8915 SYSCLK&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove duplicate linux/delay.h inclusion.&lt;br /&gt;
:   &lt;br /&gt;
:   It's enough to include linux/delay.h just once in&lt;br /&gt;
:   sound/soc/codecs/wm8915.c, so remove the duplicate.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove outdated FIXME from WM8915&lt;br /&gt;
:   &lt;br /&gt;
:   Actually the current code is perfectly sensible given the hardware.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Use shared controls for input signal path in WM8915&lt;br /&gt;
:   &lt;br /&gt;
:   Gives finer grained power management.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Support 24.576MHz MCLKs in WM8915&lt;br /&gt;
:   &lt;br /&gt;
:   We can safely divide these down to within the supported SYSCLK range.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Move WM8915 FLL operations onto the CODEC&lt;br /&gt;
:   &lt;br /&gt;
:   Since the WM8915 FLL is not tied to a particular audio interface move it&lt;br /&gt;
:   to a CODEC wide operation.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add WM8915 CODEC driver&lt;br /&gt;
:   &lt;br /&gt;
:   The WM8915 is an ultra low power mobile CODEC designed for smartphones,&lt;br /&gt;
:   featuring a mixture of digital and analogue I/O with flexible mixing&lt;br /&gt;
:   options and advanced low power accessory detection functionality in a&lt;br /&gt;
:   compact package.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8940===&lt;br /&gt;
: - ASoC: wm8940: Fix setting PLL Output clock division ratio&lt;br /&gt;
:   &lt;br /&gt;
:   According to the datasheet:&lt;br /&gt;
:   The PLL Output clock division ratio is controlled by BIT[5:4] of&lt;br /&gt;
:   WM8940_GPIO register(08h).&lt;br /&gt;
:   Current code read/write the WM8940_ADDCNTRL(07h) register which is wrong.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8940: Fix mask for setting BCLKDIV&lt;br /&gt;
:   &lt;br /&gt;
:   According to the datasheet:&lt;br /&gt;
:   BCLK is controlled by BIT[4:2] of WM8940_CLOCK(06h) register.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8940: Properly set codec-&amp;amp;gt;dapm.bias_level&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Chris Paulson-Ellis &amp;amp;lt;chris@edesix.com&amp;amp;gt;&lt;br /&gt;
: - ASoC: wm8940: Convert to snd_soc_cache_sync&lt;br /&gt;
:   &lt;br /&gt;
:   Convert to snd_soc_cache_sync for sync reg_cache with the hardware.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove unused &amp;quot;control_data&amp;quot; field of struct wm8940_priv&lt;br /&gt;
:   &lt;br /&gt;
:   The control_data field is used to initialize the codec's control_data field,&lt;br /&gt;
:   but since this is also done by the snd-soc-cache core, the redundant&lt;br /&gt;
:   assignment can be removed and the field can be dropped.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8940: remove unnecessary if statements&lt;br /&gt;
:   &lt;br /&gt;
:   removing unnecessary if(ret) checks&lt;br /&gt;
:   &lt;br /&gt;
:   This updated patch corrects a minor spelling problem in the commit message&lt;br /&gt;
:   and resolves two other (similar) issues found in wm8940.c by Jonathan Cameron.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8958===&lt;br /&gt;
: - ASoC: Say how long short WM8958 DSP2 firmwares are&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: WM8958: correctly show firmware magic on mismatch&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Don't restart an already running WM8958 DSP2&lt;br /&gt;
:   &lt;br /&gt;
:   Don't want to upset the DSP.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Skip noop reconfiguration of WM8958 DSP2 algorithms&lt;br /&gt;
:   &lt;br /&gt;
:   If we're setting the currently applied value for one of the DSP algorithm&lt;br /&gt;
:   configurations we can just skip all the handling as the control set is a&lt;br /&gt;
:   noop. This ensures we do not disrupt a running DSP.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: fix wm8958-dsp2 printk format warnings&lt;br /&gt;
:   &lt;br /&gt;
:   Fix printk format warnings in wm8958-dsp2.c:&lt;br /&gt;
:   &lt;br /&gt;
:   sound/soc/codecs/wm8958-dsp2.c:103: warning: format '%d' expects type 'int', but argument 4 has type 'size_t'&lt;br /&gt;
:   sound/soc/codecs/wm8958-dsp2.c:111: warning: format '%d' expects type 'int', but argument 3 has type 'size_t'&lt;br /&gt;
:   sound/soc/codecs/wm8958-dsp2.c:144: warning: format '%d' expects type 'int', but argument 5 has type 'size_t'&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add WM8958 enhanced EQ support&lt;br /&gt;
:   &lt;br /&gt;
:   DSP2 in the WM8958 can be used to support an upgraded EQ for use in&lt;br /&gt;
:   demanding applications.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add WM8958 VSS support&lt;br /&gt;
:   &lt;br /&gt;
:   With appropriate firmware the WM8958 can support Virtual Surround Sound or&lt;br /&gt;
:   VSS, widening the stereo audio image for improved user experience. Enable&lt;br /&gt;
:   support for this mode of operation when the appropriate firmware can be&lt;br /&gt;
:   loaded at runtime.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Refactor WM8958 DSP to support additional algorithms&lt;br /&gt;
:   &lt;br /&gt;
:   In preparation for the addition of additional WM8958 algorithms&lt;br /&gt;
:   reorganise the code to make it easier to add such support later.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Support download of WM8958 MBC firmware&lt;br /&gt;
:   &lt;br /&gt;
:   Allow userspace to supply an update to the ROM firmware. The firmware&lt;br /&gt;
:   request is non-blocking so userspace can load the firmware at its&lt;br /&gt;
:   leisure without delaying startup, the driver will begin using the&lt;br /&gt;
:   firmware the next time MBC is started after it has been supplied.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Handle startup sequencing of WM8958 DSP2 with deferred clocking&lt;br /&gt;
:   &lt;br /&gt;
:   The DSP2 startup requires that the clock be enable so if we've deferred&lt;br /&gt;
:   clock startup we need to defer DSP2 startup&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Factor WM8958 DSP2 handling into separate file&lt;br /&gt;
:   &lt;br /&gt;
:   DSP2 on the WM8958 has a default ROM which provides a multi-band&lt;br /&gt;
:   compressor for enhanced performance on mobile devices but can also&lt;br /&gt;
:   support runtime download of alternative firmware. In preparation for&lt;br /&gt;
:   more exploiting this functionality refactor the code to split the&lt;br /&gt;
:   handling of DSP2 into a separate file.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8960===&lt;br /&gt;
: - ASoC: Convert WM8960 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8960: Use snd_soc_update_bits for read-modify-write&lt;br /&gt;
:   &lt;br /&gt;
:   Use snd_soc_update_bits for read-modify-write register access instead of&lt;br /&gt;
:   open-coding it using snd_soc_read and snd_soc_write&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove unused AUDIO_NAME define from WM8960&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove I2C ifdefs from WM8960&lt;br /&gt;
:   &lt;br /&gt;
:   The driver only supports I2C as the control interface.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert wm8960 MICBIAS to a supply widget&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8960: Convert to snd_soc_cache_sync&lt;br /&gt;
:   &lt;br /&gt;
:   Convert to snd_soc_cache_sync for sync reg_cache with the hardware.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove unused &amp;quot;control_data&amp;quot; field of struct wm8960_priv&lt;br /&gt;
:   &lt;br /&gt;
:   The control_data field is used to initialize the codec's control_data field,&lt;br /&gt;
:   but since this is also done by the snd-soc-cache core, the redundant&lt;br /&gt;
:   assignment can be removed and the field can be dropped.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8961===&lt;br /&gt;
: - ASoC: Use standard cache sync code in wm8961&lt;br /&gt;
:   &lt;br /&gt;
:   We write the reset register with the default value so it should not be&lt;br /&gt;
:   mistakenly written.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert wm8961 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove I2C ifdefs from wm8961 driver&lt;br /&gt;
:   &lt;br /&gt;
:   The driver only supports I2C so no need to conditionalise its use.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix comments for disabling amplifier and PGA&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert wm8961 MICBIAS to a supply widget&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8961: Convert codec-&amp;amp;gt;hw_read to snd_soc_read&lt;br /&gt;
:   &lt;br /&gt;
:   codec-&amp;amp;gt;hw_read is broken now, let's covert to snd_soc_read.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8962===&lt;br /&gt;
: - ASoC: Fix return value of wm8962_gpio_direction_out()&lt;br /&gt;
:   &lt;br /&gt;
:   We can't just pass back the return value of snd_soc_update_bits() as it&lt;br /&gt;
:   will be 1 if a bit changed rather than zero.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Enable ASoC register map dump for some regmap CODECs&lt;br /&gt;
:   &lt;br /&gt;
:   It's still useful to be able to poke around in the register map at&lt;br /&gt;
:   runtime.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Make WM8962 beep a signal generator&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert WM8962 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Disable debounce on some WM8962 interrupts&lt;br /&gt;
:   &lt;br /&gt;
:   Allow them to work when the device is unclocked.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert WM8962 to direct regmap usage&lt;br /&gt;
:   &lt;br /&gt;
:   This initial conversion just moves the register init, regulator acquisition&lt;br /&gt;
:   and device verification out to the I2C probe(). Movement of other parts of&lt;br /&gt;
:   the driver like the GPIO and beep generation code will follow.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8962: fix DB_RANGE size&lt;br /&gt;
:   &lt;br /&gt;
:   Give the correct number of entries to TLV_DB_RANGE_HEAD to prevent&lt;br /&gt;
:   reading more data than actually is in the arrays.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Manage thermal shutdown for WM8962&lt;br /&gt;
:   &lt;br /&gt;
:   Disable the thermal shutdown circuits for headphone and speaker when the&lt;br /&gt;
:   relevant outputs are not enabled in order to save current in idle modes.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Disable MICBIAS and SYSCLK when stopping WM8962 accessory detection&lt;br /&gt;
:   &lt;br /&gt;
:   They aren't needed any more. If machines need them for other purposes then&lt;br /&gt;
:   further changes will be required.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: WM8962 accessory detection requires MICBIAS&lt;br /&gt;
:   &lt;br /&gt;
:   Force MICBIAS on as well as SYSCLK as the WM8962 accessory detection can't&lt;br /&gt;
:   function without both. No point in making machine drivers manually enable&lt;br /&gt;
:   it.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Enable SYSCLK last when enabling WM8962 mic detection&lt;br /&gt;
:   &lt;br /&gt;
:   Ensure everything is set up before we start detecting.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Start WM8962 FLL if SYSCLK is enabled&lt;br /&gt;
:   &lt;br /&gt;
:   Since we have code to automatically manage the start and stop of the FLL&lt;br /&gt;
:   based on the SYSCLK widget if SYSCLK is already enabled and the FLL is&lt;br /&gt;
:   configured then we need to start it up.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Ensure we always delay for WM8962 FLL when starting from SYSCLK&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Ensure the WM8962 oscillator and PLLs start up disabled&lt;br /&gt;
:   &lt;br /&gt;
:   Since there is no current software control for these they would otherwise&lt;br /&gt;
:   be left enabled, consuming power.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Ensure WM8962 PLL registers are reset&lt;br /&gt;
:   &lt;br /&gt;
:   The WM8962 has a separate software reset for the PLL registers. Ensure that&lt;br /&gt;
:   these are reset also on startup.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove direct register cache accesses from WM8962 driver&lt;br /&gt;
:   &lt;br /&gt;
:   Also fix return values for speaker switch updates.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix a bug in WM8962 DSP_A and DSP_B settings&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert WM8962 MICBIAS to a supply widget&lt;br /&gt;
:   &lt;br /&gt;
:   A supply widget is generally clearer than a MICBIAS widget and a mic bias&lt;br /&gt;
:   is just a type of supply so use a supply widget for the MICBIAS. This also&lt;br /&gt;
:   avoids confusion with the routing when connected to multiple inputs.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Rename WM8962 DMIC widget to DMIC_ENA&lt;br /&gt;
:   &lt;br /&gt;
:   Matches the register name and avoids confusion with board widgets.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove bitrotted wm8962_resume()&lt;br /&gt;
:   &lt;br /&gt;
:   This functionality is now subsumed within the bias management, using the&lt;br /&gt;
:   standard cache management functionality, without assuming the cache type.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Provide more detail on WM8962 thermal shutdown status&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Clear any outstanding WM8962 FLL lock completions before waiting&lt;br /&gt;
:   &lt;br /&gt;
:   Ensure that we don't spuriously trigger early.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Report IRQ_NONE when we don't see an interrupt from WM8962&lt;br /&gt;
:   &lt;br /&gt;
:   This should never happen with level triggered IRQs.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Initial WM8962 DSP2 support&lt;br /&gt;
:   &lt;br /&gt;
:   The WM8962 features a DSP providing a number of signal processing&lt;br /&gt;
:   features including HD Bass and Virtual Surround Sound (VSS).  Enable&lt;br /&gt;
:   initial support for this, allowing users to enable and disable the&lt;br /&gt;
:   algorithms using the default coefficient sets.  Further patches will&lt;br /&gt;
:   add support for runtime configuration of the DSP coefficients.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add basic WM8962 capture low/high pass filter control&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Move WM8962 CLKREG_OVD earlier&lt;br /&gt;
:   &lt;br /&gt;
:   When the clocking registers are not overriden some of the registers are&lt;br /&gt;
:   not writable.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Acknowledge WM8962 interrupts before acting on them&lt;br /&gt;
:   &lt;br /&gt;
:   This closes the small race between a status being read in response to an&lt;br /&gt;
:   interrupt and clearing the interrupt, meaning that if the status changes&lt;br /&gt;
:   between those periods we might not get a reassertion of the interrupt.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Defer all WM8962 clocking configuration until power up&lt;br /&gt;
:   &lt;br /&gt;
:   Don't require an audio rate SYSCLK in hw_params() in order to better&lt;br /&gt;
:   support microphone detection use cases.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Implement base 5 band EQ control for WM8962&lt;br /&gt;
:   &lt;br /&gt;
:   ReTune Mobile modes are not currently supported.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Report errors when we have a WM8962 IRQ and don't get FLL lock&lt;br /&gt;
:   &lt;br /&gt;
:   We really should be getting the interrupt - if we don't get one it's very&lt;br /&gt;
:   likely that the configuration is incorrect and audio will fail. Also&lt;br /&gt;
:   increase the timeout substantially in this case for safety.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Factor out I2C usage in WM8962 driver&lt;br /&gt;
:   &lt;br /&gt;
:   The chip can actually support SPI so we shouldn't assume we've got an I2C&lt;br /&gt;
:   device even though that's the most common configuration.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix WM8962 headphone volume update for use of advanced caches&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Implement WM8962 ADC high pass filter configuration&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Don't warn if the WM8962 SYSCLK FLL setting doesn't match reality&lt;br /&gt;
:   &lt;br /&gt;
:   When bringing up audio low power modes boards may configure SYSCLK before&lt;br /&gt;
:   they actually start the FLL as we do much of the clocking setup prior to&lt;br /&gt;
:   the power up sequence.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Implement WM8962 DMIC support&lt;br /&gt;
:   &lt;br /&gt;
:   DMIC support is automatically disabled when none of the GPIOs are set up&lt;br /&gt;
:   to bring out the DMICCLK and DMICDAT pins at startup.&lt;br /&gt;
:   &lt;br /&gt;
:   Note that there's no support for controlling DMIC routing except the power&lt;br /&gt;
:   control so the board DAPM configuration will need to manage DMIC enable and&lt;br /&gt;
:   disable if analogue mics (eg, a headset) also exist.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Define constants for WM8962 GPIO functions&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Move WM8962 FLL configuration to CODEC&lt;br /&gt;
:   &lt;br /&gt;
:   There's only one DAI anyway.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Support FLL lock interrupt on WM8962&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Accept any logical value for WM8962 GPIO set()&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8971===&lt;br /&gt;
: - ASoC: Convert wm8971 MICBIAS to a supply widget&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8971: Convert to snd_soc_cache_sync&lt;br /&gt;
:   &lt;br /&gt;
:   Convert to snd_soc_cache_sync for sync reg_cache with the hardware.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Avoid writing to WM8971_RESET in wm8971_resume&lt;br /&gt;
:   &lt;br /&gt;
:   Writing to WM8971_RESET resets all registers to the default state.&lt;br /&gt;
:   Thus we should avoid writing to WM8971_RESET on resume.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8971: Use snd_soc_update_bits for read-modify-write&lt;br /&gt;
:   &lt;br /&gt;
:   Use snd_soc_update_bits for read-modify-write register access instead of&lt;br /&gt;
:   open-coding it using snd_soc_read and snd_soc_write&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8974===&lt;br /&gt;
: - ASoC: Convert wm8974 MICBIAS to a supply widget&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8974: Convert to snd_soc_cache_sync&lt;br /&gt;
:   &lt;br /&gt;
:   Convert to snd_soc_cache_sync for sync reg_cache with the hardware.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove references to linux@wolfsonmicro.com&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8978===&lt;br /&gt;
: - ASoC: Remove unused &amp;quot;control_data&amp;quot; field of struct wm8978_priv&lt;br /&gt;
:   &lt;br /&gt;
:   The control_data field is used to initialize the codec's control_data field,&lt;br /&gt;
:   but since this is also done by the snd-soc-cache core, the redundant&lt;br /&gt;
:   assignment can be removed and the field can be dropped.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add TLV information for WM8978 DAC limiter&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix broken bitfield definitions in WM8978&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8983===&lt;br /&gt;
: - ASoC: Convert wm8983 MICBIAS to a supply widget&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Writing register default value for the reset register&lt;br /&gt;
:   &lt;br /&gt;
:   The WM8983 can be reset by performing a write of any value to&lt;br /&gt;
:   the software reset register.&lt;br /&gt;
:   To avoid writing to the software reset register while resume,&lt;br /&gt;
:   we should write the same value in wm8983_reg_defs to software&lt;br /&gt;
:   reset register in wm8983_probe().&lt;br /&gt;
:   The write to the reset register is suppressed by the cache&lt;br /&gt;
:   restore code when it skips writes of default registers.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: WM8983: Initial driver&lt;br /&gt;
:   &lt;br /&gt;
:   The WM8983 is a low power, high quality stereo CODEC&lt;br /&gt;
:   designed for portable multimedia applications. Highly flexible&lt;br /&gt;
:   analogue mixing functions enable new application features,&lt;br /&gt;
:   combining hi-fi quality audio with voice communication.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8985===&lt;br /&gt;
: - ASoC: Convert wm8985 MICBIAS to a supply widget&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8988===&lt;br /&gt;
: - ASoC: Convert wm8988 MICBIAS to a supply widget&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8988: Convert to snd_soc_cache_sync&lt;br /&gt;
:   &lt;br /&gt;
:   Convert to snd_soc_cache_sync for sync reg_cache with the hardware.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8988: Use snd_soc_update_bits for read-modify-write&lt;br /&gt;
:   &lt;br /&gt;
:   Use snd_soc_update_bits for read-modify-write register access instead of&lt;br /&gt;
:   open-coding it using snd_soc_read and snd_soc_write&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8988: Use snd_soc_update_bits for read-modify-write&lt;br /&gt;
:   &lt;br /&gt;
:   Use snd_soc_update_bits for read-modify-write register access instead of&lt;br /&gt;
:   open-coding it using snd_soc_read and snd_soc_write&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8990===&lt;br /&gt;
: - ASoC: Convert wm8990 MICBIAS to a supply widget&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8990: Use snd_soc_update_bits for read-modify-write&lt;br /&gt;
:   &lt;br /&gt;
:   Use snd_soc_update_bits for read-modify-write register access instead of&lt;br /&gt;
:   open-coding it using snd_soc_read and snd_soc_write&lt;br /&gt;
:   &lt;br /&gt;
:   This patch also includes a comment fix in wm8990_set_dai_pll(),&lt;br /&gt;
:   if freq_in and freq_out are 0, what we do is to clear WM8990_PLL_ENA bit.&lt;br /&gt;
:   Thus the comment should be &amp;quot;Turn off PLL&amp;quot;.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8990: Fix wrong bit setting for WM8990_POWER_MANAGEMENT_2&lt;br /&gt;
:   &lt;br /&gt;
:   If (fakepower &amp;amp; ((1 &amp;amp;lt;&amp;amp;lt; WM8990_INMIXR_PWR_BIT) | (1 &amp;amp;lt;&amp;amp;lt; WM8990_AINRMUX_PWR_BIT)))&lt;br /&gt;
:   is false, we should clear WM8990_AINR_ENA bits instead of WM8990_AINL_ENA.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8990: Remove incorrect comments&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8990: Convert to snd_soc_cache_sync for sync reg_cache with the hardware&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8991===&lt;br /&gt;
: - ASoC: Convert wm8991 MICBIAS to a supply widget&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8991: Use snd_soc_update_bits for read-modify-write&lt;br /&gt;
:   &lt;br /&gt;
:   Use snd_soc_update_bits for read-modify-write register access instead of&lt;br /&gt;
:   open-coding it using snd_soc_read and snd_soc_write&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8991: Fix wrong bit setting for WM8991_POWER_MANAGEMENT_2&lt;br /&gt;
:   &lt;br /&gt;
:   If (fakepower &amp;amp; ((1 &amp;amp;lt;&amp;amp;lt; WM8991_INMIXR_PWR_BIT)|(1 &amp;amp;lt;&amp;amp;lt; WM8991_AINRMUX_PWR_BIT))))&lt;br /&gt;
:   is false, we should clear WM8991_AINR_ENA bits instead of WM8991_AINL_ENA.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove references to linux@wolfsonmicro.com&lt;br /&gt;
:   &lt;br /&gt;
: - ALSA: Remove unneeded version.h includes from sound/&lt;br /&gt;
:   &lt;br /&gt;
:   In the sound/ directory there are two files (flagged by 'make&lt;br /&gt;
:   versioncheck'); sound/pci/asihpi/asihpi.c and&lt;br /&gt;
:   sound/soc/codecs/wm8991.c that include linux/version.h although they&lt;br /&gt;
:   don't need it. This patch removes the unneeded includes.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8993/4===&lt;br /&gt;
: - ASoC: Wait for WM8993 FLL to stabilise&lt;br /&gt;
:   &lt;br /&gt;
:   Ensure the FLL is locked before we return from set_fll().&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix partial cherry pick in wm8993&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Use standard register cache sync in wm8993&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert wm8993 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert WM8994 MICBIASes to supply widgets&lt;br /&gt;
:   &lt;br /&gt;
:   There are some in tree systems using the driver but none use the MICBIAS&lt;br /&gt;
:   widgets.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm_hubs: fix DB_RANGE size&lt;br /&gt;
:   &lt;br /&gt;
:   Give the correct number of entries to TLV_DB_RANGE_HEAD to prevent&lt;br /&gt;
:   reading more data than actually is in the array.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8993: fix DB_RANGE size&lt;br /&gt;
:   &lt;br /&gt;
:   Give the correct number of entries to TLV_DB_RANGE_HEAD to prevent&lt;br /&gt;
:   reading more data than actually is in the array.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Disable thermal shutdown when not using speakers in wm_hubs&lt;br /&gt;
:   &lt;br /&gt;
:   The thermal shutdown support in wm_hubs devices is tied to the speaker&lt;br /&gt;
:   drivers (which are the only high power subsystems within the device).&lt;br /&gt;
:   Ensure minimal current usage when the thermal shutdown support is not&lt;br /&gt;
:   required by disabling the circuit when the speaker drivers are powered&lt;br /&gt;
:   down.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Replace remaining use of *_volsw_2r with *_volsw&lt;br /&gt;
:   &lt;br /&gt;
:   The snd_soc_*_volsw_2r functionality has been merged to&lt;br /&gt;
:   *volsw callbacks.&lt;br /&gt;
:   Few places still used the get, or put variant of volsw_2r,&lt;br /&gt;
:   replace those with the corresponding *_volsw.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add VMID widget for wm_hubs devices&lt;br /&gt;
:   &lt;br /&gt;
:   Currently this does not actually do anything, it is being introduced in&lt;br /&gt;
:   order to facilitate additional power optimisations for current generation&lt;br /&gt;
:   devices.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Support separate left and right channel dcs_codes values&lt;br /&gt;
:   &lt;br /&gt;
:   Some devices can have performance optimized by setting different offsets&lt;br /&gt;
:   for left and right channels.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Implement new DC servo readback mode for late WM8994 revisions&lt;br /&gt;
:   &lt;br /&gt;
:   Later WM8994 devices implement a new DC servo readback mode with the&lt;br /&gt;
:   register used to access the offset moved to register 0x59. Implement&lt;br /&gt;
:   support for this and enable it on the appropriate devices.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Disable wm_hubs periodic DC servo update&lt;br /&gt;
:   &lt;br /&gt;
:   This does not function correctly in all circumstances so disable the&lt;br /&gt;
:   periodic updates unconditionally for stable; a future patch will reenable&lt;br /&gt;
:   where appropriate.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Handle spurious wm_hubs DC servo done interrupts&lt;br /&gt;
:   &lt;br /&gt;
:   Don't assume the first fire indicates that we're done.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Implement DC servo completion IRQ handling for wm_hubs devices&lt;br /&gt;
:   &lt;br /&gt;
:   The individual devices should set the flag dcs_done_irq in the hubs&lt;br /&gt;
:   shared data structure to indicate that they will flag the interrupt&lt;br /&gt;
:   by calling wm_hubs_dcs_done().&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Use late enable handling for direct voice, speaker and headphone&lt;br /&gt;
:   &lt;br /&gt;
:   This ensures appropriate clocking for bypass paths to speaker and&lt;br /&gt;
:   headphone and direct voice paths on affected revisions.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Correct left/right swap in wm_hubs DC offset correction&lt;br /&gt;
:   &lt;br /&gt;
:   It was consistently wrong for everything except WM8993 so should be no&lt;br /&gt;
:   functional change.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Allow suppression of series updates on wm_hubs devices&lt;br /&gt;
:   &lt;br /&gt;
:   Some devices do not support manual updates of the DC servo.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Trigger wm_hubs series update startup off a separate flag&lt;br /&gt;
:   &lt;br /&gt;
:   Allowing the two to be used independently.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix wm_hubs input PGA ZC bits&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix wrong data type access in a few codec drivers&lt;br /&gt;
:   &lt;br /&gt;
:   Commit fafd217 (&amp;quot;ASoC: Store a list of widgets in a DAPM mux/mixer kcontrol&amp;quot;)&lt;br /&gt;
:   changed the control private data type that is passed to snd_soc_cnew when&lt;br /&gt;
:   creating dapm mixer and mux controls. Commit did not update a few codec&lt;br /&gt;
:   drivers that are using their own put callbacks and thus are accessing a&lt;br /&gt;
:   wrong data type.&lt;br /&gt;
:   &lt;br /&gt;
:   Tested-by: Stephen Warren &amp;amp;lt;swarren@nvidia.com&amp;amp;gt;&lt;br /&gt;
: - ASoC: Add some missing volume update bit sets for wm_hubs devices&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Ensure output PGA is enabled for line outputs in wm_hubs&lt;br /&gt;
:   &lt;br /&gt;
:   Also fix a left/right typo while we're at it.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix output PGA enabling in wm_hubs CODECs&lt;br /&gt;
:   &lt;br /&gt;
:   The output PGA was not being powered up in headphone and speaker paths,&lt;br /&gt;
:   removing the ability to offer volume control and mute with the output&lt;br /&gt;
:   PGA.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Log wm_hubs DC servo operation code when reporting a timeout&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Hook wm_hubs micbiases up to CLK_SYS&lt;br /&gt;
:   &lt;br /&gt;
:   The microphone detection functionality requires a clock to work. In any&lt;br /&gt;
:   non-detection case where the MICBIAS is enabled CLK_SYS will be needed&lt;br /&gt;
:   anyway so there is no negative impact on power consumption.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8994===&lt;br /&gt;
: - ASoC: Enable ASoC register map dump for some regmap CODECs&lt;br /&gt;
:   &lt;br /&gt;
:   It's still useful to be able to poke around in the register map at&lt;br /&gt;
:   runtime.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove unused label from wm8994 probe()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove WM8994 register cache&lt;br /&gt;
:   &lt;br /&gt;
:   Now that the mfd is using the register map cache there's no need for the&lt;br /&gt;
:   CODEC driver to do any register cache management or any funny dances to&lt;br /&gt;
:   interact with the other drivers using the device so just remove the cache&lt;br /&gt;
:   initialisation and volatility information.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove ASoC-specific WM8994 I/O code&lt;br /&gt;
:   &lt;br /&gt;
:   Just go directly to the regmap API, saving code and making integration&lt;br /&gt;
:   that bit more direct.&lt;br /&gt;
:   &lt;br /&gt;
: - sound: mfd: Define some additional wm8994 registers&lt;br /&gt;
:   &lt;br /&gt;
:   Add a bunch of definitions for wm8994 registers that are not currently&lt;br /&gt;
:   used by software.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Rely on core enabling the wm8994 with runtime PM&lt;br /&gt;
:   &lt;br /&gt;
:   No need to do this in the driver now.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add missing err label&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Stephen Rothwell &amp;amp;lt;sfr@canb.auug.org.au&amp;amp;gt;&lt;br /&gt;
: - ASoC: Convert WM8994 to devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
:   Still have a manual free in there for some realloc()ed memory as there's&lt;br /&gt;
:   no devm version of that.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add platform data for WM8958/WM1811 microphone detection rates&lt;br /&gt;
:   &lt;br /&gt;
:   Allow systems to override the default microphone detection rates using&lt;br /&gt;
:   platform data in case the settings are not suitable (eg, due to an&lt;br /&gt;
:   unusually noisy jack).&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Ensure we reconfigure WM8958 microphone detection on rate changes&lt;br /&gt;
:   &lt;br /&gt;
:   We don't need to rerun DAPM if the clock source is the same but we do&lt;br /&gt;
:   need to adjust the microphone detection rate in case we are moving from&lt;br /&gt;
:   an audio to a non-audio rate.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Implement support for WM1811A jack detection&lt;br /&gt;
:   &lt;br /&gt;
:   The WM1811A features an advanced low power accessory detection subsystem&lt;br /&gt;
:   which allows the device to be maintained in a very low power state while&lt;br /&gt;
:   the system is idle without sacrificing any accessory detection features.&lt;br /&gt;
:   &lt;br /&gt;
:   Implement software support for this, automatically managing the power&lt;br /&gt;
:   configuration of the device depending on the detected accessory.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Rename WM8994 detecting flag to mic_detecting&lt;br /&gt;
:   &lt;br /&gt;
:   More specific and avoids confusion with a following change.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Allow more WM8958/WM1811 button levels with default handler&lt;br /&gt;
:   &lt;br /&gt;
:   The WM8958 and WM1811 support detecting a range of buttons. Allow the&lt;br /&gt;
:   user to provide platform data enabling more of these levels without&lt;br /&gt;
:   having to write a custom detection handler.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Tune down active mode detection rate for WM8958 mic detection&lt;br /&gt;
:   &lt;br /&gt;
:   Saves a little power.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Don't use control_data to get struct wm8994&lt;br /&gt;
:   &lt;br /&gt;
:   This will support refactoring to make use of the regmap API more directly&lt;br /&gt;
:   in the core.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Provide debug log of accessory status on WM8958&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Enhance default WM8958 microphone detection&lt;br /&gt;
:   &lt;br /&gt;
:   Actively manage the detection rate for microphones with WM8958, providing&lt;br /&gt;
:   improved power consumption and maximising the benefit from the hardware&lt;br /&gt;
:   debounce.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Put WM8958 and WM1811 MICBIAS into bypass mode when no audio&lt;br /&gt;
:   &lt;br /&gt;
:   When we don't have any active audio we can put the microphone biases into&lt;br /&gt;
:   bypass mode to save power at the expense of performance.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Ensure SYSCLK is enabled for WM8958 accessory detection&lt;br /&gt;
:   &lt;br /&gt;
:   Ensure SYSCLK is enabled while running accessory detection on WM8958.&lt;br /&gt;
:   It is always required so there is no sense in requiring machine drivers&lt;br /&gt;
:   to individually do this.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Mark WM8994 ADC muxes as virtual&lt;br /&gt;
:   &lt;br /&gt;
:   Since they don't actually have power bits but do have events associated&lt;br /&gt;
:   with them it's important that we bootstrap their state properly which&lt;br /&gt;
:   making them virtual does.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Supply dcs_codes for newer WM1811 revisions&lt;br /&gt;
:   &lt;br /&gt;
:   Based on initial data.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Error out if we can't generate a LRCLK at all for WM8994&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Ensure we get an impedence reported for WM8958 jack detect&lt;br /&gt;
:   &lt;br /&gt;
:   Occasionally we may see an accessory reported before we have a stable&lt;br /&gt;
:   impedance for the accessory. If this happens then reread the status in&lt;br /&gt;
:   order to ensure that the handler can take the appropriate action for the&lt;br /&gt;
:   status change.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Don't use wm8994-&amp;amp;gt;control_data when requesting IRQs&lt;br /&gt;
:   &lt;br /&gt;
:   The field is no longer initialised so this will crash if running on&lt;br /&gt;
:   wm8958.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Thomas Abraham &amp;amp;lt;thomas.abraham@linaro.org&amp;amp;gt;&lt;br /&gt;
: - ASoC: Don't use wm8994-&amp;amp;gt;control_data in wm8994_readable_register()&lt;br /&gt;
:   &lt;br /&gt;
:   The field is no longer initialised so this will crash if running on&lt;br /&gt;
:   wm8958.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Thomas Abraham &amp;amp;lt;thomas.abraham@linaro.org&amp;amp;gt;&lt;br /&gt;
: - ASoC: wm8994: Use SND_SOC_DAPM_AIF_OUT for AIF3 Capture&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Update WM1811 DCS codes for latest evaluation results&lt;br /&gt;
:   &lt;br /&gt;
:   Evaluation of larger quantities of material has provided new DCS codes&lt;br /&gt;
:   values to be applied for WM1811.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove impossible case from wm8994_hw_params&lt;br /&gt;
:   &lt;br /&gt;
:   We set hw_params callback for wm8994_aif3_dai_ops to wm8994_aif3_hw_params.&lt;br /&gt;
:   Thus no need to check wm8994-aif3 in wm8994_hw_params.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8994: Fix setting rate_reg for wm8994-aif2&lt;br /&gt;
:   &lt;br /&gt;
:   For wm8994-aif2, the rate_reg should be WM8994_AIF2_RATE.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8994: Slightly optimize configure_clock&lt;br /&gt;
:   &lt;br /&gt;
:   snd_soc_update_bits() will only write new register value&lt;br /&gt;
:   if the old value is different from the new value.&lt;br /&gt;
:   In additional, snd_soc_update_bits() returns 0 for no change.&lt;br /&gt;
:   No need to read WM8994_CLOCKING_1 register before calling snd_soc_update_bits().&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add WM1811 support&lt;br /&gt;
:   &lt;br /&gt;
:   The WM1811 is mostly register compatible with the WM8994 and WM8958,&lt;br /&gt;
:   providing a high performance audio hub CODEC in a small form factor&lt;br /&gt;
:   suitable for ultra compact system designs.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix backport of WM8994 thermal warning&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Stephen Rothwell &amp;amp;lt;sfr@canb.auug.org.au&amp;amp;gt;&lt;br /&gt;
: - ASoC: Implement WM8994 thermal warning and shutdown interrupt support&lt;br /&gt;
:   &lt;br /&gt;
:   ALSA doesn't really have good mechanisms for dealing with these so we just&lt;br /&gt;
:   log them - the hardware already has automatic shutdown support.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add WM8958 noise gate support&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Disable pulls on WM8994 AIF2 when starting it&lt;br /&gt;
:   &lt;br /&gt;
:   Pull control is availalbe for WM8994 AIF2, generally disabled as part of&lt;br /&gt;
:   the GPIO configuration in order to save power after system startup. As on&lt;br /&gt;
:   newer devices in the series there is no GPIO functionality on these pins&lt;br /&gt;
:   this will happen less naturally so have the driver disable the pulls as the&lt;br /&gt;
:   AIF is probed.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Disable WM8994 VMID for digital only paths&lt;br /&gt;
:   &lt;br /&gt;
:   On WM8994 class devices only the analogue portions of the CODEC require&lt;br /&gt;
:   VMID so when running digital only paths we can leave VMID disabled.&lt;br /&gt;
:   On some earlier devices the FLL uses VMID so we don't use DAPM reference&lt;br /&gt;
:   counting alone, we maintain an internal reference count which is also&lt;br /&gt;
:   enabled and disabled by the FLL startup.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add VMID widget for wm_hubs devices&lt;br /&gt;
:   &lt;br /&gt;
:   Currently this does not actually do anything, it is being introduced in&lt;br /&gt;
:   order to facilitate additional power optimisations for current generation&lt;br /&gt;
:   devices.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Specify register defaults for WM8958 MICBIAS1 and MICBIAS2&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Support separate left and right channel dcs_codes values&lt;br /&gt;
:   &lt;br /&gt;
:   Some devices can have performance optimized by setting different offsets&lt;br /&gt;
:   for left and right channels.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Implement new DC servo readback mode for late WM8994 revisions&lt;br /&gt;
:   &lt;br /&gt;
:   Later WM8994 devices implement a new DC servo readback mode with the&lt;br /&gt;
:   register used to access the offset moved to register 0x59. Implement&lt;br /&gt;
:   support for this and enable it on the appropriate devices.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add missing break in WM8994 probe&lt;br /&gt;
:   &lt;br /&gt;
:   This error would have no effect on current silicon revisions, the fall&lt;br /&gt;
:   through case has the same behaviour.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Correct WM8994 MICBIAS supply widget hookup&lt;br /&gt;
:   &lt;br /&gt;
:   The WM8994 and WM8958 series of devices have two MICBIAS supplies rather&lt;br /&gt;
:   than one, the current widget actually manages the microphone detection&lt;br /&gt;
:   control register bit (which is managed separately by the relevant API).&lt;br /&gt;
:   &lt;br /&gt;
:   Fix this, hooking the relevant supplies up to the MICBIAS1 and MICBIAS2&lt;br /&gt;
:   widgets.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Reduce power consumption for idle DAIs in WM8994&lt;br /&gt;
:   &lt;br /&gt;
:   If DAIs are idle but their clocks are in use for some reason (eg, as&lt;br /&gt;
:   SYSCLK or for accessory detect) then set the clock dividers to the maximum&lt;br /&gt;
:   to reduce slightly the power consumption of the unclocked circuits.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Handle failed WM8994 FLL lock waits&lt;br /&gt;
:   &lt;br /&gt;
:   Try the completion before we start the FLL so that if an interrupt was&lt;br /&gt;
:   delayed long enough for us to miss it we don't wait for the completion&lt;br /&gt;
:   it signalled.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix shift in WM8958 accessory detection default implementation&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Log WM8994 FIFO errors from the interrupt&lt;br /&gt;
:   &lt;br /&gt;
:   We should spot them anyway on state changes but logging them gives us&lt;br /&gt;
:   better time information about when the misconfiguration happened.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Don't warn on low WM8994/58 AIFnCLKs&lt;br /&gt;
:   &lt;br /&gt;
:   We can have valid but very low clocks in accessory detection modes.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Use WM8994 FLL lock interrupt&lt;br /&gt;
:   &lt;br /&gt;
:   If we have interrupts then wait for the FLL lock interrupt rather than&lt;br /&gt;
:   using dead reckoning when waiting for the FLL to start.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Hook up DC servo completion IRQ for WM8994 and WM8958&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Use late enable handling for direct voice, speaker and headphone&lt;br /&gt;
:   &lt;br /&gt;
:   This ensures appropriate clocking for bypass paths to speaker and&lt;br /&gt;
:   headphone and direct voice paths on affected revisions.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Conditionalize the enable of WM8994 ADC TDM mode&lt;br /&gt;
:   &lt;br /&gt;
:   Future devices will not benefit from this.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Trigger wm_hubs series update startup off a separate flag&lt;br /&gt;
:   &lt;br /&gt;
:   Allowing the two to be used independently.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Ensure we delay long enough for WM8994 FLL to lock when starting&lt;br /&gt;
:   &lt;br /&gt;
:   This delay is very conservative.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Disable WM8994/58 microphone detection over suspend&lt;br /&gt;
:   &lt;br /&gt;
:   It will be non-functional with the basises and clocks off anyway, if the&lt;br /&gt;
:   system needs microphone detection enabled over suspend then it should be&lt;br /&gt;
:   causing the CODEC to ignore suspend using the APIs for that to prevent&lt;br /&gt;
:   the biases being disabled.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Set left channel volume update bits for WM8994&lt;br /&gt;
:   &lt;br /&gt;
:   Ensures that we apply volume updates that don't affect the right channel.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add WM8958 enhanced EQ support&lt;br /&gt;
:   &lt;br /&gt;
:   DSP2 in the WM8958 can be used to support an upgraded EQ for use in&lt;br /&gt;
:   demanding applications.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add WM8958 VSS support&lt;br /&gt;
:   &lt;br /&gt;
:   With appropriate firmware the WM8958 can support Virtual Surround Sound or&lt;br /&gt;
:   VSS, widening the stereo audio image for improved user experience. Enable&lt;br /&gt;
:   support for this mode of operation when the appropriate firmware can be&lt;br /&gt;
:   loaded at runtime.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Refactor WM8958 DSP to support additional algorithms&lt;br /&gt;
:   &lt;br /&gt;
:   In preparation for the addition of additional WM8958 algorithms&lt;br /&gt;
:   reorganise the code to make it easier to add such support later.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Support download of WM8958 MBC firmware&lt;br /&gt;
:   &lt;br /&gt;
:   Allow userspace to supply an update to the ROM firmware. The firmware&lt;br /&gt;
:   request is non-blocking so userspace can load the firmware at its&lt;br /&gt;
:   leisure without delaying startup, the driver will begin using the&lt;br /&gt;
:   firmware the next time MBC is started after it has been supplied.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Mark WM8958 DSP2 registers readable&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Handle startup sequencing of WM8958 DSP2 with deferred clocking&lt;br /&gt;
:   &lt;br /&gt;
:   The DSP2 startup requires that the clock be enable so if we've deferred&lt;br /&gt;
:   clock startup we need to defer DSP2 startup&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Factor WM8958 DSP2 handling into separate file&lt;br /&gt;
:   &lt;br /&gt;
:   DSP2 on the WM8958 has a default ROM which provides a multi-band&lt;br /&gt;
:   compressor for enhanced performance on mobile devices but can also&lt;br /&gt;
:   support runtime download of alternative firmware. In preparation for&lt;br /&gt;
:   more exploiting this functionality refactor the code to split the&lt;br /&gt;
:   handling of DSP2 into a separate file.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Treat WM8958 revision A as WM8994 revision D&lt;br /&gt;
:   &lt;br /&gt;
:   The first WM8958 revision requires similar treatment.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: WM8994: Don't disable the AIF[1|2]CLK_ENA unconditionaly&lt;br /&gt;
:   &lt;br /&gt;
:   Since we began using the late clock disable functionality, ensure that&lt;br /&gt;
:   we don't disable the clock if any of the ADC or DAC paths are still&lt;br /&gt;
:   enabled.  This happens when we have simultaneous playback and recording.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix section mismatch warnings in WM8994&lt;br /&gt;
:   &lt;br /&gt;
:   Annoying as the __devinitdata is actually correct.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: WM8994: Ensure MICBIAS is provided with a clock&lt;br /&gt;
:   &lt;br /&gt;
:   The patch 'ASoC: WM8994: Improve Playback Robustness' did not handle&lt;br /&gt;
:   this case properly.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Ensure WM8958 gets all WM8994 late revision widgets&lt;br /&gt;
:   &lt;br /&gt;
:   Without this fix the driver won't instantiate properly on relevant&lt;br /&gt;
:   devices.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix typo in late revision WM8994 DAC2R name&lt;br /&gt;
:   &lt;br /&gt;
:   Without this fix the driver won't instantiate properly on relevant&lt;br /&gt;
:   devices.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: WM8994: Ensure late enable events are processed for the ADCs&lt;br /&gt;
:   &lt;br /&gt;
:   Ensure that the ADCs are provided with a clock as the previous patch&lt;br /&gt;
:   &amp;quot;ASoC: WM8994: Improve playback robustness&amp;quot; did not handle this case&lt;br /&gt;
:   properly.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: WM8994: Improve playback robustness&lt;br /&gt;
:   &lt;br /&gt;
:   On WM8994 revision D and earlier ensure proper playback robustness&lt;br /&gt;
:   as some rare use cases can trigger issues.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: WM8994: Improve robustness in some use cases&lt;br /&gt;
:   &lt;br /&gt;
:   Ensure that on disabling certain registers such as AIF1DAC1L,&lt;br /&gt;
:   AIF1DAC1R etc. the AIF1CLK and AIF2CLK remain enabled.  Similarly&lt;br /&gt;
:   when enabling those registers, AIF1CLK and AIF2CLK will remain&lt;br /&gt;
:   disabled.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Simplify default WM8958 jack detection code&lt;br /&gt;
:   &lt;br /&gt;
:   The default WM8958 jack detection handler implements a full set of buttons&lt;br /&gt;
:   and also support for video detection. Support for multi-button jacks is&lt;br /&gt;
:   fairly system specific and will usually require some tuning for headsets&lt;br /&gt;
:   so simplify the implementation to only report a simple short to ground&lt;br /&gt;
:   button, leaving multi-button headsets to be handled by system specific&lt;br /&gt;
:   code.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Support configuration of WM8958 microphone bias analogue parameters&lt;br /&gt;
:   &lt;br /&gt;
:   The WM8958 has a different microphone bias architecture to WM8994 so needs&lt;br /&gt;
:   different configuration to WM8994. Support this in platform data.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Support WM8958 direct microphone detection IRQ&lt;br /&gt;
:   &lt;br /&gt;
:   Allow direct routing of the WM8958 microphone detection signal to a GPIO&lt;br /&gt;
:   to be used, saving the need to demux the interrupt.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Mark WM8958 microphone bias registers as readable&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Mark WM8958 microphone detection registers readable&lt;br /&gt;
:   &lt;br /&gt;
:   So they show up in codec_reg.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix missing space in WM8994&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix WM8958 default microphone detection argument ordering&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Improve WM8994 digital power sequencing&lt;br /&gt;
:   &lt;br /&gt;
:   On WM8994 revision D and earlier ensure optimal sequencing with&lt;br /&gt;
:   simultaneous usage of AIF1 and AIF2 by tying the signals together&lt;br /&gt;
:   so if paths through both are connected the streams are started&lt;br /&gt;
:   simultaneously.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Create an AIF1ADCDAT signal widget to match AIF2&lt;br /&gt;
:   &lt;br /&gt;
:   Due to the different routing for AIF1 and AIF2 we weren't using a&lt;br /&gt;
:   single widget to represent the ADCDAT signal. For consistency add&lt;br /&gt;
:   one.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8995===&lt;br /&gt;
: - ASoC: Fix wm8995 regmap usage&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert WM8995 to direct regmap usage&lt;br /&gt;
:   &lt;br /&gt;
:   Large code size increase due to the addition of readability information&lt;br /&gt;
:   and the reformatting of the defaults table.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert wm8995 MICBIASes to supply widgets&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8995: Slightly optimize configure_clock&lt;br /&gt;
:   &lt;br /&gt;
:   snd_soc_update_bits() will only write new register value&lt;br /&gt;
:   if the old value is different from the new value.&lt;br /&gt;
:   In additional, snd_soc_update_bits() returns 0 for no change.&lt;br /&gt;
:   No need to read WM8995_CLOCKING_1 register before calling snd_soc_update_bits().&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add missed regulator_unregister_notifier and regulator_bulk_free in wm8995_remove&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8995: Remove unused i2c variable in wm8995_remove()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8995: Return -EINVAL if device ID mismatch&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM8996===&lt;br /&gt;
: - ASoC: Enable ASoC register map dump for some regmap CODECs&lt;br /&gt;
:   &lt;br /&gt;
:   It's still useful to be able to poke around in the register map at&lt;br /&gt;
:   runtime.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Tune the accessory detection rates for WM8996&lt;br /&gt;
:   &lt;br /&gt;
:   Use longer intervals when the microphone is not inserted to increase&lt;br /&gt;
:   robustness against leisurely insertion.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert wm8996 to use devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert WM8996 gpiolib to regmap&lt;br /&gt;
:   &lt;br /&gt;
:   Actually pretty straightforward.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Move most WM8996 resource acquisition to I2C probe&lt;br /&gt;
:   &lt;br /&gt;
:   Now that the WM8996 driver is using the regmap API for register I/O we no&lt;br /&gt;
:   longer need the ASoC card to be active in order to interact with the chip.&lt;br /&gt;
:   In order to be more idiomatic for Linux move most of the existing probe()&lt;br /&gt;
:   function out into the I2C probe() function prior to registration with ASoC.&lt;br /&gt;
:   &lt;br /&gt;
:   The IRQ and GPIO init will be moved separately as these are slightly more&lt;br /&gt;
:   involved.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert WM8996 to direct regmap API usage&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix WM8996 24.576MHz clock operation&lt;br /&gt;
:   &lt;br /&gt;
:   Record the clock after the divider as that is what all SYSCLK users see.&lt;br /&gt;
:   Without this the other clock configuration in the device comes out at&lt;br /&gt;
:   half rate.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8996: Avoid a redundant i2c_get_clientdata call in wm8996_i2c_remove&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8996: Fix wrong mask for setting WM8996_AIF_CLOCKING_2&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm8996: Use SND_SOC_DAPM_AIF_OUT for AIF2 Capture&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove needless codec-&amp;amp;gt;dapm.bias_level assignment to SND_SOC_BIAS_OFF&lt;br /&gt;
:   &lt;br /&gt;
:   This assignment is done by the snd_soc_register_codec so there is no need&lt;br /&gt;
:   to redo it in probe function of a codec driver.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add DRC control for WM8996&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Refcount WM8996 bandgap from FLL too&lt;br /&gt;
:   &lt;br /&gt;
:   For digital only paths we need to make sure the bandgap is enabled prior&lt;br /&gt;
:   to starting the FLL which isn't tied into DAPM.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix unused variable warning in WM8996&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Initial WM8996 headphone impedance measurement support&lt;br /&gt;
:   &lt;br /&gt;
:   The WM8996 can measure the impedance of accessories connected to the&lt;br /&gt;
:   headphone output. Implement initial support for this, measuring the&lt;br /&gt;
:   left channel impedance when an accessory is detected and using this&lt;br /&gt;
:   to distinguish between a line load and a headphone load.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: WM8996 only needs bandgap for analogue functionality&lt;br /&gt;
:   &lt;br /&gt;
:   Rather than managing the bandgap in the bias level control use a supply&lt;br /&gt;
:   widget as we only actually need to enable it for analogue paths, not&lt;br /&gt;
:   fully digital ones.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix WM8996 DC servo operation without IRQ&lt;br /&gt;
:   &lt;br /&gt;
:   We need to count the timeout down.&lt;br /&gt;
:   &lt;br /&gt;
:   Reported-by: Axel Lin &amp;amp;lt;axel.lin@gmail.com&amp;amp;gt;&lt;br /&gt;
: - ASoC: Correct channel numbers for WM8996 AIF2&lt;br /&gt;
:   &lt;br /&gt;
:   The AIF1 channels are numbered from zero than one; do the same thing for&lt;br /&gt;
:   AIF2 too.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Disable WM8996 CPVDD supply when not in use&lt;br /&gt;
:   &lt;br /&gt;
:   The WM8996 only requires CPVDD when the charge pump is active so control&lt;br /&gt;
:   it separately to the other supplies, only enabling it when the charge pump&lt;br /&gt;
:   is active. This will result in a small power saving on systems which are&lt;br /&gt;
:   able to provide independent software control of the supply.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Check that WM8996 FLL started even if we don't have the IRQ&lt;br /&gt;
:   &lt;br /&gt;
:   We can directly read the FLL lock status on WM8996 so even if we don't&lt;br /&gt;
:   have an interrupt wired up we can still verify that the FLL started&lt;br /&gt;
:   successfully.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Add 3D stereo support for wm8996&lt;br /&gt;
:   &lt;br /&gt;
:   My first patch to ASoC ever! If I did something wrong, blame Ian.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Correct element count for WM8996 sidetone HPF&lt;br /&gt;
:   &lt;br /&gt;
:   I can count. Honest.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Clear completions from late WM8996 FLL lock IRQs&lt;br /&gt;
:   &lt;br /&gt;
:   In case we have a pending completion, for example due to a problem with&lt;br /&gt;
:   the input clock which got corrected after we timed out.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Optimise WM8996 no interrupt path&lt;br /&gt;
:   &lt;br /&gt;
:   This occurs frequently if we are in edge triggered mode as we must poll the&lt;br /&gt;
:   interrupt status register until we get no more interrupts so it's worth&lt;br /&gt;
:   the effort - it means we skip writing null acknowledgements to the chip.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Automatically manage WM8996 MICBIAS regulating mode&lt;br /&gt;
:   &lt;br /&gt;
:   For non-audio uses like accessory detection we can use a lower quality,&lt;br /&gt;
:   unregulated microphone bias, saving a little power. As the hardware can&lt;br /&gt;
:   manually enable and disable the biases we can select regulating mode&lt;br /&gt;
:   automatically with supply widgets connected to the biases.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Fix configuration of WM8996 input enables&lt;br /&gt;
:   &lt;br /&gt;
:   There's no need for separate widgets for the enables (as the map already&lt;br /&gt;
:   shows).&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: WM8996 record paths need AIFCLK&lt;br /&gt;
:   &lt;br /&gt;
:   Make AIFCLK supply the record paths otherwise record will not work unless&lt;br /&gt;
:   there is a simultaneous playback.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Acknowledge WM8996 interrupts before acting on them&lt;br /&gt;
:   &lt;br /&gt;
:   This closes the small race between a status being read in response to an&lt;br /&gt;
:   interrupt and clearing the interrupt, meaning that if the status changes&lt;br /&gt;
:   between those periods we might not get a reassertion of the interrupt.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Rename WM8915 to WM8996&lt;br /&gt;
:   &lt;br /&gt;
:   For marketing reasons the part will be called WM8996. In order to avoid&lt;br /&gt;
:   user confusion rename the driver to reflect this.&lt;br /&gt;
:   &lt;br /&gt;
===SoC Codec WM9081===&lt;br /&gt;
: - ASoC: Remove cache default  for volatile wm9081 reset register&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert wm9081 driver to use devm_kzalloc()&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm9081: Use snd_soc_update_bits for read-modify-write&lt;br /&gt;
:   &lt;br /&gt;
:   Use snd_soc_update_bits for read-modify-write register access instead of&lt;br /&gt;
:   open-coding it using snd_soc_read and snd_soc_write&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert WM9081 to direct regmap API usage&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm9081: Don't write WM9081_BIAS_ENA bit to WM9081_VMID_CONTROL register&lt;br /&gt;
:   &lt;br /&gt;
:   WM9081_BIAS_ENA is the bit[1] of WM9081_BIAS_CONTROL_1 register (05h).&lt;br /&gt;
:   Current code incorrectly write it to WM9081_VMID_CONTROL(04h) register.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm9081: Fix reading wrong register for setting VMID 2*240k&lt;br /&gt;
:   &lt;br /&gt;
:   VMID Divider Enable and Select is controlled by BIT[2:1] of WM9081_VMID_CONTROL&lt;br /&gt;
:   register (04h).&lt;br /&gt;
:   Current code reads wrong register (WM9081_BIAS_CONTROL_1) for setting&lt;br /&gt;
:   VMID 2*240k.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Only enable thermal shutdown when required on WM9081&lt;br /&gt;
:   &lt;br /&gt;
:   The WM9081 thermal shutdown is only effective when the speaker output is&lt;br /&gt;
:   enabled so disable it when that is not in use for a small current saving.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: wm9081: Fix setting soft VMID ramp enable with VMID 2*240k&lt;br /&gt;
:   &lt;br /&gt;
:   According to the datasheet:&lt;br /&gt;
:   BIT 2:1&lt;br /&gt;
:   VMID_SEL[1:0] VMID Divider Enable and Select&lt;br /&gt;
:   00 = VMID disabled&lt;br /&gt;
:   01 = 2x40k Omh divider&lt;br /&gt;
:   10 = 2x240k Omh divider&lt;br /&gt;
:   11 = 2x5k Omh divider&lt;br /&gt;
:   &lt;br /&gt;
:   To set VMID 2*240k, we should OR reg with 0x04 instead of 0x40.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: WM9081 interrupt status register is volatile&lt;br /&gt;
:   &lt;br /&gt;
:   Not that we have interrupt handling in the driver at the minute.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Convert WM9081 to table based control init&lt;br /&gt;
:   &lt;br /&gt;
:   At least for the core controls, the optionally selected controls are still&lt;br /&gt;
:   added programatically.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Remove unused &amp;quot;control_data&amp;quot; field of struct wm9081_priv&lt;br /&gt;
:   &lt;br /&gt;
:   The control_data field is used to initialize the codec's control_data field,&lt;br /&gt;
:   but since this is also done by the snd-soc-cache core, the redundant&lt;br /&gt;
:   assignment can be removed and the field can be dropped.&lt;br /&gt;
:   &lt;br /&gt;
: - ASoC: Allow source specification for CODEC level sysclk&lt;br /&gt;
:   &lt;br /&gt;
:   Similarly to PLLs/FLLs some modern CODECs provide selectable system clock&lt;br /&gt;
:   sources. When the clock is the clock for a DAI we do not usually need to&lt;br /&gt;
:   identify which clock is being configured so can 