return -ENXIO;
        dev = kzalloc(sizeof(*dev), GFP_KERNEL);
        if (dev == NULL) {
-               snd_printk(KERN_ERR "Cannot allocate device\n");
+               dev_err(card->dev, "Cannot allocate device, type=%d\n", type);
                return -ENOMEM;
        }
        dev->card = card;
                if (dev->state == SNDRV_DEV_REGISTERED &&
                    dev->ops->dev_disconnect)
                        if (dev->ops->dev_disconnect(dev))
-                               snd_printk(KERN_ERR
-                                          "device disconnect failure\n");
+                               dev_err(card->dev,
+                                       "device disconnect failure\n");
                if (dev->ops->dev_free) {
                        if (dev->ops->dev_free(dev))
-                               snd_printk(KERN_ERR "device free failure\n");
+                               dev_err(card->dev, "device free failure\n");
                }
                kfree(dev);
                return 0;
        }
-       snd_printd("device free %p (from %pF), not found\n", device_data,
-                  __builtin_return_address(0));
+       dev_dbg(card->dev, "device free %p (from %pF), not found\n",
+               device_data, __builtin_return_address(0));
        return -ENXIO;
 }
 
                if (dev->state == SNDRV_DEV_REGISTERED &&
                    dev->ops->dev_disconnect) {
                        if (dev->ops->dev_disconnect(dev))
-                               snd_printk(KERN_ERR "device disconnect failure\n");
+                               dev_err(card->dev,
+                                       "device disconnect failure\n");
                        dev->state = SNDRV_DEV_DISCONNECTED;
                }
                return 0;
        }
-       snd_printd("device disconnect %p (from %pF), not found\n", device_data,
-                  __builtin_return_address(0));
+       dev_dbg(card->dev, "device disconnect %p (from %pF), not found\n",
+               device_data, __builtin_return_address(0));
        return -ENXIO;
 }
 
                        dev->state = SNDRV_DEV_REGISTERED;
                        return 0;
                }
-               snd_printd("snd_device_register busy\n");
+               dev_dbg(card->dev, "snd_device_register busy\n");
                return -EBUSY;
        }
        snd_BUG();
 
                        if (entry->c.text.write) {
                                entry->c.text.write(entry, data->wbuffer);
                                if (data->wbuffer->error) {
-                                       snd_printk(KERN_WARNING "data write error to %s (%i)\n",
-                                               entry->name,
-                                               data->wbuffer->error);
+                                       if (entry->card)
+                                               dev_warn(entry->card->dev, "info: data write error to %s (%i)\n",
+                                                        entry->name,
+                                                        data->wbuffer->error);
+                                       else
+                                               pr_warn("ALSA: info: data write error to %s (%i)\n",
+                                                       entry->name,
+                                                       data->wbuffer->error);
                                }
                        }
                        kfree(data->wbuffer->buffer);
 
        struct snd_info_entry *entry;
 
        if ((err = snd_info_card_register(card)) < 0) {
-               snd_printd("unable to create card info\n");
+               dev_dbg(card->dev, "unable to create card info\n");
                return err;
        }
        if ((entry = snd_info_create_card_entry(card, "id", card->proc_root)) == NULL) {
-               snd_printd("unable to create card entry\n");
+               dev_dbg(card->dev, "unable to create card entry\n");
                return err;
        }
        entry->c.text.read = snd_card_id_read;
                err = -ENODEV;
        if (err < 0) {
                mutex_unlock(&snd_card_mutex);
-               snd_printk(KERN_ERR "cannot find the slot for index %d (range 0-%i), error: %d\n",
+               dev_err(parent, "cannot find the slot for index %d (range 0-%i), error: %d\n",
                         idx, snd_ecards_limit - 1, err);
                kfree(card);
                return err;
        /* snd_cards_bitmask and snd_cards are set with snd_card_register */
        err = snd_ctl_create(card);
        if (err < 0) {
-               snd_printk(KERN_ERR "unable to register control minors\n");
+               dev_err(parent, "unable to register control minors\n");
                goto __error;
        }
        err = snd_info_card_create(card);
        if (err < 0) {
-               snd_printk(KERN_ERR "unable to create card info\n");
+               dev_err(parent, "unable to create card info\n");
                goto __error_ctl;
        }
        *card_ret = card;
        /* notify all devices that we are disconnected */
        err = snd_device_disconnect_all(card);
        if (err < 0)
-               snd_printk(KERN_ERR "not all devices for card %i can be disconnected\n", card->number);
+               dev_err(card->dev, "not all devices for card %i can be disconnected\n", card->number);
 
        snd_info_card_disconnect(card);
        if (card->registered) {
                snd_mixer_oss_notify_callback(card, SND_MIXER_OSS_NOTIFY_FREE);
 #endif
        if (snd_device_free_all(card, SNDRV_DEV_CMD_PRE) < 0) {
-               snd_printk(KERN_ERR "unable to free all devices (pre)\n");
+               dev_err(card->dev, "unable to free all devices (pre)\n");
                /* Fatal, but this situation should never occur */
        }
        if (snd_device_free_all(card, SNDRV_DEV_CMD_NORMAL) < 0) {
-               snd_printk(KERN_ERR "unable to free all devices (normal)\n");
+               dev_err(card->dev, "unable to free all devices (normal)\n");
                /* Fatal, but this situation should never occur */
        }
        if (snd_device_free_all(card, SNDRV_DEV_CMD_POST) < 0) {
-               snd_printk(KERN_ERR "unable to free all devices (post)\n");
+               dev_err(card->dev, "unable to free all devices (post)\n");
                /* Fatal, but this situation should never occur */
        }
        if (card->private_free)
                card->private_free(card);
        snd_info_free_entry(card->proc_id);
        if (snd_info_card_free(card) < 0) {
-               snd_printk(KERN_WARNING "unable to free card info\n");
+               dev_warn(card->dev, "unable to free card info\n");
                /* Not fatal error */
        }
        if (card->release_completion)
                goto again;
        }
        /* last resort... */
-       snd_printk(KERN_ERR "unable to set card id (%s)\n", id);
+       dev_err(card->dev, "unable to set card id (%s)\n", id);
        if (card->proc_root->name)
                strlcpy(card->id, card->proc_root->name, sizeof(card->id));
 }
        }
        spin_unlock(&card->files_lock);
        if (!found) {
-               snd_printk(KERN_ERR "ALSA card file remove problem (%p)\n", file);
+               dev_err(card->dev, "card file remove problem (%p)\n", file);
                return -ENOENT;
        }
        kfree(found);
 
                result = result1;
 #ifdef CONFIG_SND_DEBUG
        if (result > size)
