Linux 6.7-rc7
[linux-modified.git] / include / soc / qcom / spm.h
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright (c) 2011-2014, The Linux Foundation. All rights reserved.
4  * Copyright (c) 2014,2015, Linaro Ltd.
5  */
6
7 #ifndef __SPM_H__
8 #define __SPM_H__
9
10 #include <linux/cpuidle.h>
11
12 #define MAX_PMIC_DATA           2
13 #define MAX_SEQ_DATA            64
14
15 enum pm_sleep_mode {
16         PM_SLEEP_MODE_STBY,
17         PM_SLEEP_MODE_RET,
18         PM_SLEEP_MODE_SPC,
19         PM_SLEEP_MODE_PC,
20         PM_SLEEP_MODE_NR,
21 };
22
23 struct spm_reg_data {
24         const u16 *reg_offset;
25         u32 spm_cfg;
26         u32 spm_dly;
27         u32 pmic_dly;
28         u32 pmic_data[MAX_PMIC_DATA];
29         u32 avs_ctl;
30         u32 avs_limit;
31         u8 seq[MAX_SEQ_DATA];
32         u8 start_index[PM_SLEEP_MODE_NR];
33 };
34
35 struct spm_driver_data {
36         void __iomem *reg_base;
37         const struct spm_reg_data *reg_data;
38 };
39
40 void spm_set_low_power_mode(struct spm_driver_data *drv,
41                             enum pm_sleep_mode mode);
42
43 #endif /* __SPM_H__ */