spm.h (821B)
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 15enum 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 23struct 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 35struct spm_driver_data { 36 void __iomem *reg_base; 37 const struct spm_reg_data *reg_data; 38}; 39 40void spm_set_low_power_mode(struct spm_driver_data *drv, 41 enum pm_sleep_mode mode); 42 43#endif /* __SPM_H__ */