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

Commit c22737e7 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "firmware: qcom_scm: Fix the __qcom_scm_is_call_available"

parents a4fa30e6 170d970a
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -1032,7 +1032,7 @@ int __qcom_scm_is_call_available(struct device *dev, u32 svc_id, u32 cmd_id)
		return -EINVAL;
	}

	ret = qcom_scm_call_atomic(dev, &desc);
	ret = qcom_scm_call(dev, &desc);

	return ret ? : desc.res[0];
}
@@ -1059,6 +1059,7 @@ int __qcom_scm_get_feat_version(struct device *dev, u64 feat_id, u64 *version)

void __qcom_scm_halt_spmi_pmic_arbiter(struct device *dev)
{
	int ret;
	struct qcom_scm_desc desc = {
		.svc = QCOM_SCM_SVC_PWR,
		.cmd = QCOM_SCM_PWR_IO_DISABLE_PMIC_ARBITER,
@@ -1068,11 +1069,14 @@ void __qcom_scm_halt_spmi_pmic_arbiter(struct device *dev)
	desc.args[0] = 0;
	desc.arginfo = QCOM_SCM_ARGS(1);

	qcom_scm_call_atomic(dev, &desc);
	ret = qcom_scm_call_atomic(dev, &desc);
	if (ret)
		pr_err("Failed to halt_spmi_pmic_arbiter=0x%x\n", ret);
}

void __qcom_scm_deassert_ps_hold(struct device *dev)
{
	int ret;
	struct qcom_scm_desc desc = {
		.svc = QCOM_SCM_SVC_PWR,
		.cmd = QCOM_SCM_PWR_IO_DEASSERT_PS_HOLD,
@@ -1082,7 +1086,9 @@ void __qcom_scm_deassert_ps_hold(struct device *dev)
	desc.args[0] = 0;
	desc.arginfo = QCOM_SCM_ARGS(1);

	qcom_scm_call_atomic(dev, &desc);
	ret = qcom_scm_call_atomic(dev, &desc);
	if (ret)
		pr_err("Failed to deassert_ps_hold=0x%x\n", ret);
}

void __qcom_scm_mmu_sync(struct device *dev, bool sync)
+5 −27
Original line number Diff line number Diff line
@@ -152,23 +152,15 @@ EXPORT_SYMBOL(qcom_scm_spin_cpu);
void qcom_scm_set_download_mode(enum qcom_download_mode mode,
				phys_addr_t tcsr_boot_misc)
{
	bool avail;
	int ret = 0;
	int ret = -EINVAL;
	struct device *dev = __scm ? __scm->dev : NULL;

	avail = __qcom_scm_is_call_available(dev,
					     QCOM_SCM_SVC_BOOT,
					     QCOM_SCM_BOOT_SET_DLOAD_MODE);
	if (avail) {
		ret = __qcom_scm_set_dload_mode(dev, mode);
	} else if (tcsr_boot_misc || (__scm && __scm->dload_mode_addr)) {
	if (tcsr_boot_misc || (__scm && __scm->dload_mode_addr)) {
		ret = __qcom_scm_io_writel(dev,
				tcsr_boot_misc ? : __scm->dload_mode_addr,
				mode);
	} else {
		dev_err(dev,
			"No available mechanism for setting download mode\n");
	}
	} else
		ret = __qcom_scm_set_dload_mode(dev, mode);

	if (ret)
		dev_err(dev, "failed to set download mode: %d\n", ret);
@@ -402,16 +394,8 @@ EXPORT_SYMBOL(qcom_scm_get_jtag_etm_feat_id);
 */
void qcom_scm_halt_spmi_pmic_arbiter(void)
{
	bool avail;
	struct device *dev = __scm ? __scm->dev : NULL;

	avail = __qcom_scm_is_call_available(dev,
					QCOM_SCM_SVC_PWR,
					QCOM_SCM_PWR_IO_DISABLE_PMIC_ARBITER);

	if (!avail)
		return;

	pr_crit("Calling SCM to disable SPMI PMIC arbiter\n");
	return __qcom_scm_halt_spmi_pmic_arbiter(dev);
}
@@ -426,14 +410,8 @@ EXPORT_SYMBOL(qcom_scm_halt_spmi_pmic_arbiter);
 */
void qcom_scm_deassert_ps_hold(void)
{
	bool avail;
	struct device *dev = __scm ? __scm->dev : NULL;

	avail = __qcom_scm_is_call_available(dev,
					     QCOM_SCM_SVC_PWR,
					     QCOM_SCM_PWR_IO_DEASSERT_PS_HOLD);

	if (avail)
	__qcom_scm_deassert_ps_hold(dev);
}
EXPORT_SYMBOL(qcom_scm_deassert_ps_hold);