vx_core.h

来自「Linux Kernel 2.6.9 for OMAP1710」· C头文件 代码 · 共 559 行 · 第 1/2 页

H
559
字号
int vx_send_msg_nolock(vx_core_t *chip, struct vx_rmh *rmh);int vx_send_rih(vx_core_t *chip, int cmd);int vx_send_rih_nolock(vx_core_t *chip, int cmd);void vx_reset_codec(vx_core_t *chip, int cold_reset);/* * check the bit on the specified register * returns zero if a bit matches, or a negative error code. * exported for vxpocket driver */int snd_vx_check_reg_bit(vx_core_t *chip, int reg, int mask, int bit, int time);#define vx_check_isr(chip,mask,bit,time) snd_vx_check_reg_bit(chip, VX_ISR, mask, bit, time)#define vx_wait_isr_bit(chip,bit) vx_check_isr(chip, bit, bit, 200)#define vx_wait_for_rx_full(chip) vx_wait_isr_bit(chip, ISR_RX_FULL)/* * pseudo-DMA transfer */inline static void vx_pseudo_dma_write(vx_core_t *chip, snd_pcm_runtime_t *runtime,				       vx_pipe_t *pipe, int count){	snd_assert(chip->ops->dma_write, return);	chip->ops->dma_write(chip, runtime, pipe, count);}inline static void vx_pseudo_dma_read(vx_core_t *chip, snd_pcm_runtime_t *runtime,				      vx_pipe_t *pipe, int count){	snd_assert(chip->ops->dma_read, return);	chip->ops->dma_read(chip, runtime, pipe, count);}/* error with hardware code, * the return value is -(VX_ERR_MASK | actual-hw-error-code) */#define VX_ERR_MASK	0x1000000#define vx_get_error(err)	(-(err) & ~VX_ERR_MASK)/* * pcm stuff */int snd_vx_pcm_new(vx_core_t *chip);void vx_pcm_update_intr(vx_core_t *chip, unsigned int events);/* * mixer stuff */int snd_vx_mixer_new(vx_core_t *chip);void vx_toggle_dac_mute(vx_core_t *chip, int mute);int vx_sync_audio_source(vx_core_t *chip);int vx_set_monitor_level(vx_core_t *chip, int audio, int level, int active);/* * IEC958 & clock stuff */void vx_set_iec958_status(vx_core_t *chip, unsigned int bits);int vx_set_clock(vx_core_t *chip, unsigned int freq);void vx_change_clock_source(vx_core_t *chip, int source);void vx_set_internal_clock(vx_core_t *chip, unsigned int freq);int vx_change_frequency(vx_core_t *chip);/* * hardware constants */#define vx_has_new_dsp(chip)	((chip)->type != VX_TYPE_BOARD)#define vx_is_pcmcia(chip)	((chip)->type >= VX_TYPE_VXPOCKET)/* audio input source */enum {	VX_AUDIO_SRC_DIGITAL,	VX_AUDIO_SRC_LINE,	VX_AUDIO_SRC_MIC};/* clock source */enum {	INTERNAL_QUARTZ,	UER_SYNC};/* clock mode */enum {	VX_CLOCK_MODE_AUTO,	/* depending on the current audio source */	VX_CLOCK_MODE_INTERNAL,	/* fixed to internal quartz */	VX_CLOCK_MODE_EXTERNAL	/* fixed to UER sync */};/* SPDIF/UER type */enum {	VX_UER_MODE_CONSUMER,	VX_UER_MODE_PROFESSIONAL,	VX_UER_MODE_NOT_PRESENT,};/* register indices */enum {	VX_ICR,	VX_CVR,	VX_ISR,	VX_IVR,	VX_RXH,	VX_TXH = VX_RXH,	VX_RXM,	VX_TXM = VX_RXM,	VX_RXL,	VX_TXL = VX_RXL,	VX_DMA,	VX_CDSP,	VX_RFREQ,	VX_RUER_V2,	VX_GAIN,	VX_DATA = VX_GAIN,	VX_MEMIRQ,	VX_ACQ,	VX_BIT0,	VX_BIT1,	VX_MIC0,	VX_MIC1,	VX_MIC2,	VX_MIC3,	VX_PLX0,	VX_PLX1,	VX_PLX2,	VX_LOFREQ,  // V2: ACQ, VP: RFREQ	VX_HIFREQ,  // V2: BIT0, VP: RUER_V2	VX_CSUER,   // V2: BIT1, VP: BIT0	VX_RUER,    // V2: RUER_V2, VP: BIT1	VX_REG_MAX,	/* aliases for VX board */	VX_RESET_DMA = VX_ISR,	VX_CFG = VX_RFREQ,	VX_STATUS = VX_MEMIRQ,	VX_SELMIC = VX_MIC0,	VX_COMPOT = VX_MIC1,	VX_SCOMPR = VX_MIC2,	VX_GLIMIT = VX_MIC3,	VX_INTCSR = VX_PLX0,	VX_CNTRL = VX_PLX1,	VX_GPIOC = VX_PLX2,	/* aliases for VXPOCKET board */	VX_MICRO = VX_MEMIRQ,	VX_CODEC2 = VX_MEMIRQ,	VX_DIALOG = VX_ACQ,};/* RMH status type */enum {	RMH_SSIZE_FIXED = 0,	/* status size given by the driver (in LgStat) */	RMH_SSIZE_ARG = 1,	/* status size given in the LSB byte */	RMH_SSIZE_MASK = 2,	/* status size given in bitmask */};/* bits for ICR register */#define ICR_HF1		0x10#define ICR_HF0		0x08#define ICR_TREQ	0x02	/* Interrupt mode + HREQ set on for transfer (->DSP) request */#define ICR_RREQ	0x01	/* Interrupt mode + RREQ set on for transfer (->PC) request *//* bits for CVR register */#define CVR_HC		0x80/* bits for ISR register */#define ISR_HF3		0x10#define ISR_HF2		0x08#define ISR_CHK		0x10#define ISR_ERR		0x08#define ISR_TX_READY	0x04#define ISR_TX_EMPTY	0x02#define ISR_RX_FULL	0x01/* Constants used to access the DATA register */#define VX_DATA_CODEC_MASK	0x80#define VX_DATA_XICOR_MASK	0x80/* Constants used to access the CSUER register (both for VX2 and VXP) */#define VX_SUER_FREQ_MASK		0x0c#define VX_SUER_FREQ_32KHz_MASK		0x0c#define VX_SUER_FREQ_44KHz_MASK		0x00#define VX_SUER_FREQ_48KHz_MASK		0x04#define VX_SUER_DATA_PRESENT_MASK	0x02#define VX_SUER_CLOCK_PRESENT_MASK	0x01#define VX_CUER_HH_BITC_SEL_MASK	0x08#define VX_CUER_MH_BITC_SEL_MASK	0x04#define VX_CUER_ML_BITC_SEL_MASK	0x02#define VX_CUER_LL_BITC_SEL_MASK	0x01#define XX_UER_CBITS_OFFSET_MASK	0x1f/* bits for audio_info */#define VX_AUDIO_INFO_REAL_TIME	(1<<0)	/* real-time processing available */#define VX_AUDIO_INFO_OFFLINE	(1<<1)	/* offline processing available */#define VX_AUDIO_INFO_MPEG1	(1<<5)#define VX_AUDIO_INFO_MPEG2	(1<<6)#define VX_AUDIO_INFO_LINEAR_8	(1<<7)#define VX_AUDIO_INFO_LINEAR_16	(1<<8)#define VX_AUDIO_INFO_LINEAR_24	(1<<9)/* DSP Interrupt Request values */#define VXP_IRQ_OFFSET		0x40 /* add 0x40 offset for vxpocket and vx222/v2 *//* call with vx_send_irq_dsp() */#define IRQ_MESS_WRITE_END          0x30#define IRQ_MESS_WRITE_NEXT         0x32#define IRQ_MESS_READ_NEXT          0x34#define IRQ_MESS_READ_END           0x36#define IRQ_MESSAGE                 0x38#define IRQ_RESET_CHK               0x3A#define IRQ_CONNECT_STREAM_NEXT     0x26#define IRQ_CONNECT_STREAM_END      0x28#define IRQ_PAUSE_START_CONNECT     0x2A#define IRQ_END_CONNECTION          0x2C/* Is there async. events pending ( IT Source Test ) */#define ASYNC_EVENTS_PENDING            0x008000#define HBUFFER_EVENTS_PENDING          0x004000   // Not always accurate#define NOTIF_EVENTS_PENDING            0x002000#define TIME_CODE_EVENT_PENDING         0x001000#define FREQUENCY_CHANGE_EVENT_PENDING  0x000800#define END_OF_BUFFER_EVENTS_PENDING    0x000400#define FATAL_DSP_ERROR                 0xff0000/* Stream Format Header Defines */ #define HEADER_FMT_BASE			0xFED00000#define HEADER_FMT_MONO			0x000000C0#define HEADER_FMT_INTEL		0x00008000#define HEADER_FMT_16BITS		0x00002000#define HEADER_FMT_24BITS		0x00004000#define HEADER_FMT_UPTO11		0x00000200	/* frequency is less or equ. to 11k.*/#define HEADER_FMT_UPTO32		0x00000100	/* frequency is over 11k and less then 32k.*//* Constants used to access the Codec */#define XX_CODEC_SELECTOR               0x20/* codec commands */#define XX_CODEC_ADC_CONTROL_REGISTER   0x01#define XX_CODEC_DAC_CONTROL_REGISTER   0x02#define XX_CODEC_LEVEL_LEFT_REGISTER    0x03#define XX_CODEC_LEVEL_RIGHT_REGISTER   0x04#define XX_CODEC_PORT_MODE_REGISTER     0x05#define XX_CODEC_STATUS_REPORT_REGISTER 0x06#define XX_CODEC_CLOCK_CONTROL_REGISTER 0x07/* * Audio-level control values */#define CVAL_M110DB		0x000	/* -110dB */#define CVAL_M99DB		0x02C#define CVAL_M21DB		0x163#define CVAL_M18DB		0x16F#define CVAL_M10DB		0x18F#define CVAL_0DB		0x1B7#define CVAL_18DB		0x1FF	/* +18dB */#define CVAL_MAX		0x1FF#define AUDIO_IO_HAS_MUTE_LEVEL			0x400000#define AUDIO_IO_HAS_MUTE_MONITORING_1		0x200000#define AUDIO_IO_HAS_MUTE_MONITORING_2		0x100000#define VALID_AUDIO_IO_DIGITAL_LEVEL		0x01#define VALID_AUDIO_IO_MONITORING_LEVEL		0x02#define VALID_AUDIO_IO_MUTE_LEVEL		0x04#define VALID_AUDIO_IO_MUTE_MONITORING_1	0x08#define VALID_AUDIO_IO_MUTE_MONITORING_2	0x10#endif /* __SOUND_VX_COMMON_H */

⌨️ 快捷键说明

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