⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dev_table.h

📁 基于组件方式开发操作系统的OSKIT源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/* *	dev_table.h * *	Global definitions for device call tables * * * Copyright (C) by Hannu Savolainen 1993-1997 * * OSS/Free for Linux is distributed under the GNU GENERAL PUBLIC LICENSE (GPL) * Version 2 (June 1991). See the "COPYING" file distributed with this software * for more info. */#ifndef _DEV_TABLE_H_#define _DEV_TABLE_H_#include <linux/config.h>/* * Sound card numbers 27 to 999. (1 to 26 are defined in soundcard.h) * Numbers 1000 to N are reserved for driver's internal use. */#define SNDCARD_DESKPROXL		27	/* Compaq Deskpro XL */#define SNDCARD_VIDC			28	/* ARMs VIDC */#define SNDCARD_SBPNP			29#define SNDCARD_SOFTOSS			36#define SNDCARD_VMIDI			37#define SNDCARD_OPL3SA1			38	/* Note: clash in msnd.h */#define SNDCARD_OPL3SA1_SB		39#define SNDCARD_OPL3SA1_MPU		40#define SNDCARD_WAVEFRONT               41#define SNDCARD_OPL3SA2                 42#define SNDCARD_OPL3SA2_MPU             43#define SNDCARD_WAVEARTIST		44#define SNDCARD_OPL3SA2_MSS             45	/* Originally missed */#define SNDCARD_AD1816                  88/* *	NOTE! 	NOTE!	NOTE!	NOTE! * *	If you modify this file, please check the dev_table.c also. * *	NOTE! 	NOTE!	NOTE!	NOTE! */extern int sound_started;struct driver_info {	char *driver_id;	int card_subtype;	/* Driver specific. Usually 0 */	int card_type;		/*	From soundcard.h	*/	char *name;	void (*attach) (struct address_info *hw_config);	int (*probe) (struct address_info *hw_config);	void (*unload) (struct address_info *hw_config);};struct card_info {	int card_type;	/* Link (search key) to the driver list */	struct address_info config;	int enabled;	void *for_driver_use;};/* * Device specific parameters (used only by dmabuf.c) */#define MAX_SUB_BUFFERS		(32*MAX_REALTIME_FACTOR)#define DMODE_NONE		0#define DMODE_OUTPUT		PCM_ENABLE_OUTPUT#define DMODE_INPUT		PCM_ENABLE_INPUTstruct dma_buffparms {	int      dma_mode;	/* DMODE_INPUT, DMODE_OUTPUT or DMODE_NONE */	int	 closing;	/* 	 * Pointers to raw buffers 	 */  	char     *raw_buf;    	unsigned long   raw_buf_phys;	int buffsize;     	/*         * Device state tables         */	unsigned long flags;#define DMA_BUSY	0x00000001#define DMA_RESTART	0x00000002#define DMA_ACTIVE	0x00000004#define DMA_STARTED	0x00000008#define DMA_EMPTY	0x00000010	#define DMA_ALLOC_DONE	0x00000020#define DMA_SYNCING	0x00000040#define DMA_DIRTY	0x00000080#define DMA_POST	0x00000100#define DMA_NODMA	0x00000200#define DMA_NOTIMEOUT	0x00000400	int      open_mode;	/*	 * Queue parameters.	 */       	int      qlen;       	int      qhead;       	int      qtail;	int	 cfrag;	/* Current incomplete fragment (write) */	int      nbufs;	int      counts[MAX_SUB_BUFFERS];	int      subdivision;	int      fragment_size;        int	 needs_reorg;	int	 max_fragments;	int	 bytes_in_use;	int	 underrun_count;	unsigned long	 byte_counter;	unsigned long	 user_counter;	unsigned long	 max_byte_counter;	int	 data_rate; /* Bytes/second */	int	 mapping_flags;#define			DMA_MAP_MAPPED		0x00000001	char	neutral_byte;	int	dma;		/* DMA channel */#ifdef OS_DMA_PARMS	OS_DMA_PARMS#endif	int     applic_profile;	/* Application profile (APF_*) */	/* Interrupt callback stuff */	void (*audio_callback) (int dev, int parm);	int callback_parm;	int	 buf_flags[MAX_SUB_BUFFERS];#define		 BUFF_EOF		0x00000001 /* Increment eof count */#define		 BUFF_DIRTY		0x00000002 /* Buffer written */};/* * Structure for use with various microcontrollers and DSP processors  * in the recent sound cards. */typedef struct coproc_operations {	char name[64];	int (*open) (void *devc, int sub_device);	void (*close) (void *devc, int sub_device);	int (*ioctl) (void *devc, unsigned int cmd, caddr_t arg, int local);	void (*reset) (void *devc);	void *devc;		/* Driver specific info */} coproc_operations;struct audio_driver {	int (*open) (int dev, int mode);	void (*close) (int dev);	void (*output_block) (int dev, unsigned long buf, 			      int count, int intrflag);	void (*start_input) (int dev, unsigned long buf, 			     int count, int intrflag);	int (*ioctl) (int dev, unsigned int cmd, caddr_t arg);	int (*prepare_for_input) (int dev, int bufsize, int nbufs);	int (*prepare_for_output) (int dev, int bufsize, int nbufs);	void (*halt_io) (int dev);	int (*local_qlen)(int dev);	void (*copy_user) (int dev,			char *localbuf, int localoffs,                        const char *userbuf, int useroffs,                        int max_in, int max_out,                        int *used, int *returned,                        int len);	void (*halt_input) (int dev);	void (*halt_output) (int dev);	void (*trigger) (int dev, int bits);	int (*set_speed)(int dev, int speed);	unsigned int (*set_bits)(int dev, unsigned int bits);	short (*set_channels)(int dev, short channels);	void (*postprocess_write)(int dev); 	/* Device spesific postprocessing for written data */	void (*preprocess_read)(int dev); 	/* Device spesific preprocessing for read data */	void (*mmap)(int dev);};struct audio_operations {        char name[128];	int flags;#define NOTHING_SPECIAL 	0x00#define NEEDS_RESTART		0x01#define DMA_AUTOMODE		0x02#define DMA_DUPLEX		0x04#define DMA_PSEUDO_AUTOMODE	0x08#define DMA_HARDSTOP		0x10#define DMA_EXACT		0x40#define DMA_NORESET		0x80	int  format_mask;	/* Bitmask for supported audio formats */	void *devc;		/* Driver specific info */	struct audio_driver *d;	void *portc;		/* Driver spesific info */	struct dma_buffparms *dmap_in, *dmap_out;	struct coproc_operations *coproc;	int mixer_dev;	int enable_bits; 	int open_mode;	int go;	int min_fragment;	/* 0 == unlimited */	int max_fragment;	/* 0 == unlimited */	int parent_dev;		/* 0 -> no parent, 1 to n -> parent=parent_dev+1 */	/* fields formerly in dmabuf.c */	struct wait_queue *in_sleeper;	struct wait_queue *out_sleeper;	struct wait_queue *poll_sleeper;	/* fields formerly in audio.c */	int audio_mode;#define		AM_NONE		0#define		AM_WRITE	OPEN_WRITE#define 	AM_READ		OPEN_READ	int local_format;	int audio_format;	int local_conversion;#define CNV_MU_LAW	0x00000001	/* large structures at the end to keep offsets small */	struct dma_buffparms dmaps[2];};int *load_mixer_volumes(char *name, int *levels, int present);struct mixer_operations {	char id[16];	char name[64];	int (*ioctl) (int dev, unsigned int cmd, caddr_t arg);		void *devc;	int modify_counter;};struct synth_operations {	char *id;	/* Unique identifier (ASCII) max 29 char */	struct synth_info *info;	int midi_dev;	int synth_type;	int synth_subtype;	int (*open) (int dev, int mode);	void (*close) (int dev);	int (*ioctl) (int dev, unsigned int cmd, caddr_t arg);	int (*kill_note) (int dev, int voice, int note, int velocity);	int (*start_note) (int dev, int voice, int note, int velocity);	int (*set_instr) (int dev, int voice, int instr);	void (*reset) (int dev);	void (*hw_control) (int dev, unsigned char *event);	int (*load_patch) (int dev, int format, const char *addr,	     int offs, int count, int pmgr_flag);	void (*aftertouch) (int dev, int voice, int pressure);	void (*controller) (int dev, int voice, int ctrl_num, int value);	void (*panning) (int dev, int voice, int value);	void (*volume_method) (int dev, int mode);	void (*bender) (int dev, int chn, int value);	int (*alloc_voice) (int dev, int chn, int note, struct voice_alloc_info *alloc);	void (*setup_voice) (int dev, int voice, int chn);	int (*send_sysex)(int dev, unsigned char *bytes, int len); 	struct voice_alloc_info alloc; 	struct channel_info chn_info[16];	int emulation;#define	EMU_GM			1	/* General MIDI */#define	EMU_XG			2	/* Yamaha XG */#define MAX_SYSEX_BUF	64	unsigned char sysex_buf[MAX_SYSEX_BUF];	int sysex_ptr;};struct midi_input_info {	/* MIDI input scanner variables */#define MI_MAX	10	int             m_busy;    	unsigned char   m_buf[MI_MAX];	unsigned char	m_prev_status;	/* For running status */    	int             m_ptr;#define MST_INIT			0#define MST_DATA			1#define MST_SYSEX			2    	int             m_state;    	int             m_left;};struct midi_operations {	struct midi_info info;	struct synth_operations *converter;	struct midi_input_info in_info;	int (*open) (int dev, int mode,		void (*inputintr)(int dev, unsigned char data),		void (*outputintr)(int dev)		);	void (*close) (int dev);	int (*ioctl) (int dev, unsigned int cmd, caddr_t arg);	int (*outputc) (int dev, unsigned char data);	int (*start_read) (int dev);	int (*end_read) (int dev);	void (*kick)(int dev);	int (*command) (int dev, unsigned char *data);	int (*buffer_status) (int dev);	int (*prefix_cmd) (int dev, unsigned char status);	struct coproc_operations *coproc;	void *devc;};struct sound_lowlev_timer {	int dev;	int priority;	unsigned int (*tmr_start)(int dev, unsigned int usecs);	void (*tmr_disable)(int dev);	void (*tmr_restart)(int dev);};struct sound_timer_operations {	struct sound_timer_info info;	int priority;	int devlink;	int (*open)(int dev, int mode);	void (*close)(int dev);	int (*event)(int dev, unsigned char *ev);	unsigned long (*get_time)(int dev);	int (*ioctl) (int dev, unsigned int cmd, caddr_t arg);	void (*arm_timer)(int dev, long time);};#ifdef _DEV_TABLE_C_   struct audio_operations *audio_devs[MAX_AUDIO_DEV] = {NULL}; int num_audiodevs = 0;struct mixer_operations *mixer_devs[MAX_MIXER_DEV] = {NULL}; int num_mixers = 0;struct synth_operations *synth_devs[MAX_SYNTH_DEV+MAX_MIDI_DEV] = {NULL}; int num_synths = 0;struct midi_operations *midi_devs[MAX_MIDI_DEV] = {NULL}; int num_midis = 0;#if defined(CONFIG_SEQUENCER) && !defined(EXCLUDE_TIMERS) && !defined(VMIDI)extern struct sound_timer_operations default_sound_timer;struct sound_timer_operations *sound_timer_devs[MAX_TIMER_DEV] = {	&default_sound_timer, NULL}; int num_sound_timers = 1;#elsestruct sound_timer_operations *sound_timer_devs[MAX_TIMER_DEV] = {	NULL};int num_sound_timers = 0;#endif/* * List of low level drivers compiled into the kernel. */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -