Skip to content

Commit

Permalink
ASoC: pcm: Improve error logging
Browse files Browse the repository at this point in the history
Use the standard logging macros and use dev_ variants where we can, also
reporting error codes whenever we report an error. These changes (the
error codes in particular) make it noticeably easier to figure out what
went wrong just from the basic dmesg output.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
  • Loading branch information
Mark Brown committed Feb 2, 2012
1 parent bc6c117 commit 25bfe66
Showing 1 changed file with 22 additions and 17 deletions.
39 changes: 22 additions & 17 deletions sound/soc/soc-pcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -123,33 +123,35 @@ static int soc_pcm_open(struct snd_pcm_substream *substream)
if (cpu_dai->driver->ops->startup) {
ret = cpu_dai->driver->ops->startup(substream, cpu_dai);
if (ret < 0) {
printk(KERN_ERR "asoc: can't open interface %s\n",
cpu_dai->name);
dev_err(cpu_dai->dev, "can't open interface %s: %d\n",
cpu_dai->name, ret);
goto out;
}
}

if (platform->driver->ops && platform->driver->ops->open) {
ret = platform->driver->ops->open(substream);
if (ret < 0) {
printk(KERN_ERR "asoc: can't open platform %s\n", platform->name);
dev_err(platform->dev, "can't open platform %s: %d\n",
platform->name, ret);
goto platform_err;
}
}

if (codec_dai->driver->ops->startup) {
ret = codec_dai->driver->ops->startup(substream, codec_dai);
if (ret < 0) {
printk(KERN_ERR "asoc: can't open codec %s\n",
codec_dai->name);
dev_err(codec_dai->dev, "can't open codec %s: %d\n",
codec_dai->name, ret);
goto codec_dai_err;
}
}

if (rtd->dai_link->ops && rtd->dai_link->ops->startup) {
ret = rtd->dai_link->ops->startup(substream);
if (ret < 0) {
printk(KERN_ERR "asoc: %s startup failed\n", rtd->dai_link->name);
pr_err("asoc: %s startup failed: %d\n",
rtd->dai_link->name, ret);
goto machine_err;
}
}
Expand Down Expand Up @@ -413,31 +415,34 @@ static int soc_pcm_prepare(struct snd_pcm_substream *substream)
if (rtd->dai_link->ops && rtd->dai_link->ops->prepare) {
ret = rtd->dai_link->ops->prepare(substream);
if (ret < 0) {
printk(KERN_ERR "asoc: machine prepare error\n");
pr_err("asoc: machine prepare error: %d\n", ret);
goto out;
}
}

if (platform->driver->ops && platform->driver->ops->prepare) {
ret = platform->driver->ops->prepare(substream);
if (ret < 0) {
printk(KERN_ERR "asoc: platform prepare error\n");
dev_err(platform->dev, "platform prepare error: %d\n",
ret);
goto out;
}
}

if (codec_dai->driver->ops->prepare) {
ret = codec_dai->driver->ops->prepare(substream, codec_dai);
if (ret < 0) {
printk(KERN_ERR "asoc: codec DAI prepare error\n");
dev_err(codec_dai->dev, "DAI prepare error: %d\n",
ret);
goto out;
}
}

if (cpu_dai->driver->ops->prepare) {
ret = cpu_dai->driver->ops->prepare(substream, cpu_dai);
if (ret < 0) {
printk(KERN_ERR "asoc: cpu DAI prepare error\n");
dev_err(cpu_dai->dev, "DAI prepare error: %d\n",
ret);
goto out;
}
}
Expand Down Expand Up @@ -484,34 +489,34 @@ static int soc_pcm_hw_params(struct snd_pcm_substream *substream,
if (rtd->dai_link->ops && rtd->dai_link->ops->hw_params) {
ret = rtd->dai_link->ops->hw_params(substream, params);
if (ret < 0) {
printk(KERN_ERR "asoc: machine hw_params failed\n");
pr_err("asoc: machine hw_params failed: %d\n", ret);
goto out;
}
}

if (codec_dai->driver->ops->hw_params) {
ret = codec_dai->driver->ops->hw_params(substream, params, codec_dai);
if (ret < 0) {
printk(KERN_ERR "asoc: can't set codec %s hw params\n",
codec_dai->name);
dev_err(codec_dai->dev, "can't set %s hw params: %d\n",
codec_dai->name, ret);
goto codec_err;
}
}

if (cpu_dai->driver->ops->hw_params) {
ret = cpu_dai->driver->ops->hw_params(substream, params, cpu_dai);
if (ret < 0) {
printk(KERN_ERR "asoc: interface %s hw params failed\n",
cpu_dai->name);
dev_err(cpu_dai->dev, "%s hw params failed: %d\n",
cpu_dai->name, ret);
goto interface_err;
}
}

if (platform->driver->ops && platform->driver->ops->hw_params) {
ret = platform->driver->ops->hw_params(substream, params);
if (ret < 0) {
printk(KERN_ERR "asoc: platform %s hw params failed\n",
platform->name);
dev_err(platform->dev, "%s hw params failed: %d\n",
platform->name, ret);
goto platform_err;
}
}
Expand Down

0 comments on commit 25bfe66

Please sign in to comment.