-               snd_printk(KERN_ERR "pointer (0x%x) for DMA #%ld is greater than transfer size (0x%x)\n", result, dma, size);
+               pr_err("ALSA: pointer (0x%x) for DMA #%ld is greater than transfer size (0x%x)\n", result, dma, size);
 #endif
        if (result >= size || result == 0)
                return 0;
 
                break;
 #endif
        default:
-               printk(KERN_ERR "snd-malloc: invalid device type %d\n", type);
+               pr_err("snd-malloc: invalid device type %d\n", type);
                dmab->area = NULL;
                dmab->addr = 0;
                return -ENXIO;
                break;
 #endif
        default:
-               printk(KERN_ERR "snd-malloc: invalid device type %d\n", dmab->dev.type);
+               pr_err("snd-malloc: invalid device type %d\n", dmab->dev.type);
        }
 }
 
 
 
 /*
  * register a sequencer device
- * card = card info (NULL allowed)
+ * card = card info
  * device = device number (if any)
  * id = id of driver
  * result = return pointer (NULL allowed if unnecessary)
 
        snd_major = major;
        snd_ecards_limit = cards_limit;
        if (register_chrdev(major, "alsa", &snd_fops)) {
-               snd_printk(KERN_ERR "unable to register native major device number %d\n", major);
+               pr_err("ALSA core: unable to register native major device number %d\n", major);
                return -EIO;
        }
        if (snd_info_init() < 0) {
        }
        snd_info_minor_register();
 #ifndef MODULE
-       printk(KERN_INFO "Advanced Linux Sound Architecture Driver Initialized.\n");
+       pr_info("Advanced Linux Sound Architecture Driver Initialized.\n");
 #endif
        return 0;
 }
 
        if (slave->info.count > 2  ||
            (slave->info.type != SNDRV_CTL_ELEM_TYPE_INTEGER &&
             slave->info.type != SNDRV_CTL_ELEM_TYPE_BOOLEAN)) {
-               snd_printk(KERN_ERR "invalid slave element\n");
+               pr_err("ALSA: vmaster: invalid slave element\n");
                kfree(uinfo);
                return -EINVAL;
        }