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