cpuidle-psci.c (a01353cf1896ea5b8a7bbc5e2b2d38feed8b7aaa) cpuidle-psci.c (69e26b4f43ed396868c6e7645f9eb06c3a0d2fee)
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * PSCI CPU idle driver.
4 *
5 * Copyright (C) 2019 ARM Ltd.
6 * Author: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
7 */
8

--- 35 unchanged lines hidden (view full) ---

44 __this_cpu_write(domain_state, state);
45}
46
47static inline u32 psci_get_domain_state(void)
48{
49 return __this_cpu_read(domain_state);
50}
51
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * PSCI CPU idle driver.
4 *
5 * Copyright (C) 2019 ARM Ltd.
6 * Author: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
7 */
8

--- 35 unchanged lines hidden (view full) ---

44 __this_cpu_write(domain_state, state);
45}
46
47static inline u32 psci_get_domain_state(void)
48{
49 return __this_cpu_read(domain_state);
50}
51
52static inline int psci_enter_state(int idx, u32 state)
52static __cpuidle int __psci_enter_domain_idle_state(struct cpuidle_device *dev,
53 struct cpuidle_driver *drv, int idx,
54 bool s2idle)
53{
55{
54 return CPU_PM_CPU_IDLE_ENTER_PARAM(psci_cpu_suspend_enter, idx, state);
55}
56
57static int __psci_enter_domain_idle_state(struct cpuidle_device *dev,
58 struct cpuidle_driver *drv, int idx,
59 bool s2idle)
60{
61 struct psci_cpuidle_data *data = this_cpu_ptr(&psci_cpuidle_data);
62 u32 *states = data->psci_states;
63 struct device *pd_dev = data->dev;
64 u32 state;
65 int ret;
66
67 ret = cpu_pm_enter();
68 if (ret)

--- 118 unchanged lines hidden (view full) ---

187 err = cpuhp_setup_state_nocalls(CPUHP_AP_CPU_PM_STARTING,
188 "cpuidle/psci:online",
189 psci_idle_cpuhp_up,
190 psci_idle_cpuhp_down);
191 if (err)
192 pr_warn("Failed %d while setup cpuhp state\n", err);
193}
194
56 struct psci_cpuidle_data *data = this_cpu_ptr(&psci_cpuidle_data);
57 u32 *states = data->psci_states;
58 struct device *pd_dev = data->dev;
59 u32 state;
60 int ret;
61
62 ret = cpu_pm_enter();
63 if (ret)

--- 118 unchanged lines hidden (view full) ---

182 err = cpuhp_setup_state_nocalls(CPUHP_AP_CPU_PM_STARTING,
183 "cpuidle/psci:online",
184 psci_idle_cpuhp_up,
185 psci_idle_cpuhp_down);
186 if (err)
187 pr_warn("Failed %d while setup cpuhp state\n", err);
188}
189
195static int psci_enter_idle_state(struct cpuidle_device *dev,
196 struct cpuidle_driver *drv, int idx)
190static __cpuidle int psci_enter_idle_state(struct cpuidle_device *dev,
191 struct cpuidle_driver *drv, int idx)
197{
198 u32 *state = __this_cpu_read(psci_cpuidle_data.psci_states);
199
192{
193 u32 *state = __this_cpu_read(psci_cpuidle_data.psci_states);
194
200 return psci_enter_state(idx, state[idx]);
195 return CPU_PM_CPU_IDLE_ENTER_PARAM(psci_cpu_suspend_enter, idx, state[idx]);
201}
202
203static const struct of_device_id psci_idle_state_match[] = {
204 { .compatible = "arm,idle-state",
205 .data = psci_enter_idle_state },
206 { },
207};
208

--- 248 unchanged lines hidden ---
196}
197
198static const struct of_device_id psci_idle_state_match[] = {
199 { .compatible = "arm,idle-state",
200 .data = psci_enter_idle_state },
201 { },
202};
203

--- 248 unchanged lines hidden ---