ASoC: pcm: Add pcm operation for pcm ioctl.
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / sound / soc / soc-pcm.c
index 5bd8270beea4a812520ed9472e0c84ae7fc62d28..4e3be82e79cb433d7086e36df754d434156af674 100644 (file)
@@ -1647,6 +1647,17 @@ out:
        return ret;
 }
 
+static int soc_pcm_ioctl(struct snd_pcm_substream *substream,
+                    unsigned int cmd, void *arg)
+{
+       struct snd_soc_pcm_runtime *rtd = substream->private_data;
+       struct snd_soc_platform *platform = rtd->platform;
+
+       if (platform->driver->ops->ioctl)
+               return platform->driver->ops->ioctl(substream, cmd, arg);
+       return snd_pcm_lib_ioctl(substream, cmd, arg);
+}
+
 static int dpcm_run_update_shutdown(struct snd_soc_pcm_runtime *fe, int stream)
 {
        struct snd_pcm_substream *substream =
@@ -2051,6 +2062,7 @@ int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num)
                rtd->ops.hw_free        = dpcm_fe_dai_hw_free;
                rtd->ops.close          = dpcm_fe_dai_close;
                rtd->ops.pointer        = soc_pcm_pointer;
+               rtd->ops.ioctl          = soc_pcm_ioctl;
        } else {
                rtd->ops.open           = soc_pcm_open;
                rtd->ops.hw_params      = soc_pcm_hw_params;
@@ -2059,6 +2071,7 @@ int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num)
                rtd->ops.hw_free        = soc_pcm_hw_free;
                rtd->ops.close          = soc_pcm_close;
                rtd->ops.pointer        = soc_pcm_pointer;
+               rtd->ops.ioctl          = soc_pcm_ioctl;
        }
 
        if (platform->driver->ops) {