/****************************************************************************
 ****************************************************************************
 ***
 ***   This header was automatically generated from a Linux kernel header
 ***   of the same name, to make information necessary for userspace to
 ***   call into the kernel available to libc.  It contains only constants,
 ***   structures, and macros generated from the original header, and thus,
 ***   contains no copyrightable information.
 ***
 ***   To edit the content of this header, modify the corresponding
 ***   source file (e.g. under external/kernel-headers/original/) then
 ***   run bionic/libc/kernel/tools/update_all.py
 ***
 ***   Any manual change here will be lost the next time this script will
 ***   be run. You've been warned!
 ***
 ****************************************************************************
 ****************************************************************************/
#ifndef __SOUND_SFNT_INFO_H
#define __SOUND_SFNT_INFO_H
#include <sound/asound.h>
#ifdef SNDRV_BIG_ENDIAN
#define SNDRV_OSS_PATCHKEY(id) (0xfd00 | id)
#else
#define SNDRV_OSS_PATCHKEY(id) ((id << 8) | 0xfd)
#endif
struct soundfont_patch_info {
  unsigned short key;
#define SNDRV_OSS_SOUNDFONT_PATCH SNDRV_OSS_PATCHKEY(0x07)
  short device_no;
  unsigned short sf_id;
  short optarg;
  int len;
  short type;
#define SNDRV_SFNT_LOAD_INFO 0
#define SNDRV_SFNT_LOAD_DATA 1
#define SNDRV_SFNT_OPEN_PATCH 2
#define SNDRV_SFNT_CLOSE_PATCH 3
#define SNDRV_SFNT_REPLACE_DATA 5
#define SNDRV_SFNT_MAP_PRESET 6
#define SNDRV_SFNT_PROBE_DATA 8
#define SNDRV_SFNT_REMOVE_INFO 9
  short reserved;
};
#define SNDRV_SFNT_PATCH_NAME_LEN 32
struct soundfont_open_parm {
  unsigned short type;
#define SNDRV_SFNT_PAT_TYPE_MISC 0
#define SNDRV_SFNT_PAT_TYPE_GUS 6
#define SNDRV_SFNT_PAT_TYPE_MAP 7
#define SNDRV_SFNT_PAT_LOCKED 0x100
#define SNDRV_SFNT_PAT_SHARED 0x200
  short reserved;
  char name[SNDRV_SFNT_PATCH_NAME_LEN];
};
struct soundfont_voice_parm {
  unsigned short moddelay;
  unsigned short modatkhld;
  unsigned short moddcysus;
  unsigned short modrelease;
  short modkeyhold, modkeydecay;
  unsigned short voldelay;
  unsigned short volatkhld;
  unsigned short voldcysus;
  unsigned short volrelease;
  short volkeyhold, volkeydecay;
  unsigned short lfo1delay;
  unsigned short lfo2delay;
  unsigned short pefe;
  unsigned short fmmod;
  unsigned short tremfrq;
  unsigned short fm2frq2;
  unsigned char cutoff;
  unsigned char filterQ;
  unsigned char chorus;
  unsigned char reverb;
  unsigned short reserved[4];
};
struct soundfont_voice_info {
  unsigned short sf_id;
  unsigned short sample;
  int start, end;
  int loopstart, loopend;
  short rate_offset;
  unsigned short mode;
#define SNDRV_SFNT_MODE_ROMSOUND 0x8000
#define SNDRV_SFNT_MODE_STEREO 1
#define SNDRV_SFNT_MODE_LOOPING 2
#define SNDRV_SFNT_MODE_NORELEASE 4
#define SNDRV_SFNT_MODE_INIT_PARM 8
  short root;
  short tune;
  unsigned char low, high;
  unsigned char vellow, velhigh;
  signed char fixkey, fixvel;
  signed char pan, fixpan;
  short exclusiveClass;
  unsigned char amplitude;
  unsigned char attenuation;
  short scaleTuning;
  struct soundfont_voice_parm parm;
  unsigned short sample_mode;
};
struct soundfont_voice_rec_hdr {
  unsigned char bank;
  unsigned char instr;
  char nvoices;
  char write_mode;
#define SNDRV_SFNT_WR_APPEND 0
#define SNDRV_SFNT_WR_EXCLUSIVE 1
#define SNDRV_SFNT_WR_REPLACE 2
};
struct soundfont_sample_info {
  unsigned short sf_id;
  unsigned short sample;
  int start, end;
  int loopstart, loopend;
  int size;
  short dummy;
  unsigned short mode_flags;
#define SNDRV_SFNT_SAMPLE_8BITS 1
#define SNDRV_SFNT_SAMPLE_UNSIGNED 2
#define SNDRV_SFNT_SAMPLE_NO_BLANK 4
#define SNDRV_SFNT_SAMPLE_SINGLESHOT 8
#define SNDRV_SFNT_SAMPLE_BIDIR_LOOP 16
#define SNDRV_SFNT_SAMPLE_STEREO_LEFT 32
#define SNDRV_SFNT_SAMPLE_STEREO_RIGHT 64
#define SNDRV_SFNT_SAMPLE_REVERSE_LOOP 128
  unsigned int truesize;
};
struct soundfont_voice_map {
  int map_bank, map_instr, map_key;
  int src_bank, src_instr, src_key;
};
#define SNDRV_EMUX_HWDEP_NAME "Emux WaveTable"
#define SNDRV_EMUX_VERSION ((1 << 16) | (0 << 8) | 0)
struct snd_emux_misc_mode {
  int port;
  int mode;
  int value;
  int value2;
};
#define SNDRV_EMUX_IOCTL_VERSION _IOR('H', 0x80, unsigned int)
#define SNDRV_EMUX_IOCTL_LOAD_PATCH _IOWR('H', 0x81, struct soundfont_patch_info)
#define SNDRV_EMUX_IOCTL_RESET_SAMPLES _IO('H', 0x82)
#define SNDRV_EMUX_IOCTL_REMOVE_LAST_SAMPLES _IO('H', 0x83)
#define SNDRV_EMUX_IOCTL_MEM_AVAIL _IOW('H', 0x84, int)
#define SNDRV_EMUX_IOCTL_MISC_MODE _IOWR('H', 0x84, struct snd_emux_misc_mode)
#endif
