Commit 73e77ba0 authored by Takashi Iwai's avatar Takashi Iwai Committed by Jaroslav Kysela

[ALSA] Add error messages

Add error messages in the critial error path to be more verbose.
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 00a4e3d9
...@@ -195,8 +195,10 @@ struct snd_kcontrol *snd_ctl_new(struct snd_kcontrol *control, unsigned int acce ...@@ -195,8 +195,10 @@ struct snd_kcontrol *snd_ctl_new(struct snd_kcontrol *control, unsigned int acce
snd_assert(control != NULL, return NULL); snd_assert(control != NULL, return NULL);
snd_assert(control->count > 0, return NULL); snd_assert(control->count > 0, return NULL);
kctl = kzalloc(sizeof(*kctl) + sizeof(struct snd_kcontrol_volatile) * control->count, GFP_KERNEL); kctl = kzalloc(sizeof(*kctl) + sizeof(struct snd_kcontrol_volatile) * control->count, GFP_KERNEL);
if (kctl == NULL) if (kctl == NULL) {
snd_printk(KERN_ERR "Cannot allocate control instance\n");
return NULL; return NULL;
}
*kctl = *control; *kctl = *control;
for (idx = 0; idx < kctl->count; idx++) for (idx = 0; idx < kctl->count; idx++)
kctl->vd[idx].access = access; kctl->vd[idx].access = access;
...@@ -309,7 +311,9 @@ int snd_ctl_add(struct snd_card *card, struct snd_kcontrol *kcontrol) ...@@ -309,7 +311,9 @@ int snd_ctl_add(struct snd_card *card, struct snd_kcontrol *kcontrol)
struct snd_ctl_elem_id id; struct snd_ctl_elem_id id;
unsigned int idx; unsigned int idx;
snd_assert(card != NULL && kcontrol != NULL, return -EINVAL); snd_assert(card != NULL, return -EINVAL);
if (! kcontrol)
return -EINVAL;
snd_assert(kcontrol->info != NULL, return -EINVAL); snd_assert(kcontrol->info != NULL, return -EINVAL);
id = kcontrol->id; id = kcontrol->id;
down_write(&card->controls_rwsem); down_write(&card->controls_rwsem);
......
...@@ -50,8 +50,10 @@ int snd_device_new(struct snd_card *card, snd_device_type_t type, ...@@ -50,8 +50,10 @@ int snd_device_new(struct snd_card *card, snd_device_type_t type,
snd_assert(device_data != NULL, return -ENXIO); snd_assert(device_data != NULL, return -ENXIO);
snd_assert(ops != NULL, return -ENXIO); snd_assert(ops != NULL, return -ENXIO);
dev = kzalloc(sizeof(*dev), GFP_KERNEL); dev = kzalloc(sizeof(*dev), GFP_KERNEL);
if (dev == NULL) if (dev == NULL) {
snd_printk(KERN_ERR "Cannot allocate device\n");
return -ENOMEM; return -ENOMEM;
}
dev->card = card; dev->card = card;
dev->type = type; dev->type = type;
dev->state = SNDRV_DEV_BUILD; dev->state = SNDRV_DEV_BUILD;
...@@ -173,6 +175,7 @@ int snd_device_register(struct snd_card *card, void *device_data) ...@@ -173,6 +175,7 @@ int snd_device_register(struct snd_card *card, void *device_data)
dev->state = SNDRV_DEV_REGISTERED; dev->state = SNDRV_DEV_REGISTERED;
return 0; return 0;
} }
snd_printd("snd_device_register busy\n");
return -EBUSY; return -EBUSY;
} }
snd_BUG(); snd_BUG();
......
...@@ -364,13 +364,14 @@ int snd_hwdep_new(struct snd_card *card, char *id, int device, ...@@ -364,13 +364,14 @@ int snd_hwdep_new(struct snd_card *card, char *id, int device,
*rhwdep = NULL; *rhwdep = NULL;
snd_assert(card != NULL, return -ENXIO); snd_assert(card != NULL, return -ENXIO);
hwdep = kzalloc(sizeof(*hwdep), GFP_KERNEL); hwdep = kzalloc(sizeof(*hwdep), GFP_KERNEL);
if (hwdep == NULL) if (hwdep == NULL) {
snd_printk(KERN_ERR "hwdep: cannot allocate\n");
return -ENOMEM; return -ENOMEM;
}
hwdep->card = card; hwdep->card = card;
hwdep->device = device; hwdep->device = device;
if (id) { if (id)
strlcpy(hwdep->id, id, sizeof(hwdep->id)); strlcpy(hwdep->id, id, sizeof(hwdep->id));
}
#ifdef CONFIG_SND_OSSEMUL #ifdef CONFIG_SND_OSSEMUL
hwdep->oss_type = -1; hwdep->oss_type = -1;
#endif #endif
......
...@@ -600,14 +600,18 @@ int snd_pcm_new_stream(struct snd_pcm *pcm, int stream, int substream_count) ...@@ -600,14 +600,18 @@ int snd_pcm_new_stream(struct snd_pcm *pcm, int stream, int substream_count)
pstr->reg = &snd_pcm_reg[stream]; pstr->reg = &snd_pcm_reg[stream];
if (substream_count > 0) { if (substream_count > 0) {
err = snd_pcm_stream_proc_init(pstr); err = snd_pcm_stream_proc_init(pstr);
if (err < 0) if (err < 0) {
snd_printk(KERN_ERR "Error in snd_pcm_stream_proc_init\n");
return err; return err;
} }
}
prev = NULL; prev = NULL;
for (idx = 0, prev = NULL; idx < substream_count; idx++) { for (idx = 0, prev = NULL; idx < substream_count; idx++) {
substream = kzalloc(sizeof(*substream), GFP_KERNEL); substream = kzalloc(sizeof(*substream), GFP_KERNEL);
if (substream == NULL) if (substream == NULL) {
snd_printk(KERN_ERR "Cannot allocate PCM substream\n");
return -ENOMEM; return -ENOMEM;
}
substream->pcm = pcm; substream->pcm = pcm;
substream->pstr = pstr; substream->pstr = pstr;
substream->number = idx; substream->number = idx;
...@@ -620,6 +624,7 @@ int snd_pcm_new_stream(struct snd_pcm *pcm, int stream, int substream_count) ...@@ -620,6 +624,7 @@ int snd_pcm_new_stream(struct snd_pcm *pcm, int stream, int substream_count)
prev->next = substream; prev->next = substream;
err = snd_pcm_substream_proc_init(substream); err = snd_pcm_substream_proc_init(substream);
if (err < 0) { if (err < 0) {
snd_printk(KERN_ERR "Error in snd_pcm_stream_proc_init\n");
kfree(substream); kfree(substream);
return err; return err;
} }
...@@ -666,13 +671,14 @@ int snd_pcm_new(struct snd_card *card, char *id, int device, ...@@ -666,13 +671,14 @@ int snd_pcm_new(struct snd_card *card, char *id, int device,
*rpcm = NULL; *rpcm = NULL;
snd_assert(card != NULL, return -ENXIO); snd_assert(card != NULL, return -ENXIO);
pcm = kzalloc(sizeof(*pcm), GFP_KERNEL); pcm = kzalloc(sizeof(*pcm), GFP_KERNEL);
if (pcm == NULL) if (pcm == NULL) {
snd_printk(KERN_ERR "Cannot allocate PCM\n");
return -ENOMEM; return -ENOMEM;
}
pcm->card = card; pcm->card = card;
pcm->device = device; pcm->device = device;
if (id) { if (id)
strlcpy(pcm->id, id, sizeof(pcm->id)); strlcpy(pcm->id, id, sizeof(pcm->id));
}
if ((err = snd_pcm_new_stream(pcm, SNDRV_PCM_STREAM_PLAYBACK, playback_count)) < 0) { if ((err = snd_pcm_new_stream(pcm, SNDRV_PCM_STREAM_PLAYBACK, playback_count)) < 0) {
snd_pcm_free(pcm); snd_pcm_free(pcm);
return err; return err;
......
...@@ -1382,8 +1382,10 @@ static int snd_rawmidi_alloc_substreams(struct snd_rawmidi *rmidi, ...@@ -1382,8 +1382,10 @@ static int snd_rawmidi_alloc_substreams(struct snd_rawmidi *rmidi,
INIT_LIST_HEAD(&stream->substreams); INIT_LIST_HEAD(&stream->substreams);
for (idx = 0; idx < count; idx++) { for (idx = 0; idx < count; idx++) {
substream = kzalloc(sizeof(*substream), GFP_KERNEL); substream = kzalloc(sizeof(*substream), GFP_KERNEL);
if (substream == NULL) if (substream == NULL) {
snd_printk(KERN_ERR "rawmidi: cannot allocate substream\n");
return -ENOMEM; return -ENOMEM;
}
substream->stream = direction; substream->stream = direction;
substream->number = idx; substream->number = idx;
substream->rmidi = rmidi; substream->rmidi = rmidi;
...@@ -1425,19 +1427,27 @@ int snd_rawmidi_new(struct snd_card *card, char *id, int device, ...@@ -1425,19 +1427,27 @@ int snd_rawmidi_new(struct snd_card *card, char *id, int device,
*rrawmidi = NULL; *rrawmidi = NULL;
snd_assert(card != NULL, return -ENXIO); snd_assert(card != NULL, return -ENXIO);
rmidi = kzalloc(sizeof(*rmidi), GFP_KERNEL); rmidi = kzalloc(sizeof(*rmidi), GFP_KERNEL);
if (rmidi == NULL) if (rmidi == NULL) {
snd_printk(KERN_ERR "rawmidi: cannot allocate\n");
return -ENOMEM; return -ENOMEM;
}
rmidi->card = card; rmidi->card = card;
rmidi->device = device; rmidi->device = device;
init_MUTEX(&rmidi->open_mutex); init_MUTEX(&rmidi->open_mutex);
init_waitqueue_head(&rmidi->open_wait); init_waitqueue_head(&rmidi->open_wait);
if (id != NULL) if (id != NULL)
strlcpy(rmidi->id, id, sizeof(rmidi->id)); strlcpy(rmidi->id, id, sizeof(rmidi->id));
if ((err = snd_rawmidi_alloc_substreams(rmidi, &rmidi->streams[SNDRV_RAWMIDI_STREAM_INPUT], SNDRV_RAWMIDI_STREAM_INPUT, input_count)) < 0) { if ((err = snd_rawmidi_alloc_substreams(rmidi,
&rmidi->streams[SNDRV_RAWMIDI_STREAM_INPUT],
SNDRV_RAWMIDI_STREAM_INPUT,
input_count)) < 0) {
snd_rawmidi_free(rmidi); snd_rawmidi_free(rmidi);
return err; return err;
} }
if ((err = snd_rawmidi_alloc_substreams(rmidi, &rmidi->streams[SNDRV_RAWMIDI_STREAM_OUTPUT], SNDRV_RAWMIDI_STREAM_OUTPUT, output_count)) < 0) { if ((err = snd_rawmidi_alloc_substreams(rmidi,
&rmidi->streams[SNDRV_RAWMIDI_STREAM_OUTPUT],
SNDRV_RAWMIDI_STREAM_OUTPUT,
output_count)) < 0) {
snd_rawmidi_free(rmidi); snd_rawmidi_free(rmidi);
return err; return err;
} }
......
...@@ -777,8 +777,10 @@ int snd_timer_new(struct snd_card *card, char *id, struct snd_timer_id *tid, ...@@ -777,8 +777,10 @@ int snd_timer_new(struct snd_card *card, char *id, struct snd_timer_id *tid,
snd_assert(rtimer != NULL, return -EINVAL); snd_assert(rtimer != NULL, return -EINVAL);
*rtimer = NULL; *rtimer = NULL;
timer = kzalloc(sizeof(*timer), GFP_KERNEL); timer = kzalloc(sizeof(*timer), GFP_KERNEL);
if (timer == NULL) if (timer == NULL) {
snd_printk(KERN_ERR "timer: cannot allocate\n");
return -ENOMEM; return -ENOMEM;
}
timer->tmr_class = tid->dev_class; timer->tmr_class = tid->dev_class;
timer->card = card; timer->card = card;
timer->tmr_device = tid->device; timer->tmr_device = tid->device;
......
...@@ -462,6 +462,7 @@ int snd_mpu401_uart_new(struct snd_card *card, int device, ...@@ -462,6 +462,7 @@ int snd_mpu401_uart_new(struct snd_card *card, int device,
return err; return err;
mpu = kzalloc(sizeof(*mpu), GFP_KERNEL); mpu = kzalloc(sizeof(*mpu), GFP_KERNEL);
if (mpu == NULL) { if (mpu == NULL) {
snd_printk(KERN_ERR "mpu401_uart: cannot allocate\n");
snd_device_free(card, rmidi); snd_device_free(card, rmidi);
return -ENOMEM; return -ENOMEM;
} }
......
...@@ -349,8 +349,10 @@ int snd_opl3_new(struct snd_card *card, ...@@ -349,8 +349,10 @@ int snd_opl3_new(struct snd_card *card,
*ropl3 = NULL; *ropl3 = NULL;
opl3 = kzalloc(sizeof(*opl3), GFP_KERNEL); opl3 = kzalloc(sizeof(*opl3), GFP_KERNEL);
if (opl3 == NULL) if (opl3 == NULL) {
snd_printk(KERN_ERR "opl3: cannot allocate\n");
return -ENOMEM; return -ENOMEM;
}
opl3->card = card; opl3->card = card;
opl3->hardware = hardware; opl3->hardware = hardware;
......
...@@ -496,21 +496,29 @@ static int __init snd_opl3sa2_mixer(struct snd_opl3sa2 *chip) ...@@ -496,21 +496,29 @@ static int __init snd_opl3sa2_mixer(struct snd_opl3sa2 *chip)
/* reassign AUX0 to CD */ /* reassign AUX0 to CD */
strcpy(id1.name, "Aux Playback Switch"); strcpy(id1.name, "Aux Playback Switch");
strcpy(id2.name, "CD Playback Switch"); strcpy(id2.name, "CD Playback Switch");
if ((err = snd_ctl_rename_id(card, &id1, &id2)) < 0) if ((err = snd_ctl_rename_id(card, &id1, &id2)) < 0) {
snd_printk(KERN_ERR "Cannot rename opl3sa2 control\n");
return err; return err;
}
strcpy(id1.name, "Aux Playback Volume"); strcpy(id1.name, "Aux Playback Volume");
strcpy(id2.name, "CD Playback Volume"); strcpy(id2.name, "CD Playback Volume");
if ((err = snd_ctl_rename_id(card, &id1, &id2)) < 0) if ((err = snd_ctl_rename_id(card, &id1, &id2)) < 0) {
snd_printk(KERN_ERR "Cannot rename opl3sa2 control\n");
return err; return err;
}
/* reassign AUX1 to FM */ /* reassign AUX1 to FM */
strcpy(id1.name, "Aux Playback Switch"); id1.index = 1; strcpy(id1.name, "Aux Playback Switch"); id1.index = 1;
strcpy(id2.name, "FM Playback Switch"); strcpy(id2.name, "FM Playback Switch");
if ((err = snd_ctl_rename_id(card, &id1, &id2)) < 0) if ((err = snd_ctl_rename_id(card, &id1, &id2)) < 0) {
snd_printk(KERN_ERR "Cannot rename opl3sa2 control\n");
return err; return err;
}
strcpy(id1.name, "Aux Playback Volume"); strcpy(id1.name, "Aux Playback Volume");
strcpy(id2.name, "FM Playback Volume"); strcpy(id2.name, "FM Playback Volume");
if ((err = snd_ctl_rename_id(card, &id1, &id2)) < 0) if ((err = snd_ctl_rename_id(card, &id1, &id2)) < 0) {
snd_printk(KERN_ERR "Cannot rename opl3sa2 control\n");
return err; return err;
}
/* add OPL3SA2 controls */ /* add OPL3SA2 controls */
for (idx = 0; idx < ARRAY_SIZE(snd_opl3sa2_controls); idx++) { for (idx = 0; idx < ARRAY_SIZE(snd_opl3sa2_controls); idx++) {
if ((err = snd_ctl_add(card, kctl = snd_ctl_new1(&snd_opl3sa2_controls[idx], chip))) < 0) if ((err = snd_ctl_add(card, kctl = snd_ctl_new1(&snd_opl3sa2_controls[idx], chip))) < 0)
...@@ -575,8 +583,10 @@ static int __init snd_opl3sa2_pnp(int dev, struct snd_opl3sa2 *chip, ...@@ -575,8 +583,10 @@ static int __init snd_opl3sa2_pnp(int dev, struct snd_opl3sa2 *chip,
int err; int err;
cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL); cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL);
if (!cfg) if (!cfg) {
snd_printk(KERN_ERR PFX "cannot allocate pnp cfg\n");
return -ENOMEM; return -ENOMEM;
}
/* PnP initialization */ /* PnP initialization */
pnp_init_resource_table(cfg); pnp_init_resource_table(cfg);
if (sb_port[dev] != SNDRV_AUTO_PORT) if (sb_port[dev] != SNDRV_AUTO_PORT)
...@@ -597,7 +607,7 @@ static int __init snd_opl3sa2_pnp(int dev, struct snd_opl3sa2 *chip, ...@@ -597,7 +607,7 @@ static int __init snd_opl3sa2_pnp(int dev, struct snd_opl3sa2 *chip,
pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1); pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1);
err = pnp_manual_config_dev(pdev, cfg, 0); err = pnp_manual_config_dev(pdev, cfg, 0);
if (err < 0) if (err < 0)
snd_printk(KERN_ERR "PnP manual resources are invalid, using auto config\n"); snd_printk(KERN_WARNING "PnP manual resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev); err = pnp_activate_dev(pdev);
if (err < 0) { if (err < 0) {
kfree(cfg); kfree(cfg);
...@@ -784,8 +794,11 @@ static int __devinit snd_opl3sa2_pnp_cdetect(struct pnp_card_link *pcard, ...@@ -784,8 +794,11 @@ static int __devinit snd_opl3sa2_pnp_cdetect(struct pnp_card_link *pcard,
struct snd_card *card; struct snd_card *card;
pdev = pnp_request_card_device(pcard, id->devs[0].id, NULL); pdev = pnp_request_card_device(pcard, id->devs[0].id, NULL);
if (pdev == NULL) if (pdev == NULL) {
snd_printk(KERN_ERR PFX "can't get pnp device from id '%s'\n",
id->devs[0].id);
return -EBUSY; return -EBUSY;
}
for (; dev < SNDRV_CARDS; dev++) { for (; dev < SNDRV_CARDS; dev++) {
if (enable[dev] && isapnp[dev]) if (enable[dev] && isapnp[dev])
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment