return 0;
 }
+
+int snd_soc_pcm_component_ioctl(struct snd_pcm_substream *substream,
+                               unsigned int cmd, void *arg)
+{
+       struct snd_soc_pcm_runtime *rtd = substream->private_data;
+       struct snd_soc_component *component;
+       struct snd_soc_rtdcom_list *rtdcom;
+
+       for_each_rtdcom(rtd, rtdcom) {
+               component = rtdcom->component;
+
+               /* FIXME: use 1st ioctl */
+               if (component->driver->ops &&
+                   component->driver->ops->ioctl)
+                       return component->driver->ops->ioctl(substream,
+                                                            cmd, arg);
+       }
+
+       return snd_pcm_lib_ioctl(substream, cmd, arg);
+}
 
        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_component *component;
-       struct snd_soc_rtdcom_list *rtdcom;
-
-       for_each_rtdcom(rtd, rtdcom) {
-               component = rtdcom->component;
-
-               if (!component->driver->ops ||
-                   !component->driver->ops->ioctl)
-                       continue;
-
-               /* FIXME: use 1st ioctl */
-               return component->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 =
                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;
+               rtd->ops.ioctl          = snd_soc_pcm_component_ioctl;
        } else {
                rtd->ops.open           = soc_pcm_open;
                rtd->ops.hw_params      = soc_pcm_hw_params;
                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;
+               rtd->ops.ioctl          = snd_soc_pcm_component_ioctl;
        }
 
        for_each_rtdcom(rtd, rtdcom) {