static int audio_enable_iir(struct audio_in *audio, int enable) { if (audio->iir_enable != enable) { audio->iir_enable = enable; if (audio->running) audio_dsp_set_iir(audio); } return 0; }
static void audrec_dsp_event(void *data, unsigned id, size_t len, void (*getevent)(void *ptr, size_t len)) { struct audio_in *audio = data; uint16_t msg[3]; getevent(msg, sizeof(msg)); switch (id) { case AUDREC_MSG_CMD_CFG_DONE_MSG: if (msg[0] & AUDREC_MSG_CFG_DONE_TYPE_0_UPDATE) { if (msg[0] & AUDREC_MSG_CFG_DONE_TYPE_0_ENA) { MM_INFO("CFG ENABLED\n"); audio_in_encoder_config(audio); } else { MM_INFO("CFG SLEEP\n"); audio->running = 0; audio->tx_agc_enable = 0; audio->ns_enable = 0; audio->iir_enable = 0; } } else { MM_INFO("CMD_CFG_DONE %x\n", msg[0]); } break; case AUDREC_MSG_CMD_AREC_PARAM_CFG_DONE_MSG: { MM_INFO("PARAM CFG DONE\n"); audio->running = 1; audio_dsp_set_tx_agc(audio); audio_dsp_set_ns(audio); audio_dsp_set_iir(audio); break; } case AUDREC_MSG_FATAL_ERR_MSG: MM_ERR("ERROR %x\n", msg[0]); break; case AUDREC_MSG_PACKET_READY_MSG: /* REC_DBG("type %x, count %d", msg[0], (msg[1] | (msg[2] << 16))); */ audio_in_get_dsp_frames(audio); break; case ADSP_MESSAGE_ID: MM_DBG("Received ADSP event: module \ enable/disable(audrectask)\n"); break; default: MM_ERR("unknown event %d\n", id); } }
static void audrec_dsp_event(void *data, unsigned id, size_t len, void (*getevent)(void *ptr, size_t len)) { struct audio_in *audio = NULL; uint16_t msg[3]; if (data) audio = data; else { MM_ERR("invalid data for event %x\n", id); return; } getevent(msg, sizeof(msg)); switch (id) { case AUDREC_MSG_CMD_CFG_DONE_MSG: { if (msg[0] & AUDREC_MSG_CFG_DONE_ENC_ENA) { audio->audrec_obj_idx = msg[1]; MM_INFO("CFG ENABLED\n"); audpcm_in_encmem_config(audio); } else { MM_INFO("CFG SLEEP\n"); audio->running = 0; audio->tx_agc_enable = 0; audio->ns_enable = 0; audio->iir_enable = 0; } break; } case AUDREC_MSG_CMD_AREC_MEM_CFG_DONE_MSG: { MM_DBG("AREC_MEM_CFG_DONE_MSG\n"); audpcm_in_encparam_config(audio); break; } case AUDREC_MSG_CMD_AREC_PARAM_CFG_DONE_MSG: { MM_INFO("PARAM CFG DONE\n"); audio->running = 1; audio_dsp_set_tx_agc(audio); audio_dsp_set_ns(audio); audio_dsp_set_iir(audio); break; } case AUDREC_MSG_NO_EXT_PKT_AVAILABLE_MSG: { MM_DBG("ERROR %x\n", msg[0]); break; } case AUDREC_MSG_PACKET_READY_MSG: { struct audrec_msg_packet_ready_msg pkt_ready_msg; getevent(&pkt_ready_msg, AUDREC_MSG_PACKET_READY_MSG_LEN); MM_DBG("UP_PACKET_READY_MSG: write cnt msw %d \ write cnt lsw %d read cnt msw %d read cnt lsw %d \n",\ pkt_ready_msg.pkt_counter_msw, \ pkt_ready_msg.pkt_counter_lsw, \ pkt_ready_msg.pkt_read_cnt_msw, \ pkt_ready_msg.pkt_read_cnt_lsw); audpcm_in_get_dsp_frames(audio); break; } case ADSP_MESSAGE_ID: { MM_DBG("Received ADSP event: module \ enable/disable(audrectask)\n"); break; } default: MM_ERR("unknown event %d\n", id); } }