2021-07-29 23:56:05 +08:00
|
|
|
/* 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 {
|
2021-07-29 23:56:07 +08:00
|
|
|
const u16 *reg_offset;
|
2021-07-29 23:56:05 +08:00
|
|
|
u32 spm_cfg;
|
|
|
|
u32 spm_dly;
|
|
|
|
u32 pmic_dly;
|
|
|
|
u32 pmic_data[MAX_PMIC_DATA];
|
2021-07-29 23:56:07 +08:00
|
|
|
u32 avs_ctl;
|
|
|
|
u32 avs_limit;
|
2021-07-29 23:56:05 +08:00
|
|
|
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__ */
|