mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-23 21:19:04 -04:00
Do not use __qcom_scm_is_call_available in atomic context
__qcom_scm_is_call_available() should be used in the non-atomic context, so fix the couple of wrapper functions which are using __qcom_scm_is_call_available in atomic context. Change-Id: I2c205a68ed2d6c317ccb43b90dd4cbc821eeeab5 Signed-off-by: Prasad Sodagudi <psodagud@codeaurora.org>
This commit is contained in:
parent
b73840d28d
commit
4aa821fbe9
2 changed files with 13 additions and 29 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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,15 +410,9 @@ 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);
|
||||
__qcom_scm_deassert_ps_hold(dev);
|
||||
}
|
||||
EXPORT_SYMBOL(qcom_scm_deassert_ps_hold);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue