📄 davincievm_aic33_registers.c
字号:
/*
* Copyright 2005 by Spectrum Digital Incorporated.
* All rights reserved. Property of Spectrum Digital Incorporated.
*
* Not for distribution.
*/
/*
* AIC33 implementation
*
*/
#include "davincievm_aic33.h"
/* ------------------------------------------------------------------------ *
* *
* DAVINCIEVM_AIC33_rget( aic33handle, regnum, regval ) *
* *
* Return value of codec register regnum *
* *
* ------------------------------------------------------------------------ */
Int16 DAVINCIEVM_AIC33_rget( AIC33_CodecHandle aic33handle, Uint16 regnum, Uint16* regval )
{
Int16 retcode = 0;
Uint8 cmd[2];
cmd[0] = regnum & 0x007F; // 7-bit Device Address
cmd[1] = 0;
retcode |= DAVINCIEVM_I2C_write( AIC33_I2C_ADDR, cmd, 1 );
retcode |= DAVINCIEVM_I2C_read( AIC33_I2C_ADDR, cmd, 1 );
*regval = cmd[0];
return retcode;
}
/* ------------------------------------------------------------------------ *
* *
* DAVINCIEVM_AIC33_rset( aic33handle, regnum, regval ) *
* *
* Set codec register regnum to value regval *
* *
* ------------------------------------------------------------------------ */
Int16 DAVINCIEVM_AIC33_rset( AIC33_CodecHandle aic33handle, Uint16 regnum, Uint16 regval )
{
Uint8 cmd[2];
cmd[0] = regnum & 0x007F; // 7-bit Device Address
cmd[1] = regval; // 8-bit Register Data
return DAVINCIEVM_I2C_write( AIC33_I2C_ADDR, cmd, 2 );
}
/* ------------------------------------------------------------------------ *
* *
* DAVINCIEVM_AIC33_rset_mask( aic33handle, regnum, regval, mask ) *
* *
* Set codec register regnum to value regval *
* *
* ------------------------------------------------------------------------ */
Int16 DAVINCIEVM_AIC33_rset_mask( AIC33_CodecHandle aic33handle, Uint16 regnum, Uint16 regval, Uint8 mask )
{
Int16 retcode = 0;
Uint16 regval_save;
retcode |= DAVINCIEVM_AIC33_rget( aic33handle, regnum, ®val_save ); // Read old value
regval_save &= ~mask; // Mask bits
regval_save |= regval & mask; // Set bits
retcode |= DAVINCIEVM_AIC33_rset( aic33handle, regnum, regval_save ); // Write new value
return retcode;
}
/* ------------------------------------------------------------------------ *
* *
* DAVINCIEVM_AIC33_config( ) *
* *
* Set the default codec register config values *
* *
* ------------------------------------------------------------------------ */
Int16 DAVINCIEVM_AIC33_config( AIC33_CodecHandle aic33handle, AIC33_Config *config )
{
Int16 retcode = 0;
Int16 i;
/*
* Configure every non-reserved, non-status register
*/
for ( i = 0 ; i < AIC33_NUMREGS ; i++ )
if ( ( config->regs[i] & 0xFF00 ) == 0 )
retcode |= DAVINCIEVM_AIC33_rset( aic33handle, i, config->regs[i] );
return retcode;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -