static int loopback_proc_new(struct loopback *loopback, int cidx)
 {
        char name[32];
-       struct snd_info_entry *entry;
-       int err;
 
        snprintf(name, sizeof(name), "cable#%d", cidx);
-       err = snd_card_proc_new(loopback->card, name, &entry);
-       if (err < 0)
-               return err;
-
-       snd_info_set_text_ops(entry, loopback, print_cable_info);
-       return 0;
+       return snd_card_ro_proc_new(loopback->card, name, loopback,
+                                   print_cable_info);
 }
 
 static int loopback_probe(struct platform_device *devptr)
 
 
 static void dummy_proc_init(struct snd_dummy *chip)
 {
-       struct snd_info_entry *entry;
-
-       if (!snd_card_proc_new(chip->card, "dummy_pcm", &entry)) {
-               snd_info_set_text_ops(entry, chip, dummy_proc_read);
-               entry->c.text.write = dummy_proc_write;
-               entry->mode |= 0200;
-               entry->private_data = chip;
-       }
+       snd_card_rw_proc_new(chip->card, "dummy_pcm", chip,
+                            dummy_proc_read, dummy_proc_write);
 }
 #else
 #define dummy_proc_init(x)
 
 
 static void vx_proc_init(struct vx_core *chip)
 {
-       struct snd_info_entry *entry;
-
-       if (! snd_card_proc_new(chip->card, "vx-status", &entry))
-               snd_info_set_text_ops(entry, chip, vx_proc_read);
+       snd_card_ro_proc_new(chip->card, "vx-status", chip, vx_proc_read);
 }