1 /* SPDX-License-Identifier: GPL-2.0-or-later */
3 * Copyright 10/16/2005 Tilman Kranz <tilde@tk-sls.de>
4 * Creative Audio MIDI, for the CA0106 Driver
11 #include <linux/spinlock.h>
12 #include <sound/rawmidi.h>
13 #include <sound/mpu401.h>
15 #define CA_MIDI_MODE_INPUT MPU401_MODE_INPUT
16 #define CA_MIDI_MODE_OUTPUT MPU401_MODE_OUTPUT
20 struct snd_rawmidi
*rmidi
;
21 struct snd_rawmidi_substream
*substream_input
;
22 struct snd_rawmidi_substream
*substream_output
;
26 spinlock_t input_lock
;
27 spinlock_t output_lock
;
32 unsigned int midi_mode
;
34 int tx_enable
, rx_enable
;
37 int input_avail
, output_ready
;
38 int ack
, reset
, enter_uart
;
40 void (*interrupt
)(struct snd_ca_midi
*midi
, unsigned int status
);
41 void (*interrupt_enable
)(struct snd_ca_midi
*midi
, int intr
);
42 void (*interrupt_disable
)(struct snd_ca_midi
*midi
, int intr
);
44 unsigned char (*read
)(struct snd_ca_midi
*midi
, int idx
);
45 void (*write
)(struct snd_ca_midi
*midi
, int data
, int idx
);
47 /* get info from dev_id */
48 struct snd_card
*(*get_dev_id_card
)(void *dev_id
);
49 int (*get_dev_id_port
)(void *dev_id
);
52 int ca_midi_init(void *card
, struct snd_ca_midi
*midi
, int device
, char *name
);