| /* SPDX-License-Identifier: GPL-2.0-only */ | |
| /* | |
| * Copyright (c) 2011-2014, The Linux Foundation. All rights reserved. | |
| * Copyright (c) 2014,2015, Linaro Ltd. | |
| */ | |
| #ifndef __SPM_H__ | |
| #define __SPM_H__ | |
| #include <linux/cpuidle.h> | |
| #define MAX_PMIC_DATA 2 | |
| #define MAX_SEQ_DATA 64 | |
| enum pm_sleep_mode { | |
| PM_SLEEP_MODE_STBY, | |
| PM_SLEEP_MODE_RET, | |
| PM_SLEEP_MODE_SPC, | |
| PM_SLEEP_MODE_PC, | |
| PM_SLEEP_MODE_NR, | |
| }; | |
| struct spm_reg_data { | |
| const u16 *reg_offset; | |
| u32 spm_cfg; | |
| u32 spm_dly; | |
| u32 pmic_dly; | |
| u32 pmic_data[MAX_PMIC_DATA]; | |
| u32 avs_ctl; | |
| u32 avs_limit; | |
| u8 seq[MAX_SEQ_DATA]; | |
| u8 start_index[PM_SLEEP_MODE_NR]; | |
| }; | |
| struct spm_driver_data { | |
| void __iomem *reg_base; | |
| const struct spm_reg_data *reg_data; | |
| }; | |
| void spm_set_low_power_mode(struct spm_driver_data *drv, | |
| enum pm_sleep_mode mode); | |
| #endif /* __SPM_H__ */ |