linux/sound/pci/ca0106/ca_midi.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-or-later */
   2/* 
   3 *  Copyright 10/16/2005 Tilman Kranz <tilde@tk-sls.de>
   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
  18struct 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
  52int ca_midi_init(void *card, struct snd_ca_midi *midi, int device, char *name);
  53