Loading...
Note: File does not exist in v3.1.
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__ */