mirror of
https://github.com/torvalds/linux.git
synced 2024-11-29 23:51:37 +00:00
13e72c3e22
Implement the support for SAW v4.1, used in at least MSM8998, SDM630, SDM660 and APQ variants and, while at it, also add the configuration for the SDM630/660 Silver and Gold cluster L2 Adaptive Voltage Scaler: this is also one of the prerequisites to allow the OSM controller to perform DCVS. Please note that despite there are various "versions" of these values downstream, these are the only ones that are perfectly stable on the entire set of tested devices. Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org> Reviewed-by: Stephan Gerhold <stephan@gerhold.net> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org> Link: https://lore.kernel.org/r/20210729155609.608159-4-angelogioacchino.delregno@somainline.org
44 lines
821 B
C
44 lines
821 B
C
/* 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 {
|
|
const u16 *reg_offset;
|
|
u32 spm_cfg;
|
|
u32 spm_dly;
|
|
u32 pmic_dly;
|
|
u32 pmic_data[MAX_PMIC_DATA];
|
|
u32 avs_ctl;
|
|
u32 avs_limit;
|
|
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__ */
|