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

📄 dac3550drv.h

📁 (1)基于部分u-boot代码自己调试的vxworks BSP (2)实现了nand/nor flash的tffs文件系统 (3)实现了对spi dataflash的访问 (4)实现了对启动参数
💻 H
字号:
/* sb16drv.h - global comment *//* Copyright 1984-2001 Wind River Systems, Inc. *//*modification history--------------------01c,21sep01,dat  Fix ANSI violations for diab compiler01b,03feb00,jk   updated to reflect new sb16drv.c code drop.01a,14oct99,jk   extracted from file sb16drv.c.*//*DESCRIPTION*/#ifndef __INCdac3550drvh#define __INCdac3550drvh#include "iosLib.h"#include "msgQLib.h"#include "drv/audio/sound_ioctl.h"#ifdef __cplusplusextern "C"{#endif /* __cplusplus */#define MCK	60000000#define FILE_SAMPLING_FREQ	44100 /* Constant declarations used by I2S mode*/#define SLOT_BY_FRAME	2#define BITS_BY_SLOT	16/* IRQ level declaration */#define IRQ_LEVEL_I2S	5	/* SSC_TCMR  configuration for I2S setting*//* I2S_ASY_MASTER_TX_SETTING(BITS_BY_SLOT, SLOT_BY_FRAME);*/#define I2S_ASY_MASTER_TX_SETTING(nb_bit_by_slot, nb_slot_by_frame)( + \AT91C_SSC_CKS_DIV   + \AT91C_SSC_CKO_CONTINOUS      + \AT91C_SSC_START_FALL_RF + \((1<<16) & AT91C_SSC_STTDLY) + \((((nb_bit_by_slot*nb_slot_by_frame)/2)-1) <<24))/* Configuration to set in the SSC_TFMR Transmit Frame Mode Register Parameters : nb_bit_by_slot : 8, 16 or 32 bits 			 nb_slot_by_frame : number of channels */#define I2S_ASY_TX_FRAME_SETTING(nb_bit_by_slot, nb_slot_by_frame)( +\(nb_bit_by_slot-1)  +\AT91C_SSC_MSBF   +\(((nb_slot_by_frame-1)<<8) & AT91C_SSC_DATNB)  +\(((nb_bit_by_slot-1)<<16) & AT91C_SSC_FSLEN) +\AT91C_SSC_FSOS_NEGATIVE)/* I/O ports */#define SBP( codec, x ) ( (codec) -> port + s_b_SB_##x )#define SBP1( port, x ) ( (port) + s_b_SB_##x )#define s_b_SB_RESET		0x6#define s_b_SB_READ		0xa#define s_b_SB_WRITE		0xc#define s_b_SB_COMMAND		0xc#define s_b_SB_STATUS		0xc#define s_b_SB_DATA_AVAIL	0xe#define s_b_SB_DATA_AVAIL_16 	0xf#define s_b_SB_MIXER_ADDR	0x4#define s_b_SB_MIXER_DATA	0x5#define s_b_SB_OPL3_LEFT	0x0#define s_b_SB_OPL3_RIGHT	0x2#define s_b_SB_OPL3_BOTH	0x8/* dsp commands */#define SB_DSP_SAMPLE_RATE	0x40#define SB_DSP_SAMPLE_RATE_OUT	0x41#define SB_DSP_SAMPLE_RATE_IN	0x42#define SB_DSP_MONO_8BIT	0xa0#define SB_DSP_MONO_16BIT	0xa4#define SB_DSP_STEREO_8BIT	0xa8#define SB_DSP_STEREO_16BIT	0xac#define SB_DSP4_OUT16_AI	0xb6#define SB_DSP4_IN16_AI		0xbe#define SB_DSP4_OUT8_AI		0xc6#define SB_DSP4_IN8_AI		0xce#define SB_DSP_DMA8_OFF		0xd0#define SB_DSP_SPEAKER_ON	0xd1#define SB_DSP_SPEAKER_OFF	0xd3#define SB_DSP_DMA8_ON		0xd4#define SB_DSP_DMA16_OFF	0xd5#define SB_DSP_DMA16_ON		0xd6#define SB_DSP_DMA16_EXIT       0xd9#define SB_DSP_DMA8_EXIT        0xda#define SB_DSP_GET_VERSION	0xe1/* dsp input/output formats */#define SB_DSP4_MODE_UNS_MONO		0x00#define SB_DSP4_MODE_SIGN_MONO		0x10#define SB_DSP4_MODE_UNS_STEREO		0x20#define SB_DSP4_MODE_SIGN_STEREO	0x30/* OPL3 commands */#define TEST_REGISTER			0x01#define TIMER_CONTROL_REGISTER		0x04	/* Left side */#define CONNECTION_SELECT_REGISTER	0x04	/* Right side */#define OPL3_MODE_REGISTER		0x05	/* Right side */#define KEYON_BLOCK			0xb0	/* Left side ???*/#define PERCUSSION_REGISTER		0xbd	/* Left side only */#define TIMER1_REGISTER		0x02#define TIMER2_REGISTER		0x03/* TEST_REGISTER options */#define ENABLE_WAVE_SELECT	0x20/* TIMER_CONTROL_REGISTER options */#define IRQ_RESET		0x80#define TIMER1_MASK		0x40#define TIMER2_MASK		0x20/* OPL3_MODE_REGISTER options */#define OPL3_ENABLE		0x01/* Mixer commands */#define SB_MIXER_MASTER_DEV	0x30#define SB_MIXER_PCM_DEV	0x32#define SB_MIXER_SYNTH_DEV	0x34#define SB_MIXER_CD_DEV		0x36#define SB_MIXER_LINE_DEV	0x38#define SB_MIXER_MIC_DEV	0x3a#define SB_MIXER_SPEAKER_DEV	0x3b#define SB_MIXER_OUTPUT_SW	0x3c#define SB_MIXER_IGAIN_DEV	0x3f#define SB_MIXER_OGAIN_DEV	0x41#define SB_MIXER_MIC_AGC	0x43#define SB_MIXER_TREBLE_DEV	0x44#define SB_MIXER_BASS_DEV	0x46#define SB_MIXER_IRQ_NR		0x80#define SB_MIXER_DMA_NR		0x81#define SB_MIXER_IRQ_STAT	0x82#define SB_MIXER_MPU_NR         0x84#define RATE_MIN  4000#define RATE_MAX 44100#define MAX_DMA_MSGS 2#define MAX_DMA_SIZE 32768#define TASK_PRIORITY    0#define TASK_OPTIONS     0#define TASK_STACK_SIZE  2048typedef struct{  char *name;  int reg;  int max_value;  int shift;  int unknownfield;} MIXER_INFO;#define	TWO_BUFF_EMPTY 0#define	ONE_BUFF_READY 1#define	TWO_BUFF_READY 2typedef struct{  char *buffer;  int length;  int direction;  int state;} DMA_MSG;typedef struct snd_fd_struct SND_FD;typedef struct dsp_fd_struct DSP_FD;typedef struct mixer_fd_struct MIXER_FD;typedef struct{  DEV_HDR devHdr;  unsigned long port;		/* base port of DSP chip */  unsigned short mpu_port;	/* MPU port for SB DSP 4.0+ */  unsigned short irq;		/* IRQ number of DSP chip */  unsigned short dma8;		/* 8-bit DMA */  unsigned short dma16;		/* 16-bit DMA */  unsigned short version;	/* version of DSP chip */  SEM_ID devSem;  SEM_ID intSem;  SEM_ID bufSem;  MSG_Q_ID dmaQ;  DSP_FD *pDsp;/*  MIXER_FD *pMixer;*/  int dmaIndex;  int tid;  int taskBusy;  int dmaAuto;} SND_DEV;struct snd_fd_struct{  SND_DEV *pDev;  FUNCPTR fdClose;  FUNCPTR fdRead;  FUNCPTR fdWrite;  FUNCPTR fdIoctl;};struct dsp_fd_struct{  SND_FD dev;  int dmaDirection;  int dmaChannel;  snd_info_t info;};struct mixer_fd_struct{  SND_FD dev;};typedef unsigned int UInt32; typedef unsigned short UInt16; typedef unsigned char Byte ;typedef unsigned long u_long ;typedef enum {	Mono,					/* Monophonic sound (1 channel) */	Stereo					/* Stereo sound (2 channels) */} Chan;	/* * These values represent values found in/or destined for a * WAV file. */typedef struct {	UInt32	SamplingRate;			/* Sampling rate in Hz */	Chan	Channels;			/* Mono or Stereo */	UInt32	Samples;			/* Sample count */		UInt16	DataBits;			/* Sample bit size (8/12/16) */	UInt32	DataStart;			/* Offset to wav data */	UInt32	DataBytes;			/* Data bytes in current chunk */	char	bOvrSampling;			/* True if sampling_rate overrided */	char	bOvrMode;			/* True if chan_mode overrided */	char	bOvrBits;			/* True if data_bits is overrided */} WAVINF;/* * This structure manages an open WAV file. */typedef struct {	char	rw;				/* 'R' for read, 'W' for write */	char	*Pathname;			/* Pathname of wav file */	int	fd;				/* Open file descriptor or -1 */	WAVINF	wavinfo;			/* WAV file hdr info */        UInt32  num_samples;                    /* Total number of samples */        UInt32  StartSample;                    /* First sample to play */} WAVFILE;/* function declarations */#if defined(__STDC__) || defined(__cplusplus)STATUS dac3550Drv (void);DEV_HDR* dac3550DevCreate (char *devName, int port, int irq);void  wavfile_free(WAVFILE *wfile);WAVFILE * WavOpenForRead(const char *Pathname);#elseSTATUS dac3550Drv ();DEV_HDR* dac3550DevCreate ();void  wavfile_free();WAVFILE * WavOpenForRead();#endif  /* __STDC__ */#ifdef __cplusplus}#endif /* __cplusplus */#endif /* __INCsb16drvh */

⌨️ 快捷键说明

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