static int audio_dsp_set_ns(struct audio_in *audio) { audpreproc_cmd_cfg_ns_params cmd; memset(&cmd, 0, sizeof(cmd)); audio->ns_cfg.cmd_id = AUDPREPROC_CMD_CFG_NS_PARAMS; if (audio->ns_enable) { /* cmd.ec_mode_new is fixed as 0x0064 when enable * from sample code */ audio->ns_cfg.ec_mode_new = AUDPREPROC_CMD_EC_MODE_NEW_NS_ENA | AUDPREPROC_CMD_EC_MODE_NEW_HB_ENA | AUDPREPROC_CMD_EC_MODE_NEW_VA_ENA; } else { audio->ns_cfg.ec_mode_new = AUDPREPROC_CMD_EC_MODE_NEW_NLMS_DIS | AUDPREPROC_CMD_EC_MODE_NEW_DES_DIS | AUDPREPROC_CMD_EC_MODE_NEW_NS_DIS | AUDPREPROC_CMD_EC_MODE_NEW_CNI_DIS | AUDPREPROC_CMD_EC_MODE_NEW_NLES_DIS | AUDPREPROC_CMD_EC_MODE_NEW_HB_DIS | AUDPREPROC_CMD_EC_MODE_NEW_VA_DIS | AUDPREPROC_CMD_EC_MODE_NEW_PCD_DIS | AUDPREPROC_CMD_EC_MODE_NEW_FEHI_DIS | AUDPREPROC_CMD_EC_MODE_NEW_NEHI_DIS | AUDPREPROC_CMD_EC_MODE_NEW_NLPP_DIS | AUDPREPROC_CMD_EC_MODE_NEW_FNE_DIS | AUDPREPROC_CMD_EC_MODE_NEW_PRENLMS_DIS; } cmd = audio->ns_cfg; return audio_send_queue_pre(audio, &cmd, sizeof(cmd)); }
static int audio_dsp_set_iir(struct audio_in *audio) { audpreproc_cmd_cfg_iir_tuning_filter_params cmd; memset(&cmd, 0, sizeof(cmd)); audio->iir_cfg.cmd_id = AUDPREPROC_CMD_CFG_IIR_TUNING_FILTER_PARAMS; if (audio->iir_enable) /* cmd.active_flag is 0xFFFF from sample code but 0x0001 here */ audio->iir_cfg.active_flag = AUDPREPROC_CMD_IIR_ACTIVE_FLAG_ENA; else audio->iir_cfg.active_flag = AUDPREPROC_CMD_IIR_ACTIVE_FLAG_DIS; cmd = audio->iir_cfg; return audio_send_queue_pre(audio, &cmd, sizeof(cmd)); }
static int audio_dsp_set_ns(struct audio_in *audio) { audpreproc_cmd_cfg_ns_params cmd; memset(&cmd, 0, sizeof(cmd)); cmd.cmd_id = AUDPREPROC_CMD_CFG_NS_PARAMS; if (audio->ns_enable) { /* cmd.ec_mode_new is fixed as 0x0064 when enable from sample code */ cmd.ec_mode_new = AUDPREPROC_CMD_EC_MODE_NEW_NS_ENA | AUDPREPROC_CMD_EC_MODE_NEW_HB_ENA | AUDPREPROC_CMD_EC_MODE_NEW_VA_ENA; memcpy(&cmd.dens_gamma_n, &audio->ns.ns_params, sizeof(audio->ns.ns_params)); } else { cmd.ec_mode_new = AUDPREPROC_CMD_EC_MODE_NEW_NLMS_DIS | AUDPREPROC_CMD_EC_MODE_NEW_DES_DIS | AUDPREPROC_CMD_EC_MODE_NEW_NS_DIS | AUDPREPROC_CMD_EC_MODE_NEW_CNI_DIS | AUDPREPROC_CMD_EC_MODE_NEW_NLES_DIS | AUDPREPROC_CMD_EC_MODE_NEW_HB_DIS | AUDPREPROC_CMD_EC_MODE_NEW_VA_DIS | AUDPREPROC_CMD_EC_MODE_NEW_PCD_DIS | AUDPREPROC_CMD_EC_MODE_NEW_FEHI_DIS | AUDPREPROC_CMD_EC_MODE_NEW_NEHI_DIS | AUDPREPROC_CMD_EC_MODE_NEW_NLPP_DIS | AUDPREPROC_CMD_EC_MODE_NEW_FNE_DIS | AUDPREPROC_CMD_EC_MODE_NEW_PRENLMS_DIS; } #if DEBUG MM_AUD_INFO("cmd_id = 0x%04x\n", cmd.cmd_id); MM_AUD_INFO("ec_mode_new = 0x%04x\n", cmd.ec_mode_new); MM_AUD_INFO("dens_gamma_n = 0x%04x\n", cmd.dens_gamma_n); MM_AUD_INFO("dens_nfe_block_size = 0x%04x\n", cmd.dens_nfe_block_size); MM_AUD_INFO("dens_limit_ns = 0x%04x\n", cmd.dens_limit_ns); MM_AUD_INFO("dens_limit_ns_d = 0x%04x\n", cmd.dens_limit_ns_d); MM_AUD_INFO("wb_gamma_e = 0x%04x\n", cmd.wb_gamma_e); MM_AUD_INFO("wb_gamma_n = 0x%04x\n", cmd.wb_gamma_n); #endif return audio_send_queue_pre(audio, &cmd, sizeof(cmd)); }
static int audio_dsp_set_tx_agc(struct audio_in *audio) { audpreproc_cmd_cfg_agc_params cmd; memset(&cmd, 0, sizeof(cmd)); audio->tx_agc_cfg.cmd_id = AUDPREPROC_CMD_CFG_AGC_PARAMS; if (audio->tx_agc_enable) { /* cmd.tx_agc_param_mask = 0xFE00 from sample code */ audio->tx_agc_cfg.tx_agc_param_mask = (1 << AUDPREPROC_CMD_TX_AGC_PARAM_MASK_COMP_SLOPE) | (1 << AUDPREPROC_CMD_TX_AGC_PARAM_MASK_COMP_TH) | (1 << AUDPREPROC_CMD_TX_AGC_PARAM_MASK_EXP_SLOPE) | (1 << AUDPREPROC_CMD_TX_AGC_PARAM_MASK_EXP_TH) | (1 << AUDPREPROC_CMD_TX_AGC_PARAM_MASK_COMP_AIG_FLAG) | (1 << AUDPREPROC_CMD_TX_AGC_PARAM_MASK_COMP_STATIC_GAIN) | (1 << AUDPREPROC_CMD_TX_AGC_PARAM_MASK_TX_AGC_ENA_FLAG); audio->tx_agc_cfg.tx_agc_enable_flag = AUDPREPROC_CMD_TX_AGC_ENA_FLAG_ENA; /* cmd.param_mask = 0xFFF0 from sample code */ audio->tx_agc_cfg.param_mask = (1 << AUDPREPROC_CMD_PARAM_MASK_RMS_TAY) | (1 << AUDPREPROC_CMD_PARAM_MASK_RELEASEK) | (1 << AUDPREPROC_CMD_PARAM_MASK_DELAY) | (1 << AUDPREPROC_CMD_PARAM_MASK_ATTACKK) | (1 << AUDPREPROC_CMD_PARAM_MASK_LEAKRATE_SLOW) | (1 << AUDPREPROC_CMD_PARAM_MASK_LEAKRATE_FAST) | (1 << AUDPREPROC_CMD_PARAM_MASK_AIG_RELEASEK) | (1 << AUDPREPROC_CMD_PARAM_MASK_AIG_MIN) | (1 << AUDPREPROC_CMD_PARAM_MASK_AIG_MAX) | (1 << AUDPREPROC_CMD_PARAM_MASK_LEAK_UP) | (1 << AUDPREPROC_CMD_PARAM_MASK_LEAK_DOWN) | (1 << AUDPREPROC_CMD_PARAM_MASK_AIG_ATTACKK); } else { audio->tx_agc_cfg.tx_agc_param_mask = (1 << AUDPREPROC_CMD_TX_AGC_PARAM_MASK_TX_AGC_ENA_FLAG); audio->tx_agc_cfg.tx_agc_enable_flag = AUDPREPROC_CMD_TX_AGC_ENA_FLAG_DIS; } cmd = audio->tx_agc_cfg; return audio_send_queue_pre(audio, &cmd, sizeof(cmd)); }
static int audio_dsp_set_tx_iir(struct audio_in *audio) { struct audpre_cmd_iir_config_type cmd; memset(&cmd, 0, sizeof(cmd)); cmd.cmd_id = AUDPREPROC_CMD_CFG_IIR_TUNING_FILTER_PARAMS; if (audio->iir_enable) { cmd.active_flag = AUDPREPROC_CMD_IIR_ACTIVE_FLAG_ENA; cmd.num_bands = audio->iir.num_bands; memcpy(&cmd.iir_params, &audio->iir.iir_params, sizeof(audio->iir.iir_params)); } else { cmd.active_flag = AUDPREPROC_CMD_IIR_ACTIVE_FLAG_DIS; } #if DEBUG MM_AUD_INFO("cmd_id = 0x%04x\n", cmd.cmd_id); MM_AUD_INFO("active_flag = 0x%04x\n", cmd.active_flag); #endif return audio_send_queue_pre(audio, &cmd, sizeof(cmd)); }
static int audio_dsp_set_agc(struct audio_in *audio) { audpreproc_cmd_cfg_agc_params cmd; memset(&cmd, 0, sizeof(cmd)); cmd.cmd_id = AUDPREPROC_CMD_CFG_AGC_PARAMS; if (audio->agc_enable) { /* cmd.tx_agc_param_mask = 0xFE00 from sample code */ cmd.tx_agc_param_mask = (1 << AUDPREPROC_CMD_TX_AGC_PARAM_MASK_COMP_SLOPE) | (1 << AUDPREPROC_CMD_TX_AGC_PARAM_MASK_COMP_TH) | (1 << AUDPREPROC_CMD_TX_AGC_PARAM_MASK_EXP_SLOPE) | (1 << AUDPREPROC_CMD_TX_AGC_PARAM_MASK_EXP_TH) | (1 << AUDPREPROC_CMD_TX_AGC_PARAM_MASK_COMP_AIG_FLAG) | (1 << AUDPREPROC_CMD_TX_AGC_PARAM_MASK_COMP_STATIC_GAIN) | (1 << AUDPREPROC_CMD_TX_AGC_PARAM_MASK_TX_AGC_ENA_FLAG); cmd.tx_agc_enable_flag = AUDPREPROC_CMD_TX_AGC_ENA_FLAG_ENA; memcpy(&cmd.static_gain, &audio->agc.agc_params[0], sizeof(uint16_t) * 6); /* cmd.param_mask = 0xFFF0 from sample code */ cmd.param_mask = (1 << AUDPREPROC_CMD_PARAM_MASK_RMS_TAY) | (1 << AUDPREPROC_CMD_PARAM_MASK_RELEASEK) | (1 << AUDPREPROC_CMD_PARAM_MASK_DELAY) | (1 << AUDPREPROC_CMD_PARAM_MASK_ATTACKK) | (1 << AUDPREPROC_CMD_PARAM_MASK_LEAKRATE_SLOW) | (1 << AUDPREPROC_CMD_PARAM_MASK_LEAKRATE_FAST) | (1 << AUDPREPROC_CMD_PARAM_MASK_AIG_RELEASEK) | (1 << AUDPREPROC_CMD_PARAM_MASK_AIG_MIN) | (1 << AUDPREPROC_CMD_PARAM_MASK_AIG_MAX) | (1 << AUDPREPROC_CMD_PARAM_MASK_LEAK_UP) | (1 << AUDPREPROC_CMD_PARAM_MASK_LEAK_DOWN) | (1 << AUDPREPROC_CMD_PARAM_MASK_AIG_ATTACKK); memcpy(&cmd.aig_attackk, &audio->agc.agc_params[6], sizeof(uint16_t) * 14); } else { cmd.tx_agc_param_mask = (1 << AUDPREPROC_CMD_TX_AGC_PARAM_MASK_TX_AGC_ENA_FLAG); cmd.tx_agc_enable_flag = AUDPREPROC_CMD_TX_AGC_ENA_FLAG_DIS; } #if DEBUG MM_AUD_INFO("cmd_id = 0x%04x\n", cmd.cmd_id); MM_AUD_INFO("tx_agc_param_mask = 0x%04x\n", cmd.tx_agc_param_mask); MM_AUD_INFO("tx_agc_enable_flag = 0x%04x\n", cmd.tx_agc_enable_flag); MM_AUD_INFO("static_gain = 0x%04x\n", cmd.static_gain); MM_AUD_INFO("adaptive_gain_flag = 0x%04x\n", cmd.adaptive_gain_flag); MM_AUD_INFO("expander_th = 0x%04x\n", cmd.expander_th); MM_AUD_INFO("expander_slope = 0x%04x\n", cmd.expander_slope); MM_AUD_INFO("compressor_th = 0x%04x\n", cmd.compressor_th); MM_AUD_INFO("compressor_slope = 0x%04x\n", cmd.compressor_slope); MM_AUD_INFO("param_mask = 0x%04x\n", cmd.param_mask); MM_AUD_INFO("aig_attackk = 0x%04x\n", cmd.aig_attackk); MM_AUD_INFO("aig_leak_down = 0x%04x\n", cmd.aig_leak_down); MM_AUD_INFO("aig_leak_up = 0x%04x\n", cmd.aig_leak_up); MM_AUD_INFO("aig_max = 0x%04x\n", cmd.aig_max); MM_AUD_INFO("aig_min = 0x%04x\n", cmd.aig_min); MM_AUD_INFO("aig_releasek = 0x%04x\n", cmd.aig_releasek); MM_AUD_INFO("aig_leakrate_fast = 0x%04x\n", cmd.aig_leakrate_fast); MM_AUD_INFO("aig_leakrate_slow = 0x%04x\n", cmd.aig_leakrate_slow); MM_AUD_INFO("attackk_msw = 0x%04x\n", cmd.attackk_msw); MM_AUD_INFO("attackk_lsw = 0x%04x\n", cmd.attackk_lsw); MM_AUD_INFO("delay = 0x%04x\n", cmd.delay); MM_AUD_INFO("releasek_msw = 0x%04x\n", cmd.releasek_msw); MM_AUD_INFO("releasek_lsw = 0x%04x\n", cmd.releasek_lsw); MM_AUD_INFO("rms_tav = 0x%04x\n", cmd.rms_tav); #endif return audio_send_queue_pre(audio, &cmd, sizeof(cmd)); }