static long audio_ioctl_shared(struct file *file, unsigned int cmd, void *arg) { struct q6audio_aio *audio = file->private_data; int rc = 0; switch (cmd) { case AUDIO_START: { struct asm_wma_cfg wma_cfg; struct msm_audio_wma_config_v2 *wma_config; pr_debug("%s[%p]: AUDIO_START session_id[%d]\n", __func__, audio, audio->ac->session); if (audio->feedback == NON_TUNNEL_MODE) { /* Configure PCM output block */ rc = q6asm_enc_cfg_blk_pcm(audio->ac, audio->pcm_cfg.sample_rate, audio->pcm_cfg.channel_count); if (rc < 0) { pr_err("pcm output block config failed\n"); break; } } wma_config = (struct msm_audio_wma_config_v2 *)audio->codec_cfg; wma_cfg.format_tag = wma_config->format_tag; wma_cfg.ch_cfg = wma_config->numchannels; wma_cfg.sample_rate = wma_config->samplingrate; wma_cfg.avg_bytes_per_sec = wma_config->avgbytespersecond; wma_cfg.block_align = wma_config->block_align; wma_cfg.valid_bits_per_sample = wma_config->validbitspersample; wma_cfg.ch_mask = wma_config->channelmask; wma_cfg.encode_opt = wma_config->encodeopt; /* Configure Media format block */ rc = q6asm_media_format_block_wma(audio->ac, &wma_cfg, audio->ac->stream_id); if (rc < 0) { pr_err("cmd media format block failed\n"); break; } rc = audio_aio_enable(audio); audio->eos_rsp = 0; audio->eos_flag = 0; if (!rc) { audio->enabled = 1; } else { audio->enabled = 0; pr_err("Audio Start procedure failed rc=%d\n", rc); break; } pr_debug("AUDIO_START success enable[%d]\n", audio->enabled); if (audio->stopped == 1) audio->stopped = 0; break; } default: pr_err("%s: Unknown ioctl cmd = %d", __func__, cmd); break; } return rc; }
static long audio_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { struct q6audio_aio *audio = file->private_data; int rc = 0; switch (cmd) { case AUDIO_START: { struct asm_wma_cfg wma_cfg; struct msm_audio_wma_config_v2 *wma_config; pr_debug("%s[%p]: AUDIO_START session_id[%d]\n", __func__, audio, audio->ac->session); if (audio->feedback == NON_TUNNEL_MODE) { rc = q6asm_enc_cfg_blk_pcm(audio->ac, audio->pcm_cfg.sample_rate, audio->pcm_cfg.channel_count); if (rc < 0) { pr_err("pcm output block config failed\n"); break; } } wma_config = (struct msm_audio_wma_config_v2 *)audio->codec_cfg; wma_cfg.format_tag = wma_config->format_tag; wma_cfg.ch_cfg = wma_config->numchannels; wma_cfg.sample_rate = wma_config->samplingrate; wma_cfg.avg_bytes_per_sec = wma_config->avgbytespersecond; wma_cfg.block_align = wma_config->block_align; wma_cfg.valid_bits_per_sample = wma_config->validbitspersample; wma_cfg.ch_mask = wma_config->channelmask; wma_cfg.encode_opt = wma_config->encodeopt; rc = q6asm_media_format_block_wma(audio->ac, &wma_cfg); if (rc < 0) { pr_err("cmd media format block failed\n"); break; } rc = audio_aio_enable(audio); audio->eos_rsp = 0; audio->eos_flag = 0; if (!rc) { audio->enabled = 1; } else { audio->enabled = 0; pr_err("Audio Start procedure failed rc=%d\n", rc); break; } pr_debug("AUDIO_START success enable[%d]\n", audio->enabled); if (audio->stopped == 1) audio->stopped = 0; break; } case AUDIO_GET_WMA_CONFIG_V2: { if (copy_to_user((void *)arg, audio->codec_cfg, sizeof(struct msm_audio_wma_config_v2))) { rc = -EFAULT; break; } break; } case AUDIO_SET_WMA_CONFIG_V2: { if (copy_from_user(audio->codec_cfg, (void *)arg, sizeof(struct msm_audio_wma_config_v2))) { rc = -EFAULT; break; } break; } default: pr_debug("%s[%p]: Calling utils ioctl\n", __func__, audio); rc = audio->codec_ioctl(file, cmd, arg); if (rc) pr_err("Failed in utils_ioctl: %d\n", rc); } return rc; }