1/*
2 **********************************************************************
3 *     cardmo.h
4 *     Copyright 1999, 2000 Creative Labs, Inc.
5 *
6 **********************************************************************
7 *
8 *     Date                 Author          Summary of changes
9 *     ----                 ------          ------------------
10 *     October 20, 1999     Bertrand Lee    base code release
11 *     November 2, 1999     Alan Cox	    cleaned up
12 *
13 **********************************************************************
14 *
15 *     This program is free software; you can redistribute it and/or
16 *     modify it under the terms of the GNU General Public License as
17 *     published by the Free Software Foundation; either version 2 of
18 *     the License, or (at your option) any later version.
19 *
20 *     This program is distributed in the hope that it will be useful,
21 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
22 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23 *     GNU General Public License for more details.
24 *
25 *     You should have received a copy of the GNU General Public
26 *     License along with this program; if not, write to the Free
27 *     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
28 *     USA.
29 *
30 **********************************************************************
31 */
32
33#ifndef _CARDMO_H
34#define _CARDMO_H
35
36#include "icardmid.h"
37#include <linux/interrupt.h>
38
39#define CARDMIDIOUT_STATE_DEFAULT    0x00000000
40#define CARDMIDIOUT_STATE_SUSPEND    0x00000001
41
42struct emu10k1_mpuout
43{
44	u32			status;
45	u32			state;
46	volatile int		intr;
47	struct midi_queue	*firstmidiq;
48	struct midi_queue	*lastmidiq;
49	u8			laststatus;
50	struct tasklet_struct 	tasklet;
51	spinlock_t		lock;
52	struct midi_openinfo	openinfo;
53};
54
55int emu10k1_mpuout_open(struct emu10k1_card *, struct midi_openinfo *);
56int emu10k1_mpuout_close(struct emu10k1_card *);
57int emu10k1_mpuout_add_buffer(struct emu10k1_card *, struct midi_hdr *);
58
59int emu10k1_mpuout_irqhandler(struct emu10k1_card *);
60void emu10k1_mpuout_bh(unsigned long);
61
62#endif  /* _CARDMO_H */
63