Loading drivers/cpuidle/lpm-levels-of.c +4 −1 Original line number Diff line number Diff line Loading @@ -384,6 +384,7 @@ static int parse_lpm_mode(const char *str) int i; struct lpm_lookup_table mode_lookup[] = { {MSM_SPM_MODE_POWER_COLLAPSE, "pc"}, {MSM_SPM_MODE_STANDALONE_POWER_COLLAPSE, "spc"}, {MSM_SPM_MODE_FASTPC, "fpc"}, {MSM_SPM_MODE_GDHS, "gdhs"}, {MSM_SPM_MODE_RETENTION, "retention"}, Loading Loading @@ -472,7 +473,9 @@ static int parse_cluster_level(struct device_node *node, if (level->mode[i] < 0) goto failed; if (level->mode[i] == MSM_SPM_MODE_POWER_COLLAPSE) if (level->mode[i] == MSM_SPM_MODE_POWER_COLLAPSE || level->mode[i] == MSM_SPM_MODE_STANDALONE_POWER_COLLAPSE) level->is_reset |= true; } } Loading drivers/cpuidle/lpm-levels.c +2 −0 Original line number Diff line number Diff line Loading @@ -225,6 +225,7 @@ int set_l2_mode(struct low_power_ops *ops, int mode, bool notify_rpm) coresight_cti_ctx_restore(); switch (mode) { case MSM_SPM_MODE_STANDALONE_POWER_COLLAPSE: case MSM_SPM_MODE_POWER_COLLAPSE: case MSM_SPM_MODE_FASTPC: cpu_ops->tz_flag = MSM_SCM_L2_OFF; Loading Loading @@ -259,6 +260,7 @@ int set_l3_mode(struct low_power_ops *ops, int mode, bool notify_rpm) smp_processor_id())->lpm_dev; switch (mode) { case MSM_SPM_MODE_STANDALONE_POWER_COLLAPSE: case MSM_SPM_MODE_POWER_COLLAPSE: case MSM_SPM_MODE_FASTPC: cpu_ops->tz_flag |= MSM_SCM_L3_PC_OFF; Loading drivers/power/qcom/msm-pm.c +7 −5 Original line number Diff line number Diff line Loading @@ -260,7 +260,7 @@ int msm_pm_collapse(unsigned long unused) EXPORT_SYMBOL(msm_pm_collapse); static bool __ref msm_pm_spm_power_collapse( unsigned int cpu, bool from_idle, bool notify_rpm) unsigned int cpu, int mode, bool from_idle, bool notify_rpm) { void *entry; bool collapsed = 0; Loading @@ -271,8 +271,7 @@ static bool __ref msm_pm_spm_power_collapse( pr_info("CPU%u: %s: notify_rpm %d\n", cpu, __func__, (int) notify_rpm); ret = msm_spm_set_low_power_mode( MSM_SPM_MODE_POWER_COLLAPSE, notify_rpm); ret = msm_spm_set_low_power_mode(mode, notify_rpm); WARN_ON(ret); entry = save_cpu_regs ? cpu_resume : msm_secondary_startup; Loading Loading @@ -310,7 +309,9 @@ static bool msm_pm_power_collapse_standalone( unsigned int cpu = smp_processor_id(); bool collapsed; collapsed = msm_pm_spm_power_collapse(cpu, from_idle, false); collapsed = msm_pm_spm_power_collapse(cpu, MSM_SPM_MODE_STANDALONE_POWER_COLLAPSE, from_idle, false); return collapsed; } Loading Loading @@ -366,7 +367,8 @@ static bool msm_pm_power_collapse(bool from_idle) if (cpu_online(cpu) && !msm_no_ramp_down_pc) saved_acpuclk_rate = ramp_down_last_cpu(cpu); collapsed = msm_pm_spm_power_collapse(cpu, from_idle, true); collapsed = msm_pm_spm_power_collapse(cpu, MSM_SPM_MODE_POWER_COLLAPSE, from_idle, true); if (cpu_online(cpu) && !msm_no_ramp_down_pc) ramp_up_first_cpu(cpu, saved_acpuclk_rate); Loading drivers/soc/qcom/spm_devices.c +5 −1 Original line number Diff line number Diff line Loading @@ -175,6 +175,7 @@ static void msm_spm_config_q2s(struct msm_spm_device *dev, unsigned int mode) spm_legacy_mode = 0; break; case MSM_SPM_MODE_GDHS: case MSM_SPM_MODE_STANDALONE_POWER_COLLAPSE: case MSM_SPM_MODE_POWER_COLLAPSE: qchannel_ignore = dev->qchannel_ignore; spm_legacy_mode = 1; Loading @@ -198,6 +199,7 @@ static void msm_spm_config_hw_flush(struct msm_spm_device *dev, switch (mode) { case MSM_SPM_MODE_FASTPC: case MSM_SPM_MODE_STANDALONE_POWER_COLLAPSE: case MSM_SPM_MODE_POWER_COLLAPSE: val = BIT(0); break; Loading @@ -219,6 +221,7 @@ static void msm_spm_config_slpreq(struct msm_spm_device *dev, switch (mode) { case MSM_SPM_MODE_FASTPC: case MSM_SPM_MODE_GDHS: case MSM_SPM_MODE_STANDALONE_POWER_COLLAPSE: case MSM_SPM_MODE_POWER_COLLAPSE: val = BIT(4); break; Loading Loading @@ -729,7 +732,8 @@ static int msm_spm_dev_probe(struct platform_device *pdev) {"qcom,saw2-spm-cmd-wfi", MSM_SPM_MODE_CLOCK_GATING}, {"qcom,saw2-spm-cmd-ret", MSM_SPM_MODE_RETENTION}, {"qcom,saw2-spm-cmd-gdhs", MSM_SPM_MODE_GDHS}, {"qcom,saw2-spm-cmd-spc", MSM_SPM_MODE_POWER_COLLAPSE}, {"qcom,saw2-spm-cmd-spc", MSM_SPM_MODE_STANDALONE_POWER_COLLAPSE}, {"qcom,saw2-spm-cmd-pc", MSM_SPM_MODE_POWER_COLLAPSE}, {"qcom,saw2-spm-cmd-fpc", MSM_SPM_MODE_FASTPC}, }; Loading include/soc/qcom/spm.h +1 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ enum { MSM_SPM_MODE_RETENTION, MSM_SPM_MODE_GDHS, MSM_SPM_MODE_POWER_COLLAPSE, MSM_SPM_MODE_STANDALONE_POWER_COLLAPSE, MSM_SPM_MODE_FASTPC, MSM_SPM_MODE_NR }; Loading Loading
drivers/cpuidle/lpm-levels-of.c +4 −1 Original line number Diff line number Diff line Loading @@ -384,6 +384,7 @@ static int parse_lpm_mode(const char *str) int i; struct lpm_lookup_table mode_lookup[] = { {MSM_SPM_MODE_POWER_COLLAPSE, "pc"}, {MSM_SPM_MODE_STANDALONE_POWER_COLLAPSE, "spc"}, {MSM_SPM_MODE_FASTPC, "fpc"}, {MSM_SPM_MODE_GDHS, "gdhs"}, {MSM_SPM_MODE_RETENTION, "retention"}, Loading Loading @@ -472,7 +473,9 @@ static int parse_cluster_level(struct device_node *node, if (level->mode[i] < 0) goto failed; if (level->mode[i] == MSM_SPM_MODE_POWER_COLLAPSE) if (level->mode[i] == MSM_SPM_MODE_POWER_COLLAPSE || level->mode[i] == MSM_SPM_MODE_STANDALONE_POWER_COLLAPSE) level->is_reset |= true; } } Loading
drivers/cpuidle/lpm-levels.c +2 −0 Original line number Diff line number Diff line Loading @@ -225,6 +225,7 @@ int set_l2_mode(struct low_power_ops *ops, int mode, bool notify_rpm) coresight_cti_ctx_restore(); switch (mode) { case MSM_SPM_MODE_STANDALONE_POWER_COLLAPSE: case MSM_SPM_MODE_POWER_COLLAPSE: case MSM_SPM_MODE_FASTPC: cpu_ops->tz_flag = MSM_SCM_L2_OFF; Loading Loading @@ -259,6 +260,7 @@ int set_l3_mode(struct low_power_ops *ops, int mode, bool notify_rpm) smp_processor_id())->lpm_dev; switch (mode) { case MSM_SPM_MODE_STANDALONE_POWER_COLLAPSE: case MSM_SPM_MODE_POWER_COLLAPSE: case MSM_SPM_MODE_FASTPC: cpu_ops->tz_flag |= MSM_SCM_L3_PC_OFF; Loading
drivers/power/qcom/msm-pm.c +7 −5 Original line number Diff line number Diff line Loading @@ -260,7 +260,7 @@ int msm_pm_collapse(unsigned long unused) EXPORT_SYMBOL(msm_pm_collapse); static bool __ref msm_pm_spm_power_collapse( unsigned int cpu, bool from_idle, bool notify_rpm) unsigned int cpu, int mode, bool from_idle, bool notify_rpm) { void *entry; bool collapsed = 0; Loading @@ -271,8 +271,7 @@ static bool __ref msm_pm_spm_power_collapse( pr_info("CPU%u: %s: notify_rpm %d\n", cpu, __func__, (int) notify_rpm); ret = msm_spm_set_low_power_mode( MSM_SPM_MODE_POWER_COLLAPSE, notify_rpm); ret = msm_spm_set_low_power_mode(mode, notify_rpm); WARN_ON(ret); entry = save_cpu_regs ? cpu_resume : msm_secondary_startup; Loading Loading @@ -310,7 +309,9 @@ static bool msm_pm_power_collapse_standalone( unsigned int cpu = smp_processor_id(); bool collapsed; collapsed = msm_pm_spm_power_collapse(cpu, from_idle, false); collapsed = msm_pm_spm_power_collapse(cpu, MSM_SPM_MODE_STANDALONE_POWER_COLLAPSE, from_idle, false); return collapsed; } Loading Loading @@ -366,7 +367,8 @@ static bool msm_pm_power_collapse(bool from_idle) if (cpu_online(cpu) && !msm_no_ramp_down_pc) saved_acpuclk_rate = ramp_down_last_cpu(cpu); collapsed = msm_pm_spm_power_collapse(cpu, from_idle, true); collapsed = msm_pm_spm_power_collapse(cpu, MSM_SPM_MODE_POWER_COLLAPSE, from_idle, true); if (cpu_online(cpu) && !msm_no_ramp_down_pc) ramp_up_first_cpu(cpu, saved_acpuclk_rate); Loading
drivers/soc/qcom/spm_devices.c +5 −1 Original line number Diff line number Diff line Loading @@ -175,6 +175,7 @@ static void msm_spm_config_q2s(struct msm_spm_device *dev, unsigned int mode) spm_legacy_mode = 0; break; case MSM_SPM_MODE_GDHS: case MSM_SPM_MODE_STANDALONE_POWER_COLLAPSE: case MSM_SPM_MODE_POWER_COLLAPSE: qchannel_ignore = dev->qchannel_ignore; spm_legacy_mode = 1; Loading @@ -198,6 +199,7 @@ static void msm_spm_config_hw_flush(struct msm_spm_device *dev, switch (mode) { case MSM_SPM_MODE_FASTPC: case MSM_SPM_MODE_STANDALONE_POWER_COLLAPSE: case MSM_SPM_MODE_POWER_COLLAPSE: val = BIT(0); break; Loading @@ -219,6 +221,7 @@ static void msm_spm_config_slpreq(struct msm_spm_device *dev, switch (mode) { case MSM_SPM_MODE_FASTPC: case MSM_SPM_MODE_GDHS: case MSM_SPM_MODE_STANDALONE_POWER_COLLAPSE: case MSM_SPM_MODE_POWER_COLLAPSE: val = BIT(4); break; Loading Loading @@ -729,7 +732,8 @@ static int msm_spm_dev_probe(struct platform_device *pdev) {"qcom,saw2-spm-cmd-wfi", MSM_SPM_MODE_CLOCK_GATING}, {"qcom,saw2-spm-cmd-ret", MSM_SPM_MODE_RETENTION}, {"qcom,saw2-spm-cmd-gdhs", MSM_SPM_MODE_GDHS}, {"qcom,saw2-spm-cmd-spc", MSM_SPM_MODE_POWER_COLLAPSE}, {"qcom,saw2-spm-cmd-spc", MSM_SPM_MODE_STANDALONE_POWER_COLLAPSE}, {"qcom,saw2-spm-cmd-pc", MSM_SPM_MODE_POWER_COLLAPSE}, {"qcom,saw2-spm-cmd-fpc", MSM_SPM_MODE_FASTPC}, }; Loading
include/soc/qcom/spm.h +1 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ enum { MSM_SPM_MODE_RETENTION, MSM_SPM_MODE_GDHS, MSM_SPM_MODE_POWER_COLLAPSE, MSM_SPM_MODE_STANDALONE_POWER_COLLAPSE, MSM_SPM_MODE_FASTPC, MSM_SPM_MODE_NR }; Loading