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: { rc = audio_ioctl_shared(file, cmd, (void *)arg); break; } case AUDIO_GET_AAC_CONFIG: { if (copy_to_user((void *)arg, audio->codec_cfg, sizeof(struct msm_audio_aac_config))) { pr_err("%s: copy_to_user for AUDIO_GET_AAC_CONFIG failed\n" , __func__); rc = -EFAULT; break; } break; } case AUDIO_SET_AAC_CONFIG: { struct msm_audio_aac_config aac_config; if (copy_from_user(&aac_config, (void *)arg, sizeof(aac_config))) { pr_err("%s: copy_from_user for AUDIO_SET_AAC_CONFIG failed\n" , __func__); rc = -EFAULT; } rc = audio_ioctl_shared(file, cmd, &aac_config); if (rc) pr_err("%s:AUDIO_SET_AAC_CONFIG failed. Rc= %d\n", __func__, rc); break; } case AUDIO_SET_AAC_MIX_CONFIG: { u32 mix_config; pr_debug("%s, AUDIO_SET_AAC_MIX_CONFIG", __func__); if (copy_from_user(&mix_config, (void *)arg, sizeof(u32))) { pr_err("%s: copy_from_user for AUDIO_SET_AAC_MIX_CONFIG failed\n", __func__); rc = -EFAULT; break; } rc = audio_ioctl_shared(file, cmd, &mix_config); if (rc) pr_err("%s:AUDIO_SET_AAC_CONFIG failed. Rc= %d\n", __func__, rc); break; } default: { pr_debug("Calling utils ioctl\n"); rc = audio->codec_ioctl(file, cmd, arg); } } 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: { rc = audio_ioctl_shared(file, cmd, (void *)arg); break; } case AUDIO_GET_ALAC_CONFIG: { if (copy_to_user((void *)arg, audio->codec_cfg, sizeof(struct msm_audio_alac_config))) { pr_err("%s:copy_to_user for AUDIO_GET_ALAC_CONFIG failed\n", __func__); rc = -EFAULT; break; } break; } case AUDIO_SET_ALAC_CONFIG: { if (copy_from_user(audio->codec_cfg, (void *)arg, sizeof(struct msm_audio_alac_config))) { pr_err("%s:copy_from_user for AUDIO_SET_ALAC_CONFIG failed\n", __func__); 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); break; } } return rc; }