OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [drivers/] [sound/] [emu10k1/] [cardmi.h] - Rev 1275

Go to most recent revision | Compare with Previous | Blame | View Log

/*
 **********************************************************************
 *     sblive_mi.h
 *     Copyright 1999, 2000 Creative Labs, Inc.
 *
 **********************************************************************
 *
 *     Date                 Author          Summary of changes
 *     ----                 ------          ------------------
 *     October 20, 1999     Bertrand Lee    base code release
 *     November 2, 1999     Alan Cox        cleaned up
 *
 **********************************************************************
 *
 *     This program is free software; you can redistribute it and/or
 *     modify it under the terms of the GNU General Public License as
 *     published by the Free Software Foundation; either version 2 of
 *     the License, or (at your option) any later version.
 *
 *     This program is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU General Public License for more details.
 *
 *     You should have received a copy of the GNU General Public
 *     License along with this program; if not, write to the Free
 *     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
 *     USA.
 *
 **********************************************************************
 */
 
#ifndef _CARDMI_H
#define _CARDMI_H
 
#include "icardmid.h"
#include <linux/interrupt.h>
 
typedef enum
{
	STIN_PARSE = 0,
	STIN_3BYTE,                     /* 0x80, 0x90, 0xA0, 0xB0, 0xE0 */
	STIN_3BYTE_KEY,                 /* Byte 1 */
	STIN_3BYTE_VEL,                 /* Byte 1 */
	STIN_2BYTE,                     /* 0xC0, 0xD0 */
	STIN_2BYTE_KEY,                 /* Byte 1 */
	STIN_SYS_COMMON_2,              /* 0xF1, 0xF3  */
	STIN_SYS_COMMON_2_KEY,
	STIN_SYS_COMMON_3,              /* 0xF2 */
	STIN_SYS_COMMON_3_KEY,
	STIN_SYS_COMMON_3_VEL,
	STIN_SYS_EX_NORM,               /* 0xF0, Normal mode */
	STIN_SYS_REAL
} midi_in_state;
 
 
/* flags for card MIDI in object */
#define FLAGS_MIDM_STARTED          0x00001000      // Data has started to come in after Midm Start
#define MIDIIN_MAX_BUFFER_SIZE      200             // Definition for struct emu10k1_mpuin
 
struct midi_data
{
	u8 data;
	u32 timein;
};
 
struct emu10k1_mpuin
{
	spinlock_t        lock;
	struct midi_queue *firstmidiq;
	struct midi_queue *lastmidiq;
	unsigned          qhead, qtail;
	struct midi_data  midiq[MIDIIN_MAX_BUFFER_SIZE];
	struct tasklet_struct tasklet;
	struct midi_openinfo    openinfo;
 
	/* For MIDI state machine */
	u8              status;        /* For MIDI running status */
	u8              fstatus;       /* For 0xFn status only */
	midi_in_state   curstate;
	midi_in_state   laststate;
	u32             timestart;
	u32             timein;
	u8              data;
};
 
int emu10k1_mpuin_open(struct emu10k1_card *, struct midi_openinfo *);
int emu10k1_mpuin_close(struct emu10k1_card *);
int emu10k1_mpuin_add_buffer(struct emu10k1_mpuin *, struct midi_hdr *);
int emu10k1_mpuin_start(struct emu10k1_card *);
int emu10k1_mpuin_stop(struct emu10k1_card *);
int emu10k1_mpuin_reset(struct emu10k1_card *);
 
int sblive_miStateInit(struct emu10k1_mpuin *);
int sblive_miStateEntry(struct emu10k1_mpuin *, u8);
int sblive_miStateParse(struct emu10k1_mpuin *, u8);
int sblive_miState3Byte(struct emu10k1_mpuin *, u8);
int sblive_miState3ByteKey(struct emu10k1_mpuin *, u8);
int sblive_miState3ByteVel(struct emu10k1_mpuin *, u8);
int sblive_miState2Byte(struct emu10k1_mpuin *, u8);
int sblive_miState2ByteKey(struct emu10k1_mpuin *, u8);
int sblive_miStateSysCommon2(struct emu10k1_mpuin *, u8);
int sblive_miStateSysCommon2Key(struct emu10k1_mpuin *, u8);
int sblive_miStateSysCommon3(struct emu10k1_mpuin *, u8);
int sblive_miStateSysCommon3Key(struct emu10k1_mpuin *, u8);
int sblive_miStateSysCommon3Vel(struct emu10k1_mpuin *, u8);
int sblive_miStateSysExNorm(struct emu10k1_mpuin *, u8);
int sblive_miStateSysReal(struct emu10k1_mpuin *, u8);
 
int emu10k1_mpuin_irqhandler(struct emu10k1_card *);
void emu10k1_mpuin_bh(unsigned long);
int emu10k1_mpuin_callback(struct emu10k1_mpuin *card_mpuin, u32 msg, unsigned long data, u32 bytesvalid);
 
#endif  /* _CARDMI_H */
 

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.