| /* 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__ */ |