From 709c4d66e0b107ca606941b988bad717c0b45d9b Mon Sep 17 00:00:00 2001
From: Denys Dmytriyenko <denis@denix.org>
Date: Tue, 17 Mar 2009 14:32:59 -0400
Subject: rename packages/ to recipes/ per earlier agreement

See links below for more details:
http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326
http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816

Signed-off-by: Denys Dmytriyenko <denis@denix.org>
Acked-by: Mike Westerhof <mwester@dls.net>
Acked-by: Philip Balister <philip@balister.org>
Acked-by: Khem Raj <raj.khem@gmail.com>
Acked-by: Marcin Juszkiewicz <hrw@openembedded.org>
Acked-by: Koen Kooi <koen@openembedded.org>
Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
---
 recipes/alsa/alsa-driver/adriver.h.patch           |  23 +
 recipes/alsa/alsa-driver/h5400.patch               |  12 +
 recipes/alsa/alsa-driver/sa11xx.patch              |  38 +
 recipes/alsa/alsa-driver/sound.p.patch             |  59 ++
 recipes/alsa/alsa-driver_0.9.6-hh4c.bb             |  83 +++
 recipes/alsa/alsa-fpu.inc                          |   6 +
 recipes/alsa/alsa-lib/fix-tstamp-declaration.patch |  13 +
 recipes/alsa/alsa-lib/fix_libmath.patch            |  17 +
 recipes/alsa/alsa-lib/unbreak_plugindir.patch      |  12 +
 recipes/alsa/alsa-lib_1.0.11.bb                    |  41 ++
 recipes/alsa/alsa-lib_1.0.13.bb                    |  42 ++
 recipes/alsa/alsa-lib_1.0.14.bb                    |  47 ++
 recipes/alsa/alsa-lib_1.0.15.bb                    |  54 ++
 recipes/alsa/alsa-lib_1.0.17.bb                    |  48 ++
 recipes/alsa/alsa-lib_1.0.18.bb                    |  48 ++
 recipes/alsa/alsa-oss_1.0.11.bb                    |  19 +
 recipes/alsa/alsa-oss_1.0.14.bb                    |  17 +
 recipes/alsa/alsa-oss_1.0.15.bb                    |  22 +
 recipes/alsa/alsa-oss_1.0.17.bb                    |  20 +
 recipes/alsa/alsa-plugins_1.0.15.bb                |  20 +
 recipes/alsa/alsa-plugins_1.0.17.bb                |  20 +
 recipes/alsa/alsa-plugins_1.0.18.bb                |  20 +
 recipes/alsa/alsa-scenario_git.bb                  |  13 +
 recipes/alsa/alsa-state.bb                         |  58 ++
 recipes/alsa/alsa-state/a780/gsmhandset.state      |  55 ++
 recipes/alsa/alsa-state/a780/gsmheadset.state      |  55 ++
 recipes/alsa/alsa-state/a780/stereoout.state       |  55 ++
 recipes/alsa/alsa-state/akita/asound.state         | 619 +++++++++++++++++
 recipes/alsa/alsa-state/alsa-state                 |  29 +
 recipes/alsa/alsa-state/asound.conf                |  12 +
 recipes/alsa/alsa-state/asound.state               |   1 +
 recipes/alsa/alsa-state/at91sam9263ek/asound.conf  |   2 +
 recipes/alsa/alsa-state/at91sam9263ek/asound.state | 283 ++++++++
 recipes/alsa/alsa-state/c7x0/asound.state          | 150 ++++
 recipes/alsa/alsa-state/hx4700/asound.state        |  37 +
 recipes/alsa/alsa-state/magician/asound.state      | 202 ++++++
 recipes/alsa/alsa-state/nokia800/asound.state      | 105 +++
 recipes/alsa/alsa-state/spitz/asound.state         | 619 +++++++++++++++++
 recipes/alsa/alsa-state/tosa/asound.state          | 769 +++++++++++++++++++++
 recipes/alsa/alsa-utils_1.0.11.bb                  |  55 ++
 recipes/alsa/alsa-utils_1.0.13.bb                  |  63 ++
 recipes/alsa/alsa-utils_1.0.14.bb                  |  56 ++
 recipes/alsa/alsa-utils_1.0.15.bb                  |  57 ++
 recipes/alsa/alsa-utils_1.0.17.bb                  |  63 ++
 recipes/alsa/alsa-utils_1.0.18.bb                  |  66 ++
 recipes/alsa/alsa-versym.inc                       |   6 +
 .../files/alsa-utils-autoconf-strl-funcs.patch     |  43 ++
 recipes/alsa/files/alsa-utils-automake.patch       |  10 +
 recipes/alsa/files/alsa-utils-remove-xmlto.patch   |  15 +
 recipes/alsa/files/alsa-utils-sys-siglist.patch    |  15 +
 recipes/alsa/files/libio.patch                     |  43 ++
 51 files changed, 4237 insertions(+)
 create mode 100644 recipes/alsa/alsa-driver/adriver.h.patch
 create mode 100644 recipes/alsa/alsa-driver/h5400.patch
 create mode 100644 recipes/alsa/alsa-driver/sa11xx.patch
 create mode 100644 recipes/alsa/alsa-driver/sound.p.patch
 create mode 100644 recipes/alsa/alsa-driver_0.9.6-hh4c.bb
 create mode 100644 recipes/alsa/alsa-fpu.inc
 create mode 100644 recipes/alsa/alsa-lib/fix-tstamp-declaration.patch
 create mode 100644 recipes/alsa/alsa-lib/fix_libmath.patch
 create mode 100644 recipes/alsa/alsa-lib/unbreak_plugindir.patch
 create mode 100644 recipes/alsa/alsa-lib_1.0.11.bb
 create mode 100644 recipes/alsa/alsa-lib_1.0.13.bb
 create mode 100644 recipes/alsa/alsa-lib_1.0.14.bb
 create mode 100644 recipes/alsa/alsa-lib_1.0.15.bb
 create mode 100644 recipes/alsa/alsa-lib_1.0.17.bb
 create mode 100644 recipes/alsa/alsa-lib_1.0.18.bb
 create mode 100644 recipes/alsa/alsa-oss_1.0.11.bb
 create mode 100644 recipes/alsa/alsa-oss_1.0.14.bb
 create mode 100644 recipes/alsa/alsa-oss_1.0.15.bb
 create mode 100644 recipes/alsa/alsa-oss_1.0.17.bb
 create mode 100644 recipes/alsa/alsa-plugins_1.0.15.bb
 create mode 100644 recipes/alsa/alsa-plugins_1.0.17.bb
 create mode 100644 recipes/alsa/alsa-plugins_1.0.18.bb
 create mode 100644 recipes/alsa/alsa-scenario_git.bb
 create mode 100644 recipes/alsa/alsa-state.bb
 create mode 100644 recipes/alsa/alsa-state/a780/gsmhandset.state
 create mode 100644 recipes/alsa/alsa-state/a780/gsmheadset.state
 create mode 100644 recipes/alsa/alsa-state/a780/stereoout.state
 create mode 100644 recipes/alsa/alsa-state/akita/asound.state
 create mode 100755 recipes/alsa/alsa-state/alsa-state
 create mode 100644 recipes/alsa/alsa-state/asound.conf
 create mode 100644 recipes/alsa/alsa-state/asound.state
 create mode 100644 recipes/alsa/alsa-state/at91sam9263ek/asound.conf
 create mode 100644 recipes/alsa/alsa-state/at91sam9263ek/asound.state
 create mode 100644 recipes/alsa/alsa-state/c7x0/asound.state
 create mode 100644 recipes/alsa/alsa-state/hx4700/asound.state
 create mode 100644 recipes/alsa/alsa-state/magician/asound.state
 create mode 100644 recipes/alsa/alsa-state/nokia800/asound.state
 create mode 100644 recipes/alsa/alsa-state/spitz/asound.state
 create mode 100644 recipes/alsa/alsa-state/tosa/asound.state
 create mode 100644 recipes/alsa/alsa-utils_1.0.11.bb
 create mode 100644 recipes/alsa/alsa-utils_1.0.13.bb
 create mode 100644 recipes/alsa/alsa-utils_1.0.14.bb
 create mode 100644 recipes/alsa/alsa-utils_1.0.15.bb
 create mode 100644 recipes/alsa/alsa-utils_1.0.17.bb
 create mode 100644 recipes/alsa/alsa-utils_1.0.18.bb
 create mode 100644 recipes/alsa/alsa-versym.inc
 create mode 100644 recipes/alsa/files/alsa-utils-autoconf-strl-funcs.patch
 create mode 100644 recipes/alsa/files/alsa-utils-automake.patch
 create mode 100644 recipes/alsa/files/alsa-utils-remove-xmlto.patch
 create mode 100644 recipes/alsa/files/alsa-utils-sys-siglist.patch
 create mode 100644 recipes/alsa/files/libio.patch

(limited to 'recipes/alsa')

