Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 286ce4f1 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "soc: qcom: pil: Add error codes to error logs"

parents 5d249813 e7017798
Loading
Loading
Loading
Loading
+15 −14
Original line number Diff line number Diff line
@@ -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);
	if (ret)
		pil_err(desc, "%s: failed for %pa address of size %zx - subsys VMid %d\n",
				__func__, &addr, size, desc->subsys_vmid);
		pil_err(desc, "%s: failed for %pa address of size %zx - subsys VMid %d rc:%d\n",
				__func__, &addr, size, desc->subsys_vmid, ret);
	return ret;
}
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);
	if (ret)
		panic("%s: failed for %pa address of size %zx - subsys VMid %d. Fatal error.\n",
				__func__, &addr, size, desc->subsys_vmid);
		panic("%s: failed for %pa address of size %zx - subsys VMid %d rc:%d\n",
				__func__, &addr, size, desc->subsys_vmid, 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);
	if (ret)
		pil_err(desc, "%s: failed for %pa address of size %zx - subsys VMid %d\n",
				__func__, &addr, size, desc->subsys_vmid);
		pil_err(desc, "%s: failed for %pa address of size %zx - subsys VMid %d rc:%d\n",
				__func__, &addr, size, desc->subsys_vmid, 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,
					      desc->unmap_fw_mem, map_data);
		if (ret < 0) {
			pil_err(desc, "Failed to locate blob %s or blob is too big.\n",
				fw_name);
			pil_err(desc, "Failed to locate blob %s or blob is too big(rc:%d)\n",
				fw_name, 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) {
		ret = desc->ops->verify_blob(desc, seg->paddr, seg->sz);
		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;
@@ -754,7 +755,7 @@ int pil_boot(struct pil_desc *desc)
	snprintf(fw_name, sizeof(fw_name), "%s.mdt", desc->fw_name);
	ret = request_firmware(&fw, fw_name, desc->dev);
	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;
	}

@@ -792,14 +793,14 @@ int pil_boot(struct pil_desc *desc)
	desc->priv->unvoted_flag = 0;
	ret = pil_proxy_vote(desc);
	if (ret) {
		pil_err(desc, "Failed to proxy vote\n");
		pil_err(desc, "Failed to proxy vote(rc:%d)\n", ret);
		goto release_fw;
	}

	if (desc->ops->init_image)
		ret = desc->ops->init_image(desc, fw->data, fw->size);
	if (ret) {
		pil_err(desc, "Invalid firmware metadata\n");
		pil_err(desc, "Initializing image failed(rc:%d)\n", ret);
		goto err_boot;
	}

@@ -807,7 +808,7 @@ int pil_boot(struct pil_desc *desc)
		ret = desc->ops->mem_setup(desc, priv->region_start,
				priv->region_end - priv->region_start);
	if (ret) {
		pil_err(desc, "Memory setup error\n");
		pil_err(desc, "Memory setup error(rc:%d)\n", ret);
		goto err_deinit_image;
	}

@@ -852,7 +853,7 @@ int pil_boot(struct pil_desc *desc)

	ret = desc->ops->auth_and_reset(desc);
	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;
	}
	pil_info(desc, "Brought out of reset\n");
+23 −15
Original line number Diff line number Diff line
@@ -123,7 +123,8 @@ static int pil_mss_power_up(struct q6v5_data *drv)
	if (drv->vreg) {
		ret = regulator_enable(drv->vreg);
		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) {
@@ -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,
				 status != 0, POLL_INTERVAL_US, val);
	if (ret) {
		dev_err(dev, "PBL boot timed out\n");
		dev_err(dev, "PBL boot timed out (rc:%d)\n", ret);
		return ret;
	}
	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,
				status != 0, POLL_INTERVAL_US, val);
	if (ret) {
		dev_err(dev, "MBA boot timed out\n");
		dev_err(dev, "MBA boot timed out (rc:%d)\n", ret);
		return ret;
	}
	if (status != STATUS_XPU_UNLOCKED &&
@@ -299,7 +300,8 @@ int pil_mss_shutdown(struct pil_desc *pil)
		if (!ret)
			assert_clamps(pil);
		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);
