Home | History | Annotate | Download | only in linux
      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 */
     46