static int mtk_voice_md2_bt_pm_ops_resume(struct device *device)
{
    bool b_modem1_speech_on;
    bool b_modem2_speech_on;
    AudDrv_Clk_On();//should enable clk for access reg
    b_modem1_speech_on = (bool)(Afe_Get_Reg(PCM2_INTF_CON) & 0x1);
    b_modem2_speech_on = (bool)(Afe_Get_Reg(PCM_INTF_CON) & 0x1);
    AudDrv_Clk_Off();
    if (b_modem1_speech_on == true || b_modem2_speech_on == true)
    {
        //clkmux_sel(MT_MUX_AUDINTBUS, 0, "AUDIO");
        SetClkCfg(AUDIO_CLK_CFG_4, 0x1000000, 0x1000000);
        return 0;
    }

    return 0;
}
Example #2
0
static ssize_t mt_soc_debug_write(struct file *f, const char __user *buf,
                                  size_t count, loff_t *offset)
{
    int ret = 0;
    char InputString[256];
    char *token1 = NULL ;
    char *token2 = NULL ;
    char *token3 = NULL;
    char *token4 = NULL;
    char *token5 = NULL;
    char *temp = NULL;

    long unsigned int regaddr = 0;
    long unsigned int regvalue = 0;
    char delim[] = " ,";
    memset((void *)InputString, 0, 256);
    if (copy_from_user((InputString), buf, count))
    {
        printk("copy_from_user mt_soc_debug_write count = %zu temp = %s\n", count, InputString);
    }
    temp = kstrdup(InputString, GFP_KERNEL);
    printk("copy_from_user mt_soc_debug_write count = %zu temp = %s pointer = %p\n", count, InputString, InputString);
    token1 = strsep(&temp, delim);
    printk("token1 \n");
    printk("token1 = %s\n", token1);
    token2 = strsep(&temp, delim);
    printk("token2 = %s\n", token2);
    token3 = strsep(&temp, delim);
    printk("token3 = %s\n", token3);
    token4 = strsep(&temp, delim);
    printk("token4 = %s\n", token4);
    token5 = strsep(&temp, delim);
    printk("token5 = %s\n", token5);

    if (strcmp(token1, ParSetkeyAfe) == 0)
    {
        printk("strcmp (token1,ParSetkeyAfe) \n");
        ret = strict_strtoul(token3, 16, &regaddr);
        ret = strict_strtoul(token5, 16, &regvalue);
        printk("%s regaddr = 0x%lu regvalue = 0x%lu\n", ParSetkeyAfe, regaddr, regvalue);
        Afe_Set_Reg(regaddr,  regvalue, 0xffffffff);
        regvalue = Afe_Get_Reg(regaddr);
        printk("%s regaddr = 0x%lu regvalue = 0x%lu\n", ParSetkeyAfe, regaddr, regvalue);
    }
    if (strcmp(token1, ParSetkeyAna) == 0)
    {
        printk("strcmp (token1,ParSetkeyAna)\n");
        ret = strict_strtoul(token3, 16, &regaddr);
        ret =  strict_strtoul(token5, 16, &regvalue);
        printk("%s regaddr = 0x%lu regvalue = 0x%lu\n", ParSetkeyAna, regaddr, regvalue);
        //clk_buf_ctrl(CLK_BUF_AUDIO, true); //k2 need?
        AudDrv_Clk_On();
        audckbufEnable(true);
        Ana_Set_Reg(regaddr,  regvalue, 0xffffffff);
        regvalue = Ana_Get_Reg(regaddr);
        printk("%s regaddr = 0x%lu regvalue = 0x%lu\n", ParSetkeyAna, regaddr, regvalue);
    }
    if (strcmp(token1, ParSetkeyCfg) == 0)
    {
        printk("strcmp (token1,ParSetkeyCfg)\n");
        ret =  strict_strtoul(token3, 16, &regaddr);
        ret =  strict_strtoul(token5, 16, &regvalue);
        printk("%s regaddr = 0x%lu regvalue = 0x%lu\n", ParSetkeyCfg, regaddr, regvalue);
        SetClkCfg(regaddr,  regvalue, 0xffffffff);
        regvalue = GetClkCfg(regaddr);
        printk("%s regaddr = 0x%lu regvalue = 0x%lu\n", ParSetkeyCfg, regaddr, regvalue);
    }
    if (strcmp(token1, PareGetkeyAfe) == 0)
    {
        printk("strcmp (token1,PareGetkeyAfe)\n");
        ret =  strict_strtoul(token3, 16, &regaddr);
        regvalue = Afe_Get_Reg(regaddr);
        printk("%s regaddr = 0x%lu regvalue = 0x%lu\n", PareGetkeyAfe, regaddr, regvalue);
    }
    if (strcmp(token1, PareGetkeyAna) == 0)
    {
        printk("strcmp (token1,PareGetkeyAna)\n");
        ret =  strict_strtoul(token3, 16, &regaddr);
        regvalue = Ana_Get_Reg(regaddr);
        printk("%s regaddr = 0x%lu regvalue = 0x%lu\n", PareGetkeyAna, regaddr, regvalue);
    }
    return count;
}