Merge "soc: qcom: pil: Add error codes to error logs"
This commit is contained in:
commit
286ce4f15c
5 changed files with 74 additions and 51 deletions
|
@ -189,8 +189,8 @@ int pil_assign_mem_to_subsys(struct pil_desc *desc, phys_addr_t addr,
|
||||||
|
|
||||||
ret = hyp_assign_phys(addr, size, srcVM, 1, destVM, destVMperm, 1);
|
ret = hyp_assign_phys(addr, size, srcVM, 1, destVM, destVMperm, 1);
|
||||||
if (ret)
|
if (ret)
|
||||||
pil_err(desc, "%s: failed for %pa address of size %zx - subsys VMid %d\n",
|
pil_err(desc, "%s: failed for %pa address of size %zx - subsys VMid %d rc:%d\n",
|
||||||
__func__, &addr, size, desc->subsys_vmid);
|
__func__, &addr, size, desc->subsys_vmid, ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(pil_assign_mem_to_subsys);
|
EXPORT_SYMBOL(pil_assign_mem_to_subsys);
|
||||||
|
@ -205,8 +205,8 @@ int pil_assign_mem_to_linux(struct pil_desc *desc, phys_addr_t addr,
|
||||||
|
|
||||||
ret = hyp_assign_phys(addr, size, srcVM, 1, destVM, destVMperm, 1);
|
ret = hyp_assign_phys(addr, size, srcVM, 1, destVM, destVMperm, 1);
|
||||||
if (ret)
|
if (ret)
|
||||||
panic("%s: failed for %pa address of size %zx - subsys VMid %d. Fatal error.\n",
|
panic("%s: failed for %pa address of size %zx - subsys VMid %d rc:%d\n",
|
||||||
__func__, &addr, size, desc->subsys_vmid);
|
__func__, &addr, size, desc->subsys_vmid, ret);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -222,8 +222,8 @@ int pil_assign_mem_to_subsys_and_linux(struct pil_desc *desc,
|
||||||
|
|
||||||
ret = hyp_assign_phys(addr, size, srcVM, 1, destVM, destVMperm, 2);
|
ret = hyp_assign_phys(addr, size, srcVM, 1, destVM, destVMperm, 2);
|
||||||
if (ret)
|
if (ret)
|
||||||
pil_err(desc, "%s: failed for %pa address of size %zx - subsys VMid %d\n",
|
pil_err(desc, "%s: failed for %pa address of size %zx - subsys VMid %d rc:%d\n",
|
||||||
__func__, &addr, size, desc->subsys_vmid);
|
__func__, &addr, size, desc->subsys_vmid, ret);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -642,8 +642,8 @@ static int pil_load_seg(struct pil_desc *desc, struct pil_seg *seg)
|
||||||
seg->filesz, desc->map_fw_mem,
|
seg->filesz, desc->map_fw_mem,
|
||||||
desc->unmap_fw_mem, map_data);
|
desc->unmap_fw_mem, map_data);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
pil_err(desc, "Failed to locate blob %s or blob is too big.\n",
|
pil_err(desc, "Failed to locate blob %s or blob is too big(rc:%d)\n",
|
||||||
fw_name);
|
fw_name, ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -679,7 +679,8 @@ static int pil_load_seg(struct pil_desc *desc, struct pil_seg *seg)
|
||||||
if (desc->ops->verify_blob) {
|
if (desc->ops->verify_blob) {
|
||||||
ret = desc->ops->verify_blob(desc, seg->paddr, seg->sz);
|
ret = desc->ops->verify_blob(desc, seg->paddr, seg->sz);
|
||||||
if (ret)
|
if (ret)
|
||||||
pil_err(desc, "Blob%u failed verification\n", num);
|
pil_err(desc, "Blob%u failed verification(rc:%d)\n",
|
||||||
|
num, ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -754,7 +755,7 @@ int pil_boot(struct pil_desc *desc)
|
||||||
snprintf(fw_name, sizeof(fw_name), "%s.mdt", desc->fw_name);
|
snprintf(fw_name, sizeof(fw_name), "%s.mdt", desc->fw_name);
|
||||||
ret = request_firmware(&fw, fw_name, desc->dev);
|
ret = request_firmware(&fw, fw_name, desc->dev);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
pil_err(desc, "Failed to locate %s\n", fw_name);
|
pil_err(desc, "Failed to locate %s(rc:%d)\n", fw_name, ret);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -792,14 +793,14 @@ int pil_boot(struct pil_desc *desc)
|
||||||
desc->priv->unvoted_flag = 0;
|
desc->priv->unvoted_flag = 0;
|
||||||
ret = pil_proxy_vote(desc);
|
ret = pil_proxy_vote(desc);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
pil_err(desc, "Failed to proxy vote\n");
|
pil_err(desc, "Failed to proxy vote(rc:%d)\n", ret);
|
||||||
goto release_fw;
|
goto release_fw;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (desc->ops->init_image)
|
if (desc->ops->init_image)
|
||||||
ret = desc->ops->init_image(desc, fw->data, fw->size);
|
ret = desc->ops->init_image(desc, fw->data, fw->size);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
pil_err(desc, "Invalid firmware metadata\n");
|
pil_err(desc, "Initializing image failed(rc:%d)\n", ret);
|
||||||
goto err_boot;
|
goto err_boot;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -807,7 +808,7 @@ int pil_boot(struct pil_desc *desc)
|
||||||
ret = desc->ops->mem_setup(desc, priv->region_start,
|
ret = desc->ops->mem_setup(desc, priv->region_start,
|
||||||
priv->region_end - priv->region_start);
|
priv->region_end - priv->region_start);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
pil_err(desc, "Memory setup error\n");
|
pil_err(desc, "Memory setup error(rc:%d)\n", ret);
|
||||||
goto err_deinit_image;
|
goto err_deinit_image;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -852,7 +853,7 @@ int pil_boot(struct pil_desc *desc)
|
||||||
|
|
||||||
ret = desc->ops->auth_and_reset(desc);
|
ret = desc->ops->auth_and_reset(desc);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
pil_err(desc, "Failed to bring out of reset\n");
|
pil_err(desc, "Failed to bring out of reset(rc:%d)\n", ret);
|
||||||
goto err_auth_and_reset;
|
goto err_auth_and_reset;
|
||||||
}
|
}
|
||||||
pil_info(desc, "Brought out of reset\n");
|
pil_info(desc, "Brought out of reset\n");
|
||||||
|
|
|
@ -123,7 +123,8 @@ static int pil_mss_power_up(struct q6v5_data *drv)
|
||||||
if (drv->vreg) {
|
if (drv->vreg) {
|
||||||
ret = regulator_enable(drv->vreg);
|
ret = regulator_enable(drv->vreg);
|
||||||
if (ret)
|
if (ret)
|
||||||
dev_err(drv->desc.dev, "Failed to enable modem regulator.\n");
|
dev_err(drv->desc.dev, "Failed to enable modem regulator(rc:%d)\n",
|
||||||
|
ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (drv->cxrail_bhs) {
|
if (drv->cxrail_bhs) {
|
||||||
|
@ -245,7 +246,7 @@ static int pil_msa_wait_for_mba_ready(struct q6v5_data *drv)
|
||||||
ret = readl_poll_timeout(drv->rmb_base + RMB_PBL_STATUS, status,
|
ret = readl_poll_timeout(drv->rmb_base + RMB_PBL_STATUS, status,
|
||||||
status != 0, POLL_INTERVAL_US, val);
|
status != 0, POLL_INTERVAL_US, val);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(dev, "PBL boot timed out\n");
|
dev_err(dev, "PBL boot timed out (rc:%d)\n", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
if (status != STATUS_PBL_SUCCESS) {
|
if (status != STATUS_PBL_SUCCESS) {
|
||||||
|
@ -257,7 +258,7 @@ static int pil_msa_wait_for_mba_ready(struct q6v5_data *drv)
|
||||||
ret = readl_poll_timeout(drv->rmb_base + RMB_MBA_STATUS, status,
|
ret = readl_poll_timeout(drv->rmb_base + RMB_MBA_STATUS, status,
|
||||||
status != 0, POLL_INTERVAL_US, val);
|
status != 0, POLL_INTERVAL_US, val);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(dev, "MBA boot timed out\n");
|
dev_err(dev, "MBA boot timed out (rc:%d)\n", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
if (status != STATUS_XPU_UNLOCKED &&
|
if (status != STATUS_XPU_UNLOCKED &&
|
||||||
|
@ -299,7 +300,8 @@ int pil_mss_shutdown(struct pil_desc *pil)
|
||||||
if (!ret)
|
if (!ret)
|
||||||
assert_clamps(pil);
|
assert_clamps(pil);
|
||||||
else
|
else
|
||||||
dev_err(pil->dev, "error turning ON AHB clock\n");
|
dev_err(pil->dev, "error turning ON AHB clock(rc:%d)\n",
|
||||||
|
ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = pil_mss_restart_reg(drv, 1);
|
ret = pil_mss_restart_reg(drv, 1);
|
||||||
|
@ -328,7 +330,8 @@ int __pil_mss_deinit_image(struct pil_desc *pil, bool err_path)
|
||||||
status == STATUS_MBA_UNLOCKED || status < 0,
|
status == STATUS_MBA_UNLOCKED || status < 0,
|
||||||
POLL_INTERVAL_US, val);
|
POLL_INTERVAL_US, val);
|
||||||
if (ret)
|
if (ret)
|
||||||
dev_err(pil->dev, "MBA region unlock timed out\n");
|
dev_err(pil->dev, "MBA region unlock timed out(rc:%d)\n",
|
||||||
|
ret);
|
||||||
else if (status < 0)
|
else if (status < 0)
|
||||||
dev_err(pil->dev, "MBA unlock returned err status: %d\n",
|
dev_err(pil->dev, "MBA unlock returned err status: %d\n",
|
||||||
status);
|
status);
|
||||||
|
@ -367,19 +370,20 @@ int pil_mss_make_proxy_votes(struct pil_desc *pil)
|
||||||
|
|
||||||
ret = of_property_read_u32(pil->dev->of_node, "vdd_mx-uV", &uv);
|
ret = of_property_read_u32(pil->dev->of_node, "vdd_mx-uV", &uv);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(pil->dev, "missing vdd_mx-uV property\n");
|
dev_err(pil->dev, "missing vdd_mx-uV property(rc:%d)\n", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = regulator_set_voltage(drv->vreg_mx, uv, INT_MAX);
|
ret = regulator_set_voltage(drv->vreg_mx, uv, INT_MAX);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(pil->dev, "Failed to request vreg_mx voltage\n");
|
dev_err(pil->dev, "Failed to request vreg_mx voltage(rc:%d)\n",
|
||||||
|
ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = regulator_enable(drv->vreg_mx);
|
ret = regulator_enable(drv->vreg_mx);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(pil->dev, "Failed to enable vreg_mx\n");
|
dev_err(pil->dev, "Failed to enable vreg_mx(rc:%d)\n", ret);
|
||||||
regulator_set_voltage(drv->vreg_mx, 0, INT_MAX);
|
regulator_set_voltage(drv->vreg_mx, 0, INT_MAX);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -540,8 +544,8 @@ int pil_mss_reset_load_mba(struct pil_desc *pil)
|
||||||
fw_name_p = drv->non_elf_image ? fw_name_legacy : fw_name;
|
fw_name_p = drv->non_elf_image ? fw_name_legacy : fw_name;
|
||||||
ret = request_firmware(&fw, fw_name_p, pil->dev);
|
ret = request_firmware(&fw, fw_name_p, pil->dev);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(pil->dev, "Failed to locate %s\n",
|
dev_err(pil->dev, "Failed to locate %s (rc:%d)\n",
|
||||||
fw_name_p);
|
fw_name_p, ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -611,14 +615,15 @@ int pil_mss_reset_load_mba(struct pil_desc *pil)
|
||||||
ret = pil_assign_mem_to_subsys(pil, drv->mba_dp_phys,
|
ret = pil_assign_mem_to_subsys(pil, drv->mba_dp_phys,
|
||||||
drv->mba_dp_size);
|
drv->mba_dp_size);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
pr_err("scm_call to unprotect MBA and DP mem failed\n");
|
pr_err("scm_call to unprotect MBA and DP mem failed(rc:%d)\n",
|
||||||
|
ret);
|
||||||
goto err_mba_data;
|
goto err_mba_data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = pil_mss_reset(pil);
|
ret = pil_mss_reset(pil);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(pil->dev, "MBA boot failed.\n");
|
dev_err(pil->dev, "MBA boot failed(rc:%d)\n", ret);
|
||||||
goto err_mss_reset;
|
goto err_mss_reset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -673,7 +678,8 @@ static int pil_msa_auth_modem_mdt(struct pil_desc *pil, const u8 *metadata,
|
||||||
ret = pil_assign_mem_to_subsys(pil, mdata_phys,
|
ret = pil_assign_mem_to_subsys(pil, mdata_phys,
|
||||||
ALIGN(size, SZ_4K));
|
ALIGN(size, SZ_4K));
|
||||||
if (ret) {
|
if (ret) {
|
||||||
pr_err("scm_call to unprotect modem metadata mem failed\n");
|
pr_err("scm_call to unprotect modem metadata mem failed(rc:%d)\n",
|
||||||
|
ret);
|
||||||
dma_free_attrs(&drv->mba_mem_dev, size, mdata_virt,
|
dma_free_attrs(&drv->mba_mem_dev, size, mdata_virt,
|
||||||
mdata_phys, &attrs);
|
mdata_phys, &attrs);
|
||||||
goto fail;
|
goto fail;
|
||||||
|
@ -690,7 +696,8 @@ static int pil_msa_auth_modem_mdt(struct pil_desc *pil, const u8 *metadata,
|
||||||
status == STATUS_META_DATA_AUTH_SUCCESS || status < 0,
|
status == STATUS_META_DATA_AUTH_SUCCESS || status < 0,
|
||||||
POLL_INTERVAL_US, val);
|
POLL_INTERVAL_US, val);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(pil->dev, "MBA authentication of headers timed out\n");
|
dev_err(pil->dev, "MBA authentication of headers timed out(rc:%d)\n",
|
||||||
|
ret);
|
||||||
} else if (status < 0) {
|
} else if (status < 0) {
|
||||||
dev_err(pil->dev, "MBA returned error %d for headers\n",
|
dev_err(pil->dev, "MBA returned error %d for headers\n",
|
||||||
status);
|
status);
|
||||||
|
@ -771,7 +778,8 @@ static int pil_msa_mba_auth(struct pil_desc *pil)
|
||||||
ret = readl_poll_timeout(drv->rmb_base + RMB_MBA_STATUS, status,
|
ret = readl_poll_timeout(drv->rmb_base + RMB_MBA_STATUS, status,
|
||||||
status == STATUS_AUTH_COMPLETE || status < 0, 50, val);
|
status == STATUS_AUTH_COMPLETE || status < 0, 50, val);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(pil->dev, "MBA authentication of image timed out\n");
|
dev_err(pil->dev, "MBA authentication of image timed out(rc:%d)\n",
|
||||||
|
ret);
|
||||||
} else if (status < 0) {
|
} else if (status < 0) {
|
||||||
dev_err(pil->dev, "MBA returned error %d for image\n", status);
|
dev_err(pil->dev, "MBA returned error %d for image\n", status);
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
|
|
|
@ -291,11 +291,13 @@ static int pil_mss_loadable_init(struct modem_data *drv,
|
||||||
ret = regulator_set_voltage(q6->vreg, VDD_MSS_UV,
|
ret = regulator_set_voltage(q6->vreg, VDD_MSS_UV,
|
||||||
MAX_VDD_MSS_UV);
|
MAX_VDD_MSS_UV);
|
||||||
if (ret)
|
if (ret)
|
||||||
dev_err(&pdev->dev, "Failed to set vreg voltage.\n");
|
dev_err(&pdev->dev, "Failed to set vreg voltage(rc:%d)\n",
|
||||||
|
ret);
|
||||||
|
|
||||||
ret = regulator_set_load(q6->vreg, 100000);
|
ret = regulator_set_load(q6->vreg, 100000);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(&pdev->dev, "Failed to set vreg mode.\n");
|
dev_err(&pdev->dev, "Failed to set vreg mode(rc:%d)\n",
|
||||||
|
ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -330,7 +332,7 @@ static int pil_mss_loadable_init(struct modem_data *drv,
|
||||||
ret = of_property_read_u32(pdev->dev.of_node,
|
ret = of_property_read_u32(pdev->dev.of_node,
|
||||||
"qcom,pas-id", &drv->pas_id);
|
"qcom,pas-id", &drv->pas_id);
|
||||||
if (ret)
|
if (ret)
|
||||||
dev_warn(&pdev->dev, "Failed to find the pas_id.\n");
|
dev_info(&pdev->dev, "No pas_id found.\n");
|
||||||
|
|
||||||
drv->subsys_desc.pil_mss_memsetup =
|
drv->subsys_desc.pil_mss_memsetup =
|
||||||
of_property_read_bool(pdev->dev.of_node, "qcom,pil-mss-memsetup");
|
of_property_read_bool(pdev->dev.of_node, "qcom,pil-mss-memsetup");
|
||||||
|
|
|
@ -91,50 +91,53 @@ int pil_q6v5_make_proxy_votes(struct pil_desc *pil)
|
||||||
|
|
||||||
ret = of_property_read_u32(pil->dev->of_node, "vdd_cx-voltage", &uv);
|
ret = of_property_read_u32(pil->dev->of_node, "vdd_cx-voltage", &uv);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(pil->dev, "missing vdd_cx-voltage property\n");
|
dev_err(pil->dev, "missing vdd_cx-voltage property(rc:%d)\n",
|
||||||
|
ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = clk_prepare_enable(drv->xo);
|
ret = clk_prepare_enable(drv->xo);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(pil->dev, "Failed to vote for XO\n");
|
dev_err(pil->dev, "Failed to vote for XO(rc:%d)\n", ret);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = clk_prepare_enable(drv->pnoc_clk);
|
ret = clk_prepare_enable(drv->pnoc_clk);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(pil->dev, "Failed to vote for pnoc\n");
|
dev_err(pil->dev, "Failed to vote for pnoc(rc:%d)\n", ret);
|
||||||
goto err_pnoc_vote;
|
goto err_pnoc_vote;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = clk_prepare_enable(drv->qdss_clk);
|
ret = clk_prepare_enable(drv->qdss_clk);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(pil->dev, "Failed to vote for qdss\n");
|
dev_err(pil->dev, "Failed to vote for qdss(rc:%d)\n", ret);
|
||||||
goto err_qdss_vote;
|
goto err_qdss_vote;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = regulator_set_voltage(drv->vreg_cx, uv, INT_MAX);
|
ret = regulator_set_voltage(drv->vreg_cx, uv, INT_MAX);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(pil->dev, "Failed to request vdd_cx voltage.\n");
|
dev_err(pil->dev, "Failed to request vdd_cx voltage(rc:%d)\n",
|
||||||
|
ret);
|
||||||
goto err_cx_voltage;
|
goto err_cx_voltage;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = regulator_set_load(drv->vreg_cx, 100000);
|
ret = regulator_set_load(drv->vreg_cx, 100000);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(pil->dev, "Failed to set vdd_cx mode.\n");
|
dev_err(pil->dev, "Failed to set vdd_cx mode(rc:%d)\n", ret);
|
||||||
goto err_cx_mode;
|
goto err_cx_mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = regulator_enable(drv->vreg_cx);
|
ret = regulator_enable(drv->vreg_cx);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(pil->dev, "Failed to vote for vdd_cx\n");
|
dev_err(pil->dev, "Failed to vote for vdd_cx(rc:%d)\n", ret);
|
||||||
goto err_cx_enable;
|
goto err_cx_enable;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (drv->vreg_pll) {
|
if (drv->vreg_pll) {
|
||||||
ret = regulator_enable(drv->vreg_pll);
|
ret = regulator_enable(drv->vreg_pll);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(pil->dev, "Failed to vote for vdd_pll\n");
|
dev_err(pil->dev, "Failed to vote for vdd_pll(rc:%d)\n",
|
||||||
|
ret);
|
||||||
goto err_vreg_pll;
|
goto err_vreg_pll;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -165,7 +168,8 @@ void pil_q6v5_remove_proxy_votes(struct pil_desc *pil)
|
||||||
|
|
||||||
ret = of_property_read_u32(pil->dev->of_node, "vdd_cx-voltage", &uv);
|
ret = of_property_read_u32(pil->dev->of_node, "vdd_cx-voltage", &uv);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(pil->dev, "missing vdd_cx-voltage property\n");
|
dev_err(pil->dev, "missing vdd_cx-voltage property(rc:%d)\n",
|
||||||
|
ret);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -708,13 +712,15 @@ struct q6v5_data *pil_q6v5_init(struct platform_device *pdev)
|
||||||
ret = regulator_set_voltage(drv->vreg_pll, vdd_pll,
|
ret = regulator_set_voltage(drv->vreg_pll, vdd_pll,
|
||||||
vdd_pll);
|
vdd_pll);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(&pdev->dev, "Failed to set vdd_pll voltage.\n");
|
dev_err(&pdev->dev, "Failed to set vdd_pll voltage(rc:%d)\n",
|
||||||
|
ret);
|
||||||
return ERR_PTR(ret);
|
return ERR_PTR(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = regulator_set_load(drv->vreg_pll, 10000);
|
ret = regulator_set_load(drv->vreg_pll, 10000);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(&pdev->dev, "Failed to set vdd_pll mode.\n");
|
dev_err(&pdev->dev, "Failed to set vdd_pll mode(rc:%d)\n",
|
||||||
|
ret);
|
||||||
return ERR_PTR(ret);
|
return ERR_PTR(ret);
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
|
|
|
@ -339,7 +339,8 @@ static int of_read_regs(struct device *dev, struct reg_info **regs_ref,
|
||||||
rc = of_property_read_u32_array(dev->of_node, reg_uV_uA_name,
|
rc = of_property_read_u32_array(dev->of_node, reg_uV_uA_name,
|
||||||
vdd_uV_uA, len);
|
vdd_uV_uA, len);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
dev_err(dev, "Failed to read uV/uA values\n");
|
dev_err(dev, "Failed to read uV/uA values(rc:%d)\n",
|
||||||
|
rc);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -423,7 +424,8 @@ static int enable_regulators(struct pil_tz_data *d, struct device *dev,
|
||||||
rc = regulator_set_voltage(regs[i].reg,
|
rc = regulator_set_voltage(regs[i].reg,
|
||||||
regs[i].uV, INT_MAX);
|
regs[i].uV, INT_MAX);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
dev_err(dev, "Failed to request voltage.\n");
|
dev_err(dev, "Failed to request voltage(rc:%d)\n",
|
||||||
|
rc);
|
||||||
goto err_voltage;
|
goto err_voltage;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -432,7 +434,8 @@ static int enable_regulators(struct pil_tz_data *d, struct device *dev,
|
||||||
rc = regulator_set_load(regs[i].reg,
|
rc = regulator_set_load(regs[i].reg,
|
||||||
regs[i].uA);
|
regs[i].uA);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
dev_err(dev, "Failed to set regulator mode\n");
|
dev_err(dev, "Failed to set regulator mode(rc:%d)\n",
|
||||||
|
rc);
|
||||||
goto err_mode;
|
goto err_mode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -442,7 +445,7 @@ static int enable_regulators(struct pil_tz_data *d, struct device *dev,
|
||||||
|
|
||||||
rc = regulator_enable(regs[i].reg);
|
rc = regulator_enable(regs[i].reg);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
dev_err(dev, "Regulator enable failed\n");
|
dev_err(dev, "Regulator enable failed(rc:%d)\n", rc);
|
||||||
goto err_enable;
|
goto err_enable;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -499,7 +502,7 @@ static int prepare_enable_clocks(struct device *dev, struct clk **clks,
|
||||||
for (i = 0; i < clk_count; i++) {
|
for (i = 0; i < clk_count; i++) {
|
||||||
rc = clk_prepare_enable(clks[i]);
|
rc = clk_prepare_enable(clks[i]);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
dev_err(dev, "Clock enable failed\n");
|
dev_err(dev, "Clock enable failed(rc:%d)\n", rc);
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -541,7 +544,8 @@ static int pil_make_proxy_vote(struct pil_desc *pil)
|
||||||
if (d->bus_client) {
|
if (d->bus_client) {
|
||||||
rc = msm_bus_scale_client_update_request(d->bus_client, 1);
|
rc = msm_bus_scale_client_update_request(d->bus_client, 1);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
dev_err(pil->dev, "bandwidth request failed\n");
|
dev_err(pil->dev, "bandwidth request failed(rc:%d)\n",
|
||||||
|
rc);
|
||||||
goto err_bw;
|
goto err_bw;
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
|
@ -995,7 +999,8 @@ static int pil_tz_driver_probe(struct platform_device *pdev)
|
||||||
rc = of_property_read_u32(pdev->dev.of_node, "qcom,smem-id",
|
rc = of_property_read_u32(pdev->dev.of_node, "qcom,smem-id",
|
||||||
&d->smem_id);
|
&d->smem_id);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
dev_err(&pdev->dev, "Failed to get the smem_id.\n");
|
dev_err(&pdev->dev, "Failed to get the smem_id(rc:%d)\n",
|
||||||
|
rc);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1019,7 +1024,8 @@ static int pil_tz_driver_probe(struct platform_device *pdev)
|
||||||
rc = of_property_read_u32(pdev->dev.of_node, "qcom,pas-id",
|
rc = of_property_read_u32(pdev->dev.of_node, "qcom,pas-id",
|
||||||
&d->pas_id);
|
&d->pas_id);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
dev_err(&pdev->dev, "Failed to find the pas_id.\n");
|
dev_err(&pdev->dev, "Failed to find the pas_id(rc:%d)\n",
|
||||||
|
rc);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
scm_pas_init(MSM_BUS_MASTER_CRYPTO_CORE0);
|
scm_pas_init(MSM_BUS_MASTER_CRYPTO_CORE0);
|
||||||
|
|
Loading…
Add table
Reference in a new issue