diff options
| author | Xiaogang Cui <xiaogang@codeaurora.org> | 2015-10-16 17:16:22 +0800 |
|---|---|---|
| committer | Jeevan Shriram <jshriram@codeaurora.org> | 2016-05-16 20:10:40 -0700 |
| commit | 65cfc1aa9c32b056cff446ef79d831d715fa9df9 (patch) | |
| tree | 51ae44b19e02c439921eda24f3d40476887913f0 | |
| parent | 8f4e416b1ece1ccdb52e511a2cb2b692e517736e (diff) | |
soc: qcom: dcc: update xpu probe logic to fix failure
TZ image which has registered SCM_SVC_DISABLE_XPU sevice maybe used by
none-dcc-xpu device. Update the xpu check logic to fix the probe
failure issue.
Change-Id: Id2b38d93e7c12648292546592144eda1e82d76be
Signed-off-by: Xiaogang Cui <xiaogang@codeaurora.org>
Signed-off-by: Shashank Mittal <mittals@codeaurora.org>
| -rw-r--r-- | drivers/soc/qcom/dcc.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/drivers/soc/qcom/dcc.c b/drivers/soc/qcom/dcc.c index 6ec796e98be9..3222062fd8b6 100644 --- a/drivers/soc/qcom/dcc.c +++ b/drivers/soc/qcom/dcc.c @@ -1234,19 +1234,21 @@ static int dcc_probe(struct platform_device *pdev) INIT_LIST_HEAD(&drvdata->config_head); drvdata->nr_config = 0; + drvdata->xpu_scm_avail = 0; - if (scm_is_call_available(SCM_SVC_MP, SCM_SVC_DISABLE_XPU) > 0) - drvdata->xpu_scm_avail = 1; - else - drvdata->xpu_scm_avail = 0; - - if (drvdata->xpu_scm_avail) { - res = platform_get_resource_byname(pdev, IORESOURCE_MEM, - "dcc-xpu-base"); - if (!res) - return -ENODEV; - - drvdata->xpu_addr = res->start; + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, + "dcc-xpu-base"); + if (res) { + if (scm_is_call_available(SCM_SVC_MP, + SCM_SVC_DISABLE_XPU) > 0) { + drvdata->xpu_scm_avail = 1; + drvdata->xpu_addr = res->start; + } else { + dev_err(dev, "scm call is not available\n"); + return -EINVAL; + } + } else { + dev_info(dev, "DCC XPU is not specified\n"); } ret = dcc_xpu_unlock(drvdata); |
