[alsa-devel] [PATCH] hda-emu: Make it work with sound-unstable.git

David Henningsson david.henningsson at canonical.com
Tue Jan 15 15:18:41 CET 2013


To be able to build the new code (so we can run aggregate tests on it)
the following patch needs to be applied.

Signed-off-by: David Henningsson <david.henningsson at canonical.com>
---
 configure.ac          |    8 +++++++
 hda-ctlsh.c           |    5 ++++
 include/linux/ctype.h |   64 +++++++++++++++++++++++++++++++++++++++++++++++++
 snd-wrapper.c         |   32 +++++++++++++++++++++++++
 4 files changed, 109 insertions(+)
 create mode 100644 include/linux/ctype.h

diff --git a/configure.ac b/configure.ac
index 3103eb5..80b68a6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -182,6 +182,14 @@ if test "$OLD_HDA_CMD" = "1"; then
   AC_DEFINE(OLD_HDA_CMD)
 fi
 
+AC_MSG_CHECKING(for user_mutex)
+if grep -q 'struct mutex user_mutex' hda/hda_codec.h; then
+  AC_DEFINE(HAVE_USER_MUTEX)
+  AC_MSG_RESULT(yes)
+else
+  AC_MSG_RESULT(no)
+fi
+
 AC_MSG_CHECKING(for new pm_notify callback)
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -Iinclude"
diff --git a/hda-ctlsh.c b/hda-ctlsh.c
index 5ad95fc..04fc318 100644
--- a/hda-ctlsh.c
+++ b/hda-ctlsh.c
@@ -537,6 +537,11 @@ int snd_hda_get_bool_hint(struct hda_codec *codec, const char *key)
 	return -ENOENT;
 }
 
+int snd_hda_get_int_hint(struct hda_codec *codec, const char *key, int *valp)
+{
+	return -ENOENT;
+}
+
 #ifdef HAVE_USER_PINCFGS
 static void get_drv_pincfgs(void)
 {
diff --git a/include/linux/ctype.h b/include/linux/ctype.h
new file mode 100644
index 0000000..8acfe31
--- /dev/null
+++ b/include/linux/ctype.h
@@ -0,0 +1,64 @@
+#ifndef _LINUX_CTYPE_H
+#define _LINUX_CTYPE_H
+
+/*
+ * NOTE! This ctype does not handle EOF like the standard C
+ * library is required to.
+ */
+
+#define _U	0x01	/* upper */
+#define _L	0x02	/* lower */
+#define _D	0x04	/* digit */
+#define _C	0x08	/* cntrl */
+#define _P	0x10	/* punct */
+#define _S	0x20	/* white space (space/lf/tab) */
+#define _X	0x40	/* hex digit */
+#define _SP	0x80	/* hard space (0x20) */
+
+extern const unsigned char _ctype[];
+
+#define __ismask(x) (_ctype[(int)(unsigned char)(x)])
+
+#define isalnum(c)	((__ismask(c)&(_U|_L|_D)) != 0)
+#define isalpha(c)	((__ismask(c)&(_U|_L)) != 0)
+#define iscntrl(c)	((__ismask(c)&(_C)) != 0)
+#define isdigit(c)	((__ismask(c)&(_D)) != 0)
+#define isgraph(c)	((__ismask(c)&(_P|_U|_L|_D)) != 0)
+#define islower(c)	((__ismask(c)&(_L)) != 0)
+#define isprint(c)	((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0)
+#define ispunct(c)	((__ismask(c)&(_P)) != 0)
+/* Note: isspace() must return false for %NUL-terminator */
+#define isspace(c)	((__ismask(c)&(_S)) != 0)
+#define isupper(c)	((__ismask(c)&(_U)) != 0)
+#define isxdigit(c)	((__ismask(c)&(_D|_X)) != 0)
+
+#define isascii(c) (((unsigned char)(c))<=0x7f)
+#define toascii(c) (((unsigned char)(c))&0x7f)
+
+static inline unsigned char __tolower(unsigned char c)
+{
+	if (isupper(c))
+		c -= 'A'-'a';
+	return c;
+}
+
+static inline unsigned char __toupper(unsigned char c)
+{
+	if (islower(c))
+		c -= 'a'-'A';
+	return c;
+}
+
+#define tolower(c) __tolower(c)
+#define toupper(c) __toupper(c)
+
+/*
+ * Fast implementation of tolower() for internal usage. Do not use in your
+ * code.
+ */
+static inline char _tolower(const char c)
+{
+	return c | 0x20;
+}
+
+#endif
diff --git a/snd-wrapper.c b/snd-wrapper.c
index 69cd19c..c2649d9 100644
--- a/snd-wrapper.c
+++ b/snd-wrapper.c
@@ -27,6 +27,35 @@
 #include "hda/hda_codec.h"
 #include "hda-types.h"
 #include "hda-log.h"
+#include <linux/ctype.h>
+
+/* Copied from lib/ctype.c */
+const unsigned char _ctype[] = {
+_C,_C,_C,_C,_C,_C,_C,_C,				/* 0-7 */
+_C,_C|_S,_C|_S,_C|_S,_C|_S,_C|_S,_C,_C,			/* 8-15 */
+_C,_C,_C,_C,_C,_C,_C,_C,				/* 16-23 */
+_C,_C,_C,_C,_C,_C,_C,_C,				/* 24-31 */
+_S|_SP,_P,_P,_P,_P,_P,_P,_P,				/* 32-39 */
+_P,_P,_P,_P,_P,_P,_P,_P,				/* 40-47 */
+_D,_D,_D,_D,_D,_D,_D,_D,				/* 48-55 */
+_D,_D,_P,_P,_P,_P,_P,_P,				/* 56-63 */
+_P,_U|_X,_U|_X,_U|_X,_U|_X,_U|_X,_U|_X,_U,		/* 64-71 */
+_U,_U,_U,_U,_U,_U,_U,_U,				/* 72-79 */
+_U,_U,_U,_U,_U,_U,_U,_U,				/* 80-87 */
+_U,_U,_U,_P,_P,_P,_P,_P,				/* 88-95 */
+_P,_L|_X,_L|_X,_L|_X,_L|_X,_L|_X,_L|_X,_L,		/* 96-103 */
+_L,_L,_L,_L,_L,_L,_L,_L,				/* 104-111 */
+_L,_L,_L,_L,_L,_L,_L,_L,				/* 112-119 */
+_L,_L,_L,_P,_P,_P,_P,_C,				/* 120-127 */
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,			/* 128-143 */
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,			/* 144-159 */
+_S|_SP,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,	/* 160-175 */
+_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,	/* 176-191 */
+_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,	/* 192-207 */
+_U,_U,_U,_U,_U,_U,_U,_P,_U,_U,_U,_U,_U,_U,_U,_L,	/* 208-223 */
+_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,	/* 224-239 */
+_L,_L,_L,_L,_L,_L,_L,_P,_L,_L,_L,_L,_L,_L,_L,_L};	/* 240-255 */
+
 
 int snd_pcm_format_width(int format)
 {
@@ -46,6 +75,9 @@ int snd_pcm_format_width(int format)
 
 int snd_hda_create_hwdep(struct hda_codec *codec)
 {
+#ifdef HAVE_USER_MUTEX
+	mutex_init(&codec->user_mutex);
+#endif
 	return 0;
 }
 
-- 
1.7.9.5



More information about the Alsa-devel mailing list