blob: ec91caa437a1f7c25af6c1a3fc2606b0afc6f8c1 [file] [log] [blame]
/*
* Copyright (C) 2018 MediaTek Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See http://www.gnu.org/licenses/gpl-2.0.html for more details.
*/
#ifndef __HELIO_DVFSRC_MT6768_H
#define __HELIO_DVFSRC_MT6768_H
#include <mach/upmu_hw.h>
#define PMIC_VCORE_ADDR PMIC_RG_BUCK_VCORE_VOSEL
#define VCORE_BASE_UV 500000
#define VCORE_STEP_UV 6250
/* DVFSRC_BASIC_CONTROL 0x0 */
#define DVFSRC_EN_SHIFT 0
#define DVFSRC_EN_MASK 0x1
#define DVFSRC_OUT_EN_SHIFT 8
#define DVFSRC_OUT_EN_MASK 0x1
#define FORCE_EN_CUR_SHIFT 14
#define FORCE_EN_CUR_MASK 0x1
#define FORCE_EN_TAR_SHIFT 15
#define FORCE_EN_TAR_MASK 0x1
/* DVFSRC_SW_REQ 0x4 */
#define EMI_SW_AP_SHIFT 0
#define EMI_SW_AP_MASK 0x3
#define VCORE_SW_AP_SHIFT 2
#define VCORE_SW_AP_MASK 0x3
/* DVFSRC_SW_REQ2 0x8 */
#define EMI_SW_AP2_SHIFT 0
#define EMI_SW_AP2_MASK 0x3
#define VCORE_SW_AP2_SHIFT 2
#define VCORE_SW_AP2_MASK 0x3
/* DVFSRC_VCORE_REQUEST 0x48 */
#define VCORE_SCP_GEAR_SHIFT 30
#define VCORE_SCP_GEAR_MASK 0x3
/* DVFSRC_VCORE_REQUEST2 0x4C */
#define VCORE_QOS_GEAR0_SHIFT 24
#define VCORE_QOS_GEAR0_MASK 0x3
/* DVFSRC_LEVEL 0xDC */
#define CURRENT_LEVEL_SHIFT 16
#define CURRENT_LEVEL_MASK 0xFFFF
/* DVFSRC_FORCE 0x300 */
#define TARGET_FORCE_SHIFT 0
#define TARGET_FORCE_MASK 0xFFFF
#define CURRENT_FORCE_SHIFT 16
#define CURRENT_FORCE_MASK 0xFFFF
/* met profile table index */
enum met_info_index {
INFO_OPP_IDX = 0,
INFO_FREQ_IDX,
INFO_VCORE_IDX,
INFO_SPM_LEVEL_IDX,
INFO_MAX,
};
enum met_src_index {
SRC_MD2SPM_IDX,
DDR_OPP_IDX,
DDR_SW_REQ1_PMQOS_IDX,
DDR_SW_REQ2_CM_IDX,
DDR_EMI_TOTAL_IDX,
DDR_QOS_BW_IDX,
VCORE_OPP_IDX,
VCORE_SW_REQ1_PMQOS_IDX,
VCORE_SW_REQ2_CM_IDX,
VCORE_SCP_IDX,
SRC_TOTAL_EMI_BW_IDX,
SRC_PMQOS_TATOL_IDX,
SRC_PMQOS_BW0_IDX,
SRC_PMQOS_BW1_IDX,
SRC_PMQOS_BW2_IDX,
SRC_PMQOS_BW3_IDX,
SRC_PMQOS_BW4_IDX,
SRC_MD_REQ_OPP,
BWMON_TOTAL_BW_IDX,
BWMON_CPU_BW_IDX,
BWMON_GPU_BW_IDX,
BWMON_MM_BW_IDX,
SRC_MAX
};
extern void dvfsrc_enable_dvfs_freq_hopping(int gps_on);
extern int dvfsrc_get_dvfs_freq_hopping_status(void);
#endif /* __HELIO_DVFSRC_MT6768_H */