提交 09e56df8 编写于 作者: T Takashi Iwai

ALSA: pcm: Use standard printk helpers

Use dev_err() & co as much as possible.  If not available (no device
assigned at the calling point), use pr_xxx() helpers instead.

For simplicity, introduce new helpers for pcm stream, pcm_err(), etc.
Signed-off-by: NTakashi Iwai <tiwai@suse.de>
上级 bb009457
...@@ -1141,4 +1141,12 @@ static inline u64 pcm_format_to_bits(snd_pcm_format_t pcm_format) ...@@ -1141,4 +1141,12 @@ static inline u64 pcm_format_to_bits(snd_pcm_format_t pcm_format)
return 1ULL << (__force int) pcm_format; return 1ULL << (__force int) pcm_format;
} }
/* printk helpers */
#define pcm_err(pcm, fmt, args...) \
dev_err((pcm)->card->dev, fmt, ##args)
#define pcm_warn(pcm, fmt, args...) \
dev_warn((pcm)->card->dev, fmt, ##args)
#define pcm_dbg(pcm, fmt, args...) \
dev_dbg((pcm)->card->dev, fmt, ##args)
#endif /* __SOUND_PCM_H */ #endif /* __SOUND_PCM_H */
...@@ -338,7 +338,8 @@ static void snd_pcm_proc_info_read(struct snd_pcm_substream *substream, ...@@ -338,7 +338,8 @@ static void snd_pcm_proc_info_read(struct snd_pcm_substream *substream,
info = kmalloc(sizeof(*info), GFP_KERNEL); info = kmalloc(sizeof(*info), GFP_KERNEL);
if (! info) { if (! info) {
printk(KERN_DEBUG "snd_pcm_proc_info_read: cannot malloc\n"); pcm_dbg(substream->pcm,
"snd_pcm_proc_info_read: cannot malloc\n");
return; return;
} }
...@@ -660,7 +661,7 @@ int snd_pcm_new_stream(struct snd_pcm *pcm, int stream, int substream_count) ...@@ -660,7 +661,7 @@ int snd_pcm_new_stream(struct snd_pcm *pcm, int stream, int substream_count)
if (substream_count > 0 && !pcm->internal) { if (substream_count > 0 && !pcm->internal) {
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"); pcm_err(pcm, "Error in snd_pcm_stream_proc_init\n");
return err; return err;
} }
} }
...@@ -668,7 +669,7 @@ int snd_pcm_new_stream(struct snd_pcm *pcm, int stream, int substream_count) ...@@ -668,7 +669,7 @@ int snd_pcm_new_stream(struct snd_pcm *pcm, int stream, int substream_count)
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"); pcm_err(pcm, "Cannot allocate PCM substream\n");
return -ENOMEM; return -ENOMEM;
} }
substream->pcm = pcm; substream->pcm = pcm;
...@@ -685,7 +686,8 @@ int snd_pcm_new_stream(struct snd_pcm *pcm, int stream, int substream_count) ...@@ -685,7 +686,8 @@ int snd_pcm_new_stream(struct snd_pcm *pcm, int stream, int substream_count)
if (!pcm->internal) { if (!pcm->internal) {
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"); pcm_err(pcm,
"Error in snd_pcm_stream_proc_init\n");
if (prev == NULL) if (prev == NULL)
pstr->substream = NULL; pstr->substream = NULL;
else else
...@@ -724,7 +726,7 @@ static int _snd_pcm_new(struct snd_card *card, const char *id, int device, ...@@ -724,7 +726,7 @@ static int _snd_pcm_new(struct snd_card *card, const char *id, int device,
*rpcm = NULL; *rpcm = NULL;
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"); dev_err(card->dev, "Cannot allocate PCM\n");
return -ENOMEM; return -ENOMEM;
} }
pcm->card = card; pcm->card = card;
......
...@@ -174,7 +174,7 @@ static void xrun(struct snd_pcm_substream *substream) ...@@ -174,7 +174,7 @@ static void xrun(struct snd_pcm_substream *substream)
if (xrun_debug(substream, XRUN_DEBUG_BASIC)) { if (xrun_debug(substream, XRUN_DEBUG_BASIC)) {
char name[16]; char name[16];
snd_pcm_debug_name(substream, name, sizeof(name)); snd_pcm_debug_name(substream, name, sizeof(name));
snd_printd(KERN_DEBUG "XRUN: %s\n", name); pcm_warn(substream->pcm, "XRUN: %s\n", name);
dump_stack_on_xrun(substream); dump_stack_on_xrun(substream);
} }
} }
...@@ -184,9 +184,7 @@ static void xrun(struct snd_pcm_substream *substream) ...@@ -184,9 +184,7 @@ static void xrun(struct snd_pcm_substream *substream)
do { \ do { \
if (xrun_debug(substream, XRUN_DEBUG_BASIC)) { \ if (xrun_debug(substream, XRUN_DEBUG_BASIC)) { \
xrun_log_show(substream); \ xrun_log_show(substream); \
if (snd_printd_ratelimit()) { \ pr_err_ratelimited("ALSA: PCM: " fmt, ##args); \
snd_printd("PCM: " fmt, ##args); \
} \
dump_stack_on_xrun(substream); \ dump_stack_on_xrun(substream); \
} \ } \
} while (0) } while (0)
...@@ -253,7 +251,7 @@ static void xrun_log_show(struct snd_pcm_substream *substream) ...@@ -253,7 +251,7 @@ static void xrun_log_show(struct snd_pcm_substream *substream)
entry = &log->entries[idx]; entry = &log->entries[idx];
if (entry->period_size == 0) if (entry->period_size == 0)
break; break;
snd_printd("hwptr log: %s: %sj=%lu, pos=%ld/%ld/%ld, " pr_info("hwptr log: %s: %sj=%lu, pos=%ld/%ld/%ld, "
"hwptr=%ld/%ld\n", "hwptr=%ld/%ld\n",
name, entry->in_interrupt ? "[Q] " : "", name, entry->in_interrupt ? "[Q] " : "",
entry->jiffies, entry->jiffies,
...@@ -342,14 +340,14 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream, ...@@ -342,14 +340,14 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream,
return -EPIPE; return -EPIPE;
} }
if (pos >= runtime->buffer_size) { if (pos >= runtime->buffer_size) {
if (snd_printd_ratelimit()) { if (printk_ratelimit()) {
char name[16]; char name[16];
snd_pcm_debug_name(substream, name, sizeof(name)); snd_pcm_debug_name(substream, name, sizeof(name));
xrun_log_show(substream); xrun_log_show(substream);
snd_printd(KERN_ERR "BUG: %s, pos = %ld, " pcm_err(substream->pcm,
"buffer size = %ld, period size = %ld\n", "BUG: %s, pos = %ld, buffer size = %ld, period size = %ld\n",
name, pos, runtime->buffer_size, name, pos, runtime->buffer_size,
runtime->period_size); runtime->period_size);
} }
pos = 0; pos = 0;
} }
...@@ -394,8 +392,8 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream, ...@@ -394,8 +392,8 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream,
XRUN_DEBUG_PERIODUPDATE : XRUN_DEBUG_HWPTRUPDATE)) { XRUN_DEBUG_PERIODUPDATE : XRUN_DEBUG_HWPTRUPDATE)) {
char name[16]; char name[16];
snd_pcm_debug_name(substream, name, sizeof(name)); snd_pcm_debug_name(substream, name, sizeof(name));
snd_printd("%s_update: %s: pos=%u/%u/%u, " pcm_dbg(substream->pcm,
"hwptr=%ld/%ld/%ld/%ld\n", "%s_update: %s: pos=%u/%u/%u, hwptr=%ld/%ld/%ld/%ld\n",
in_interrupt ? "period" : "hwptr", in_interrupt ? "period" : "hwptr",
name, name,
(unsigned int)pos, (unsigned int)pos,
...@@ -1941,8 +1939,9 @@ static int wait_for_avail(struct snd_pcm_substream *substream, ...@@ -1941,8 +1939,9 @@ static int wait_for_avail(struct snd_pcm_substream *substream,
continue; continue;
} }
if (!tout) { if (!tout) {
snd_printd("%s write error (DMA or IRQ trouble?)\n", pcm_dbg(substream->pcm,
is_playback ? "playback" : "capture"); "%s write error (DMA or IRQ trouble?)\n",
is_playback ? "playback" : "capture");
err = -EIO; err = -EIO;
break; break;
} }
......
...@@ -190,12 +190,12 @@ int snd_pcm_hw_refine(struct snd_pcm_substream *substream, ...@@ -190,12 +190,12 @@ int snd_pcm_hw_refine(struct snd_pcm_substream *substream,
if (!(params->rmask & (1 << k))) if (!(params->rmask & (1 << k)))
continue; continue;
#ifdef RULES_DEBUG #ifdef RULES_DEBUG
printk(KERN_DEBUG "%s = ", snd_pcm_hw_param_names[k]); pr_debug("%s = ", snd_pcm_hw_param_names[k]);
printk("%04x%04x%04x%04x -> ", m->bits[3], m->bits[2], m->bits[1], m->bits[0]); pr_cont("%04x%04x%04x%04x -> ", m->bits[3], m->bits[2], m->bits[1], m->bits[0]);
#endif #endif
changed = snd_mask_refine(m, constrs_mask(constrs, k)); changed = snd_mask_refine(m, constrs_mask(constrs, k));
#ifdef RULES_DEBUG #ifdef RULES_DEBUG
printk("%04x%04x%04x%04x\n", m->bits[3], m->bits[2], m->bits[1], m->bits[0]); pr_cont("%04x%04x%04x%04x\n", m->bits[3], m->bits[2], m->bits[1], m->bits[0]);
#endif #endif
if (changed) if (changed)
params->cmask |= 1 << k; params->cmask |= 1 << k;
...@@ -210,21 +210,21 @@ int snd_pcm_hw_refine(struct snd_pcm_substream *substream, ...@@ -210,21 +210,21 @@ int snd_pcm_hw_refine(struct snd_pcm_substream *substream,
if (!(params->rmask & (1 << k))) if (!(params->rmask & (1 << k)))
continue; continue;
#ifdef RULES_DEBUG #ifdef RULES_DEBUG
printk(KERN_DEBUG "%s = ", snd_pcm_hw_param_names[k]); pr_debug("%s = ", snd_pcm_hw_param_names[k]);
if (i->empty) if (i->empty)
printk("empty"); pr_cont("empty");
else else
printk("%c%u %u%c", pr_cont("%c%u %u%c",
i->openmin ? '(' : '[', i->min, i->openmin ? '(' : '[', i->min,
i->max, i->openmax ? ')' : ']'); i->max, i->openmax ? ')' : ']');
printk(" -> "); pr_cont(" -> ");
#endif #endif
changed = snd_interval_refine(i, constrs_interval(constrs, k)); changed = snd_interval_refine(i, constrs_interval(constrs, k));
#ifdef RULES_DEBUG #ifdef RULES_DEBUG
if (i->empty) if (i->empty)
printk("empty\n"); pr_cont("empty\n");
else else
printk("%c%u %u%c\n", pr_cont("%c%u %u%c\n",
i->openmin ? '(' : '[', i->min, i->openmin ? '(' : '[', i->min,
i->max, i->openmax ? ')' : ']'); i->max, i->openmax ? ')' : ']');
#endif #endif
...@@ -255,18 +255,18 @@ int snd_pcm_hw_refine(struct snd_pcm_substream *substream, ...@@ -255,18 +255,18 @@ int snd_pcm_hw_refine(struct snd_pcm_substream *substream,
if (!doit) if (!doit)
continue; continue;
#ifdef RULES_DEBUG #ifdef RULES_DEBUG
printk(KERN_DEBUG "Rule %d [%p]: ", k, r->func); pr_debug("Rule %d [%p]: ", k, r->func);
if (r->var >= 0) { if (r->var >= 0) {
printk("%s = ", snd_pcm_hw_param_names[r->var]); pr_cont("%s = ", snd_pcm_hw_param_names[r->var]);
if (hw_is_mask(r->var)) { if (hw_is_mask(r->var)) {
m = hw_param_mask(params, r->var); m = hw_param_mask(params, r->var);
printk("%x", *m->bits); pr_cont("%x", *m->bits);
} else { } else {
i = hw_param_interval(params, r->var); i = hw_param_interval(params, r->var);
if (i->empty) if (i->empty)
printk("empty"); pr_cont("empty");
else else
printk("%c%u %u%c", pr_cont("%c%u %u%c",
i->openmin ? '(' : '[', i->min, i->openmin ? '(' : '[', i->min,
i->max, i->openmax ? ')' : ']'); i->max, i->openmax ? ')' : ']');
} }
...@@ -275,19 +275,19 @@ int snd_pcm_hw_refine(struct snd_pcm_substream *substream, ...@@ -275,19 +275,19 @@ int snd_pcm_hw_refine(struct snd_pcm_substream *substream,
changed = r->func(params, r); changed = r->func(params, r);
#ifdef RULES_DEBUG #ifdef RULES_DEBUG
if (r->var >= 0) { if (r->var >= 0) {
printk(" -> "); pr_cont(" -> ");
if (hw_is_mask(r->var)) if (hw_is_mask(r->var))
printk("%x", *m->bits); pr_cont("%x", *m->bits);
else { else {
if (i->empty) if (i->empty)
printk("empty"); pr_cont("empty");
else else
printk("%c%u %u%c", pr_cont("%c%u %u%c",
i->openmin ? '(' : '[', i->min, i->openmin ? '(' : '[', i->min,
i->max, i->openmax ? ')' : ']'); i->max, i->openmax ? ')' : ']');
} }
} }
printk("\n"); pr_cont("\n");
#endif #endif
rstamps[k] = stamp; rstamps[k] = stamp;
if (changed && r->var >= 0) { if (changed && r->var >= 0) {
...@@ -1541,7 +1541,8 @@ static int snd_pcm_drain(struct snd_pcm_substream *substream, ...@@ -1541,7 +1541,8 @@ static int snd_pcm_drain(struct snd_pcm_substream *substream,
if (substream->runtime->status->state == SNDRV_PCM_STATE_SUSPENDED) if (substream->runtime->status->state == SNDRV_PCM_STATE_SUSPENDED)
result = -ESTRPIPE; result = -ESTRPIPE;
else { else {
snd_printd("playback drain error (DMA or IRQ trouble?)\n"); dev_dbg(substream->pcm->card->dev,
"playback drain error (DMA or IRQ trouble?)\n");
snd_pcm_stop(substream, SNDRV_PCM_STATE_SETUP); snd_pcm_stop(substream, SNDRV_PCM_STATE_SETUP);
result = -EIO; result = -EIO;
} }
...@@ -2066,7 +2067,7 @@ int snd_pcm_open_substream(struct snd_pcm *pcm, int stream, ...@@ -2066,7 +2067,7 @@ int snd_pcm_open_substream(struct snd_pcm *pcm, int stream,
err = snd_pcm_hw_constraints_init(substream); err = snd_pcm_hw_constraints_init(substream);
if (err < 0) { if (err < 0) {
snd_printd("snd_pcm_hw_constraints_init failed\n"); pcm_dbg(pcm, "snd_pcm_hw_constraints_init failed\n");
goto error; goto error;
} }
...@@ -2077,7 +2078,7 @@ int snd_pcm_open_substream(struct snd_pcm *pcm, int stream, ...@@ -2077,7 +2078,7 @@ int snd_pcm_open_substream(struct snd_pcm *pcm, int stream,
err = snd_pcm_hw_constraints_complete(substream); err = snd_pcm_hw_constraints_complete(substream);
if (err < 0) { if (err < 0) {
snd_printd("snd_pcm_hw_constraints_complete failed\n"); pcm_dbg(pcm, "snd_pcm_hw_constraints_complete failed\n");
goto error; goto error;
} }
...@@ -2609,7 +2610,7 @@ static int snd_pcm_common_ioctl1(struct file *file, ...@@ -2609,7 +2610,7 @@ static int snd_pcm_common_ioctl1(struct file *file,
return res; return res;
} }
} }
snd_printd("unknown ioctl = 0x%x\n", cmd); pcm_dbg(substream->pcm, "unknown ioctl = 0x%x\n", cmd);
return -ENOTTY; return -ENOTTY;
} }
......
...@@ -53,7 +53,9 @@ void snd_pcm_timer_resolution_change(struct snd_pcm_substream *substream) ...@@ -53,7 +53,9 @@ void snd_pcm_timer_resolution_change(struct snd_pcm_substream *substream)
post *= 2; post *= 2;
} }
if (rate == 0) { if (rate == 0) {
snd_printk(KERN_ERR "pcm timer resolution out of range (rate = %u, period_size = %lu)\n", runtime->rate, runtime->period_size); pcm_err(substream->pcm,
"pcm timer resolution out of range (rate = %u, period_size = %lu)\n",
runtime->rate, runtime->period_size);
runtime->timer_resolution = -1; runtime->timer_resolution = -1;
return; return;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册