aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStuart Brady <sdbrady@ntlworld.com>2005-05-05 19:15:07 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-05-05 19:36:31 -0400
commit60d300c02fe2e0be9bb02904361e41e0307264b2 (patch)
tree28734e32dd7b7deea4d9d1456b354f59de2f2187
parent42d77c70177b2f7535766bce938d965fd863f0fd (diff)
[PATCH] include/linux/soundcard.h: endianness fix
Fixes for big-endian systems in soundcard.h and awe_voice.h This patch fixes the AFMT_S16_NE (include/linux/soundcard.h) and AWE_PATCH (awe_voice.h) macros on big-endian systems. It also moves _PATCHKEY into a new file, patchkey.h, in order to remove a duplicate definition of it from awe_voice.h. Signed-off-by: Stuart Brady <sdbrady@ntlworld.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--include/linux/awe_voice.h6
-rw-r--r--include/linux/patchkey.h45
-rw-r--r--include/linux/soundcard.h34
3 files changed, 75 insertions, 10 deletions
diff --git a/include/linux/awe_voice.h b/include/linux/awe_voice.h
index da0e27de752c..4bf9f33048e2 100644
--- a/include/linux/awe_voice.h
+++ b/include/linux/awe_voice.h
@@ -29,9 +29,9 @@
29#define SAMPLE_TYPE_AWE32 0x20 29#define SAMPLE_TYPE_AWE32 0x20
30#endif 30#endif
31 31
32#ifndef _PATCHKEY 32#define _LINUX_PATCHKEY_H_INDIRECT
33#define _PATCHKEY(id) ((id<<8)|0xfd) 33#include <linux/patchkey.h>
34#endif 34#undef _LINUX_PATCHKEY_H_INDIRECT
35 35
36/*---------------------------------------------------------------- 36/*----------------------------------------------------------------
37 * patch information record 37 * patch information record
diff --git a/include/linux/patchkey.h b/include/linux/patchkey.h
new file mode 100644
index 000000000000..d974a6e92372
--- /dev/null
+++ b/include/linux/patchkey.h
@@ -0,0 +1,45 @@
1/*
2 * <linux/patchkey.h> -- definition of _PATCHKEY macro
3 *
4 * Copyright (C) 2005 Stuart Brady
5 *
6 * This exists because awe_voice.h defined its own _PATCHKEY and it wasn't
7 * clear whether removing this would break anything in userspace.
8 *
9 * Do not include this file directly. Please use <sys/soundcard.h> instead.
10 * For kernel code, use <linux/soundcard.h>
11 */
12
13#ifndef _LINUX_PATCHKEY_H_INDIRECT
14#error "patchkey.h included directly"
15#endif
16
17#ifndef _LINUX_PATCHKEY_H
18#define _LINUX_PATCHKEY_H
19
20/* Endian macros. */
21#ifdef __KERNEL__
22# include <asm/byteorder.h>
23#else
24# include <endian.h>
25#endif
26
27#if defined(__KERNEL__)
28# if defined(__BIG_ENDIAN)
29# define _PATCHKEY(id) (0xfd00|id)
30# elif defined(__LITTLE_ENDIAN)
31# define _PATCHKEY(id) ((id<<8)|0x00fd)
32# else
33# error "could not determine byte order"
34# endif
35#elif defined(__BYTE_ORDER)
36# if __BYTE_ORDER == __BIG_ENDIAN
37# define _PATCHKEY(id) (0xfd00|id)
38# elif __BYTE_ORDER == __LITTLE_ENDIAN
39# define _PATCHKEY(id) ((id<<8)|0x00fd)
40# else
41# error "could not determine byte order"
42# endif
43#endif
44
45#endif /* _LINUX_PATCHKEY_H */
diff --git a/include/linux/soundcard.h b/include/linux/soundcard.h
index 28d2d1881978..523d069c862c 100644
--- a/include/linux/soundcard.h
+++ b/include/linux/soundcard.h
@@ -39,6 +39,13 @@
39/* In Linux we need to be prepared for cross compiling */ 39/* In Linux we need to be prepared for cross compiling */
40#include <linux/ioctl.h> 40#include <linux/ioctl.h>
41 41
42/* Endian macros. */
43#ifdef __KERNEL__
44# include <asm/byteorder.h>
45#else
46# include <endian.h>
47#endif
48
42/* 49/*
43 * Supported card ID numbers (Should be somewhere else?) 50 * Supported card ID numbers (Should be somewhere else?)
44 */ 51 */
@@ -179,13 +186,26 @@ typedef struct seq_event_rec {
179 * Some big endian/little endian handling macros 186 * Some big endian/little endian handling macros
180 */ 187 */
181 188
182#if defined(_AIX) || defined(AIX) || defined(sparc) || defined(__sparc__) || defined(HPPA) || defined(PPC) || defined(__mc68000__) 189#define _LINUX_PATCHKEY_H_INDIRECT
183/* Big endian machines */ 190#include <linux/patchkey.h>
184# define _PATCHKEY(id) (0xfd00|id) 191#undef _LINUX_PATCHKEY_H_INDIRECT
185# define AFMT_S16_NE AFMT_S16_BE 192
186#else 193#if defined(__KERNEL__)
187# define _PATCHKEY(id) ((id<<8)|0xfd) 194# if defined(__BIG_ENDIAN)
188# define AFMT_S16_NE AFMT_S16_LE 195# define AFMT_S16_NE AFMT_S16_BE
196# elif defined(__LITTLE_ENDIAN)
197# define AFMT_S16_NE AFMT_S16_LE
198# else
199# error "could not determine byte order"
200# endif
201#elif defined(__BYTE_ORDER)
202# if __BYTE_ORDER == __BIG_ENDIAN
203# define AFMT_S16_NE AFMT_S16_BE
204# elif __BYTE_ORDER == __LITTLE_ENDIAN
205# define AFMT_S16_NE AFMT_S16_LE
206# else
207# error "could not determine byte order"
208# endif
189#endif 209#endif
190 210
191/* 211/*