diff options
author | Vijay Mali <vmali@nvidia.com> | 2013-06-11 21:03:24 +0530 |
---|---|---|
committer | Riham Haidar <rhaidar@nvidia.com> | 2013-06-12 18:53:49 -0700 |
commit | c0df5921513d54581b52d4a674079176e0ecde41 (patch) | |
tree | 260d4669deebac4903a43dbb80548705a9915d45 | |
parent | 9d23e972ddde906b0aede0c4ba4f87665230a98f (diff) |
ASoC: Tegra: Fix for negative dam ifc during voice call
Check return value of configure_dam function.
Add error message and graceful exit path in
make_voice_call function when DAM controller
allocation fails.
Bug 1274653
Change-Id: I9924c256113c73fb3208c1e0e7225cb485022ca4
Signed-off-by: Vijay Mali <vmali@nvidia.com>
Reviewed-on: http://git-master/r/237664
Reviewed-by: Ravindra Lokhande <rlokhande@nvidia.com>
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Scott Peterson <speterson@nvidia.com>
-rw-r--r-- | sound/soc/tegra/tegra30_i2s.c | 35 |
1 files changed, 26 insertions, 9 deletions
diff --git a/sound/soc/tegra/tegra30_i2s.c b/sound/soc/tegra/tegra30_i2s.c index 22b8f8c17ea5..529670e9324b 100644 --- a/sound/soc/tegra/tegra30_i2s.c +++ b/sound/soc/tegra/tegra30_i2s.c @@ -1182,9 +1182,10 @@ static int configure_dam(struct tegra30_i2s *i2s, int out_channel, if (!i2s->dam_ch_refcount) i2s->dam_ifc = tegra30_dam_allocate_controller(); - if (i2s->dam_ifc < 0) + if (i2s->dam_ifc < 0) { + pr_err("Error : Failed to allocate DAM controller\n"); return -ENOENT; - + } tegra30_dam_allocate_channel(i2s->dam_ifc, TEGRA30_DAM_CHIN0_SRC); i2s->dam_ch_refcount++; tegra30_dam_enable_clock(i2s->dam_ifc); @@ -1226,7 +1227,7 @@ int tegra30_make_voice_call_connections(struct codec_config *codec_info, { struct tegra30_i2s *codec_i2s; struct tegra30_i2s *bb_i2s; - int reg; + int reg, ret; codec_i2s = &i2scont[codec_info->i2s_id]; bb_i2s = &i2scont[bb_info->i2s_id]; @@ -1293,14 +1294,30 @@ int tegra30_make_voice_call_connections(struct codec_config *codec_info, } else { /*configure codec dam*/ - configure_dam(codec_i2s, codec_info->channels, - codec_info->rate, codec_info->bitsize, bb_info->channels, - bb_info->rate, bb_info->bitsize); + ret = configure_dam(codec_i2s, + codec_info->channels, + codec_info->rate, + codec_info->bitsize, + bb_info->channels, + bb_info->rate, + bb_info->bitsize); + if (ret != 0) { + pr_err("Error: Failed configure_dam\n"); + return ret; + } /*configure bb dam*/ - configure_dam(bb_i2s, bb_info->channels, - bb_info->rate, bb_info->bitsize, codec_info->channels, - codec_info->rate, codec_info->bitsize); + ret = configure_dam(bb_i2s, + bb_info->channels, + bb_info->rate, + bb_info->bitsize, + codec_info->channels, + codec_info->rate, + codec_info->bitsize); + if (ret != 0) { + pr_err("Error: Failed configure_dam\n"); + return ret; + } /*make ahub connections*/ |