include/linux/soundcard.h: AFMT_S16_NE macro
PATCH 1/1 include/linux/soundcard.h: AFMT_S16_NE macro
This fixes the AFMT_S16_NE macro from include/linux/soundcard.h on some big-endian machines.
Signed-off-by Stuart Brady <[email protected]>
linux/soundcard.h +27 -7
@@ -39,6 +39,13 @@/* In Linux we need to be prepared for cross compiling */ #include <linux/ioctl.h> +/* Endian macros. */ +#ifdef __KERNEL__ +# include <asm/byteorder.h> +#else +# include <endian.h> +#endif +/* * Supported card ID numbers (Should be somewhere else?) */
@@ -179,13 +186,26 @@* Some big endian/little endian handling macros */ -#if defined(_AIX) || defined(AIX ) || defined(sparc) || defined(__sparc__) || defined(HPPA ) || defined(PPC ) || defined(__mc68000__) -/* Big endian machines */ -# define _PATCHKEY (id) (0xfd00|id) -# define AFMT_S16_NE AFMT_S16_BE -#else -# define _PATCHKEY (id) ((id<<8)|0xfd) -# define AFMT_S16_NE AFMT_S16_LE +#if defined(__KERNEL__) +# if defined(__BIG_ENDIAN) +# define AFMT_S16_NE AFMT_S16_BE +# define _PATCHKEY (id) (0xfd00|id) +# elif defined(__LITTLE_ENDIAN) +# define AFMT_S16_NE AFMT_S16_LE +# define _PATCHKEY (id) ((id<<8)|0x00fd) +# else +# error "could not determine byte order" +# endif +#elif defined(__BYTE_ORDER) +# if __BYTE_ORDER == __BIG_ENDIAN +# define AFMT_S16_NE AFMT_S16_BE +# define _PATCHKEY (id) (0xfd00|id) +# elif __BYTE_ORDER == __LITTLE_ENDIAN +# define AFMT_S16_NE AFMT_S16_LE +# define _PATCHKEY (id) ((id<<8)|0x00fd) +# else +# error "could not determine byte order" +# endif #endif /*