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