18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
28c2ecf20Sopenharmony_ci#ifndef __OPL3_VOICE_H
38c2ecf20Sopenharmony_ci#define __OPL3_VOICE_H
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ci/*
68c2ecf20Sopenharmony_ci *  Copyright (c) 2000 Uros Bizjak <uros@kss-loka.si>
78c2ecf20Sopenharmony_ci */
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ci#include <sound/opl3.h>
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ci/* Prototypes for opl3_seq.c */
128c2ecf20Sopenharmony_ciint snd_opl3_synth_use_inc(struct snd_opl3 * opl3);
138c2ecf20Sopenharmony_civoid snd_opl3_synth_use_dec(struct snd_opl3 * opl3);
148c2ecf20Sopenharmony_ciint snd_opl3_synth_setup(struct snd_opl3 * opl3);
158c2ecf20Sopenharmony_civoid snd_opl3_synth_cleanup(struct snd_opl3 * opl3);
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ci/* Prototypes for opl3_midi.c */
188c2ecf20Sopenharmony_civoid snd_opl3_note_on(void *p, int note, int vel, struct snd_midi_channel *chan);
198c2ecf20Sopenharmony_civoid snd_opl3_note_off(void *p, int note, int vel, struct snd_midi_channel *chan);
208c2ecf20Sopenharmony_civoid snd_opl3_key_press(void *p, int note, int vel, struct snd_midi_channel *chan);
218c2ecf20Sopenharmony_civoid snd_opl3_terminate_note(void *p, int note, struct snd_midi_channel *chan);
228c2ecf20Sopenharmony_civoid snd_opl3_control(void *p, int type, struct snd_midi_channel *chan);
238c2ecf20Sopenharmony_civoid snd_opl3_nrpn(void *p, struct snd_midi_channel *chan, struct snd_midi_channel_set *chset);
248c2ecf20Sopenharmony_civoid snd_opl3_sysex(void *p, unsigned char *buf, int len, int parsed, struct snd_midi_channel_set *chset);
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_civoid snd_opl3_calc_volume(unsigned char *reg, int vel, struct snd_midi_channel *chan);
278c2ecf20Sopenharmony_civoid snd_opl3_timer_func(struct timer_list *t);
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci/* Prototypes for opl3_drums.c */
308c2ecf20Sopenharmony_civoid snd_opl3_load_drums(struct snd_opl3 *opl3);
318c2ecf20Sopenharmony_civoid snd_opl3_drum_switch(struct snd_opl3 *opl3, int note, int vel, int on_off, struct snd_midi_channel *chan);
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_ci/* Prototypes for opl3_oss.c */
348c2ecf20Sopenharmony_ci#if IS_ENABLED(CONFIG_SND_SEQUENCER_OSS)
358c2ecf20Sopenharmony_civoid snd_opl3_init_seq_oss(struct snd_opl3 *opl3, char *name);
368c2ecf20Sopenharmony_civoid snd_opl3_free_seq_oss(struct snd_opl3 *opl3);
378c2ecf20Sopenharmony_ci#else
388c2ecf20Sopenharmony_ci#define snd_opl3_init_seq_oss(opl3, name) /* NOP */
398c2ecf20Sopenharmony_ci#define snd_opl3_free_seq_oss(opl3) /* NOP */
408c2ecf20Sopenharmony_ci#endif
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ciextern char snd_opl3_regmap[MAX_OPL2_VOICES][4];
438c2ecf20Sopenharmony_ciextern bool use_internal_drums;
448c2ecf20Sopenharmony_ciextern const struct snd_midi_op opl3_ops;
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci#endif
47