ca_midi.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. #include <linux/spinlock.h>
  11. #include <sound/rawmidi.h>
  12. #include <sound/mpu401.h>
  13. #define CA_MIDI_MODE_INPUT MPU401_MODE_INPUT
  14. #define CA_MIDI_MODE_OUTPUT MPU401_MODE_OUTPUT
  15. struct snd_ca_midi {
  16. struct snd_rawmidi *rmidi;
  17. struct snd_rawmidi_substream *substream_input;
  18. struct snd_rawmidi_substream *substream_output;
  19. void *dev_id;
  20. spinlock_t input_lock;
  21. spinlock_t output_lock;
  22. spinlock_t open_lock;
  23. unsigned int channel;
  24. unsigned int midi_mode;
  25. int port;
  26. int tx_enable, rx_enable;
  27. int ipr_tx, ipr_rx;
  28. int input_avail, output_ready;
  29. int ack, reset, enter_uart;
  30. void (*interrupt)(struct snd_ca_midi *midi, unsigned int status);
  31. void (*interrupt_enable)(struct snd_ca_midi *midi, int intr);
  32. void (*interrupt_disable)(struct snd_ca_midi *midi, int intr);
  33. unsigned char (*read)(struct snd_ca_midi *midi, int idx);
  34. void (*write)(struct snd_ca_midi *midi, int data, int idx);
  35. /* get info from dev_id */
  36. struct snd_card *(*get_dev_id_card)(void *dev_id);
  37. int (*get_dev_id_port)(void *dev_id);
  38. };
  39. int ca_midi_init(void *card, struct snd_ca_midi *midi, int device, char *name);