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

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

Merge "drivers: cpuidle: lpm-levels: Update ordering for broadcast timer"

parents 66077087 9bb4b8c5
Loading
Loading
Loading
Loading
+9 −10
Original line number Diff line number Diff line
@@ -1031,9 +1031,7 @@ static int cluster_configure(struct lpm_cluster *cluster, int idx,
	if (predicted && (idx < (cluster->nlevels - 1))) {
		struct power_params *pwr_params = &cluster->levels[idx].pwr;

		tick_broadcast_exit();
		clusttimer_start(cluster, pwr_params->max_residency + tmr_add);
		tick_broadcast_enter();
	}

	return 0;
@@ -1086,10 +1084,8 @@ static void cluster_prepare(struct lpm_cluster *cluster,
			struct power_params *pwr_params =
						&cluster->levels[0].pwr;

			tick_broadcast_exit();
			clusttimer_start(cluster,
					pwr_params->max_residency + tmr_add);
			tick_broadcast_enter();
		}
	}

@@ -1196,9 +1192,6 @@ static inline void cpu_prepare(struct lpm_cpu *cpu, int cpu_index,
	 * next wakeup within a cluster, in which case, CPU switches over to
	 * use broadcast timer.
	 */
	if (from_idle && cpu_level->use_bc_timer)
		tick_broadcast_enter();

	if (from_idle && ((cpu_level->mode == MSM_PM_SLEEP_MODE_POWER_COLLAPSE)
		|| (cpu_level->mode ==
			MSM_PM_SLEEP_MODE_POWER_COLLAPSE_STANDALONE)
@@ -1218,9 +1211,6 @@ static inline void cpu_unprepare(struct lpm_cpu *cpu, int cpu_index,
	struct lpm_cpu_level *cpu_level = &cpu->levels[cpu_index];
	bool jtag_save_restore = cpu->levels[cpu_index].jtag_save_restore;

	if (from_idle && cpu_level->use_bc_timer)
		tick_broadcast_exit();

	if (from_idle && ((cpu_level->mode == MSM_PM_SLEEP_MODE_POWER_COLLAPSE)
		|| (cpu_level->mode ==
			MSM_PM_SLEEP_MODE_POWER_COLLAPSE_STANDALONE)
@@ -1272,6 +1262,11 @@ static bool psci_enter_sleep(struct lpm_cpu *cpu, int idx, bool from_idle)
	/*
	 * idx = 0 is the default LPM state
	 */
	if (from_idle && cpu->levels[idx].use_bc_timer) {
		if (tick_broadcast_enter())
			return false;
	}

	if (!idx) {
		stop_critical_timings();
		wfi();
@@ -1290,6 +1285,10 @@ static bool psci_enter_sleep(struct lpm_cpu *cpu, int idx, bool from_idle)
	start_critical_timings();
	update_debug_pc_event(CPU_EXIT, state_id,
			success, 0xdeaffeed, true);

	if (from_idle && cpu->levels[idx].use_bc_timer)
		tick_broadcast_exit();

	return success;
}