1/*
2 * This header was generated from the Linux kernel headers by update_headers.py,
3 * to provide necessary information from kernel to userspace, such as constants,
4 * structures, and macros, and thus, contains no copyrightable information.
5 */
6#ifndef __SOUND_ASOUND_FM_H
7#define __SOUND_ASOUND_FM_H
8#define SNDRV_DM_FM_MODE_OPL2	0x00
9#define SNDRV_DM_FM_MODE_OPL3	0x01
10struct snd_dm_fm_info {
11	unsigned char fm_mode;
12	unsigned char rhythm;
13};
14struct snd_dm_fm_voice {
15	unsigned char op;
16	unsigned char voice;
17	unsigned char am;
18	unsigned char vibrato;
19	unsigned char do_sustain;
20	unsigned char kbd_scale;
21	unsigned char harmonic;
22	unsigned char scale_level;
23	unsigned char volume;
24	unsigned char attack;
25	unsigned char decay;
26	unsigned char sustain;
27	unsigned char release;
28	unsigned char feedback;
29	unsigned char connection;
30	unsigned char left;
31	unsigned char right;
32	unsigned char waveform;
33};
34struct snd_dm_fm_note {
35	unsigned char voice;
36	unsigned char octave;
37	unsigned int fnum;
38	unsigned char key_on;
39};
40struct snd_dm_fm_params {
41	unsigned char am_depth;
42	unsigned char vib_depth;
43	unsigned char kbd_split;
44	unsigned char rhythm;
45
46	unsigned char bass;
47	unsigned char snare;
48	unsigned char tomtom;
49	unsigned char cymbal;
50	unsigned char hihat;
51};
52#define SNDRV_DM_FM_IOCTL_INFO		_IOR('H', 0x20, struct snd_dm_fm_info)
53#define SNDRV_DM_FM_IOCTL_RESET		_IO ('H', 0x21)
54#define SNDRV_DM_FM_IOCTL_PLAY_NOTE	_IOW('H', 0x22, struct snd_dm_fm_note)
55#define SNDRV_DM_FM_IOCTL_SET_VOICE	_IOW('H', 0x23, struct snd_dm_fm_voice)
56#define SNDRV_DM_FM_IOCTL_SET_PARAMS	_IOW('H', 0x24, struct snd_dm_fm_params)
57#define SNDRV_DM_FM_IOCTL_SET_MODE	_IOW('H', 0x25, int)
58#define SNDRV_DM_FM_IOCTL_SET_CONNECTION	_IOW('H', 0x26, int)
59#define SNDRV_DM_FM_IOCTL_CLEAR_PATCHES	_IO ('H', 0x40)
60#define SNDRV_DM_FM_OSS_IOCTL_RESET		0x20
61#define SNDRV_DM_FM_OSS_IOCTL_PLAY_NOTE		0x21
62#define SNDRV_DM_FM_OSS_IOCTL_SET_VOICE		0x22
63#define SNDRV_DM_FM_OSS_IOCTL_SET_PARAMS	0x23
64#define SNDRV_DM_FM_OSS_IOCTL_SET_MODE		0x24
65#define SNDRV_DM_FM_OSS_IOCTL_SET_OPL		0x25
66#define FM_KEY_SBI	"SBI\032"
67#define FM_KEY_2OP	"2OP\032"
68#define FM_KEY_4OP	"4OP\032"
69struct sbi_patch {
70	unsigned char prog;
71	unsigned char bank;
72	char key[4];
73	char name[25];
74	char extension[7];
75	unsigned char data[32];
76};
77#endif
78