summaryrefslogtreecommitdiff
path: root/drivers/platform/msm
diff options
context:
space:
mode:
authorRay Zhang <rayz@codeaurora.org>2017-03-28 23:43:44 +0800
committerRay Zhang <rayz@codeaurora.org>2017-04-14 17:51:55 +0800
commit839e05b97ae9fd27b2c7e58df5ac8e6ce7aba513 (patch)
tree28adccd7ddb554cb883e4e644c74aa0bada4913e /drivers/platform/msm
parent15a311d026dafc7df0402bc767bd437e2bbfb074 (diff)
msm: ext_disp: add audio ops to notify codec status
In some cases the audio codec is not ready when display is up, while the interface driver doesn't know how to respond without knowing audio codec's status. So add an audio ops to support this case. CRs-Fixed: 2010135 Change-Id: I4a19f57858a5ed2999daefc0192d62bef332453b Signed-off-by: Ray Zhang <rayz@codeaurora.org>
Diffstat (limited to 'drivers/platform/msm')
-rw-r--r--drivers/platform/msm/msm_ext_display.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/drivers/platform/msm/msm_ext_display.c b/drivers/platform/msm/msm_ext_display.c
index 6f9a13040cd5..c7c1b1567bf3 100644
--- a/drivers/platform/msm/msm_ext_display.c
+++ b/drivers/platform/msm/msm_ext_display.c
@@ -654,6 +654,7 @@ int msm_ext_disp_register_audio_codec(struct platform_device *pdev,
{
int ret = 0;
struct msm_ext_disp *ext_disp = NULL;
+ struct msm_ext_disp_list *node = NULL;
if (!pdev || !ops) {
pr_err("Invalid params\n");
@@ -671,17 +672,23 @@ int msm_ext_disp_register_audio_codec(struct platform_device *pdev,
if ((ext_disp->current_disp != EXT_DISPLAY_TYPE_MAX)
&& ext_disp->ops) {
pr_err("Codec already registered\n");
- ret = -EINVAL;
- goto end;
+ mutex_unlock(&ext_disp->lock);
+ return -EINVAL;
}
ext_disp->ops = ops;
- pr_debug("audio codec registered\n");
-
-end:
mutex_unlock(&ext_disp->lock);
+ list_for_each_entry(node, &ext_disp->display_list, list) {
+ struct msm_ext_disp_init_data *data = node->data;
+
+ if (data->codec_ops.codec_ready)
+ data->codec_ops.codec_ready(data->pdev);
+ }
+
+ pr_debug("audio codec registered\n");
+
return ret;
}