xref: /openbmc/linux/sound/drivers/opl3/opl3_voice.h (revision 7e9c20f4)
11da177e4SLinus Torvalds #ifndef __OPL3_VOICE_H
21da177e4SLinus Torvalds #define __OPL3_VOICE_H
31da177e4SLinus Torvalds 
41da177e4SLinus Torvalds /*
51da177e4SLinus Torvalds  *  Copyright (c) 2000 Uros Bizjak <uros@kss-loka.si>
61da177e4SLinus Torvalds  *
71da177e4SLinus Torvalds  *   This program is free software; you can redistribute it and/or modify
81da177e4SLinus Torvalds  *   it under the terms of the GNU General Public License as published by
91da177e4SLinus Torvalds  *   the Free Software Foundation; either version 2 of the License, or
101da177e4SLinus Torvalds  *   (at your option) any later version.
111da177e4SLinus Torvalds  *
121da177e4SLinus Torvalds  *   This program is distributed in the hope that it will be useful,
131da177e4SLinus Torvalds  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
141da177e4SLinus Torvalds  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
151da177e4SLinus Torvalds  *   GNU General Public License for more details.
161da177e4SLinus Torvalds  *
171da177e4SLinus Torvalds  *   You should have received a copy of the GNU General Public License
181da177e4SLinus Torvalds  *   along with this program; if not, write to the Free Software
191da177e4SLinus Torvalds  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
201da177e4SLinus Torvalds  */
211da177e4SLinus Torvalds 
221da177e4SLinus Torvalds #include <sound/opl3.h>
231da177e4SLinus Torvalds 
241da177e4SLinus Torvalds /* Prototypes for opl3_seq.c */
255b1646a8STakashi Iwai int snd_opl3_synth_use_inc(struct snd_opl3 * opl3);
265b1646a8STakashi Iwai void snd_opl3_synth_use_dec(struct snd_opl3 * opl3);
275b1646a8STakashi Iwai int snd_opl3_synth_setup(struct snd_opl3 * opl3);
285b1646a8STakashi Iwai void snd_opl3_synth_cleanup(struct snd_opl3 * opl3);
291da177e4SLinus Torvalds 
301da177e4SLinus Torvalds /* Prototypes for opl3_midi.c */
311da177e4SLinus Torvalds void snd_opl3_note_on(void *p, int note, int vel, struct snd_midi_channel *chan);
321da177e4SLinus Torvalds void snd_opl3_note_off(void *p, int note, int vel, struct snd_midi_channel *chan);
331da177e4SLinus Torvalds void snd_opl3_key_press(void *p, int note, int vel, struct snd_midi_channel *chan);
345b1646a8STakashi Iwai void snd_opl3_terminate_note(void *p, int note, struct snd_midi_channel *chan);
351da177e4SLinus Torvalds void snd_opl3_control(void *p, int type, struct snd_midi_channel *chan);
365b1646a8STakashi Iwai void snd_opl3_nrpn(void *p, struct snd_midi_channel *chan, struct snd_midi_channel_set *chset);
375b1646a8STakashi Iwai void snd_opl3_sysex(void *p, unsigned char *buf, int len, int parsed, struct snd_midi_channel_set *chset);
381da177e4SLinus Torvalds 
395b1646a8STakashi Iwai void snd_opl3_calc_volume(unsigned char *reg, int vel, struct snd_midi_channel *chan);
40bc47ba90SKees Cook void snd_opl3_timer_func(struct timer_list *t);
411da177e4SLinus Torvalds 
421da177e4SLinus Torvalds /* Prototypes for opl3_drums.c */
435b1646a8STakashi Iwai void snd_opl3_load_drums(struct snd_opl3 *opl3);
445b1646a8STakashi Iwai void snd_opl3_drum_switch(struct snd_opl3 *opl3, int note, int on_off, int vel, struct snd_midi_channel *chan);
451da177e4SLinus Torvalds 
461da177e4SLinus Torvalds /* Prototypes for opl3_oss.c */
473d774d5eSTakashi Iwai #if IS_ENABLED(CONFIG_SND_SEQUENCER_OSS)
485b1646a8STakashi Iwai void snd_opl3_init_seq_oss(struct snd_opl3 *opl3, char *name);
495b1646a8STakashi Iwai void snd_opl3_free_seq_oss(struct snd_opl3 *opl3);
503d774d5eSTakashi Iwai #else
513d774d5eSTakashi Iwai #define snd_opl3_init_seq_oss(opl3, name) /* NOP */
523d774d5eSTakashi Iwai #define snd_opl3_free_seq_oss(opl3) /* NOP */
531da177e4SLinus Torvalds #endif
541da177e4SLinus Torvalds 
557e9c20f4STakashi Iwai extern char snd_opl3_regmap[MAX_OPL2_VOICES][4];
567e9c20f4STakashi Iwai extern bool use_internal_drums;
577e9c20f4STakashi Iwai extern struct snd_midi_op opl3_ops;
587e9c20f4STakashi Iwai 
591da177e4SLinus Torvalds #endif
60