1 | /* SPDX-License-Identifier: GPL-2.0-or-later */
|
---|
2 | #ifndef __SOUND_SEQ_OSS_H
|
---|
3 | #define __SOUND_SEQ_OSS_H
|
---|
4 |
|
---|
5 | /*
|
---|
6 | * OSS compatible sequencer driver
|
---|
7 | *
|
---|
8 | * Copyright (C) 1998,99 Takashi Iwai
|
---|
9 | */
|
---|
10 |
|
---|
11 | #include <sound/asequencer.h>
|
---|
12 | #include <sound/seq_kernel.h>
|
---|
13 |
|
---|
14 | /*
|
---|
15 | * argument structure for synthesizer operations
|
---|
16 | */
|
---|
17 | struct snd_seq_oss_arg {
|
---|
18 | /* given by OSS sequencer */
|
---|
19 | int app_index; /* application unique index */
|
---|
20 | int file_mode; /* file mode - see below */
|
---|
21 | int seq_mode; /* sequencer mode - see below */
|
---|
22 |
|
---|
23 | /* following must be initialized in open callback */
|
---|
24 | struct snd_seq_addr addr; /* opened port address */
|
---|
25 | void *private_data; /* private data for lowlevel drivers */
|
---|
26 |
|
---|
27 | /* note-on event passing mode: initially given by OSS seq,
|
---|
28 | * but configurable by drivers - see below
|
---|
29 | */
|
---|
30 | int event_passing;
|
---|
31 | };
|
---|
32 |
|
---|
33 |
|
---|
34 | /*
|
---|
35 | * synthesizer operation callbacks
|
---|
36 | */
|
---|
37 | struct snd_seq_oss_callback {
|
---|
38 | struct module *owner;
|
---|
39 | int (*open)(struct snd_seq_oss_arg *p, void *closure);
|
---|
40 | int (*close)(struct snd_seq_oss_arg *p);
|
---|
41 | int (*ioctl)(struct snd_seq_oss_arg *p, unsigned int cmd, unsigned long arg);
|
---|
42 | int (*load_patch)(struct snd_seq_oss_arg *p, int format, const char __user *buf, int offs, int count);
|
---|
43 | int (*reset)(struct snd_seq_oss_arg *p);
|
---|
44 | int (*raw_event)(struct snd_seq_oss_arg *p, unsigned char *data);
|
---|
45 | };
|
---|
46 |
|
---|
47 | /* flag: file_mode */
|
---|
48 | #define SNDRV_SEQ_OSS_FILE_ACMODE 3
|
---|
49 | #define SNDRV_SEQ_OSS_FILE_READ 1
|
---|
50 | #define SNDRV_SEQ_OSS_FILE_WRITE 2
|
---|
51 | #define SNDRV_SEQ_OSS_FILE_NONBLOCK 4
|
---|
52 |
|
---|
53 | /* flag: seq_mode */
|
---|
54 | #define SNDRV_SEQ_OSS_MODE_SYNTH 0
|
---|
55 | #define SNDRV_SEQ_OSS_MODE_MUSIC 1
|
---|
56 |
|
---|
57 | /* flag: event_passing */
|
---|
58 | #define SNDRV_SEQ_OSS_PROCESS_EVENTS 0 /* key == 255 is processed as velocity change */
|
---|
59 | #define SNDRV_SEQ_OSS_PASS_EVENTS 1 /* pass all events to callback */
|
---|
60 | #define SNDRV_SEQ_OSS_PROCESS_KEYPRESS 2 /* key >= 128 will be processed as key-pressure */
|
---|
61 |
|
---|
62 | /* default control rate: fixed */
|
---|
63 | #define SNDRV_SEQ_OSS_CTRLRATE 100
|
---|
64 |
|
---|
65 | /* default max queue length: configurable by module option */
|
---|
66 | #define SNDRV_SEQ_OSS_MAX_QLEN 1024
|
---|
67 |
|
---|
68 |
|
---|
69 | /*
|
---|
70 | * data pointer to snd_seq_register_device
|
---|
71 | */
|
---|
72 | struct snd_seq_oss_reg {
|
---|
73 | int type;
|
---|
74 | int subtype;
|
---|
75 | int nvoices;
|
---|
76 | struct snd_seq_oss_callback oper;
|
---|
77 | void *private_data;
|
---|
78 | };
|
---|
79 |
|
---|
80 | /* device id */
|
---|
81 | #define SNDRV_SEQ_DEV_ID_OSS "seq-oss"
|
---|
82 |
|
---|
83 | #endif /* __SOUND_SEQ_OSS_H */
|
---|