1*1a59d1b8SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 21da177e4SLinus Torvalds #ifndef __SOUND_SEQ_OSS_H 31da177e4SLinus Torvalds #define __SOUND_SEQ_OSS_H 41da177e4SLinus Torvalds 51da177e4SLinus Torvalds /* 61da177e4SLinus Torvalds * OSS compatible sequencer driver 71da177e4SLinus Torvalds * 81da177e4SLinus Torvalds * Copyright (C) 1998,99 Takashi Iwai 91da177e4SLinus Torvalds */ 101da177e4SLinus Torvalds 11a1ce3928SDavid Howells #include <sound/asequencer.h> 12a1ce3928SDavid Howells #include <sound/seq_kernel.h> 131da177e4SLinus Torvalds 141da177e4SLinus Torvalds /* 151da177e4SLinus Torvalds * argument structure for synthesizer operations 161da177e4SLinus Torvalds */ 17080dece3STakashi Iwai struct snd_seq_oss_arg { 181da177e4SLinus Torvalds /* given by OSS sequencer */ 191da177e4SLinus Torvalds int app_index; /* application unique index */ 201da177e4SLinus Torvalds int file_mode; /* file mode - see below */ 211da177e4SLinus Torvalds int seq_mode; /* sequencer mode - see below */ 221da177e4SLinus Torvalds 231da177e4SLinus Torvalds /* following must be initialized in open callback */ 24080dece3STakashi Iwai struct snd_seq_addr addr; /* opened port address */ 251da177e4SLinus Torvalds void *private_data; /* private data for lowlevel drivers */ 261da177e4SLinus Torvalds 271da177e4SLinus Torvalds /* note-on event passing mode: initially given by OSS seq, 281da177e4SLinus Torvalds * but configurable by drivers - see below 291da177e4SLinus Torvalds */ 301da177e4SLinus Torvalds int event_passing; 311da177e4SLinus Torvalds }; 321da177e4SLinus Torvalds 331da177e4SLinus Torvalds 341da177e4SLinus Torvalds /* 351da177e4SLinus Torvalds * synthesizer operation callbacks 361da177e4SLinus Torvalds */ 37080dece3STakashi Iwai struct snd_seq_oss_callback { 381da177e4SLinus Torvalds struct module *owner; 39080dece3STakashi Iwai int (*open)(struct snd_seq_oss_arg *p, void *closure); 40080dece3STakashi Iwai int (*close)(struct snd_seq_oss_arg *p); 41080dece3STakashi Iwai int (*ioctl)(struct snd_seq_oss_arg *p, unsigned int cmd, unsigned long arg); 42080dece3STakashi Iwai int (*load_patch)(struct snd_seq_oss_arg *p, int format, const char __user *buf, int offs, int count); 43080dece3STakashi Iwai int (*reset)(struct snd_seq_oss_arg *p); 44080dece3STakashi Iwai int (*raw_event)(struct snd_seq_oss_arg *p, unsigned char *data); 451da177e4SLinus Torvalds }; 461da177e4SLinus Torvalds 471da177e4SLinus Torvalds /* flag: file_mode */ 481da177e4SLinus Torvalds #define SNDRV_SEQ_OSS_FILE_ACMODE 3 491da177e4SLinus Torvalds #define SNDRV_SEQ_OSS_FILE_READ 1 501da177e4SLinus Torvalds #define SNDRV_SEQ_OSS_FILE_WRITE 2 511da177e4SLinus Torvalds #define SNDRV_SEQ_OSS_FILE_NONBLOCK 4 521da177e4SLinus Torvalds 531da177e4SLinus Torvalds /* flag: seq_mode */ 541da177e4SLinus Torvalds #define SNDRV_SEQ_OSS_MODE_SYNTH 0 551da177e4SLinus Torvalds #define SNDRV_SEQ_OSS_MODE_MUSIC 1 561da177e4SLinus Torvalds 571da177e4SLinus Torvalds /* flag: event_passing */ 581da177e4SLinus Torvalds #define SNDRV_SEQ_OSS_PROCESS_EVENTS 0 /* key == 255 is processed as velocity change */ 591da177e4SLinus Torvalds #define SNDRV_SEQ_OSS_PASS_EVENTS 1 /* pass all events to callback */ 601da177e4SLinus Torvalds #define SNDRV_SEQ_OSS_PROCESS_KEYPRESS 2 /* key >= 128 will be processed as key-pressure */ 611da177e4SLinus Torvalds 621da177e4SLinus Torvalds /* default control rate: fixed */ 631da177e4SLinus Torvalds #define SNDRV_SEQ_OSS_CTRLRATE 100 641da177e4SLinus Torvalds 651da177e4SLinus Torvalds /* default max queue length: configurable by module option */ 661da177e4SLinus Torvalds #define SNDRV_SEQ_OSS_MAX_QLEN 1024 671da177e4SLinus Torvalds 681da177e4SLinus Torvalds 691da177e4SLinus Torvalds /* 701da177e4SLinus Torvalds * data pointer to snd_seq_register_device 711da177e4SLinus Torvalds */ 72080dece3STakashi Iwai struct snd_seq_oss_reg { 731da177e4SLinus Torvalds int type; 741da177e4SLinus Torvalds int subtype; 751da177e4SLinus Torvalds int nvoices; 76080dece3STakashi Iwai struct snd_seq_oss_callback oper; 771da177e4SLinus Torvalds void *private_data; 78080dece3STakashi Iwai }; 791da177e4SLinus Torvalds 801da177e4SLinus Torvalds /* device id */ 811da177e4SLinus Torvalds #define SNDRV_SEQ_DEV_ID_OSS "seq-oss" 821da177e4SLinus Torvalds 831da177e4SLinus Torvalds #endif /* __SOUND_SEQ_OSS_H */ 84