int audio_configure(struct msm_audio *prtd) { struct audmgr_config cfg; int rc; if (prtd->enabled) return 0; /* refuse to start if we're not ready with first buffer */ if (!prtd->out[0].used) return -EIO; cfg.tx_rate = 0; cfg.rx_rate = RPC_AUD_DEF_SAMPLE_RATE_48000; cfg.def_method = RPC_AUD_DEF_METHOD_HOST_PCM; cfg.codec = RPC_AUD_DEF_CODEC_PCM; cfg.snd_method = RPC_SND_METHOD_MIDI; rc = audmgr_enable(&prtd->audmgr, &cfg); if (rc < 0) return rc; if (audpp_enable(AUDPP_ALSA_DECODER, audio_dsp_event, prtd)) { printk(KERN_ERR "audio: audpp_enable() failed\n"); audmgr_disable(&prtd->audmgr); return -ENODEV; } prtd->enabled = 1; return 0; }
/* must be called with audio->lock held */ static int audio_enable(struct audio *audio) { pr_info("audio_enable\n"); if (audio->enabled) return 0; /* refuse to start if we're not ready */ if (!audio->out[0].used || !audio->out[1].used) return -EIO; /* we start buffers 0 and 1, so buffer 0 will be the * next one the dsp will want */ audio->out_tail = 0; audio->out_needed = 0; audio_prevent_sleep(audio); if (audpp_enable(-1, audio_dsp_event, audio)) { MM_ERR("audpp_enable() failed\n"); audio_allow_sleep(audio); return -ENODEV; } audio->enabled = 1; htc_pwrsink_set(PWRSINK_AUDIO, 100); return 0; }
int alsa_audio_configure(struct msm_audio *prtd) { if (prtd->enabled) return 0; MM_DBG("\n"); if (prtd->dir == SNDRV_PCM_STREAM_PLAYBACK) { prtd->out_weight = 100; if (audpp_enable(-1, alsa_dsp_event, prtd)) { MM_ERR("audpp_enable() failed\n"); return -ENODEV; } } if (prtd->dir == SNDRV_PCM_STREAM_CAPTURE) { if (audpreproc_enable(prtd->session_id, &audpreproc_dsp_event, prtd)) { MM_ERR("audpreproc_enable failed\n"); return -ENODEV; } if (msm_adsp_enable(prtd->audrec)) { MM_ERR("msm_adsp_enable(audrec) enable failed\n"); audpreproc_disable(prtd->session_id, prtd); return -ENODEV; } alsa_in_enc_config(prtd, 1); } prtd->enabled = 1; return 0; }
/* must be called with audio->lock held */ static int audio_enable(struct audio *audio) { struct audmgr_config cfg; int rc; pr_info("audio_mp3_enable()\n"); if (audio->enabled) return 0; audio->out_tail = 0; audio->out_needed = 0; cfg.tx_rate = RPC_AUD_DEF_SAMPLE_RATE_NONE; cfg.rx_rate = RPC_AUD_DEF_SAMPLE_RATE_48000; cfg.def_method = RPC_AUD_DEF_METHOD_PLAYBACK; cfg.codec = RPC_AUD_DEF_CODEC_MP3; cfg.snd_method = RPC_SND_METHOD_MIDI; audio_prevent_sleep(audio); audio->audmgr.cb = audio_mp3_audmgr_cb; rc = audmgr_enable(&audio->audmgr, &cfg); if (rc < 0) { pr_err("audio_mp3: audmgr_enable() failed\n"); audio_allow_sleep(audio); return rc; } if (msm_adsp_get("AUDPLAY0TASK", &audio->audplay, &audplay_adsp_ops, audio)) { pr_err("audio_mp3: failed to get audplay0 dsp module\n"); goto err_get_adsp; } if (msm_adsp_enable(audio->audplay)) { pr_err("audio_mp3: msm_adsp_enable(audplay) failed\n"); goto err_enable_adsp; } if (audpp_enable(audio->dec_id, audio_dsp_event, audio_modem_event, audio)) { pr_err("audio_mp3: audpp_enable() failed\n"); goto err_enable_audpp; } atomic_set(&audio->image_swap, 0); audio->enabled = 1; htc_pwrsink_audio_set(PWRSINK_AUDIO_MP3, 100); return 0; err_enable_audpp: msm_adsp_disable(audio->audplay); err_enable_adsp: msm_adsp_put(audio->audplay); err_get_adsp: audmgr_disable(&audio->audmgr); audio_allow_sleep(audio); return -ENODEV; }
/* must be called with audio->lock held */ static int audio_enable(struct audio *audio) { struct audmgr_config cfg; int rc; MM_INFO("[CLK]\n"); /* Macro prints the file name and function */ if (audio->enabled) return 0; /* refuse to start if we're not ready */ if (!audio->out[0].used || !audio->out[1].used) return -EIO; /* we start buffers 0 and 1, so buffer 0 will be the * next one the dsp will want */ audio->out_tail = 0; audio->out_needed = 0; cfg.tx_rate = RPC_AUD_DEF_SAMPLE_RATE_NONE; cfg.rx_rate = RPC_AUD_DEF_SAMPLE_RATE_48000; cfg.def_method = RPC_AUD_DEF_METHOD_HOST_PCM; cfg.codec = RPC_AUD_DEF_CODEC_PCM; cfg.snd_method = RPC_SND_METHOD_MIDI; audio_prevent_sleep(audio); rc = audmgr_enable(&audio->audmgr, &cfg); if (rc < 0) { audio_allow_sleep(audio); return rc; } #ifdef CONFIG_CCI_SPEAKER /*cci.johnny_lee, for pop-noise issue */ MM_INFO("[CLK] speaker_audmgr_enable(true)\n"); if (speaker_audmgr_enable(true) < 0) { MM_ERR("[CLK] speaker_audmgr_enable return failed, we will retry after 600ms\n"); } else { msleep(80); } #endif if (audpp_enable(-1, audio_dsp_event, audio)) { MM_ERR("audpp_enable() failed\n"); audmgr_disable(&audio->audmgr); audio_allow_sleep(audio); return -ENODEV; } audio->enabled = 1; htc_pwrsink_set(PWRSINK_AUDIO, 100); return 0; }
/* must be called with audio->lock held */ static int audio_enable(struct audio *audio) { struct audmgr_config cfg; int rc; MM_INFO("\n"); /* Macro prints the file name and function */ if (audio->enabled) return 0; /* refuse to start if we're not ready */ if (!audio->out[0].used || !audio->out[1].used) return -EIO; /* we start buffers 0 and 1, so buffer 0 will be the * next one the dsp will want */ audio->out_tail = 0; audio->out_needed = 0; cfg.tx_rate = RPC_AUD_DEF_SAMPLE_RATE_NONE; cfg.rx_rate = RPC_AUD_DEF_SAMPLE_RATE_48000; cfg.def_method = RPC_AUD_DEF_METHOD_HOST_PCM; cfg.codec = RPC_AUD_DEF_CODEC_PCM; cfg.snd_method = RPC_SND_METHOD_MIDI; audio_prevent_sleep(audio); rc = audmgr_enable(&audio->audmgr, &cfg); if (rc < 0) { audio_allow_sleep(audio); return rc; } #ifdef CONFIG_AMP_MAX97000 if(!audio_enabled) { audio_enabled = 1; //max97000_resume(); } #endif if (audpp_enable(-1, audio_dsp_event, audio)) { MM_ERR("audpp_enable() failed\n"); audmgr_disable(&audio->audmgr); audio_allow_sleep(audio); return -ENODEV; } audio->enabled = 1; htc_pwrsink_set(PWRSINK_AUDIO, 100); return 0; }
/* must be called with audio->lock held */ static int audio_enable(struct audio *audio) { struct audmgr_config cfg; int rc; pr_info("audio_enable()\n"); if (audio->enabled) return 0; /* refuse to start if we're not ready */ if (!audio->out[0].used || !audio->out[1].used) return -EIO; /* we start buffers 0 and 1, so buffer 0 will be the * next one the dsp will want */ audio->out_tail = 0; audio->out_needed = 0; cfg.tx_rate = RPC_AUD_DEF_SAMPLE_RATE_NONE; cfg.rx_rate = RPC_AUD_DEF_SAMPLE_RATE_48000; cfg.def_method = RPC_AUD_DEF_METHOD_HOST_PCM; cfg.codec = RPC_AUD_DEF_CODEC_PCM; cfg.snd_method = RPC_SND_METHOD_MIDI; audio_prevent_sleep(audio); rc = audmgr_enable(&audio->audmgr, &cfg); if (rc < 0) { audio_allow_sleep(audio); return rc; } if (audpp_enable(-1, audio_dsp_event, audio)) { pr_err("audio: audpp_enable() failed\n"); audmgr_disable(&audio->audmgr); audio_allow_sleep(audio); return -ENODEV; } audio->enabled = 1; htc_pwrsink_set(PWRSINK_AUDIO, 100); return 0; }