@@ -328,7 +330,8 @@ int __pil_mss_deinit_image(struct pil_desc *pil, bool err_path)
				status == STATUS_MBA_UNLOCKED || status < 0,
				POLL_INTERVAL_US, val);
		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)
			dev_err(pil->dev, "MBA unlock returned err status: %d\n",
						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);
	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;
	}

	ret = regulator_set_voltage(drv->vreg_mx, uv, INT_MAX);
	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;
	}

	ret = regulator_enable(drv->vreg_mx);
	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);
		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;
	ret = request_firmware(&fw, fw_name_p, pil->dev);
	if (ret) {
		dev_err(pil->dev, "Failed to locate %s\n",
						fw_name_p);
		dev_err(pil->dev, "Failed to locate %s (rc:%d)\n",
						fw_name_p, 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,
							drv->mba_dp_size);
		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;
		}
	}

	ret = pil_mss_reset(pil);
	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;
	}

@@ -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,
							ALIGN(size, SZ_4K));
		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,
							mdata_phys, &attrs);
			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,
			POLL_INTERVAL_US, val);
	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) {
		dev_err(pil->dev, "MBA returned error %d for headers\n",
				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,
		status == STATUS_AUTH_COMPLETE || status < 0, 50, val);
	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) {
		dev_err(pil->dev, "MBA returned error %d for image\n", status);
		ret = -EINVAL;
+5 −3
Original line number Diff line number Diff line
@@ -291,11 +291,13 @@ static int pil_mss_loadable_init(struct modem_data *drv,
		ret = regulator_set_voltage(q6->vreg, VDD_MSS_UV,
						MAX_VDD_MSS_UV);
		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);
		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;
		}
	}
@@ -330,7 +332,7 @@ static int pil_mss_loadable_init(struct modem_data *drv,
	ret = of_property_read_u32(pdev->dev.of_node,
					"qcom,pas-id", &drv->pas_id);
	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 =
	of_property_read_bool(pdev->dev.of_node, "qcom,pil-mss-memsetup");
+17 −11
Original line number Diff line number Diff line
@@ -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);
	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;
	}

	ret = clk_prepare_enable(drv->xo);
	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;
	}

	ret = clk_prepare_enable(drv->pnoc_clk);
	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;
	}

	ret = clk_prepare_enable(drv->qdss_clk);
	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;
	}

	ret = regulator_set_voltage(drv->vreg_cx, uv, INT_MAX);
	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;
	}

	ret = regulator_set_load(drv->vreg_cx, 100000);
	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;
	}

	ret = regulator_enable(drv->vreg_cx);
	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;
	}

	if (drv->vreg_pll) {
		ret = regulator_enable(drv->vreg_pll);
		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;
		}
	}
@@ -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);
	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;
	}

@@ -708,13 +712,15 @@ struct q6v5_data *pil_q6v5_init(struct platform_device *pdev)
			ret = regulator_set_voltage(drv->vreg_pll, vdd_pll,
							vdd_pll);
			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);
			}

			ret = regulator_set_load(drv->vreg_pll, 10000);
			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);
			}
		} else
+14 −8
Original line number Diff line number Diff line
@@ -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,
					vdd_uV_uA, len);
		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;
		}

@@ -423,7 +424,8 @@ static int enable_regulators(struct pil_tz_data *d, struct device *dev,
			rc = regulator_set_voltage(regs[i].reg,
					regs[i].uV, INT_MAX);
			if (rc) {
				dev_err(dev, "Failed to request voltage.\n");
				dev_err(dev, "Failed to request voltage(rc:%d)\n",
									rc);
				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,
						regs[i].uA);
			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;
			}
		}
@@ -442,7 +445,7 @@ static int enable_regulators(struct pil_tz_data *d, struct device *dev,

		rc = regulator_enable(regs[i].reg);
		if (rc) {
			dev_err(dev, "Regulator enable failed\n");
			dev_err(dev, "Regulator enable failed(rc:%d)\n", rc);
			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++) {
		rc = clk_prepare_enable(clks[i]);
		if (rc) {
			dev_err(dev, "Clock enable failed\n");
			dev_err(dev, "Clock enable failed(rc:%d)\n", rc);
			goto err;
		}
	}
@@ -541,7 +544,8 @@ static int pil_make_proxy_vote(struct pil_desc *pil)
	if (d->bus_client) {
		rc = msm_bus_scale_client_update_request(d->bus_client, 1);
		if (rc) {
			dev_err(pil->dev, "bandwidth request failed\n");
			dev_err(pil->dev, "bandwidth request failed(rc:%d)\n",
									rc);
			goto err_bw;
		}
	} 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",
						&d->smem_id);
		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;
		}
	}
@@ -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",
								&d->pas_id);
		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;
		}
		scm_pas_init(MSM_BUS_MASTER_CRYPTO_CORE0);