diff options
| author | Ray Zhang <rayz@codeaurora.org> | 2017-03-28 23:43:44 +0800 |
|---|---|---|
| committer | Ray Zhang <rayz@codeaurora.org> | 2017-04-14 17:51:55 +0800 |
| commit | 839e05b97ae9fd27b2c7e58df5ac8e6ce7aba513 (patch) | |
| tree | 28adccd7ddb554cb883e4e644c74aa0bada4913e /drivers/platform/msm | |
| parent | 15a311d026dafc7df0402bc767bd437e2bbfb074 (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.c | 17 |
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; } |
