162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (c) 2011-2014, The Linux Foundation. All rights reserved. 462306a36Sopenharmony_ci * Copyright (c) 2014,2015, Linaro Ltd. 562306a36Sopenharmony_ci */ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#ifndef __SPM_H__ 862306a36Sopenharmony_ci#define __SPM_H__ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#include <linux/cpuidle.h> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#define MAX_PMIC_DATA 2 1362306a36Sopenharmony_ci#define MAX_SEQ_DATA 64 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_cienum pm_sleep_mode { 1662306a36Sopenharmony_ci PM_SLEEP_MODE_STBY, 1762306a36Sopenharmony_ci PM_SLEEP_MODE_RET, 1862306a36Sopenharmony_ci PM_SLEEP_MODE_SPC, 1962306a36Sopenharmony_ci PM_SLEEP_MODE_PC, 2062306a36Sopenharmony_ci PM_SLEEP_MODE_NR, 2162306a36Sopenharmony_ci}; 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_cistruct spm_reg_data { 2462306a36Sopenharmony_ci const u16 *reg_offset; 2562306a36Sopenharmony_ci u32 spm_cfg; 2662306a36Sopenharmony_ci u32 spm_dly; 2762306a36Sopenharmony_ci u32 pmic_dly; 2862306a36Sopenharmony_ci u32 pmic_data[MAX_PMIC_DATA]; 2962306a36Sopenharmony_ci u32 avs_ctl; 3062306a36Sopenharmony_ci u32 avs_limit; 3162306a36Sopenharmony_ci u8 seq[MAX_SEQ_DATA]; 3262306a36Sopenharmony_ci u8 start_index[PM_SLEEP_MODE_NR]; 3362306a36Sopenharmony_ci}; 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_cistruct spm_driver_data { 3662306a36Sopenharmony_ci void __iomem *reg_base; 3762306a36Sopenharmony_ci const struct spm_reg_data *reg_data; 3862306a36Sopenharmony_ci}; 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_civoid spm_set_low_power_mode(struct spm_driver_data *drv, 4162306a36Sopenharmony_ci enum pm_sleep_mode mode); 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci#endif /* __SPM_H__ */ 44