Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/sound/pci/ca0106/ca_midi.h
26451 views
1
/* SPDX-License-Identifier: GPL-2.0-or-later */
2
/*
3
* Copyright 10/16/2005 Tilman Kranz <[email protected]>
4
* Creative Audio MIDI, for the CA0106 Driver
5
* Version: 0.0.1
6
*
7
* Changelog:
8
* See ca_midi.c
9
*/
10
11
#include <linux/spinlock.h>
12
#include <sound/rawmidi.h>
13
#include <sound/mpu401.h>
14
15
#define CA_MIDI_MODE_INPUT MPU401_MODE_INPUT
16
#define CA_MIDI_MODE_OUTPUT MPU401_MODE_OUTPUT
17
18
struct snd_ca_midi {
19
20
struct snd_rawmidi *rmidi;
21
struct snd_rawmidi_substream *substream_input;
22
struct snd_rawmidi_substream *substream_output;
23
24
void *dev_id;
25
26
spinlock_t input_lock;
27
spinlock_t output_lock;
28
spinlock_t open_lock;
29
30
unsigned int channel;
31
32
unsigned int midi_mode;
33
int port;
34
int tx_enable, rx_enable;
35
int ipr_tx, ipr_rx;
36
37
int input_avail, output_ready;
38
int ack, reset, enter_uart;
39
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);
43
44
unsigned char (*read)(struct snd_ca_midi *midi, int idx);
45
void (*write)(struct snd_ca_midi *midi, int data, int idx);
46
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);
50
};
51
52
int ca_midi_init(void *card, struct snd_ca_midi *midi, int device, char *name);
53
54