#define hwdep_compat_ioctl NULL
 #endif
 
-static const struct snd_hwdep_ops hwdep_ops = {
-       .read           = hwdep_read,
-       .write          = hwdep_write,
-       .release        = hwdep_release,
-       .poll           = hwdep_poll,
-       .ioctl          = hwdep_ioctl,
-       .ioctl_compat   = hwdep_compat_ioctl,
-};
-
 int snd_efw_create_hwdep_device(struct snd_efw *efw)
 {
+       static const struct snd_hwdep_ops ops = {
+               .read           = hwdep_read,
+               .write          = hwdep_write,
+               .release        = hwdep_release,
+               .poll           = hwdep_poll,
+               .ioctl          = hwdep_ioctl,
+               .ioctl_compat   = hwdep_compat_ioctl,
+       };
        struct snd_hwdep *hwdep;
        int err;
 
                goto end;
        strcpy(hwdep->name, "Fireworks");
        hwdep->iface = SNDRV_HWDEP_IFACE_FW_FIREWORKS;
-       hwdep->ops = hwdep_ops;
+       hwdep->ops = ops;
        hwdep->private_data = efw;
        hwdep->exclusive = true;
 end:
 
        spin_unlock_irqrestore(&efw->lock, flags);
 }
 
-static struct snd_rawmidi_ops midi_capture_ops = {
-       .open           = midi_capture_open,
-       .close          = midi_capture_close,
-       .trigger        = midi_capture_trigger,
-};
-
-static struct snd_rawmidi_ops midi_playback_ops = {
-       .open           = midi_playback_open,
-       .close          = midi_playback_close,
-       .trigger        = midi_playback_trigger,
-};
-
 static void set_midi_substream_names(struct snd_efw *efw,
                                     struct snd_rawmidi_str *str)
 {
 
 int snd_efw_create_midi_devices(struct snd_efw *efw)
 {
+       static struct snd_rawmidi_ops capture_ops = {
+               .open           = midi_capture_open,
+               .close          = midi_capture_close,
+               .trigger        = midi_capture_trigger,
+       };
+       static struct snd_rawmidi_ops playback_ops = {
+               .open           = midi_playback_open,
+               .close          = midi_playback_close,
+               .trigger        = midi_playback_trigger,
+       };
        struct snd_rawmidi *rmidi;
        struct snd_rawmidi_str *str;
        int err;
                rmidi->info_flags |= SNDRV_RAWMIDI_INFO_INPUT;
 
                snd_rawmidi_set_ops(rmidi, SNDRV_RAWMIDI_STREAM_INPUT,
-                                   &midi_capture_ops);
+                                   &capture_ops);
 
                str = &rmidi->streams[SNDRV_RAWMIDI_STREAM_INPUT];
 
                rmidi->info_flags |= SNDRV_RAWMIDI_INFO_OUTPUT;
 
                snd_rawmidi_set_ops(rmidi, SNDRV_RAWMIDI_STREAM_OUTPUT,
-                                   &midi_playback_ops);
+                                   &playback_ops);
 
                str = &rmidi->streams[SNDRV_RAWMIDI_STREAM_OUTPUT];
 
 
        return amdtp_stream_pcm_pointer(&efw->rx_stream);
 }
 
-static const struct snd_pcm_ops pcm_capture_ops = {
-       .open           = pcm_open,
-       .close          = pcm_close,
-       .ioctl          = snd_pcm_lib_ioctl,
-       .hw_params      = pcm_capture_hw_params,
-       .hw_free        = pcm_capture_hw_free,
-       .prepare        = pcm_capture_prepare,
-       .trigger        = pcm_capture_trigger,
-       .pointer        = pcm_capture_pointer,
-       .page           = snd_pcm_lib_get_vmalloc_page,
-};
-
-static const struct snd_pcm_ops pcm_playback_ops = {
-       .open           = pcm_open,
-       .close          = pcm_close,
-       .ioctl          = snd_pcm_lib_ioctl,
-       .hw_params      = pcm_playback_hw_params,
-       .hw_free        = pcm_playback_hw_free,
-       .prepare        = pcm_playback_prepare,
-       .trigger        = pcm_playback_trigger,
-       .pointer        = pcm_playback_pointer,
-       .page           = snd_pcm_lib_get_vmalloc_page,
-       .mmap           = snd_pcm_lib_mmap_vmalloc,
-};
-
 int snd_efw_create_pcm_devices(struct snd_efw *efw)
 {
+       static const struct snd_pcm_ops capture_ops = {
+               .open           = pcm_open,
+               .close          = pcm_close,
+               .ioctl          = snd_pcm_lib_ioctl,
+               .hw_params      = pcm_capture_hw_params,
+               .hw_free        = pcm_capture_hw_free,
+               .prepare        = pcm_capture_prepare,
+               .trigger        = pcm_capture_trigger,
+               .pointer        = pcm_capture_pointer,
+               .page           = snd_pcm_lib_get_vmalloc_page,
+       };
+       static const struct snd_pcm_ops playback_ops = {
+               .open           = pcm_open,
+               .close          = pcm_close,
+               .ioctl          = snd_pcm_lib_ioctl,
+               .hw_params      = pcm_playback_hw_params,
+               .hw_free        = pcm_playback_hw_free,
+               .prepare        = pcm_playback_prepare,
+               .trigger        = pcm_playback_trigger,
+               .pointer        = pcm_playback_pointer,
+               .page           = snd_pcm_lib_get_vmalloc_page,
+               .mmap           = snd_pcm_lib_mmap_vmalloc,
+       };
        struct snd_pcm *pcm;
        int err;
 
 
        pcm->private_data = efw;
        snprintf(pcm->name, sizeof(pcm->name), "%s PCM", efw->card->shortname);
-       snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &pcm_playback_ops);
-       snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &pcm_capture_ops);
+       snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &playback_ops);
+       snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &capture_ops);
 end:
        return err;
 }