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 + -
显示快捷键?