diff --git a/recipes/alsa/alsa-driver/adriver.h.patch b/recipes/alsa/alsa-driver/adriver.h.patch
new file mode 100644
index 0000000000..cd648838c0
--- /dev/null
+++ b/recipes/alsa/alsa-driver/adriver.h.patch
@@ -0,0 +1,23 @@
+--- ./include/adriver.h.orig    2003-09-22 22:04:21.000000000 +0200
++++ ./include/adriver.h   2005-06-26 10:33:15.000000000 +0200
+@@ -328,8 +328,18 @@
+ #endif /* SND_NEED_USB_WRAPPER && CONFIG_USB */
+ 
+ /* workqueue-alike; 2.5.45 */
+-#include <linux/workqueue.h>
++#include <linux/workqueue.h> 
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 45) && !defined(__WORK_INITIALIZER)
++#ifdef work_struct
++#undef work_struct
++#endif
++#ifdef INIT_WORK
++#undef INIT_WORK
++#endif
++#ifdef schedule_work
++#undef schedule_work
++#endif
++
+ struct work_struct {
+        void (*func)(void *);
+        void *data;
+
diff --git a/recipes/alsa/alsa-driver/h5400.patch b/recipes/alsa/alsa-driver/h5400.patch
new file mode 100644
index 0000000000..e156708783
--- /dev/null
+++ b/recipes/alsa/alsa-driver/h5400.patch
@@ -0,0 +1,12 @@
+--- ./alsa-kernel/arm/h5400-ak4535.c.orig 2005-06-26 22:12:57.000000000 +0200
++++ ./alsa-kernel/arm/h5400-ak4535.c      2005-06-26 22:13:08.000000000 +0200
+@@ -36,7 +36,7 @@
+ #include <asm/arch-sa1100/h3600_hal.h>
+ #include <asm/arch-sa1100/h3600_asic.h>
+ #include <asm/arch-pxa/h5400-asic.h>
+-#include <asm/arch-pxa/pxa-i2s.h>
++#include <drivers/sound/pxa-i2s.h>
+ 
+ #include <sound/core.h>
+ #include <sound/pcm.h>
+
diff --git a/recipes/alsa/alsa-driver/sa11xx.patch b/recipes/alsa/alsa-driver/sa11xx.patch
new file mode 100644
index 0000000000..34509b13b0
--- /dev/null
+++ b/recipes/alsa/alsa-driver/sa11xx.patch
@@ -0,0 +1,38 @@
+--- ./alsa-kernel/arm/sa11xx-uda1341.c	2005-06-27 12:59:53.000000000 +0200
++++ ./alsa-kernel/arm/sa11xx-uda1341.c.orig	2005-06-27 12:59:29.000000000 +0200
+@@ -366,7 +366,7 @@
+ 	DEBUG("\t request id <%s>\n", s->id);
+ 	DEBUG("\t  request dma_dev = 0x%x \n", s->dma_dev);
+ 	if((ret = sa1100_request_dma((s)->dma_dev, (s)->id, callback, s, &((s)->dma_regs))))
+-		printk(__FUNCTION__ ": sa1100_request_dma returned %d\n",ret);
++		printk("%s: sa1100_request_dma returned %d\n",__FUNCTION__,ret);
+ 	
+ 
+ 
+@@ -978,7 +978,7 @@
+ 	switch (req) {
+ 	case PM_SUSPEND: /* enter D1-D3 */
+ 		if (card->power_state == SNDRV_CTL_POWER_D3hot){
+-			printk(__FUNCTION__ ": exiting eraly from suspend\n");			
++			printk("%s: exiting eraly from suspend\n",__FUNCTION__);			
+ 			return 0;
+ 		}
+ 		snd_power_lock(card);
+@@ -1002,7 +1002,7 @@
+ 	case PM_RESUME:  /* enter D0 */
+ 
+ 		if (card->power_state == SNDRV_CTL_POWER_D0){
+-			printk(__FUNCTION__ ": exiting eraly from resume\n");
++			printk("%s: exiting eraly from resume\n",__FUNCTION__);
+ 			return 0;
+ 		}
+ 		snd_power_lock(card);
+@@ -1020,7 +1020,7 @@
+ 
+ 		break;
+ 	}
+-	printk(KERN_DEBUG __FUNCTION__": exiting...\n");	
++	printk(KERN_DEBUG "%s: exiting...\n",__FUNCTION__);	
+         return 0;
+ 	
+ }
diff --git a/recipes/alsa/alsa-driver/sound.p.patch b/recipes/alsa/alsa-driver/sound.p.patch
new file mode 100644
index 0000000000..38b073c8bd
--- /dev/null
+++ b/recipes/alsa/alsa-driver/sound.p.patch
@@ -0,0 +1,59 @@
+--- ./acore/sound.patch.orig	2003-07-03 16:05:15.000000000 +0200
++++ ./acore/sound.patch	2005-06-26 09:45:05.000000000 +0200
+@@ -1,6 +1,26 @@
+---- sound.c	2003-05-30 15:29:14.000000000 +0200
+-+++ sound.c.old	2003-05-30 15:30:11.000000000 +0200
+-@@ -154,7 +154,9 @@
++--- sound.c.orig	2005-06-25 23:33:07.000000000 +0200
+++++ sound.c	2005-06-25 23:33:07.000000000 +0200
++@@ -77,6 +77,7 @@
++ void snd_request_card(int card)
++ {
++ 	int locked;
+++	char *str;
++ 
++ 	read_lock(&snd_card_rwlock);
++ 	locked = snd_cards_lock & (1 << card);
++@@ -85,7 +86,10 @@
++ 		return;
++ 	if (card < 0 || card >= cards_limit)
++ 		return;
++-	request_module("snd-card-%i", card);
+++        str = kmalloc(15,GFP_KERNEL);
+++        snprintf(str,15,"snd-card-%i",card);
+++	request_module(str);
+++        kfree(str);
++ }
++ 
++ static void snd_request_other(int minor)
++@@ -154,7 +158,9 @@
+  
+  struct file_operations snd_fops =
+  {
+@@ -10,7 +30,7 @@
+  	.open =		snd_open
+  };
+  
+-@@ -364,6 +366,9 @@
++@@ -364,6 +370,9 @@
+  #ifndef MODULE
+  	printk(KERN_INFO "Advanced Linux Sound Architecture Driver Version " CONFIG_SND_VERSION CONFIG_SND_DATE ".\n");
+  #endif
+@@ -20,7 +40,7 @@
+  	return 0;
+  }
+  
+-@@ -378,6 +383,9 @@
++@@ -378,6 +387,9 @@
+  	snd_info_minor_unregister();
+  #endif
+  	snd_info_done();
+@@ -30,7 +50,7 @@
+  #ifdef CONFIG_SND_DEBUG_MEMORY
+  	snd_memory_done();
+  #endif
+-@@ -490,3 +498,5 @@
++@@ -508,3 +520,5 @@
+  EXPORT_SYMBOL(snd_wrapper_vmalloc);
+  EXPORT_SYMBOL(snd_wrapper_vfree);
+  #endif
diff --git a/recipes/alsa/alsa-driver_0.9.6-hh4c.bb b/recipes/alsa/alsa-driver_0.9.6-hh4c.bb
new file mode 100644
index 0000000000..53d898d030
--- /dev/null
+++ b/recipes/alsa/alsa-driver_0.9.6-hh4c.bb
@@ -0,0 +1,83 @@
+# needs a gcc4 fix
+BROKEN = "1"
+
+COMPATIBLE_MACHINE = "(h3600|h3900)"
+
+DESCRIPTION = "Alsa Drivers"
+SECTION = "base"
+LICENSE = "GPL"
+PR = "r6"
+
+DEPENDS += "fakeroot-native"
+
+SRC_URI = "ftp://ftp.handhelds.org/packages/alsa-driver/alsa-driver-${PV}.tar.gz \
+	file://sound.p.patch;patch=1 \
+	file://h5400.patch;patch=1 \
+	file://sa11xx.patch;patch=1 \
+	file://adriver.h.patch;patch=1"
+
+inherit autotools module
+
+EXTRA_OECONF = "--with-sequencer=yes \
+	--with-isapnp=no \
+	--with-oss=yes \
+	--with-kernel=${STAGING_KERNEL_DIR} \
+	--with-kernel-version=${KERNEL_VERSION}"
+
+PACKAGES =+ "${PN}-midi ${PN}-misc"
+FILES_${PN} = "/lib/modules/*/misc/snd* \
+	${sysconfdir}/modutils/*"
+midi_modules = "snd-seq-midi-emul.o \
+	snd-seq-midi-event.o \
+	snd-seq-midi.o \
+	snd-seq-virmidi.o \
+	snd-seq-oss.o"
+FILES_${PN}-midi = "${@' '.join(map ((lambda x: '/lib/modules/*/misc/%s' % x), bb.data.getVar('midi_modules', d).split()))}"
+misc_modules = "snd-gus-synth.o \
+	snd-emu8000-synth.o \
+	snd-emux-synth.o \
+	snd-ainstr-fm.o \
+	snd-ainstr-gf1.o \
+	snd-ainstr-iw.o \
+	snd-ainstr-simple.o"
+FILES_${PN}-misc = "${@' '.join(map ((lambda x: '/lib/modules/*/misc/%s' % x), bb.data.getVar('misc_modules', d).split()))}"
+
+# put in-kernel headers first in the include search path.
+# without this all configure checks fail
+CFLAGS =+ "-I${STAGING_KERNEL_DIR}/include"
+
+do_configure() {
+
+cards=
+if egrep "CONFIG_SA1100_H3[168]00=y" "${STAGING_KERNEL_DIR}/.config" ; then
+  cards="$cards,sa11xx-uda1341"
+  familiar_arch=ipaqsa
+fi
+if grep "CONFIG_ARCH_H3900=y" "${STAGING_KERNEL_DIR}/.config" ; then
+  cards="$cards,pxa-uda1380,h5400-ak4535"
+  familiar_arch=ipaqpxa
+fi
+cards="$cards,bluez-sco,pdaudiocf"
+
+   oe_runconf --with-cards=${cards}
+}
+
+
+do_install() {
+
+if egrep "CONFIG_SA1100_H3[168]00=y" "${STAGING_KERNEL_DIR}/.config" ; then
+  familiar_arch=ipaqsa
+fi
+if grep "CONFIG_ARCH_H3900=y" "${STAGING_KERNEL_DIR}/.config" ; then
+  familiar_arch=ipaqpxa
+fi
+
+      fakeroot make -k NODEPMOD=yes DESTDIR=${D} install;
+
+      if [ -d ${D}${sysconfdir}/modutils/ ] ; then
+         rm -r ${D}${sysconfdir}/modutils/ ;
+      fi
+      mkdir -p ${D}${sysconfdir}/modutils/
+      cp familiar/alsa-modules-${familiar_arch} ${D}${sysconfdir}/modutils/
+}
+
diff --git a/recipes/alsa/alsa-fpu.inc b/recipes/alsa/alsa-fpu.inc
new file mode 100644
index 0000000000..ebd3493e6c
--- /dev/null
+++ b/recipes/alsa/alsa-fpu.inc
@@ -0,0 +1,6 @@
+
+def get_alsa_fpu_setting(bb, d):
+	if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]:
+		return "--with-softfloat"
+	return ""
+
diff --git a/recipes/alsa/alsa-lib/fix-tstamp-declaration.patch b/recipes/alsa/alsa-lib/fix-tstamp-declaration.patch
new file mode 100644
index 0000000000..59b3b6d150
--- /dev/null
+++ b/recipes/alsa/alsa-lib/fix-tstamp-declaration.patch
@@ -0,0 +1,13 @@
+Index: alsa-lib-1.0.13/include/global.h
+===================================================================
+--- alsa-lib-1.0.13.orig/include/global.h
++++ alsa-lib-1.0.13/include/global.h
+@@ -29,6 +29,8 @@
+ #define __ALSA_GLOBAL_H_
+ 
+ /* for timeval and timespec */
++#define __need_timeval
++#define __need_timespec
+ #include <time.h>
+ 
+ #ifdef __cplusplus
diff --git a/recipes/alsa/alsa-lib/fix_libmath.patch b/recipes/alsa/alsa-lib/fix_libmath.patch
new file mode 100644
index 0000000000..23309ce381
--- /dev/null
+++ b/recipes/alsa/alsa-lib/fix_libmath.patch
@@ -0,0 +1,17 @@
+Index: alsa-lib-1.0.15/configure.in
+===================================================================
+--- alsa-lib-1.0.15.orig/configure.in	2007-10-15 10:45:26.000000000 +0200
++++ alsa-lib-1.0.15/configure.in	2008-07-19 15:51:34.177119589 +0200
+@@ -191,9 +191,9 @@
+   AC_MSG_RESULT(no)
+ fi
+ 
+-ALSA_DEPLIBS=""
+-if test "$softfloat" != "yes"; then
+-  ALSA_DEPLIBS="-lm"
++ALSA_DEPLIBS="-lm"
++if test "$softfloat" = "yes"; then
++   AC_CHECK_LIB([m], [floor], , [ALSA_DEPLIBS=""])
+ fi
+ 
+ dnl Check for libdl
diff --git a/recipes/alsa/alsa-lib/unbreak_plugindir.patch b/recipes/alsa/alsa-lib/unbreak_plugindir.patch
new file mode 100644
index 0000000000..7d13166809
--- /dev/null
+++ b/recipes/alsa/alsa-lib/unbreak_plugindir.patch
@@ -0,0 +1,12 @@
+diff -Nur alsa-lib-1.0.14.orig/configure.in alsa-lib-1.0.14/configure.in
+--- alsa-lib-1.0.14.orig/configure.in	2007-05-31 03:05:13.000000000 -0500
++++ alsa-lib-1.0.14/configure.in	2007-08-18 13:05:49.000000000 -0500
+@@ -93,7 +93,7 @@
+     esac
+     plugindir="$dir/$PACKAGE"
+ fi
+-AC_DEFINE_UNQUOTED(ALSA_PLUGIN_DIR, "plugindir", [directory containing ALSA add-on modules])
++AC_DEFINE_UNQUOTED(ALSA_PLUGIN_DIR, "${plugindir}", [directory containing ALSA add-on modules])
+ ALSA_PLUGIN_DIR="$plugindir"
+ AC_SUBST(ALSA_PLUGIN_DIR)
+ 
diff --git a/recipes/alsa/alsa-lib_1.0.11.bb b/recipes/alsa/alsa-lib_1.0.11.bb
new file mode 100644
index 0000000000..b9169e608f
--- /dev/null
+++ b/recipes/alsa/alsa-lib_1.0.11.bb
@@ -0,0 +1,41 @@
+DESCRIPTION = "Alsa sound library"
+HOMEPAGE = "http://www.alsa-project.org"
+SECTION = "libs/multimedia"
+LICENSE = "GPL"
+PR = "r4"
+
+# configure.in sets -D__arm__ on the command line for any arm system
+# (not just those with the ARM instruction set), this should be removed,
+# (or replaced by a permitted #define).
+#FIXME: remove the following
+ARM_INSTRUCTION_SET = "arm"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/lib/alsa-lib-${PV}.tar.bz2"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--with-cards=pdaudiocf --with-oss=yes"
+
+do_stage() {
+	oe_libinstall -so -C src libasound ${STAGING_LIBDIR}/
+	install -d ${STAGING_INCDIR}/alsa/sound
+	install -m 0644 include/*.h ${STAGING_INCDIR}/alsa/
+	install -m 0644 include/sound/ainstr*.h ${STAGING_INCDIR}/alsa/sound/
+	install -d ${STAGING_DATADIR}/aclocal
+	install -m 0644 utils/alsa.m4 ${STAGING_DATADIR}/aclocal/
+}
+
+PACKAGES =+ "alsa-server libasound alsa-conf-base alsa-conf alsa-doc alsa-dev"
+FILES_${PN}-dbg += "${libdir}/alsa-lib/*/.debu*"
+FILES_libasound = "${libdir}/libasound.so*"
+FILES_alsa-server = "${bindir}/*"
+FILES_alsa-conf = "${datadir}/alsa/"
+FILES_alsa-dev = "${libdir}/pkgconfig/ /usr/include/ ${datadir}/aclocal/*"
+FILES_alsa-conf-base = "\
+${datadir}/alsa/alsa.conf \
+${datadir}/alsa/cards/aliases.conf \
+${datadir}/alsa/pcm/default.conf \
+${datadir}/alsa/pcm/dmix.conf \
+${datadir}/alsa/pcm/dsnoop.conf"
+
+RDEPENDS_libasound = "alsa-conf-base"
diff --git a/recipes/alsa/alsa-lib_1.0.13.bb b/recipes/alsa/alsa-lib_1.0.13.bb
new file mode 100644
index 0000000000..860ef11f18
--- /dev/null
+++ b/recipes/alsa/alsa-lib_1.0.13.bb
@@ -0,0 +1,42 @@
+DESCRIPTION = "Alsa sound library"
+HOMEPAGE = "http://www.alsa-project.org"
+SECTION = "libs/multimedia"
+LICENSE = "GPL"
+PR = "r4"
+
+# configure.in sets -D__arm__ on the command line for any arm system
+# (not just those with the ARM instruction set), this should be removed,
+# (or replaced by a permitted #define).
+#FIXME: remove the following
+ARM_INSTRUCTION_SET = "arm"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/lib/alsa-lib-${PV}.tar.bz2 \
+           file://fix-tstamp-declaration.patch;patch=1"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--with-cards=pdaudiocf --with-oss=yes"
+
+do_stage() {
+	oe_libinstall -so -C src libasound ${STAGING_LIBDIR}/
+	install -d ${STAGING_INCDIR}/alsa/sound
+	install -m 0644 include/*.h ${STAGING_INCDIR}/alsa/
+	install -m 0644 include/sound/ainstr*.h ${STAGING_INCDIR}/alsa/sound/
+	install -d ${STAGING_DATADIR}/aclocal
+	install -m 0644 utils/alsa.m4 ${STAGING_DATADIR}/aclocal/
+}
+
+PACKAGES =+ "alsa-server libasound alsa-conf-base alsa-conf alsa-doc alsa-dev"
+FILES_${PN}-dbg += "${libdir}/alsa-lib/*/.debu*"
+FILES_libasound = "${libdir}/libasound.so.*"
+FILES_alsa-server = "${bindir}/*"
+FILES_alsa-conf = "${datadir}/alsa/"
+FILES_alsa-dev += "${libdir}/pkgconfig/ /usr/include/ ${datadir}/aclocal/*"
+FILES_alsa-conf-base = "\
+${datadir}/alsa/alsa.conf \
+${datadir}/alsa/cards/aliases.conf \
+${datadir}/alsa/pcm/default.conf \
+${datadir}/alsa/pcm/dmix.conf \
+${datadir}/alsa/pcm/dsnoop.conf"
+
+RDEPENDS_libasound = "alsa-conf-base"
diff --git a/recipes/alsa/alsa-lib_1.0.14.bb b/recipes/alsa/alsa-lib_1.0.14.bb
new file mode 100644
index 0000000000..ba46342ae7
--- /dev/null
+++ b/recipes/alsa/alsa-lib_1.0.14.bb
@@ -0,0 +1,47 @@
+DESCRIPTION = "Alsa sound library"
+HOMEPAGE = "http://www.alsa-project.org"
+SECTION = "libs/multimedia"
+LICENSE = "GPL"
+
+PR = "r2"
+
+# configure.in sets -D__arm__ on the command line for any arm system
+# (not just those with the ARM instruction set), this should be removed,
+# (or replaced by a permitted #define).
+#FIXME: remove the following
+ARM_INSTRUCTION_SET = "arm"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/lib/alsa-lib-${PV}.tar.bz2 \
+           file://fix-tstamp-declaration.patch;patch=1 \
+           file://unbreak_plugindir.patch;patch=1"
+
+inherit autotools pkgconfig
+
+require alsa-fpu.inc
+EXTRA_OECONF += "${@get_alsa_fpu_setting(bb, d)} "
+
+EXTRA_OECONF = "--with-cards=pdaudiocf --with-oss=yes"
+
+do_stage () {
+	oe_libinstall -so -C src libasound ${STAGING_LIBDIR}/
+	install -d ${STAGING_INCDIR}/alsa/sound
+	install -m 0644 include/*.h ${STAGING_INCDIR}/alsa/
+	install -m 0644 include/sound/ainstr*.h ${STAGING_INCDIR}/alsa/sound/
+	install -d ${STAGING_DATADIR}/aclocal
+	install -m 0644 utils/alsa.m4 ${STAGING_DATADIR}/aclocal/
+}
+
+PACKAGES =+ "alsa-server libasound alsa-conf-base alsa-conf alsa-doc alsa-dev"
+FILES_${PN}-dbg += "${libdir}/alsa-lib/*/.debu*"
+FILES_libasound = "${libdir}/libasound.so.*"
+FILES_alsa-server = "${bindir}/*"
+FILES_alsa-conf = "${datadir}/alsa/"
+FILES_alsa-dev += "${libdir}/pkgconfig/ /usr/include/ ${datadir}/aclocal/*"
+FILES_alsa-conf-base = "\
+${datadir}/alsa/alsa.conf \
+${datadir}/alsa/cards/aliases.conf \
+${datadir}/alsa/pcm/default.conf \
+${datadir}/alsa/pcm/dmix.conf \
+${datadir}/alsa/pcm/dsnoop.conf"
+
+RDEPENDS_libasound = "alsa-conf-base"
diff --git a/recipes/alsa/alsa-lib_1.0.15.bb b/recipes/alsa/alsa-lib_1.0.15.bb
new file mode 100644
index 0000000000..4cf393843b
--- /dev/null
+++ b/recipes/alsa/alsa-lib_1.0.15.bb
@@ -0,0 +1,54 @@
+DESCRIPTION = "Alsa sound library"
+HOMEPAGE = "http://www.alsa-project.org"
+SECTION = "libs/multimedia"
+LICENSE = "GPL"
+PR = "r1"
+
+# configure.in sets -D__arm__ on the command line for any arm system
+# (not just those with the ARM instruction set), this should be removed,
+# (or replaced by a permitted #define).
+#FIXME: remove the following
+ARM_INSTRUCTION_SET = "arm"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/lib/alsa-lib-${PV}.tar.bz2 \
+           file://fix-tstamp-declaration.patch;patch=1 \
+	   file://fix_libmath.patch;patch=1 \
+	  "
+
+inherit autotools pkgconfig
+
+
+EXTRA_OECONF = "--with-cards=pdaudiocf --with-oss=yes --disable-python"
+
+
+require alsa-fpu.inc
+EXTRA_OECONF += "${@get_alsa_fpu_setting(bb, d)} "
+
+
+require alsa-versym.inc
+EXTRA_OECONF += "${@get_alsa_versym_setting(bb, d)} "
+
+
+do_stage () {
+	oe_libinstall -so -C src libasound ${STAGING_LIBDIR}/
+	install -d ${STAGING_INCDIR}/alsa/sound
+	install -m 0644 include/*.h ${STAGING_INCDIR}/alsa/
+	install -m 0644 include/sound/ainstr*.h ${STAGING_INCDIR}/alsa/sound/
+	install -d ${STAGING_DATADIR}/aclocal
+	install -m 0644 utils/alsa.m4 ${STAGING_DATADIR}/aclocal/
+}
+
+PACKAGES =+ "alsa-server libasound alsa-conf-base alsa-conf alsa-doc alsa-dev"
+FILES_${PN}-dbg += "${libdir}/alsa-lib/*/.debu*"
+FILES_libasound = "${libdir}/libasound.so.*"
+FILES_alsa-server = "${bindir}/*"
+FILES_alsa-conf = "${datadir}/alsa/"
+FILES_alsa-dev += "${libdir}/pkgconfig/ /usr/include/ ${datadir}/aclocal/*"
+FILES_alsa-conf-base = "\
+${datadir}/alsa/alsa.conf \
+${datadir}/alsa/cards/aliases.conf \
+${datadir}/alsa/pcm/default.conf \
+${datadir}/alsa/pcm/dmix.conf \
+${datadir}/alsa/pcm/dsnoop.conf"
+
+RDEPENDS_libasound = "alsa-conf-base"
diff --git a/recipes/alsa/alsa-lib_1.0.17.bb b/recipes/alsa/alsa-lib_1.0.17.bb
new file mode 100644
index 0000000000..f4ae21b637
--- /dev/null
+++ b/recipes/alsa/alsa-lib_1.0.17.bb
@@ -0,0 +1,48 @@
+DESCRIPTION = "Alsa sound library"
+HOMEPAGE = "http://www.alsa-project.org"
+SECTION = "libs/multimedia"
+LICENSE = "GPL"
+
+# configure.in sets -D__arm__ on the command line for any arm system
+# (not just those with the ARM instruction set), this should be removed,
+# (or replaced by a permitted #define).
+#FIXME: remove the following
+ARM_INSTRUCTION_SET = "arm"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/lib/alsa-lib-${PV}.tar.bz2 \
+           file://fix-tstamp-declaration.patch;patch=1 \
+	   file://fix_libmath.patch;patch=1 \
+	  "
+
+inherit autotools pkgconfig
+
+
+EXTRA_OECONF = "--with-cards=pdaudiocf --with-oss=yes --disable-python"
+
+
+require alsa-fpu.inc
+EXTRA_OECONF += "${@get_alsa_fpu_setting(bb, d)} "
+
+
+require alsa-versym.inc
+EXTRA_OECONF += "${@get_alsa_versym_setting(bb, d)} "
+
+
+do_stage () {
+	autotools_stage_all
+}
+
+PACKAGES =+ "alsa-server libasound alsa-conf-base alsa-conf alsa-doc alsa-dev"
+FILES_${PN}-dbg += "${libdir}/alsa-lib/*/.debu*"
+FILES_libasound = "${libdir}/libasound.so.*"
+FILES_alsa-server = "${bindir}/*"
+FILES_alsa-conf = "${datadir}/alsa/"
+FILES_alsa-dev += "${libdir}/pkgconfig/ /usr/include/ ${datadir}/aclocal/*"
+FILES_alsa-conf-base = "\
+${datadir}/alsa/alsa.conf \
+${datadir}/alsa/cards/aliases.conf \
+${datadir}/alsa/pcm/default.conf \
+${datadir}/alsa/pcm/dmix.conf \
+${datadir}/alsa/pcm/dsnoop.conf"
+
+RDEPENDS_libasound = "alsa-conf-base"
diff --git a/recipes/alsa/alsa-lib_1.0.18.bb b/recipes/alsa/alsa-lib_1.0.18.bb
new file mode 100644
index 0000000000..f4ae21b637
--- /dev/null
+++ b/recipes/alsa/alsa-lib_1.0.18.bb
@@ -0,0 +1,48 @@
+DESCRIPTION = "Alsa sound library"
+HOMEPAGE = "http://www.alsa-project.org"
+SECTION = "libs/multimedia"
+LICENSE = "GPL"
+
+# configure.in sets -D__arm__ on the command line for any arm system
+# (not just those with the ARM instruction set), this should be removed,
+# (or replaced by a permitted #define).
+#FIXME: remove the following
+ARM_INSTRUCTION_SET = "arm"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/lib/alsa-lib-${PV}.tar.bz2 \
+           file://fix-tstamp-declaration.patch;patch=1 \
+	   file://fix_libmath.patch;patch=1 \
+	  "
+
+inherit autotools pkgconfig
+
+
+EXTRA_OECONF = "--with-cards=pdaudiocf --with-oss=yes --disable-python"
+
+
+require alsa-fpu.inc
+EXTRA_OECONF += "${@get_alsa_fpu_setting(bb, d)} "
+
+
+require alsa-versym.inc
+EXTRA_OECONF += "${@get_alsa_versym_setting(bb, d)} "
+
+
+do_stage () {
+	autotools_stage_all
+}
+
+PACKAGES =+ "alsa-server libasound alsa-conf-base alsa-conf alsa-doc alsa-dev"
+FILES_${PN}-dbg += "${libdir}/alsa-lib/*/.debu*"
+FILES_libasound = "${libdir}/libasound.so.*"
+FILES_alsa-server = "${bindir}/*"
+FILES_alsa-conf = "${datadir}/alsa/"
+FILES_alsa-dev += "${libdir}/pkgconfig/ /usr/include/ ${datadir}/aclocal/*"
+FILES_alsa-conf-base = "\
+${datadir}/alsa/alsa.conf \
+${datadir}/alsa/cards/aliases.conf \
+${datadir}/alsa/pcm/default.conf \
+${datadir}/alsa/pcm/dmix.conf \
+${datadir}/alsa/pcm/dsnoop.conf"
+
+RDEPENDS_libasound = "alsa-conf-base"
diff --git a/recipes/alsa/alsa-oss_1.0.11.bb b/recipes/alsa/alsa-oss_1.0.11.bb
new file mode 100644
index 0000000000..9a7751ee6b
--- /dev/null
+++ b/recipes/alsa/alsa-oss_1.0.11.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Alsa OSS Compatibility Package"
+HOMEPAGE = "http://www.alsa-project.org"
+SECTION = "libs/multimedia"
+LICENSE = "GPL"
+DEPENDS = "alsa-lib"
+PR = "r0"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/oss-lib/alsa-oss-${PV}.tar.bz2"
+
+inherit autotools
+
+do_configure_prepend () {
+	touch NEWS README AUTHORS ChangeLog
+}
+
+do_stage () {
+	oe_libinstall -C alsa -a -so libaoss ${STAGING_LIBDIR}
+	oe_libinstall -C alsa -a -so libalsatoss ${STAGING_LIBDIR}
+}
diff --git a/recipes/alsa/alsa-oss_1.0.14.bb b/recipes/alsa/alsa-oss_1.0.14.bb
new file mode 100644
index 0000000000..b11947e86a
--- /dev/null
+++ b/recipes/alsa/alsa-oss_1.0.14.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "Alsa OSS Compatibility Package"
+SECTION = "libs/multimedia"
+LICENSE = "GPL"
+DEPENDS = "alsa-lib"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/oss-lib/alsa-oss-${PV}.tar.bz2"
+
+inherit autotools 
+
+do_configure_prepend () {
+	touch NEWS README AUTHORS ChangeLog
+}
+
+do_stage () {
+	oe_libinstall -C alsa -a -so libaoss ${STAGING_LIBDIR}
+	oe_libinstall -C alsa -a -so libalsatoss ${STAGING_LIBDIR}
+}
diff --git a/recipes/alsa/alsa-oss_1.0.15.bb b/recipes/alsa/alsa-oss_1.0.15.bb
new file mode 100644
index 0000000000..de840e73fe
--- /dev/null
+++ b/recipes/alsa/alsa-oss_1.0.15.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "Alsa OSS Compatibility Package"
+SECTION = "libs/multimedia"
+LICENSE = "GPL"
+DEPENDS = "alsa-lib"
+PR = "r2"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/oss-lib/alsa-oss-${PV}.tar.bz2 \
+	   file://libio.patch;patch=1 \
+	  "
+
+inherit autotools 
+
+LEAD_SONAME = "libaoss.so.0"
+
+do_configure_prepend () {
+	touch NEWS README AUTHORS ChangeLog
+}
+
+do_stage () {
+	oe_libinstall -C alsa -a -so libaoss ${STAGING_LIBDIR}
+	oe_libinstall -C alsa -a -so libalsatoss ${STAGING_LIBDIR}
+}
diff --git a/recipes/alsa/alsa-oss_1.0.17.bb b/recipes/alsa/alsa-oss_1.0.17.bb
new file mode 100644
index 0000000000..cb77cc6759
--- /dev/null
+++ b/recipes/alsa/alsa-oss_1.0.17.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Alsa OSS Compatibility Package"
+SECTION = "libs/multimedia"
+LICENSE = "GPL"
+DEPENDS = "alsa-lib"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/oss-lib/alsa-oss-${PV}.tar.bz2 \
+	   file://libio.patch;patch=1 \
+	  "
+
+inherit autotools 
+
+LEAD_SONAME = "libaoss.so.0"
+
+do_configure_prepend () {
+	touch NEWS README AUTHORS ChangeLog
+}
+
+do_stage () {
+	autotools_stage_all
+}
diff --git a/recipes/alsa/alsa-plugins_1.0.15.bb b/recipes/alsa/alsa-plugins_1.0.15.bb
new file mode 100644
index 0000000000..b17a3265e8
--- /dev/null
+++ b/recipes/alsa/alsa-plugins_1.0.15.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "ALSA Plugins"
+HOMEPAGE = "http://www.alsa-project.org"
+SECTION = "multimedia/alsa/plugins"
+LICENSE = "GPL"
+DEPENDS = "alsa-lib pulseaudio"
+PR = "r0"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/plugins/alsa-plugins-${PV}.tar.bz2"
+
+inherit autotools
+
+PACKAGES_DYNAMIC = "libasound-module*"
+
+python populate_packages_prepend() {
+        plugindir = bb.data.expand('${libdir}/alsa-lib/', d)
+        do_split_packages(d, plugindir, '^libasound_module_(.*)\.so$', 'libasound-module-%s', 'Alsa plugin for %s', extra_depends='' )
+}
+
+FILES_${PN}-dev += "${libdir}/alsa-lib/libasound*.a ${libdir}/alsa-lib/libasound*.la"
+FILES_${PN}-dbg += "${libdir}/alsa-lib/.debug"
diff --git a/recipes/alsa/alsa-plugins_1.0.17.bb b/recipes/alsa/alsa-plugins_1.0.17.bb
new file mode 100644
index 0000000000..b17a3265e8
--- /dev/null
+++ b/recipes/alsa/alsa-plugins_1.0.17.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "ALSA Plugins"
+HOMEPAGE = "http://www.alsa-project.org"
+SECTION = "multimedia/alsa/plugins"
+LICENSE = "GPL"
+DEPENDS = "alsa-lib pulseaudio"
+PR = "r0"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/plugins/alsa-plugins-${PV}.tar.bz2"
+
+inherit autotools
+
+PACKAGES_DYNAMIC = "libasound-module*"
+
+python populate_packages_prepend() {
+        plugindir = bb.data.expand('${libdir}/alsa-lib/', d)
+        do_split_packages(d, plugindir, '^libasound_module_(.*)\.so$', 'libasound-module-%s', 'Alsa plugin for %s', extra_depends='' )
+}
+
+FILES_${PN}-dev += "${libdir}/alsa-lib/libasound*.a ${libdir}/alsa-lib/libasound*.la"
+FILES_${PN}-dbg += "${libdir}/alsa-lib/.debug"
diff --git a/recipes/alsa/alsa-plugins_1.0.18.bb b/recipes/alsa/alsa-plugins_1.0.18.bb
new file mode 100644
index 0000000000..b17a3265e8
--- /dev/null
+++ b/recipes/alsa/alsa-plugins_1.0.18.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "ALSA Plugins"
+HOMEPAGE = "http://www.alsa-project.org"
+SECTION = "multimedia/alsa/plugins"
+LICENSE = "GPL"
+DEPENDS = "alsa-lib pulseaudio"
+PR = "r0"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/plugins/alsa-plugins-${PV}.tar.bz2"
+
+inherit autotools
+
+PACKAGES_DYNAMIC = "libasound-module*"
+
+python populate_packages_prepend() {
+        plugindir = bb.data.expand('${libdir}/alsa-lib/', d)
+        do_split_packages(d, plugindir, '^libasound_module_(.*)\.so$', 'libasound-module-%s', 'Alsa plugin for %s', extra_depends='' )
+}
+
+FILES_${PN}-dev += "${libdir}/alsa-lib/libasound*.a ${libdir}/alsa-lib/libasound*.la"
+FILES_${PN}-dbg += "${libdir}/alsa-lib/.debug"
diff --git a/recipes/alsa/alsa-scenario_git.bb b/recipes/alsa/alsa-scenario_git.bb
new file mode 100644
index 0000000000..74c25c247e
--- /dev/null
+++ b/recipes/alsa/alsa-scenario_git.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "ALSA Scenario Library"
+HOMEPAGE = "http://opensource.wolfsonmicro.com/node/22"
+SECTION = "console/utils"
+LICENSE = "GPL"
+DEPENDS = "alsa-lib ncurses"
+PV = "0.1+gitr${SRCREV}"
+PR = "r0"
+PE = "1"
+
+SRC_URI = "git://opensource.wolfsonmicro.com/alsa-scenario;branch=master;protocol=git"
+S = "${WORKDIR}/git"
+
+inherit autotools
diff --git a/recipes/alsa/alsa-state.bb b/recipes/alsa/alsa-state.bb
new file mode 100644
index 0000000000..3ebc0d5476
--- /dev/null
+++ b/recipes/alsa/alsa-state.bb
@@ -0,0 +1,58 @@
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2007
+# License: MIT (see http://www.opensource.org/licenses/mit-license.php
+#               for a copy of the license)
+#
+# Filename: alsa-state.bb
+
+DESCRIPTION = "Alsa Scenario Files"
+LICENSE = "MIT"
+PV = "0.2.0"
+PR = "r3"
+
+SRC_URI = "\
+  file://asound.conf \
+  file://asound.state \
+  file://alsa-state \
+  file://*.state \
+"
+
+inherit update-rc.d
+
+INITSCRIPT_NAME = "alsa-state"
+INITSCRIPT_PARAMS = "start 39 S ."
+
+do_install() {
+    install -d ${D}${sysconfdir}/init.d
+    install -m 0755 ${WORKDIR}/alsa-state ${D}${sysconfdir}/init.d
+
+	install -m 0644 ${WORKDIR}/asound.conf ${D}${sysconfdir}
+	install -m 0644 ${WORKDIR}/*.state ${D}${sysconfdir}
+}
+
+PACKAGES += "alsa-states"
+
+RRECOMMENDS_alsa-state = "alsa-states"
+RRECOMMENDS_${PN}_om-gta01 = "openmoko-alsa-scenarios"
+RRECOMMENDS_${PN}_om-gta02 = "openmoko-alsa-scenarios"
+
+FILES_${PN} = "${sysconfdir}/init.d ${sysconfdir}/asound.conf"
+CONFFILES_${PN} = "${sysconfdir}/asound.conf"
+
+FILES_alsa-states = "${sysconfdir}/*.state"
+
+PACKAGE_ARCH_${PN} = "all"
+PACKAGE_ARCH_alsa-states = "${MACHINE_ARCH}"
+
+pkg_postinst_${PN}() {
+	if test -z "$D"
+	then
+		if test -x /usr/sbin/alsactl
+		then
+			/usr/sbin/alsactl -f ${sysconfdir}/asound.state restore
+		fi
+		# INITSCRIPT_PARAMS changed, so remove the old and
+		# install the new setting.
+		update-rc.d -f ${INITSCRIPT_NAME} remove
+		update-rc.d ${INITSCRIPT_NAME} ${INITSCRIPT_PARAMS}
+	fi
+}
diff --git a/recipes/alsa/alsa-state/a780/gsmhandset.state b/recipes/alsa/alsa-state/a780/gsmhandset.state
new file mode 100644
index 0000000000..c9adfb3340
--- /dev/null
+++ b/recipes/alsa/alsa-state/a780/gsmhandset.state
@@ -0,0 +1,55 @@
+state.EZX {
+	control.1 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 15'
+		iface MIXER
+		name 'Master Playback Volume'
+		value 6
+	}
+	control.2 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Stereo
+		comment.item.1 Mono
+		comment.item.2 BP
+		iface MIXER
+		name 'DAI Select'
+		value BP
+	}
+	control.3 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 31'
+		iface MIXER
+		name 'Capture Volume'
+		value 14
+	}
+	control.4 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Off
+		comment.item.1 '2->1ch'
+		comment.item.2 '2->1ch -3db'
+		comment.item.3 '2->1ch -6db'
+		iface MIXER
+		name Downmixer
+		value Off
+	}
+	control.5 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Off
+		comment.item.1 Loudspeaker
+		comment.item.2 Earpiece
+		comment.item.3 Headset
+		iface MIXER
+		name 'Output mode'
+		value Earpiece
+	}
+}
diff --git a/recipes/alsa/alsa-state/a780/gsmheadset.state b/recipes/alsa/alsa-state/a780/gsmheadset.state
new file mode 100644
index 0000000000..7b72789410
--- /dev/null
+++ b/recipes/alsa/alsa-state/a780/gsmheadset.state
@@ -0,0 +1,55 @@
+state.EZX {
+	control.1 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 15'
+		iface MIXER
+		name 'Master Playback Volume'
+		value 6
+	}
+	control.2 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Stereo
+		comment.item.1 Mono
+		comment.item.2 BP
+		iface MIXER
+		name 'DAI Select'
+		value BP
+	}
+	control.3 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 31'
+		iface MIXER
+		name 'Capture Volume'
+		value 14
+	}
+	control.4 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Off
+		comment.item.1 '2->1ch'
+		comment.item.2 '2->1ch -3db'
+		comment.item.3 '2->1ch -6db'
+		iface MIXER
+		name Downmixer
+		value Off
+	}
+	control.5 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Off
+		comment.item.1 Loudspeaker
+		comment.item.2 Earpiece
+		comment.item.3 Headset
+		iface MIXER
+		name 'Output mode'
+		value Headset
+	}
+}
diff --git a/recipes/alsa/alsa-state/a780/stereoout.state b/recipes/alsa/alsa-state/a780/stereoout.state
new file mode 100644
index 0000000000..64b36a0572
--- /dev/null
+++ b/recipes/alsa/alsa-state/a780/stereoout.state
@@ -0,0 +1,55 @@
+state.EZX {
+	control.1 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 15'
+		iface MIXER
+		name 'Master Playback Volume'
+		value 6
+	}
+	control.2 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Stereo
+		comment.item.1 Mono
+		comment.item.2 BP
+		iface MIXER
+		name 'DAI Select'
+		value Stereo
+	}
+	control.3 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 31'
+		iface MIXER
+		name 'Capture Volume'
+		value 14
+	}
+	control.4 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Off
+		comment.item.1 '2->1ch'
+		comment.item.2 '2->1ch -3db'
+		comment.item.3 '2->1ch -6db'
+		iface MIXER
+		name Downmixer
+		value Off
+	}
+	control.5 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Off
+		comment.item.1 Loudspeaker
+		comment.item.2 Earpiece
+		comment.item.3 Headset
+		iface MIXER
+		name 'Output mode'
+		value Loudspeaker
+	}
+}
diff --git a/recipes/alsa/alsa-state/akita/asound.state b/recipes/alsa/alsa-state/akita/asound.state
new file mode 100644
index 0000000000..d1bacfb708
--- /dev/null
+++ b/recipes/alsa/alsa-state/akita/asound.state
@@ -0,0 +1,619 @@
+state.Spitz {
+	control.1 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 63'
+		iface MIXER
+		name 'Capture Volume'
+		value.0 48
+		value.1 48
+	}
+	control.2 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 2
+		iface MIXER
+		name 'Capture ZC Switch'
+		value.0 true
+		value.1 true
+	}
+	control.3 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 2
+		iface MIXER
+		name 'Capture Switch'
+		value.0 true
+		value.1 true
+	}
+	control.4 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 2
+		iface MIXER
+		name 'Headphone Playback ZC Switch'
+		value.0 true
+		value.1 true
+	}
+	control.5 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 2
+		iface MIXER
+		name 'Speaker Playback ZC Switch'
+		value.0 true
+		value.1 true
+	}
+	control.6 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 None
+		comment.item.1 '32Khz'
+		comment.item.2 '44.1Khz'
+		comment.item.3 '48Khz'
+		iface MIXER
+		name 'Playback De-emphasis'
+		value None
+	}
+	control.7 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Normal
+		comment.item.1 'L Invert'
+		comment.item.2 'R Invert'
+		comment.item.3 'L + R Invert'
+		iface MIXER
+		name 'Capture Polarity'
+		value Normal
+	}
+	control.8 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Playback 6dB Attenuate'
+		value false
+	}
+	control.9 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Capture 6dB Attenuate'
+		value false
+	}
+	control.10 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 255'
+		iface MIXER
+		name 'PCM Volume'
+		value.0 220
+		value.1 220
+	}
+	control.11 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 'Linear Control'
+		comment.item.1 'Adaptive Boost'
+		iface MIXER
+		name 'Bass Boost'
+		value 'Linear Control'
+	}
+	control.12 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 '130Hz @ 48kHz'
+		comment.item.1 '200Hz @ 48kHz'
+		iface MIXER
+		name 'Bass Filter'
+		value '130Hz @ 48kHz'
+	}
+	control.13 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 15'
+		iface MIXER
+		name 'Bass Volume'
+		value 0
+	}
+	control.14 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 15'
+		iface MIXER
+		name 'Treble Volume'
+		value 0
+	}
+	control.15 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 '8kHz'
+		comment.item.1 '4kHz'
+		iface MIXER
+		name 'Treble Cut-off'
+		value '8kHz'
+	}
+	control.16 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name '3D Switch'
+		value false
+	}
+	control.17 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 15'
+		iface MIXER
+		name '3D Volume'
+		value 0
+	}
+	control.18 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 '200Hz'
+		comment.item.1 '500Hz'
+		iface MIXER
+		name '3D Lower Cut-off'
+		value '200Hz'
+	}
+	control.19 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 '2.2kHz'
+		comment.item.1 '1.5kHz'
+		iface MIXER
+		name '3D Upper Cut-off'
+		value '2.2kHz'
+	}
+	control.20 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Capture
+		comment.item.1 Playback
+		iface MIXER
+		name '3D Mode'
+		value Playback
+	}
+	control.21 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 7'
+		iface MIXER
+		name 'ALC Capture Target Volume'
+		value 3
+	}
+	control.22 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 7'
+		iface MIXER
+		name 'ALC Capture Max Volume'
+		value 7
+	}
+	control.23 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Off
+		comment.item.1 Right
+		comment.item.2 Left
+		comment.item.3 Stereo
+		iface MIXER
+		name 'ALC Capture Function'
+		value Left
+	}
+	control.24 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'ALC Capture ZC Switch'
+		value true
+	}
+	control.25 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 15'
+		iface MIXER
+		name 'ALC Capture Hold Time'
+		value 9
+	}
+	control.26 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 15'
+		iface MIXER
+		name 'ALC Capture Decay Time'
+		value 9
+	}
+	control.27 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 15'
+		iface MIXER
+		name 'ALC Capture Attack Time'
+		value 3
+	}
+	control.28 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 31'
+		iface MIXER
+		name 'ALC Capture NG Threshold'
+		value 0
+	}
+	control.29 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 '2.2kHz'
+		comment.item.1 '1.5kHz'
+		iface MIXER
+		name 'ALC Capture NG Type'
+		value '2.2kHz'
+	}
+	control.30 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'ALC Capture NG Switch'
+		value false
+	}
+	control.31 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 255'
+		iface MIXER
+		name 'Left ADC Capture Volume'
+		value 195
+	}
+	control.32 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 255'
+		iface MIXER
+		name 'Right ADC Capture Volume'
+		value 195
+	}
+	control.33 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'ZC Timeout Switch'
+		value true
+	}
+	control.34 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Playback Invert Switch'
+		value false
+	}
+	control.35 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Right Speaker Playback Invert Switch'
+		value true
+	}
+	control.36 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 3'
+		iface MIXER
+		name 'Mic Boost'
+		value.0 3
+		value.1 3
+	}
+	control.37 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 7'
+		iface MIXER
+		name 'Bypass Left Playback Volume'
+		value.0 0
+		value.1 0
+	}
+	control.38 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 7'
+		iface MIXER
+		name 'Bypass Right Playback Volume'
+		value.0 0
+		value.1 0
+	}
+	control.39 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 7'
+		iface MIXER
+		name 'Bypass Mono Playback Volume'
+		value.0 0
+		value.1 0
+	}
+	control.40 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Mono Playback ZC Switch'
+		value false
+	}
+	control.41 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 127'
+		iface MIXER
+		name 'Headphone Playback Volume'
+		value.0 105
+		value.1 105
+	}
+	control.42 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 127'
+		iface MIXER
+		name 'Speaker Playback Volume'
+		value.0 127
+		value.1 127
+	}
+	control.43 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 127'
+		iface MIXER
+		name 'Mono Playback Volume'
+		value 0
+	}
+	control.44 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Stereo
+		comment.item.1 'Mono (Left)'
+		comment.item.2 'Mono (Right)'
+		comment.item.3 'Digital Mono'
+		iface MIXER
+		name 'Right ADC Mux'
+		value 'Digital Mono'
+	}
+	control.45 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Stereo
+		comment.item.1 'Mono (Left)'
+		comment.item.2 'Mono (Right)'
+		comment.item.3 'Digital Mono'
+		iface MIXER
+		name 'Left ADC Mux'
+		value 'Digital Mono'
+	}
+	control.46 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 'Line 1'
+		comment.item.1 'Line 2'
+		iface MIXER
+		name 'Differential Mux'
+		value 'Line 1'
+	}
+	control.47 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 VREF
+		comment.item.1 'ROUT1 + Vol'
+		comment.item.2 MonoOut
+		comment.item.3 ROUT1
+		iface MIXER
+		name 'Out3 Mux'
+		value VREF
+	}
+	control.48 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 'Line 1'
+		comment.item.1 'Line 2'
+		comment.item.2 'Line 3'
+		comment.item.3 PGA
+		comment.item.4 Differential
+		iface MIXER
+		name 'Right Line Mux'
+		value Differential
+	}
+	control.49 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 'Line 1'
+		comment.item.1 'Line 2'
+		comment.item.2 'Line 3'
+		comment.item.3 PGA
+		comment.item.4 Differential
+		iface MIXER
+		name 'Left Line Mux'
+		value Differential
+	}
+	control.50 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 'Line 1'
+		comment.item.1 'Line 2'
+		comment.item.2 'Line 3'
+		comment.item.3 Differential
+		iface MIXER
+		name 'Right PGA Mux'
+		value Differential
+	}
+	control.51 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 'Line 1'
+		comment.item.1 'Line 2'
+		comment.item.2 'Line 3'
+		comment.item.3 Differential
+		iface MIXER
+		name 'Left PGA Mux'
+		value Differential
+	}
+	control.52 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Mono Mixer Left Playback Switch'
+		value false
+	}
+	control.53 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Mono Mixer Left Bypass Switch'
+		value false
+	}
+	control.54 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Mono Mixer Right Playback Switc'
+		value false
+	}
+	control.55 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Mono Mixer Right Bypass Switch'
+		value false
+	}
+	control.56 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Right Mixer Left Playback Switc'
+		value false
+	}
+	control.57 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Right Mixer Left Bypass Switch'
+		value false
+	}
+	control.58 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Right Mixer Playback Switch'
+		value true
+	}
+	control.59 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Right Mixer Right Bypass Switch'
+		value false
+	}
+	control.60 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Left Mixer Playback Switch'
+		value true
+	}
+	control.61 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Left Mixer Left Bypass Switch'
+		value false
+	}
+	control.62 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Left Mixer Right Playback Switc'
+		value false
+	}
+	control.63 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Left Mixer Right Bypass Switch'
+		value false
+	}
+	control.64 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Headphone
+		comment.item.1 Mic
+		comment.item.2 Line
+		comment.item.3 Headset
+		comment.item.4 Off
+		iface MIXER
+		name 'Jack Function'
+		value Off
+	}
+	control.65 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 On
+		comment.item.1 Off
+		iface MIXER
+		name 'Speaker Function'
+		value On
+	}
+}
diff --git a/recipes/alsa/alsa-state/alsa-state b/recipes/alsa/alsa-state/alsa-state
new file mode 100755
index 0000000000..84cdf03750
--- /dev/null
+++ b/recipes/alsa/alsa-state/alsa-state
@@ -0,0 +1,29 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2007
+# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
+#
+# Filename: alsa-state
+# Date: 20070308 (YMD)
+
+
+asound_restore(){
+	echo "ALSA: Restoring mixer settings..."
+	if test -x /usr/sbin/alsactl -a -e /etc/asound.state
+	then
+		/usr/sbin/alsactl -f /etc/asound.state restore &
+	fi
+}
+
+asound_store(){
+	echo "ALSA: Storing mixer settings..."
+	if test -x /usr/sbin/alsactl
+	then
+		/usr/sbin/alsactl -f /etc/asound.state store
+	fi
+}
+
+case "$1" in
+start)		asound_restore ;;
+stop)		asound_store ;;
+esac
diff --git a/recipes/alsa/alsa-state/asound.conf b/recipes/alsa/alsa-state/asound.conf
new file mode 100644
index 0000000000..6be024201c
--- /dev/null
+++ b/recipes/alsa/alsa-state/asound.conf
@@ -0,0 +1,12 @@
+# default dmix configuration
+
+pcm.!default {
+    type plug
+    slave.pcm "dmix"
+}
+
+ctl.mixer0 {
+    type hw
+    card 0
+}
+
diff --git a/recipes/alsa/alsa-state/asound.state b/recipes/alsa/alsa-state/asound.state
new file mode 100644
index 0000000000..88b0d02657
--- /dev/null
+++ b/recipes/alsa/alsa-state/asound.state
@@ -0,0 +1 @@
+# Dummy file, do not delete
\ No newline at end of file
diff --git a/recipes/alsa/alsa-state/at91sam9263ek/asound.conf b/recipes/alsa/alsa-state/at91sam9263ek/asound.conf
new file mode 100644
index 0000000000..87bb5ec050
--- /dev/null
+++ b/recipes/alsa/alsa-state/at91sam9263ek/asound.conf
@@ -0,0 +1,2 @@
+pcm.!default {  type hw  card 0  } 
+ctl.!default {  type hw  card 0  }
diff --git a/recipes/alsa/alsa-state/at91sam9263ek/asound.state b/recipes/alsa/alsa-state/at91sam9263ek/asound.state
new file mode 100644
index 0000000000..ee646a1341
--- /dev/null
+++ b/recipes/alsa/alsa-state/at91sam9263ek/asound.state
@@ -0,0 +1,283 @@
+state.AC97 {
+	control.1 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 2
+		iface MIXER
+		name 'Master Playback Switch'
+		value.0 true
+		value.1 true
+	}
+	control.2 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 31'
+		comment.dbmin -4650
+		comment.dbmax 0
+		iface MIXER
+		name 'Master Playback Volume'
+		value.0 22
+		value.1 22
+	}
+	control.3 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 2
+		iface MIXER
+		name 'Headphone Playback Switch'
+		value.0 true
+		value.1 true
+	}
+	control.4 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 31'
+		comment.dbmin -4650
+		comment.dbmax 0
+		iface MIXER
+		name 'Headphone Playback Volume'
+		value.0 22
+		value.1 22
+	}
+	control.5 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Master Mono Playback Switch'
+		value false
+	}
+	control.6 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 31'
+		comment.dbmin -4650
+		comment.dbmax 0
+		iface MIXER
+		name 'Master Mono Playback Volume'
+		value 0
+	}
+	control.7 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Phone Playback Switch'
+		value false
+	}
+	control.8 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 31'
+		comment.dbmin -3450
+		comment.dbmax 1200
+		iface MIXER
+		name 'Phone Playback Volume'
+		value 0
+	}
+	control.9 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Mic Playback Switch'
+		value false
+	}
+	control.10 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 31'
+		comment.dbmin -3450
+		comment.dbmax 1200
+		iface MIXER
+		name 'Mic Playback Volume'
+		value 0
+	}
+	control.11 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Mic Boost (+20dB)'
+		value false
+	}
+	control.12 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 2
+		iface MIXER
+		name 'Line Playback Switch'
+		value.0 false
+		value.1 false
+	}
+	control.13 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 31'
+		comment.dbmin -3450
+		comment.dbmax 1200
+		iface MIXER
+		name 'Line Playback Volume'
+		value.0 0
+		value.1 0
+	}
+	control.14 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 2
+		iface MIXER
+		name 'CD Playback Switch'
+		value.0 false
+		value.1 false
+	}
+	control.15 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 31'
+		comment.dbmin -3450
+		comment.dbmax 1200
+		iface MIXER
+		name 'CD Playback Volume'
+		value.0 0
+		value.1 0
+	}
+	control.16 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 2
+		iface MIXER
+		name 'Aux Playback Switch'
+		value.0 false
+		value.1 false
+	}
+	control.17 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 31'
+		comment.dbmin -3450
+		comment.dbmax 1200
+		iface MIXER
+		name 'Aux Playback Volume'
+		value.0 0
+		value.1 0
+	}
+	control.18 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 2
+		iface MIXER
+		name 'PCM Playback Switch'
+		value.0 true
+		value.1 true
+	}
+	control.19 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 31'
+		comment.dbmin -3450
+		comment.dbmax 1200
+		iface MIXER
+		name 'PCM Playback Volume'
+		value.0 22
+		value.1 22
+	}
+	control.20 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 2
+		comment.item.0 Mic
+		comment.item.1 CD
+		comment.item.2 Video
+		comment.item.3 Aux
+		comment.item.4 Line
+		comment.item.5 Mix
+		comment.item.6 'Mix Mono'
+		comment.item.7 Phone
+		iface MIXER
+		name 'Capture Source'
+		value.0 Mic
+		value.1 Mic
+	}
+	control.21 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 2
+		iface MIXER
+		name 'Capture Switch'
+		value.0 true
+		value.1 true
+	}
+	control.22 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 15'
+		comment.dbmin 0
+		comment.dbmax 2250
+		iface MIXER
+		name 'Capture Volume'
+		value.0 11
+		value.1 11
+	}
+	control.23 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Mix
+		comment.item.1 Mic
+		iface MIXER
+		name 'Mono Output Select'
+		value Mix
+	}
+	control.24 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Mic1
+		comment.item.1 Mic2
+		iface MIXER
+		name 'Mic Select'
+		value Mic1
+	}
+	control.25 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Stereo Mic'
+		value false
+	}
+	control.26 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Headphone Jack Sense'
+		value false
+	}
+	control.27 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Line Jack Sense'
+		value false
+	}
+	control.28 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'External Amplifier'
+		value true
+	}
+}
diff --git a/recipes/alsa/alsa-state/c7x0/asound.state b/recipes/alsa/alsa-state/c7x0/asound.state
new file mode 100644
index 0000000000..caef65c120
--- /dev/null
+++ b/recipes/alsa/alsa-state/c7x0/asound.state
@@ -0,0 +1,150 @@
+state.Corgi {
+	control.1 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 127'
+		iface MIXER
+		name 'Master Playback Volume'
+		value.0 98
+		value.1 98
+	}
+	control.2 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 2
+		iface MIXER
+		name 'Master Playback ZC Switch'
+		value.0 false
+		value.1 false
+	}
+	control.3 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 31'
+		iface MIXER
+		name 'Capture Volume'
+		value.0 31
+		value.1 31
+	}
+	control.4 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 2
+		iface MIXER
+		name 'Line Capture Switch'
+		value.0 false
+		value.1 false
+	}
+	control.5 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Mic Boost (+20dB)'
+		value false
+	}
+	control.6 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Capture Mic Switch'
+		value false
+	}
+	control.7 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 3'
+		iface MIXER
+		name 'Sidetone Playback Volume'
+		value 3
+	}
+	control.8 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'ADC High Pass Filter Switch'
+		value true
+	}
+	control.9 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Store DC Offset Switch'
+		value false
+	}
+	control.10 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 None
+		comment.item.1 '32Khz'
+		comment.item.2 '44.1Khz'
+		comment.item.3 '48Khz'
+		iface MIXER
+		name 'Playback De-emphasis'
+		value None
+	}
+	control.11 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 'Line In'
+		comment.item.1 Mic
+		iface MIXER
+		name 'Input Mux'
+		value 'Line In'
+	}
+	control.12 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Output Mixer Line Bypass Switch'
+		value false
+	}
+	control.13 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Output Mixer Mic Sidetone Switc'
+		value false
+	}
+	control.14 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Output Mixer HiFi Playback Swit'
+		value true
+	}
+	control.15 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Headphone
+		comment.item.1 Mic
+		comment.item.2 Line
+		comment.item.3 Headset
+		comment.item.4 Off
+		iface MIXER
+		name 'Jack Function'
+		value Headphone
+	}
+	control.16 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 On
+		comment.item.1 Off
+		iface MIXER
+		name 'Speaker Function'
+		value Off
+	}
+}
diff --git a/recipes/alsa/alsa-state/hx4700/asound.state b/recipes/alsa/alsa-state/hx4700/asound.state
new file mode 100644
index 0000000000..98661f5e3a
--- /dev/null
+++ b/recipes/alsa/alsa-state/hx4700/asound.state
@@ -0,0 +1,37 @@
+state.'hx4700 Audio' {
+	control.1 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 255'
+		iface MIXER
+		name 'Master Playback Volume'
+		value.0 205
+		value.1 205
+	}
+	control.2 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Master Playback Switch'
+		value true
+	}
+	control.3 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 127'
+		iface MIXER
+		name 'Mic Capture Gain'
+		value 16
+	}
+	control.4 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Mic Boost (+20dB)'
+		value true
+	}
+}
diff --git a/recipes/alsa/alsa-state/magician/asound.state b/recipes/alsa/alsa-state/magician/asound.state
new file mode 100644
index 0000000000..edc85dd364
--- /dev/null
+++ b/recipes/alsa/alsa-state/magician/asound.state
@@ -0,0 +1,202 @@
+state.Magician {
+	control.1 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 255'
+		iface MIXER
+		name 'Playback Volume'
+		value.0 205
+		value.1 205
+	}
+	control.2 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 255'
+		iface MIXER
+		name 'Mixer Volume'
+		value.0 255
+		value.1 0
+	}
+	control.3 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Flat
+		comment.item.1 Minimum1
+		comment.item.2 Minimum2
+		comment.item.3 Maximum
+		iface MIXER
+		name 'Sound Processing Filter Mode'
+		value Flat
+	}
+	control.4 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 3'
+		iface MIXER
+		name 'Treble Volume'
+		value.0 0
+		value.1 0
+	}
+	control.5 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 15'
+		iface MIXER
+		name 'Bass Volume'
+		value.0 0
+		value.1 0
+	}
+	control.6 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 2
+		comment.item.0 None
+		comment.item.1 '32kHz'
+		comment.item.2 '44.1kHz'
+		comment.item.3 '48kHz'
+		comment.item.4 '96kHz'
+		iface MIXER
+		name 'Playback De-emphasis'
+		value.0 None
+		value.1 None
+	}
+	control.7 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 127'
+		iface MIXER
+		name 'Capture Volume'
+		value.0 0
+		value.1 0
+	}
+	control.8 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 15'
+		iface MIXER
+		name 'Line Capture Volume'
+		value.0 0
+		value.1 0
+	}
+	control.9 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 11'
+		iface MIXER
+		name 'Mic Capture Volume'
+		value 0
+	}
+	control.10 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 2
+		iface MIXER
+		name 'Playback Switch'
+		value.0 true
+		value.1 false
+	}
+	control.11 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Capture Switch'
+		value true
+	}
+	control.12 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 7'
+		iface MIXER
+		name 'AGC Timing'
+		value 0
+	}
+	control.13 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 3'
+		iface MIXER
+		name 'AGC Target level'
+		value 3
+	}
+	control.14 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'AGC Switch'
+		value false
+	}
+	control.15 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name Silence
+		value false
+	}
+	control.16 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Silence Detection'
+		value false
+	}
+	control.17 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Direct
+		comment.item.1 Mixer
+		iface MIXER
+		name 'Output Mux'
+		value Direct
+	}
+	control.18 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Line
+		comment.item.1 Mic
+		iface MIXER
+		name 'Input Mux'
+		value Line
+	}
+	control.19 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Headphone Switch'
+		value false
+	}
+	control.20 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Speaker Switch'
+		value true
+	}
+	control.21 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 'Call Mic'
+		comment.item.1 'Headset Mic'
+		iface MIXER
+		name 'Input Select'
+		value 'Call Mic'
+	}
+}
diff --git a/recipes/alsa/alsa-state/nokia800/asound.state b/recipes/alsa/alsa-state/nokia800/asound.state
new file mode 100644
index 0000000000..6ae874c2e2
--- /dev/null
+++ b/recipes/alsa/alsa-state/nokia800/asound.state
@@ -0,0 +1,105 @@
+state.EAC {
+	control.1 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 2
+		iface MIXER
+		name 'Capture Switch'
+		value.0 false
+		value.1 false
+	}
+	control.2 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '6 - 127'
+		iface MIXER
+		name 'Capture Volume'
+		value.0 87
+		value.1 87
+	}
+	control.3 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 2
+		iface MIXER
+		name 'PCM Playback Switch'
+		value.0 true
+		value.1 true
+	}
+	control.4 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 127'
+		iface MIXER
+		name 'PCM Playback Volume'
+		value.0 103
+		value.1 103
+	}
+	control.5 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 2
+		iface MIXER
+		name 'Line Playback Switch'
+		value.0 false
+		value.1 false
+	}
+	control.6 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '31 - 127'
+		iface MIXER
+		name 'Line Playback Volume'
+		value.0 103
+		value.1 103
+	}
+	control.7 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '1 - 3'
+		iface MIXER
+		name 'Mic Boost'
+		value 0
+	}
+	control.8 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 2
+		comment.item.0 Mic
+		comment.item.1 Line
+		comment.item.2 'Line swapped'
+		comment.item.3 'Line mono'
+		iface MIXER
+		name 'Capture Source'
+		value.0 Mic
+		value.1 Mic
+	}
+	control.9 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Headset Amplifier'
+		value false
+	}
+	control.10 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Speaker Amplifier'
+		value true
+	}
+	control.11 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Headset Mic Select'
+		value false
+	}
+}
diff --git a/recipes/alsa/alsa-state/spitz/asound.state b/recipes/alsa/alsa-state/spitz/asound.state
new file mode 100644
index 0000000000..d1bacfb708
--- /dev/null
+++ b/recipes/alsa/alsa-state/spitz/asound.state
@@ -0,0 +1,619 @@
+state.Spitz {
+	control.1 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 63'
+		iface MIXER
+		name 'Capture Volume'
+		value.0 48
+		value.1 48
+	}
+	control.2 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 2
+		iface MIXER
+		name 'Capture ZC Switch'
+		value.0 true
+		value.1 true
+	}
+	control.3 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 2
+		iface MIXER
+		name 'Capture Switch'
+		value.0 true
+		value.1 true
+	}
+	control.4 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 2
+		iface MIXER
+		name 'Headphone Playback ZC Switch'
+		value.0 true
+		value.1 true
+	}
+	control.5 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 2
+		iface MIXER
+		name 'Speaker Playback ZC Switch'
+		value.0 true
+		value.1 true
+	}
+	control.6 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 None
+		comment.item.1 '32Khz'
+		comment.item.2 '44.1Khz'
+		comment.item.3 '48Khz'
+		iface MIXER
+		name 'Playback De-emphasis'
+		value None
+	}
+	control.7 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Normal
+		comment.item.1 'L Invert'
+		comment.item.2 'R Invert'
+		comment.item.3 'L + R Invert'
+		iface MIXER
+		name 'Capture Polarity'
+		value Normal
+	}
+	control.8 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Playback 6dB Attenuate'
+		value false
+	}
+	control.9 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Capture 6dB Attenuate'
+		value false
+	}
+	control.10 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 255'
+		iface MIXER
+		name 'PCM Volume'
+		value.0 220
+		value.1 220
+	}
+	control.11 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 'Linear Control'
+		comment.item.1 'Adaptive Boost'
+		iface MIXER
+		name 'Bass Boost'
+		value 'Linear Control'
+	}
+	control.12 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 '130Hz @ 48kHz'
+		comment.item.1 '200Hz @ 48kHz'
+		iface MIXER
+		name 'Bass Filter'
+		value '130Hz @ 48kHz'
+	}
+	control.13 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 15'
+		iface MIXER
+		name 'Bass Volume'
+		value 0
+	}
+	control.14 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 15'
+		iface MIXER
+		name 'Treble Volume'
+		value 0
+	}
+	control.15 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 '8kHz'
+		comment.item.1 '4kHz'
+		iface MIXER
+		name 'Treble Cut-off'
+		value '8kHz'
+	}
+	control.16 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name '3D Switch'
+		value false
+	}
+	control.17 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 15'
+		iface MIXER
+		name '3D Volume'
+		value 0
+	}
+	control.18 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 '200Hz'
+		comment.item.1 '500Hz'
+		iface MIXER
+		name '3D Lower Cut-off'
+		value '200Hz'
+	}
+	control.19 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 '2.2kHz'
+		comment.item.1 '1.5kHz'
+		iface MIXER
+		name '3D Upper Cut-off'
+		value '2.2kHz'
+	}
+	control.20 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Capture
+		comment.item.1 Playback
+		iface MIXER
+		name '3D Mode'
+		value Playback
+	}
+	control.21 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 7'
+		iface MIXER
+		name 'ALC Capture Target Volume'
+		value 3
+	}
+	control.22 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 7'
+		iface MIXER
+		name 'ALC Capture Max Volume'
+		value 7
+	}
+	control.23 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Off
+		comment.item.1 Right
+		comment.item.2 Left
+		comment.item.3 Stereo
+		iface MIXER
+		name 'ALC Capture Function'
+		value Left
+	}
+	control.24 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'ALC Capture ZC Switch'
+		value true
+	}
+	control.25 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 15'
+		iface MIXER
+		name 'ALC Capture Hold Time'
+		value 9
+	}
+	control.26 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 15'
+		iface MIXER
+		name 'ALC Capture Decay Time'
+		value 9
+	}
+	control.27 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 15'
+		iface MIXER
+		name 'ALC Capture Attack Time'
+		value 3
+	}
+	control.28 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 31'
+		iface MIXER
+		name 'ALC Capture NG Threshold'
+		value 0
+	}
+	control.29 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 '2.2kHz'
+		comment.item.1 '1.5kHz'
+		iface MIXER
+		name 'ALC Capture NG Type'
+		value '2.2kHz'
+	}
+	control.30 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'ALC Capture NG Switch'
+		value false
+	}
+	control.31 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 255'
+		iface MIXER
+		name 'Left ADC Capture Volume'
+		value 195
+	}
+	control.32 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 255'
+		iface MIXER
+		name 'Right ADC Capture Volume'
+		value 195
+	}
+	control.33 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'ZC Timeout Switch'
+		value true
+	}
+	control.34 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Playback Invert Switch'
+		value false
+	}
+	control.35 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Right Speaker Playback Invert Switch'
+		value true
+	}
+	control.36 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 3'
+		iface MIXER
+		name 'Mic Boost'
+		value.0 3
+		value.1 3
+	}
+	control.37 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 7'
+		iface MIXER
+		name 'Bypass Left Playback Volume'
+		value.0 0
+		value.1 0
+	}
+	control.38 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 7'
+		iface MIXER
+		name 'Bypass Right Playback Volume'
+		value.0 0
+		value.1 0
+	}
+	control.39 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 7'
+		iface MIXER
+		name 'Bypass Mono Playback Volume'
+		value.0 0
+		value.1 0
+	}
+	control.40 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Mono Playback ZC Switch'
+		value false
+	}
+	control.41 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 127'
+		iface MIXER
+		name 'Headphone Playback Volume'
+		value.0 105
+		value.1 105
+	}
+	control.42 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 127'
+		iface MIXER
+		name 'Speaker Playback Volume'
+		value.0 127
+		value.1 127
+	}
+	control.43 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 127'
+		iface MIXER
+		name 'Mono Playback Volume'
+		value 0
+	}
+	control.44 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Stereo
+		comment.item.1 'Mono (Left)'
+		comment.item.2 'Mono (Right)'
+		comment.item.3 'Digital Mono'
+		iface MIXER
+		name 'Right ADC Mux'
+		value 'Digital Mono'
+	}
+	control.45 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Stereo
+		comment.item.1 'Mono (Left)'
+		comment.item.2 'Mono (Right)'
+		comment.item.3 'Digital Mono'
+		iface MIXER
+		name 'Left ADC Mux'
+		value 'Digital Mono'
+	}
+	control.46 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 'Line 1'
+		comment.item.1 'Line 2'
+		iface MIXER
+		name 'Differential Mux'
+		value 'Line 1'
+	}
+	control.47 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 VREF
+		comment.item.1 'ROUT1 + Vol'
+		comment.item.2 MonoOut
+		comment.item.3 ROUT1
+		iface MIXER
+		name 'Out3 Mux'
+		value VREF
+	}
+	control.48 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 'Line 1'
+		comment.item.1 'Line 2'
+		comment.item.2 'Line 3'
+		comment.item.3 PGA
+		comment.item.4 Differential
+		iface MIXER
+		name 'Right Line Mux'
+		value Differential
+	}
+	control.49 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 'Line 1'
+		comment.item.1 'Line 2'
+		comment.item.2 'Line 3'
+		comment.item.3 PGA
+		comment.item.4 Differential
+		iface MIXER
+		name 'Left Line Mux'
+		value Differential
+	}
+	control.50 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 'Line 1'
+		comment.item.1 'Line 2'
+		comment.item.2 'Line 3'
+		comment.item.3 Differential
+		iface MIXER
+		name 'Right PGA Mux'
+		value Differential
+	}
+	control.51 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 'Line 1'
+		comment.item.1 'Line 2'
+		comment.item.2 'Line 3'
+		comment.item.3 Differential
+		iface MIXER
+		name 'Left PGA Mux'
+		value Differential
+	}
+	control.52 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Mono Mixer Left Playback Switch'
+		value false
+	}
+	control.53 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Mono Mixer Left Bypass Switch'
+		value false
+	}
+	control.54 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Mono Mixer Right Playback Switc'
+		value false
+	}
+	control.55 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Mono Mixer Right Bypass Switch'
+		value false
+	}
+	control.56 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Right Mixer Left Playback Switc'
+		value false
+	}
+	control.57 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Right Mixer Left Bypass Switch'
+		value false
+	}
+	control.58 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Right Mixer Playback Switch'
+		value true
+	}
+	control.59 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Right Mixer Right Bypass Switch'
+		value false
+	}
+	control.60 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Left Mixer Playback Switch'
+		value true
+	}
+	control.61 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Left Mixer Left Bypass Switch'
+		value false
+	}
+	control.62 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Left Mixer Right Playback Switc'
+		value false
+	}
+	control.63 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Left Mixer Right Bypass Switch'
+		value false
+	}
+	control.64 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Headphone
+		comment.item.1 Mic
+		comment.item.2 Line
+		comment.item.3 Headset
+		comment.item.4 Off
+		iface MIXER
+		name 'Jack Function'
+		value Off
+	}
+	control.65 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 On
+		comment.item.1 Off
+		iface MIXER
+		name 'Speaker Function'
+		value On
+	}
+}
diff --git a/recipes/alsa/alsa-state/tosa/asound.state b/recipes/alsa/alsa-state/tosa/asound.state
new file mode 100644
index 0000000000..c38265d792
--- /dev/null
+++ b/recipes/alsa/alsa-state/tosa/asound.state
@@ -0,0 +1,769 @@
+state.Tosa {
+	control.1 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 31'
+		iface MIXER
+		name 'Speaker Playback Volume'
+		value.0 25
+		value.1 25
+	}
+	control.2 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Speaker Playback Switch'
+		value true
+	}
+	control.3 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 31'
+		iface MIXER
+		name 'Headphone Playback Volume'
+		value.0 20
+		value.1 20
+	}
+	control.4 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Headphone Playback Switch'
+		value true
+	}
+	control.5 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 31'
+		iface MIXER
+		name 'PCM Playback Volume'
+		value.0 23
+		value.1 23
+	}
+	control.6 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Speaker Playback ZC Switch'
+		value true
+	}
+	control.7 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Speaker Playback Invert Switch'
+		value true
+	}
+	control.8 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Headphone Playback ZC Switch'
+		value true
+	}
+	control.9 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Mono Playback ZC Switch'
+		value false
+	}
+	control.10 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 31'
+		iface MIXER
+		name 'Mono Playback Volume'
+		value 0
+	}
+	control.11 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 15'
+		iface MIXER
+		name 'ALC Target Volume'
+		value 11
+	}
+	control.12 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 15'
+		iface MIXER
+		name 'ALC Hold Time'
+		value 2
+	}
+	control.13 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 15'
+		iface MIXER
+		name 'ALC Decay Time'
+		value 3
+	}
+	control.14 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 15'
+		iface MIXER
+		name 'ALC Attack Time'
+		value 2
+	}
+	control.15 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 None
+		comment.item.1 Left
+		comment.item.2 Right
+		comment.item.3 Stereo
+		iface MIXER
+		name 'ALC Function'
+		value None
+	}
+	control.16 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 7'
+		iface MIXER
+		name 'ALC Max Volume'
+		value 7
+	}
+	control.17 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 3'
+		iface MIXER
+		name 'ALC ZC Timeout'
+		value 0
+	}
+	control.18 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'ALC ZC Switch'
+		value false
+	}
+	control.19 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'ALC NG Switch'
+		value false
+	}
+	control.20 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 'Constant Gain'
+		comment.item.1 Mute
+		iface MIXER
+		name 'ALC NG Type'
+		value 'Constant Gain'
+	}
+	control.21 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 31'
+		iface MIXER
+		name 'ALC NG Threshold'
+		value 31
+	}
+	control.22 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 7'
+		iface MIXER
+		name 'Mic Headphone  Volume'
+		value 7
+	}
+	control.23 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 7'
+		iface MIXER
+		name 'ALC Headphone Volume'
+		value 5
+	}
+	control.24 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Out3 Switch'
+		value false
+	}
+	control.25 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Out3 ZC Switch'
+		value true
+	}
+	control.26 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 31'
+		iface MIXER
+		name 'Out3 Volume'
+		value 0
+	}
+	control.27 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 7'
+		iface MIXER
+		name 'PCBeep Bypass Headphone Volume'
+		value 0
+	}
+	control.28 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 7'
+		iface MIXER
+		name 'PCBeep Bypass Speaker Volume'
+		value 0
+	}
+	control.29 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 7'
+		iface MIXER
+		name 'PCBeep Bypass Phone Volume'
+		value 0
+	}
+	control.30 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 7'
+		iface MIXER
+		name 'Aux Playback Headphone Volume'
+		value 5
+	}
+	control.31 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 7'
+		iface MIXER
+		name 'Aux Playback Speaker Volume'
+		value 0
+	}
+	control.32 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 7'
+		iface MIXER
+		name 'Aux Playback Phone Volume'
+		value 0
+	}
+	control.33 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 15'
+		iface MIXER
+		name 'Phone Volume'
+		value 0
+	}
+	control.34 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 31'
+		iface MIXER
+		name 'Line Capture Volume'
+		value.0 23
+		value.1 23
+	}
+	control.35 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Capture 20dB Boost Switch'
+		value true
+	}
+	control.36 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Capture to Phone 20dB Boost Switch'
+		value true
+	}
+	control.37 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name '3D Upper Cut-off Switch'
+		value false
+	}
+	control.38 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name '3D Lower Cut-off Switch'
+		value false
+	}
+	control.39 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 15'
+		iface MIXER
+		name '3D Playback Volume'
+		value 0
+	}
+	control.40 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 'Linear Control'
+		comment.item.1 'Adaptive Boost'
+		iface MIXER
+		name 'Bass Control'
+		value 'Adaptive Boost'
+	}
+	control.41 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Bass Cut-off Switch'
+		value true
+	}
+	control.42 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Tone Cut-off Switch'
+		value false
+	}
+	control.43 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Playback Attenuate (-6dB) Switch'
+		value false
+	}
+	control.44 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 15'
+		iface MIXER
+		name 'Bass Volume'
+		value 8
+	}
+	control.45 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 15'
+		iface MIXER
+		name 'Treble Volume'
+		value 5
+	}
+	control.46 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Capture ADC Switch'
+		value false
+	}
+	control.47 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 2
+		comment.item.0 '+1.5dB Steps'
+		comment.item.1 '+0.75dB Steps'
+		iface MIXER
+		name 'Capture Volume Steps'
+		value.0 '+0.75dB Steps'
+		value.1 '+0.75dB Steps'
+	}
+	control.48 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 2
+		comment.range '0 - 63'
+		iface MIXER
+		name 'Capture Volume'
+		value.0 0
+		value.1 0
+	}
+	control.49 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Capture ZC Switch'
+		value false
+	}
+	control.50 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 31'
+		iface MIXER
+		name 'Mic 1 Volume'
+		value 23
+	}
+	control.51 {
+		comment.access 'read write'
+		comment.type INTEGER
+		comment.count 1
+		comment.range '0 - 31'
+		iface MIXER
+		name 'Mic 2 Volume'
+		value 23
+	}
+	control.52 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Mic 20dB Boost Switch'
+		value false
+	}
+	control.53 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Speaker Mixer PCBeep Bypass Swi'
+		value false
+	}
+	control.54 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Speaker Mixer Aux Playback Swit'
+		value false
+	}
+	control.55 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Speaker Mixer Phone Bypass Swit'
+		value false
+	}
+	control.56 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Speaker Mixer Line Bypass Switc'
+		value false
+	}
+	control.57 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Speaker Mixer PCM Playback Swit'
+		value true
+	}
+	control.58 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Phone Mixer PCBeep Bypass Switc'
+		value false
+	}
+	control.59 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Phone Mixer Aux Playback Switch'
+		value false
+	}
+	control.60 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Phone Mixer Line Bypass Switch'
+		value false
+	}
+	control.61 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Phone Mixer PCM Playback Switch'
+		value false
+	}
+	control.62 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Phone Mixer Mic 1 Sidetone Swit'
+		value false
+	}
+	control.63 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Phone Mixer Mic 2 Sidetone Swit'
+		value false
+	}
+	control.64 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Right HP Mixer PCBeep Bypass Sw'
+		value false
+	}
+	control.65 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Right HP Mixer Aux Playback Swi'
+		value false
+	}
+	control.66 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Right HP Mixer Phone Bypass Swi'
+		value false
+	}
+	control.67 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Right HP Mixer Line Bypass Swit'
+		value false
+	}
+	control.68 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Right HP Mixer PCM Playback Swi'
+		value true
+	}
+	control.69 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Right HP Mixer Mic Sidetone Swi'
+		value false
+	}
+	control.70 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Left HP Mixer PCBeep Bypass Swi'
+		value false
+	}
+	control.71 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Left HP Mixer Aux Playback Swit'
+		value false
+	}
+	control.72 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Left HP Mixer Phone Bypass Swit'
+		value false
+	}
+	control.73 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Left HP Mixer Line Bypass Switc'
+		value false
+	}
+	control.74 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Left HP Mixer PCM Playback Swit'
+		value true
+	}
+	control.75 {
+		comment.access 'read write'
+		comment.type BOOLEAN
+		comment.count 1
+		iface MIXER
+		name 'Left HP Mixer Mic Sidetone Swit'
+		value false
+	}
+	control.76 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Mic
+		comment.item.1 Line
+		iface MIXER
+		name 'Differential Source'
+		value Mic
+	}
+	control.77 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 'Mic 1'
+		comment.item.1 Differential
+		comment.item.2 'Mic 2'
+		comment.item.3 Stereo
+		iface MIXER
+		name 'Mic Select Source'
+		value Differential
+	}
+	control.78 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Mic
+		comment.item.1 NC
+		comment.item.2 NC
+		comment.item.3 'Speaker Mixer'
+		comment.item.4 Line
+		comment.item.5 'Headphone Mixer'
+		comment.item.6 'Phone Mixer'
+		comment.item.7 Phone
+		iface MIXER
+		name 'Right Capture Select'
+		value Mic
+	}
+	control.79 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Mic
+		comment.item.1 NC
+		comment.item.2 NC
+		comment.item.3 'Speaker Mixer'
+		comment.item.4 Line
+		comment.item.5 'Headphone Mixer'
+		comment.item.6 'Phone Mixer'
+		comment.item.7 Phone
+		iface MIXER
+		name 'Left Capture Select'
+		value Mic
+	}
+	control.80 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Stereo
+		comment.item.1 Left
+		comment.item.2 Right
+		comment.item.3 Mute
+		iface MIXER
+		name 'Capture Phone Mux'
+		value Mute
+	}
+	control.81 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 'Speaker Mix'
+		comment.item.1 'Headphone Mix'
+		iface MIXER
+		name 'Speaker Mux'
+		value 'Speaker Mix'
+	}
+	control.82 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Left
+		comment.item.1 VREF
+		comment.item.2 'Left + Right'
+		comment.item.3 Mono
+		iface MIXER
+		name 'Out3 Mux'
+		value Left
+	}
+	control.83 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Stereo
+		comment.item.1 Left
+		comment.item.2 Right
+		comment.item.3 None
+		iface MIXER
+		name 'ALC Sidetone Mux'
+		value Stereo
+	}
+	control.84 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 Headphone
+		comment.item.1 Mic
+		comment.item.2 Line
+		comment.item.3 Headset
+		comment.item.4 Off
+		iface MIXER
+		name 'Jack Function'
+		value Off
+	}
+	control.85 {
+		comment.access 'read write'
+		comment.type ENUMERATED
+		comment.count 1
+		comment.item.0 On
+		comment.item.1 Off
+		iface MIXER
+		name 'Speaker Function'
+		value On
+	}
+}
diff --git a/recipes/alsa/alsa-utils_1.0.11.bb b/recipes/alsa/alsa-utils_1.0.11.bb
new file mode 100644
index 0000000000..d2acfe1995
--- /dev/null
+++ b/recipes/alsa/alsa-utils_1.0.11.bb
@@ -0,0 +1,55 @@
+DESCRIPTION = "ALSA Utilities"
+HOMEPAGE = "http://www.alsa-project.org"
+SECTION = "console/utils"
+LICENSE = "GPL"
+DEPENDS = "alsa-lib ncurses"
+PR = "r1"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/utils/alsa-utils-${PV}.tar.bz2"
+
+inherit autotools
+
+# This are all packages that we need to make. Also, the now empty alsa-utils
+# ipk depend on them.
+
+PACKAGES += "alsa-utils-alsamixer"
+PACKAGES += "alsa-utils-midi"
+PACKAGES += "alsa-utils-aplay"
+PACKAGES += "alsa-utils-amixer"
+PACKAGES += "alsa-utils-aconnect"
+PACKAGES += "alsa-utils-iecset"
+PACKAGES += "alsa-utils-speakertest"
+PACKAGES += "alsa-utils-aseqnet"
+PACKAGES += "alsa-utils-alsactl"
+
+# We omit alsaconf, because
+# a) this is a bash script
+# b) it creates config files not suitable for OE-based distros
+
+FILES_${PN} = ""
+FILES_alsa-utils-aplay       = "${bindir}/aplay ${bindir}/arecord"
+FILES_alsa-utils-amixer      = "${bindir}/amixer"
+FILES_alsa-utils-alsamixer   = "${bindir}/alsamixer"
+FILES_alsa-utils-speakertest = "${bindir}/speaker-test"
+FILES_alsa-utils-midi        = "${bindir}/aplaymidi ${bindir}/arecordmidi ${bindir}/amidi"
+FILES_alsa-utils-aconnect    = "${bindir}/aconnect"
+FILES_alsa-utils-aseqnet     = "${bindir}/aseqnet"
+FILES_alsa-utils-iecset      = "${bindir}/iecset"
+FILES_alsa-utils-alsactl     = "${sbindir}/alsactl"
+
+DESCRIPTION_alsa-utils-aplay        = "play (and record) sound files via ALSA"
+DESCRIPTION_alsa-utils-amixer       = "command-line based control for ALSA mixer and settings"
+DESCRIPTION_alsa-utils-alsamixer    = "ncurses based control for ALSA mixer and settings"
+DESCRIPTION_alsa-utils-speaker-test = "speaker test tone generator for ALSA"
+DESCRIPTION_alsa-utils-midi         = "miscalleanous MIDI utilities for ALSA"
+DESCRIPTION_alsa-utils-aconnect     = "ALSA sequencer connection manager"
+DESCRIPTION_alsa-utils-aseqnet      = "network client/server on ALSA sequencer"
+DESCRIPTION_alsa-utils-alsactl      = "saves/restores ALSA-settings in /etc/asound.state"
+DESCRIPTION_alsa-utils-alsaconf     = "a bash script that creates ALSA configuration files"
+
+RDEPENDS_alsa-utils-aplay  += "alsa-conf"
+RDEPENDS_alsa-utils-amixer += "alsa-conf"
+RDEPENDS_alsa-utils-alsamixer += "alsa-conf"
+RDEPENDS_alsa-utils-speaker-test += "alsa-conf"
+
+ALLOW_EMPTY_alsa-utils = "1"
diff --git a/recipes/alsa/alsa-utils_1.0.13.bb b/recipes/alsa/alsa-utils_1.0.13.bb
new file mode 100644
index 0000000000..1e6af1ec09
--- /dev/null
+++ b/recipes/alsa/alsa-utils_1.0.13.bb
@@ -0,0 +1,63 @@
+DESCRIPTION = "ALSA Utilities"
+HOMEPAGE = "http://www.alsa-project.org"
+SECTION = "console/utils"
+LICENSE = "GPL"
+DEPENDS = "alsa-lib ncurses"
+PR = "r1"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/utils/alsa-utils-${PV}.tar.bz2"
+
+# lazy hack. needs proper fixing in gettext.m4, see
+# http://bugs.openembedded.net/show_bug.cgi?id=2348
+# please close bug and remove this comment when properly fixed
+#
+EXTRA_OECONF_linux-uclibc = "--disable-nls"
+EXTRA_OECONF_linux-uclibcgnueabi = "--disable-nls"
+
+inherit autotools
+
+# This are all packages that we need to make. Also, the now empty alsa-utils
+# ipk depend on them.
+
+PACKAGES += "\
+             alsa-utils-alsamixer \
+             alsa-utils-midi \
+             alsa-utils-aplay \
+             alsa-utils-amixer \
+             alsa-utils-aconnect \
+             alsa-utils-iecset \
+             alsa-utils-speakertest \
+             alsa-utils-aseqnet \
+             alsa-utils-alsactl "
+
+# We omit alsaconf, because
+# a) this is a bash script
+# b) it creates config files not suitable for OE-based distros
+
+FILES_${PN} = ""
+FILES_alsa-utils-aplay       = "${bindir}/aplay ${bindir}/arecord"
+FILES_alsa-utils-amixer      = "${bindir}/amixer"
+FILES_alsa-utils-alsamixer   = "${bindir}/alsamixer"
+FILES_alsa-utils-speakertest = "${bindir}/speaker-test"
+FILES_alsa-utils-midi        = "${bindir}/aplaymidi ${bindir}/arecordmidi ${bindir}/amidi"
+FILES_alsa-utils-aconnect    = "${bindir}/aconnect"
+FILES_alsa-utils-aseqnet     = "${bindir}/aseqnet"
+FILES_alsa-utils-iecset      = "${bindir}/iecset"
+FILES_alsa-utils-alsactl     = "${sbindir}/alsactl"
+
+DESCRIPTION_alsa-utils-aplay        = "play (and record) sound files via ALSA"
+DESCRIPTION_alsa-utils-amixer       = "command-line based control for ALSA mixer and settings"
+DESCRIPTION_alsa-utils-alsamixer    = "ncurses based control for ALSA mixer and settings"
+DESCRIPTION_alsa-utils-speakertest  = "speaker test tone generator for ALSA"
+DESCRIPTION_alsa-utils-midi         = "miscalleanous MIDI utilities for ALSA"
+DESCRIPTION_alsa-utils-aconnect     = "ALSA sequencer connection manager"
+DESCRIPTION_alsa-utils-aseqnet      = "network client/server on ALSA sequencer"
+DESCRIPTION_alsa-utils-alsactl      = "saves/restores ALSA-settings in /etc/asound.state"
+DESCRIPTION_alsa-utils-alsaconf     = "a bash script that creates ALSA configuration files"
+
+RDEPENDS_alsa-utils-aplay  += "alsa-conf"
+RDEPENDS_alsa-utils-amixer += "alsa-conf"
+RDEPENDS_alsa-utils-alsamixer += "alsa-conf"
+RDEPENDS_alsa-utils-speakertest += "alsa-conf"
+
+ALLOW_EMPTY_alsa-utils = "1"
diff --git a/recipes/alsa/alsa-utils_1.0.14.bb b/recipes/alsa/alsa-utils_1.0.14.bb
new file mode 100644
index 0000000000..25eeade7cd
--- /dev/null
+++ b/recipes/alsa/alsa-utils_1.0.14.bb
@@ -0,0 +1,56 @@
+DESCRIPTION = "ALSA Utilities"
+HOMEPAGE = "http://www.alsa-project.org"
+SECTION = "console/utils"
+LICENSE = "GPL"
+DEPENDS = "alsa-lib ncurses"
+PR = "r1"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/utils/alsa-utils-${PV}.tar.bz2 \
+	   file://alsa-utils-automake.patch;patch=1 \
+	  "
+inherit autotools
+
+# This are all packages that we need to make. Also, the now empty alsa-utils
+# ipk depend on them.
+
+PACKAGES += "\
+             alsa-utils-alsamixer \
+             alsa-utils-midi \
+             alsa-utils-aplay \
+             alsa-utils-amixer \
+             alsa-utils-aconnect \
+             alsa-utils-iecset \
+             alsa-utils-speakertest \
+             alsa-utils-aseqnet \
+             alsa-utils-aseqdump \
+             alsa-utils-alsaconf \
+             alsa-utils-alsactl "
+
+# We omit alsaconf, because
+# a) this is a bash script
+# b) it creates config files not suitable for OE-based distros
+
+FILES_${PN} = ""
+FILES_alsa-utils-aplay       = "${bindir}/aplay ${bindir}/arecord"
+FILES_alsa-utils-amixer      = "${bindir}/amixer"
+FILES_alsa-utils-alsamixer   = "${bindir}/alsamixer"
+FILES_alsa-utils-speakertest = "${bindir}/speaker-test ${datadir}/sounds/alsa/ ${datadir}/alsa/"
+FILES_alsa-utils-midi        = "${bindir}/aplaymidi ${bindir}/arecordmidi ${bindir}/amidi"
+FILES_alsa-utils-aconnect    = "${bindir}/aconnect"
+FILES_alsa-utils-aseqnet     = "${bindir}/aseqnet"
+FILES_alsa-utils-iecset      = "${bindir}/iecset"
+FILES_alsa-utils-alsactl     = "${sbindir}/alsactl"
+FILES_alsa-utils-aseqdump    = "${bindir}/aseqdump"
+FILES_alsa-utils-alsaconf    = "${sbindir}/alsaconf"
+
+DESCRIPTION_alsa-utils-aplay        = "play (and record) sound files via ALSA"
+DESCRIPTION_alsa-utils-amixer       = "command-line based control for ALSA mixer and settings"
+DESCRIPTION_alsa-utils-alsamixer    = "ncurses based control for ALSA mixer and settings"
+DESCRIPTION_alsa-utils-speakertest  = "ALSA surround speaker test utility"
+DESCRIPTION_alsa-utils-midi         = "miscalleanous MIDI utilities for ALSA"
+DESCRIPTION_alsa-utils-aconnect     = "ALSA sequencer connection manager"
+DESCRIPTION_alsa-utils-aseqnet      = "network client/server on ALSA sequencer"
+DESCRIPTION_alsa-utils-alsactl      = "saves/restores ALSA-settings in /etc/asound.state"
+DESCRIPTION_alsa-utils-alsaconf     = "a bash script that creates ALSA configuration files"
+
+ALLOW_EMPTY_alsa-utils = "1"
diff --git a/recipes/alsa/alsa-utils_1.0.15.bb b/recipes/alsa/alsa-utils_1.0.15.bb
new file mode 100644
index 0000000000..b271e75439
--- /dev/null
+++ b/recipes/alsa/alsa-utils_1.0.15.bb
@@ -0,0 +1,57 @@
+DESCRIPTION = "ALSA Utilities"
+HOMEPAGE = "http://www.alsa-project.org"
+SECTION = "console/utils"
+LICENSE = "GPL"
+DEPENDS = "alsa-lib ncurses"
+PR = "r1"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/utils/alsa-utils-${PV}.tar.bz2 \
+           file://alsa-utils-automake.patch;patch=1 \
+	  "
+
+inherit autotools
+
+# This are all packages that we need to make. Also, the now empty alsa-utils
+# ipk depend on them.
+
+PACKAGES += "\
+             alsa-utils-alsamixer \
+             alsa-utils-midi \
+             alsa-utils-aplay \
+             alsa-utils-amixer \
+             alsa-utils-aconnect \
+             alsa-utils-iecset \
+             alsa-utils-speakertest \
+             alsa-utils-aseqnet \
+             alsa-utils-aseqdump \
+             alsa-utils-alsaconf \
+             alsa-utils-alsactl "
+
+# We omit alsaconf, because
+# a) this is a bash script
+# b) it creates config files not suitable for OE-based distros
+
+FILES_${PN} = ""
+FILES_alsa-utils-aplay       = "${bindir}/aplay ${bindir}/arecord"
+FILES_alsa-utils-amixer      = "${bindir}/amixer"
+FILES_alsa-utils-alsamixer   = "${bindir}/alsamixer"
+FILES_alsa-utils-speakertest = "${bindir}/speaker-test ${datadir}/sounds/alsa/ ${datadir}/alsa/"
+FILES_alsa-utils-midi        = "${bindir}/aplaymidi ${bindir}/arecordmidi ${bindir}/amidi"
+FILES_alsa-utils-aconnect    = "${bindir}/aconnect"
+FILES_alsa-utils-aseqnet     = "${bindir}/aseqnet"
+FILES_alsa-utils-iecset      = "${bindir}/iecset"
+FILES_alsa-utils-alsactl     = "${sbindir}/alsactl"
+FILES_alsa-utils-aseqdump    = "${bindir}/aseqdump"
+FILES_alsa-utils-alsaconf    = "${sbindir}/alsaconf"
+
+DESCRIPTION_alsa-utils-aplay        = "play (and record) sound files via ALSA"
+DESCRIPTION_alsa-utils-amixer       = "command-line based control for ALSA mixer and settings"
+DESCRIPTION_alsa-utils-alsamixer    = "ncurses based control for ALSA mixer and settings"
+DESCRIPTION_alsa-utils-speakertest  = "ALSA surround speaker test utility"
+DESCRIPTION_alsa-utils-midi         = "miscalleanous MIDI utilities for ALSA"
+DESCRIPTION_alsa-utils-aconnect     = "ALSA sequencer connection manager"
+DESCRIPTION_alsa-utils-aseqnet      = "network client/server on ALSA sequencer"
+DESCRIPTION_alsa-utils-alsactl      = "saves/restores ALSA-settings in /etc/asound.state"
+DESCRIPTION_alsa-utils-alsaconf     = "a bash script that creates ALSA configuration files"
+
+ALLOW_EMPTY_alsa-utils = "1"
diff --git a/recipes/alsa/alsa-utils_1.0.17.bb b/recipes/alsa/alsa-utils_1.0.17.bb
new file mode 100644
index 0000000000..d5f116bafc
--- /dev/null
+++ b/recipes/alsa/alsa-utils_1.0.17.bb
@@ -0,0 +1,63 @@
+DESCRIPTION = "ALSA Utilities"
+HOMEPAGE = "http://www.alsa-project.org"
+SECTION = "console/utils"
+LICENSE = "GPL"
+DEPENDS = "alsa-lib ncurses"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/utils/alsa-utils-${PV}.tar.bz2 \
+           file://alsa-utils-automake.patch;patch=1 \
+	  "
+
+inherit autotools
+
+# This are all packages that we need to make. Also, the now empty alsa-utils
+# ipk depend on them.
+
+
+do_configure_append() {
+	for i in $(find ${S} -name Makefile) ; do
+		sed -i -e s:/usr/include/ncurses:${STAGING_INCDIR}/ncurses:g $i
+	done
+}
+
+PACKAGES += "\
+             alsa-utils-alsamixer \
+             alsa-utils-midi \
+             alsa-utils-aplay \
+             alsa-utils-amixer \
+             alsa-utils-aconnect \
+             alsa-utils-iecset \
+             alsa-utils-speakertest \
+             alsa-utils-aseqnet \
+             alsa-utils-aseqdump \
+             alsa-utils-alsaconf \
+             alsa-utils-alsactl "
+
+# We omit alsaconf, because
+# a) this is a bash script
+# b) it creates config files not suitable for OE-based distros
+
+FILES_${PN} = ""
+FILES_alsa-utils-aplay       = "${bindir}/aplay ${bindir}/arecord"
+FILES_alsa-utils-amixer      = "${bindir}/amixer"
+FILES_alsa-utils-alsamixer   = "${bindir}/alsamixer"
+FILES_alsa-utils-speakertest = "${bindir}/speaker-test ${datadir}/sounds/alsa/ ${datadir}/alsa/"
+FILES_alsa-utils-midi        = "${bindir}/aplaymidi ${bindir}/arecordmidi ${bindir}/amidi"
+FILES_alsa-utils-aconnect    = "${bindir}/aconnect"
+FILES_alsa-utils-aseqnet     = "${bindir}/aseqnet"
+FILES_alsa-utils-iecset      = "${bindir}/iecset"
+FILES_alsa-utils-alsactl     = "${sbindir}/alsactl"
+FILES_alsa-utils-aseqdump    = "${bindir}/aseqdump"
+FILES_alsa-utils-alsaconf    = "${sbindir}/alsaconf"
+
+DESCRIPTION_alsa-utils-aplay        = "play (and record) sound files via ALSA"
+DESCRIPTION_alsa-utils-amixer       = "command-line based control for ALSA mixer and settings"
+DESCRIPTION_alsa-utils-alsamixer    = "ncurses based control for ALSA mixer and settings"
+DESCRIPTION_alsa-utils-speakertest  = "ALSA surround speaker test utility"
+DESCRIPTION_alsa-utils-midi         = "miscalleanous MIDI utilities for ALSA"
+DESCRIPTION_alsa-utils-aconnect     = "ALSA sequencer connection manager"
+DESCRIPTION_alsa-utils-aseqnet      = "network client/server on ALSA sequencer"
+DESCRIPTION_alsa-utils-alsactl      = "saves/restores ALSA-settings in /etc/asound.state"
+DESCRIPTION_alsa-utils-alsaconf     = "a bash script that creates ALSA configuration files"
+
+ALLOW_EMPTY_alsa-utils = "1"
diff --git a/recipes/alsa/alsa-utils_1.0.18.bb b/recipes/alsa/alsa-utils_1.0.18.bb
new file mode 100644
index 0000000000..2931545252
--- /dev/null
+++ b/recipes/alsa/alsa-utils_1.0.18.bb
@@ -0,0 +1,66 @@
+DESCRIPTION = "ALSA Utilities"
+HOMEPAGE = "http://www.alsa-project.org"
+SECTION = "console/utils"
+LICENSE = "GPL"
+DEPENDS = "alsa-lib ncurses"
+PR = "r1"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/utils/alsa-utils-${PV}.tar.bz2 \
+           file://alsa-utils-automake.patch;patch=1 \
+	   file://alsa-utils-remove-xmlto.patch;patch=1 \
+	   file://alsa-utils-autoconf-strl-funcs.patch;patch=1 \
+	  "
+
+inherit autotools
+
+# This are all packages that we need to make. Also, the now empty alsa-utils
+# ipk depend on them.
+
+
+do_configure_append() {
+	for i in $(find ${S} -name Makefile) ; do
+		sed -i -e s:/usr/include/ncurses:${STAGING_INCDIR}/ncurses:g $i
+	done
+}
+
+PACKAGES += "\
+             alsa-utils-alsamixer \
+             alsa-utils-midi \
+             alsa-utils-aplay \
+             alsa-utils-amixer \
+             alsa-utils-aconnect \
+             alsa-utils-iecset \
+             alsa-utils-speakertest \
+             alsa-utils-aseqnet \
+             alsa-utils-aseqdump \
+             alsa-utils-alsaconf \
+             alsa-utils-alsactl "
+
+# We omit alsaconf, because
+# a) this is a bash script
+# b) it creates config files not suitable for OE-based distros
+
+FILES_${PN} = ""
+FILES_alsa-utils-aplay       = "${bindir}/aplay ${bindir}/arecord"
+FILES_alsa-utils-amixer      = "${bindir}/amixer"
+FILES_alsa-utils-alsamixer   = "${bindir}/alsamixer"
+FILES_alsa-utils-speakertest = "${bindir}/speaker-test ${datadir}/sounds/alsa/ ${datadir}/alsa/"
+FILES_alsa-utils-midi        = "${bindir}/aplaymidi ${bindir}/arecordmidi ${bindir}/amidi"
+FILES_alsa-utils-aconnect    = "${bindir}/aconnect"
+FILES_alsa-utils-aseqnet     = "${bindir}/aseqnet"
+FILES_alsa-utils-iecset      = "${bindir}/iecset"
+FILES_alsa-utils-alsactl     = "${sbindir}/alsactl"
+FILES_alsa-utils-aseqdump    = "${bindir}/aseqdump"
+FILES_alsa-utils-alsaconf    = "${sbindir}/alsaconf"
+
+DESCRIPTION_alsa-utils-aplay        = "play (and record) sound files via ALSA"
+DESCRIPTION_alsa-utils-amixer       = "command-line based control for ALSA mixer and settings"
+DESCRIPTION_alsa-utils-alsamixer    = "ncurses based control for ALSA mixer and settings"
+DESCRIPTION_alsa-utils-speakertest  = "ALSA surround speaker test utility"
+DESCRIPTION_alsa-utils-midi         = "miscalleanous MIDI utilities for ALSA"
+DESCRIPTION_alsa-utils-aconnect     = "ALSA sequencer connection manager"
+DESCRIPTION_alsa-utils-aseqnet      = "network client/server on ALSA sequencer"
+DESCRIPTION_alsa-utils-alsactl      = "saves/restores ALSA-settings in /etc/asound.state"
+DESCRIPTION_alsa-utils-alsaconf     = "a bash script that creates ALSA configuration files"
+
+ALLOW_EMPTY_alsa-utils = "1"
diff --git a/recipes/alsa/alsa-versym.inc b/recipes/alsa/alsa-versym.inc
new file mode 100644
index 0000000000..07ca89cafb
--- /dev/null
+++ b/recipes/alsa/alsa-versym.inc
@@ -0,0 +1,6 @@
+
+def get_alsa_versym_setting(bb, d):
+    # Versioned symbols don't work propery with uClibc
+    if bb.data.getVar('TARGET_OS', d, 1).find('uclibc') >= 0:
+        return "--with-versioned=no"
+    return ""
diff --git a/recipes/alsa/files/alsa-utils-autoconf-strl-funcs.patch b/recipes/alsa/files/alsa-utils-autoconf-strl-funcs.patch
new file mode 100644
index 0000000000..d736abbdab
--- /dev/null
+++ b/recipes/alsa/files/alsa-utils-autoconf-strl-funcs.patch
@@ -0,0 +1,43 @@
+Index: alsa-utils-1.0.18/alsactl/init_sysdeps.c
+===================================================================
+--- alsa-utils-1.0.18.orig/alsactl/init_sysdeps.c	2008-10-29 05:42:11.000000000 -0700
++++ alsa-utils-1.0.18/alsactl/init_sysdeps.c	2009-02-10 23:17:47.000000000 -0800
+@@ -17,7 +17,7 @@
+  *
+  */
+ 
+-#ifdef __GLIBC__
++#if !HAVE_STRLCPY
+ static size_t strlcpy(char *dst, const char *src, size_t size)
+ {
+ 	size_t bytes = 0;
+@@ -36,7 +36,10 @@
+ 		*q = '\0';
+ 	return bytes;
+ }
++#endif /* !HAVE_STRLCPY */
+ 
++
++#if !HAVE_STRLCAT
+ static size_t strlcat(char *dst, const char *src, size_t size)
+ {
+ 	size_t bytes = 0;
+@@ -60,4 +63,4 @@
+ 	*q = '\0';
+ 	return bytes;
+ }
+-#endif /* __GLIBC__ */
++#endif /* !HAVE_STRLCAT */
+Index: alsa-utils-1.0.18/configure.in
+===================================================================
+--- alsa-utils-1.0.18.orig/configure.in	2008-10-29 05:48:01.000000000 -0700
++++ alsa-utils-1.0.18/configure.in	2009-02-10 23:02:07.000000000 -0800
+@@ -6,7 +6,7 @@
+ 
+ AM_GNU_GETTEXT([external])
+ AM_GNU_GETTEXT_VERSION([0.15])
+-
++AC_CHECK_FUNCS([strlcat strlcpy])
+ dnl Checks for programs.
+ 
+ dnl try to gues cross-compiler if not set
diff --git a/recipes/alsa/files/alsa-utils-automake.patch b/recipes/alsa/files/alsa-utils-automake.patch
new file mode 100644
index 0000000000..de0eee94fd
--- /dev/null
+++ b/recipes/alsa/files/alsa-utils-automake.patch
@@ -0,0 +1,10 @@
+Index: alsa-utils-1.0.14/seq/aseqnet/Makefile.am
+===================================================================
+--- alsa-utils-1.0.14.orig/seq/aseqnet/Makefile.am	2007-05-31 10:07:21.000000000 +0200
++++ alsa-utils-1.0.14/seq/aseqnet/Makefile.am	2007-10-31 21:11:41.000000000 +0100
+@@ -3,4 +3,5 @@
+ 
+ bin_PROGRAMS = aseqnet
+ aseqnet_SOURCES = aseqnet.c
++aseqnet_LDADD = $(INTLLIBS)
+ man_MANS = aseqnet.1
diff --git a/recipes/alsa/files/alsa-utils-remove-xmlto.patch b/recipes/alsa/files/alsa-utils-remove-xmlto.patch
new file mode 100644
index 0000000000..a02bdba5aa
--- /dev/null
+++ b/recipes/alsa/files/alsa-utils-remove-xmlto.patch
@@ -0,0 +1,15 @@
+--- alsa-utils-1.0.18.orig/alsactl/Makefile.am	2008-10-29 12:42:11.000000000 +0000
++++ alsa-utils-1.0.18/alsactl/Makefile.am	2009-01-21 23:43:19.000000000 +0000
+@@ -1,11 +1,8 @@
+ SUBDIRS = init
+ 
+ sbin_PROGRAMS=alsactl
+-man_MANS=alsactl.1 alsactl_init.7
++man_MANS=alsactl.1
+ EXTRA_DIST=alsactl.1 alsactl_init.xml
+ 
+ alsactl_SOURCES=alsactl.c state.c utils.c init_parse.c
+ noinst_HEADERS=alsactl.h list.h init_sysdeps.c init_utils_string.c init_utils_run.c init_sysfs.c
+-
+-%.7: %.xml
+-	xmlto man $?
diff --git a/recipes/alsa/files/alsa-utils-sys-siglist.patch b/recipes/alsa/files/alsa-utils-sys-siglist.patch
new file mode 100644
index 0000000000..8c499e8d63
--- /dev/null
+++ b/recipes/alsa/files/alsa-utils-sys-siglist.patch
@@ -0,0 +1,15 @@
+sys_siglist is not supported by default on uclibc and is, in general,
+a bad thing for the same reasons as sys_errlist is a bad thing.  GNU
+supports strsignal in the manner of strerror
+
+--- alsa-utils-1.0.8/alsamixer/alsamixer.c.orig	2005-09-06 12:44:41.415219126 -0700
++++ alsa-utils-1.0.8/alsamixer/alsamixer.c	2005-09-06 12:44:43.407344482 -0700
+@@ -2188,7 +2188,7 @@
+ mixer_signal_handler (int signal)
+ {
+   if (signal != SIGSEGV)
+-    mixer_abort (ERR_SIGNAL, sys_siglist[signal], 0);
++    mixer_abort (ERR_SIGNAL, strsignal(signal), 0);
+   else
+     {
+       fprintf (stderr, "\nSegmentation fault.\n");
diff --git a/recipes/alsa/files/libio.patch b/recipes/alsa/files/libio.patch
new file mode 100644
index 0000000000..a053e4c604
--- /dev/null
+++ b/recipes/alsa/files/libio.patch
@@ -0,0 +1,43 @@
+Index: alsa-oss-1.0.15/alsa/stdioemu.c
+===================================================================
+--- alsa-oss-1.0.15.orig/alsa/stdioemu.c	2007-10-15 10:50:40.000000000 +0200
++++ alsa-oss-1.0.15/alsa/stdioemu.c	2008-07-21 22:17:06.303161438 +0200
+@@ -37,7 +37,9 @@
+ #endif
+ 
+ #include <stdio.h>
++#ifdef HAVE_LIBIO_H
+ #include <libio.h>
++#endif
+ 
+ struct fd_cookie {
+ 	int fd;
+@@ -99,7 +101,11 @@
+ 
+ 	if (open_mode && fdc->fd > 0) {
+ 		result = fopencookie (fdc,"w", fns);
++#ifdef HAVE_FILENO
+ 		result->_fileno = fdc->fd;		/* ugly patchy slimy kludgy hack */
++#else
++		result->__filedes = fdc->fd;
++#endif
+ 	}
+ 	return result;
+ }
+Index: alsa-oss-1.0.15/configure.in
+===================================================================
+--- alsa-oss-1.0.15.orig/configure.in	2007-10-15 10:50:40.000000000 +0200
++++ alsa-oss-1.0.15/configure.in	2008-07-21 22:16:11.719837298 +0200
+@@ -33,6 +33,12 @@
+   LIBS="$OLD_LIBS"
+ fi
+ 
++AC_CHECK_HEADERS_ONCE([libio.h])
++
++AC_CHECK_MEMBER([struct _IO_FILE._fileno],
++		[AC_DEFINE([HAVE_FILENO], [1],[Define if _fileno exists.])],
++		[],[])
++
+ AC_OUTPUT(Makefile alsa/Makefile alsa/aoss alsa/aoss.old \
+ 	  oss-redir/Makefile test/Makefile \
+           alsa/testaoss test/testaoss)
-- 
cgit v1.2.3