Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 /* 
  2  *  Copyright 10/16/2005 Tilman Kranz <tilde@tk-sls.de>
  3  *  Creative Audio MIDI, for the CA0106 Driver
  4  *  Version: 0.0.1
  5  *
  6  *  Changelog:
  7  *    See ca_midi.c
  8  *
  9  *   This program is free software; you can redistribute it and/or modify
 10  *   it under the terms of the GNU General Public License as published by
 11  *   the Free Software Foundation; either version 2 of the License, or
 12  *   (at your option) any later version.
 13  *
 14  *   This program is distributed in the hope that it will be useful,
 15  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 16  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 17  *   GNU General Public License for more details.
 18  *
 19  *   You should have received a copy of the GNU General Public License
 20  *   along with this program; if not, write to the Free Software
 21  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 22  *
 23  */
 24 
 25 #include <linux/spinlock.h>
 26 #include <sound/rawmidi.h>
 27 #include <sound/mpu401.h>
 28 
 29 #define CA_MIDI_MODE_INPUT      MPU401_MODE_INPUT
 30 #define CA_MIDI_MODE_OUTPUT     MPU401_MODE_OUTPUT
 31 
 32 struct snd_ca_midi {
 33 
 34         struct snd_rawmidi *rmidi;
 35         struct snd_rawmidi_substream *substream_input;
 36         struct snd_rawmidi_substream *substream_output;
 37 
 38         void *dev_id;
 39 
 40         spinlock_t input_lock;
 41         spinlock_t output_lock;
 42         spinlock_t open_lock;
 43 
 44         unsigned int channel;
 45 
 46         unsigned int midi_mode;
 47         int port;
 48         int tx_enable, rx_enable;
 49         int ipr_tx, ipr_rx;            
 50         
 51         int input_avail, output_ready;
 52         int ack, reset, enter_uart;
 53 
 54         void (*interrupt)(struct snd_ca_midi *midi, unsigned int status);
 55         void (*interrupt_enable)(struct snd_ca_midi *midi, int intr);
 56         void (*interrupt_disable)(struct snd_ca_midi *midi, int intr);
 57 
 58         unsigned char (*read)(struct snd_ca_midi *midi, int idx);
 59         void (*write)(struct snd_ca_midi *midi, int data, int idx);
 60 
 61         /* get info from dev_id */
 62         struct snd_card *(*get_dev_id_card)(void *dev_id);
 63         int (*get_dev_id_port)(void *dev_id);
 64 };
 65 
 66 int ca_midi_init(void *card, struct snd_ca_midi *midi, int device, char *name);
 67 
  This page was automatically generated by the LXR engine.