示例#1
0
void Ana_Recover_AudioRecord(void)
{
    PRINTK_ANA_REG("Ana_Recover_AudioRecord\n");
    Ana_Recover_Reg(AUDIO_NCP0);
    Ana_Recover_Reg(AUDIO_NCP1);
    Ana_Recover_Reg(AUDIO_LDO0);
    Ana_Recover_Reg(AUDIO_LDO1);
    Ana_Recover_Reg(AUDIO_LDO2);
    Ana_Recover_Reg(AUDIO_GLB0);
    Ana_Recover_Reg(AUDIO_GLB1);
    Ana_Recover_Reg(AUDIO_REG1);

    Ana_Recover_Reg(AUDIO_CON3);
    Ana_Recover_Reg(AUDIO_CON4);
    Ana_Recover_Reg(AUDIO_CON5);
    Ana_Recover_Reg(AUDIO_CON6);
    Ana_Recover_Reg(AUDIO_CON14);
    Ana_Recover_Reg(AUDIO_CON17);
    Ana_Recover_Reg(AUDIO_CON20);
    Ana_Recover_Reg(AUDIO_CON21);
    Ana_Recover_Reg(AUDIO_CON22);
    Ana_Recover_Reg(AUDIO_CON23);
    Ana_Recover_Reg(AUDIO_CON24);
    Ana_Recover_Reg(AUDIO_CON31);
    Ana_Recover_Reg(AUDIO_CON33);
    Ana_Recover_Reg(AUDIO_CON34);
}
示例#2
0
void Ana_Recover_AudioPlayback(void)
{
    kal_uint32 u4AUD_CON9 = 0;
    PRINTK_ANA_REG("Ana_Recover_AudioPlayback\n");
    u4AUD_CON9 = Ana_Get_Backup_Memory(AUDIO_CON9);
    Ana_Recover_Reg(AUDIO_NCP0);
    Ana_Recover_Reg(AUDIO_NCP1);
    Ana_Recover_Reg(AUDIO_LDO0);
    Ana_Recover_Reg(AUDIO_LDO1);
    Ana_Recover_Reg(AUDIO_LDO2);
    Ana_Recover_Reg(AUDIO_GLB0);
    Ana_Recover_Reg(AUDIO_GLB1);
    Ana_Recover_Reg(AUDIO_REG1);

    Ana_Recover_Reg(AUDIO_CON0);//set line-in gain and select ZCD source
    Ana_Recover_Reg(AUDIO_CON1);
    Ana_Recover_Reg(AUDIO_CON2);
    Ana_Recover_Reg(AUDIO_CON3);
    Ana_Recover_Reg(AUDIO_CON5);
    Ana_Recover_Reg(AUDIO_CON6);
    Ana_Recover_Reg(AUDIO_CON7);
    Ana_Recover_Reg(AUDIO_CON8);
    if(u4AUD_CON9&0x01) //Follow audio fifo control flow
    {
        Ana_Set_Reg(AUDIO_CON9, u4AUD_CON9, 0xfffffffe);
        Ana_Set_Reg(AUDIO_CON9, u4AUD_CON9, 0x00000001);
    }
    else
    {
        Ana_Recover_Reg(AUDIO_CON9);
    }
    Ana_Recover_Reg(AUDIO_CON10);
    Ana_Recover_Reg(AUDIO_CON14);
    Ana_Recover_Reg(AUDIO_CON17);
}
示例#3
0
kal_uint32 Ana_Get_Reg(kal_uint32 offset)
{
   volatile kal_uint32 *value;
   UINT32 address = (offset);
   PRINTK_ANA_REG("Ana_Get_Reg offset=%x \n",offset);

   value = (volatile kal_uint32  *)(address);
   return *value;
}
uint32 Ana_Get_Reg(uint32 offset)
{
    // get pmic register
    int ret = 0;
    uint32 Rdata = 0;
#ifdef AUDIO_USING_WRAP_DRIVER
    ret = pwrap_read(offset, &Rdata);
#endif
    PRINTK_ANA_REG ("Ana_Get_Reg offset= 0x%x  Rdata = 0x%x ret = %d\n",offset,Rdata,ret);
    return Rdata;
}
示例#5
0
void Ana_Backup_Reg(kal_uint32 u4Addr/*Kernel VA*/, kal_uint32 u4Val)
{
    volatile kal_uint32 *value;
    kal_uint32 offset = 0;
    PRINTK_ANA_REG("Ana_Backup_Reg Addr=%x Val=%x\n",u4Addr,u4Val);
    if (u4Addr >= ABB_MDSYS_BASE){
        offset =  u4Addr - ABB_MDSYS_BASE;
        value = (volatile kal_uint32  *)(p_gAnaBackReg+offset);
        *value = u4Val;
    }else{
        xlog_printk(ANDROID_LOG_INFO, "Sound","Ana_Backup_Reg failed!\n");
    }
}
示例#6
0
kal_uint32 Ana_Get_Backup_Memory(kal_uint32 u4Addr)
{
   volatile kal_uint32 *value;
   kal_uint32 offset = 0;
   PRINTK_ANA_REG("Ana_Get_Backup_Memory Addr=%x \n",u4Addr);
   if (u4Addr >= ABB_MDSYS_BASE){
       offset =  u4Addr - ABB_MDSYS_BASE;
       value = (volatile kal_uint32  *)(p_gAnaBackReg+offset);
       return *value;
   }else{
       xlog_printk(ANDROID_LOG_INFO, "Sound","Ana_Backup_Reg failed!\n");
       return (0xc5c5c5c5);
   }
}
示例#7
0
void Ana_Set_Reg(kal_uint32 offset, kal_uint32 value, kal_uint32 mask)
{
   volatile kal_uint32 address = (offset);
   volatile kal_uint32 *Analog_Register = (volatile kal_uint32 *)address;

   volatile kal_uint32 val_tmp;
   PRINTK_ANA_REG("Ana_Set_Reg offset=%x, value=%x, mask=%x \n",offset,value,mask);
   val_tmp = READ_REGISTER_UINT32(Analog_Register);
   val_tmp &= (~mask);
   mt65xx_reg_sync_writel(val_tmp,Analog_Register);
   val_tmp = READ_REGISTER_UINT32(Analog_Register);
   val_tmp |= (value&mask);
   mt65xx_reg_sync_writel(val_tmp,Analog_Register);

}
示例#8
0
kal_uint32 Ana_Check_Backup_Memory(kal_uint32 offset)
{
    kal_uint32 val_1=0, val_2=0, ret_value = 0;
    val_1 = Ana_Get_Reg(offset);
    val_2 = Ana_Get_Backup_Memory(offset);

    PRINTK_ANA_REG("Ana_Check_Backup_Memory ANA=0x%x, BACKUP=0x%x \n", val_1, val_2);

    if(val_1 == val_2)
        ret_value = 1;
    else
        ret_value = 0;

    return (ret_value);
}
示例#9
0
void Ana_Set_Reg(uint32 offset, uint32 value, uint32 mask)
{
    // set pmic register or analog CONTROL_IFACE_PATH
    int ret = 0;
    PRINTK_ANA_REG("Ana_Set_Reg offset= 0x%x , value = 0x%x mask = 0x%x\n", offset, value, mask);
#ifdef AUDIO_USING_WRAP_DRIVER
    uint32 Reg_Value = Ana_Get_Reg(offset);
    Reg_Value &= (~mask);
    Reg_Value |= (value & mask);
    ret = pwrap_write(offset, Reg_Value);
    Reg_Value = Ana_Get_Reg(offset);
    if ((Reg_Value & mask) != (value & mask))
    {
        //printk("Ana_Set_Reg offset= 0x%x , value = 0x%x mask = 0x%x ret = %d Reg_Value = 0x%x\n", offset, value, mask, ret, Reg_Value);
    }
#endif
}