/*1* Copyright (c) 2018 naehrwert2* Copyright (c) 2019-2020 CTCaer3*4* This program is free software; you can redistribute it and/or modify it5* under the terms and conditions of the GNU General Public License,6* version 2, as published by the Free Software Foundation.7*8* This program is distributed in the hope it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for11* more details.12*13* You should have received a copy of the GNU General Public License14* along with this program. If not, see <http://www.gnu.org/licenses/>.15*/1617#ifndef _MAX7762X_H_18#define _MAX7762X_H_1920#include <utils/types.h>2122/*23* SDx actual min is 625 mV. Multipliers 0/1 reserved.24* SD0 max is 1400 mV25* SD1 max is 1550 mV26* SD2 max is 3787.5 mV27* SD3 max is 3787.5 mV28*/2930/*31* Switch Power domains (max77620):32* Name | Usage | uV step | uV min | uV default | uV max | Init33*-------+---------------+---------+--------+------------+---------+------------------34* sd0 | SoC | 12500 | 600000 | 625000 | 1400000 | 1.125V (pkg1.1)35* sd1 | SDRAM | 12500 | 600000 | 1125000 | 1125000 | 1.1V (pkg1.1)36* sd2 | ldo{0-1, 7-8} | 12500 | 600000 | 1325000 | 1350000 | 1.325V (pcv)37* sd3 | 1.8V general | 12500 | 600000 | 1800000 | 1800000 |38* ldo0 | Display Panel | 25000 | 800000 | 1200000 | 1200000 | 1.2V (pkg1.1)39* ldo1 | XUSB, PCIE | 25000 | 800000 | 1050000 | 1050000 | 1.05V (pcv)40* ldo2 | SDMMC1 | 50000 | 800000 | 1800000 | 3300000 |41* ldo3 | GC ASIC | 50000 | 800000 | 3100000 | 3100000 | 3.1V (pcv)42* ldo4 | RTC | 12500 | 800000 | 850000 | 850000 | 0.85V (AO, pcv)43* ldo5 | GC Card | 50000 | 800000 | 1800000 | 1800000 | 1.8V (pcv)44* ldo6 | Touch, ALS | 50000 | 800000 | 2900000 | 2900000 | 2.9V (pcv)45* ldo7 | XUSB | 50000 | 800000 | 1050000 | 1050000 | 1.05V (pcv)46* ldo8 | XUSB, DP, MCU | 50000 | 800000 | 1050000 | 2800000 | 1.05V/2.8V (pcv)47*/484950// GPIOs T210: 3: 3.3V, 5: CPU PMIC, 6: GPU PMIC, 7: DSI/VI 1.2V powered by ldo0.5152/*53* OTP: T210 - T210B01:54* SD0: 1.0V 1.05V - SoC. EN Based on FPSSRC.55* SD1: 1.15V 1.1V - DRAM for T210. EN Based on FPSSRC.56* SD2: 1.35V 1.35V57* SD3: 1.8V 1.8V58* All powered off?59* LDO0: -- -- - Display60* LDO1: 1.05V 1.05V61* LDO2: -- -- - SD62* LDO3: 3.1V 3.1V - GC ASIC63* LDO4: 1.0V 0.8V - Needed for RTC domain on T210.64* LDO5: 3.1V 3.1V65* LDO6: 2.8V 2.9V - Touch.66* LDO7: 1.05V 1.0V67* LDO8: 1.05V 1.0V68*/6970/*71* MAX77620_AME_GPIO: control GPIO modes (bits 0 - 7 correspond to GPIO0 - GPIO7); 0 -> GPIO, 1 -> alt-mode72* MAX77620_REG_GPIOx: 0x9 sets output and enable73*/7475/*! MAX77620 partitions. */76#define REGULATOR_SD0 077#define REGULATOR_SD1 178#define REGULATOR_SD2 279#define REGULATOR_SD3 380#define REGULATOR_LDO0 481#define REGULATOR_LDO1 582#define REGULATOR_LDO2 683#define REGULATOR_LDO3 784#define REGULATOR_LDO4 885#define REGULATOR_LDO5 986#define REGULATOR_LDO6 1087#define REGULATOR_LDO7 1188#define REGULATOR_LDO8 1289#define REGULATOR_CPU0 13 // T210 CPU.90#define REGULATOR_GPU0 14 // T210 CPU.91#define REGULATOR_CPU1 15 // T210B01 CPU.92#define REGULATOR_RAM0 16 // T210B01 RAM for PHASE211.93//#define REGULATOR_GPU1 17 // T210B01 CPU.94#define REGULATOR_MAX REGULATOR_RAM09596#define MAX77621_CPU_I2C_ADDR 0x1B97#define MAX77621_GPU_I2C_ADDR 0x1C9899#define MAX77621_REG_VOUT 0x00100#define MAX77621_REG_VOUT_DVS 0x01101#define MAX77621_REG_CONTROL1 0x02102#define MAX77621_REG_CONTROL2 0x03103#define MAX77621_REG_CHIPID1 0x04104#define MAX77621_REG_CHIPID2 0x05105106/* MAX77621_VOUT_DVC_DVS */107#define MAX77621_DVC_DVS_VOLT_MASK 0x7F108#define MAX77621_DVC_DVS_ENABLE_SHIFT 7109#define MAX77621_DVC_DVS_ENABLE_MASK (1 << MAX77621_DVC_DVS_ENABLE_SHIFT)110111/* MAX77621_VOUT */112#define MAX77621_VOUT_DISABLE 0113#define MAX77621_VOUT_ENABLE 1114#define MAX77621_VOUT_ENABLE_MASK (MAX77621_VOUT_ENABLE << MAX77621_DVC_DVS_ENABLE_SHIFT)115116/* MAX77621_CONTROL1 */117#define MAX77621_RAMP_12mV_PER_US 0x0118#define MAX77621_RAMP_25mV_PER_US 0x1119#define MAX77621_RAMP_50mV_PER_US 0x2120#define MAX77621_RAMP_200mV_PER_US 0x3121#define MAX77621_RAMP_MASK 0x3122123#define MAX77621_FREQSHIFT_9PER BIT(2)124#define MAX77621_BIAS_ENABLE BIT(3)125#define MAX77621_AD_ENABLE BIT(4)126#define MAX77621_NFSR_ENABLE BIT(5)127#define MAX77621_FPWM_EN_M BIT(6)128#define MAX77621_SNS_ENABLE BIT(7)129130/* MAX77621_CONTROL2 */131#define MAX77621_INDUCTOR_MIN_30_PER 0132#define MAX77621_INDUCTOR_NOMINAL 1133#define MAX77621_INDUCTOR_PLUS_30_PER 2134#define MAX77621_INDUCTOR_PLUS_60_PER 3135#define MAX77621_INDUCTOR_MASK 3136137#define MAX77621_CKKADV_TRIP_75mV_PER_US (0 << 2)138#define MAX77621_CKKADV_TRIP_150mV_PER_US (1u << 2)139#define MAX77621_CKKADV_TRIP_DISABLE (3u << 2)140#define MAX77621_CKKADV_TRIP_MASK (3u << 2)141142#define MAX77621_FT_ENABLE BIT(4)143#define MAX77621_DISCH_ENABLE BIT(5)144#define MAX77621_WDTMR_ENABLE BIT(6)145#define MAX77621_T_JUNCTION_120 BIT(7)146147#define MAX77621_CPU_CTRL1_POR_DEFAULT (MAX77621_RAMP_50mV_PER_US)148#define MAX77621_CPU_CTRL1_HOS_DEFAULT (MAX77621_AD_ENABLE | \149MAX77621_NFSR_ENABLE | \150MAX77621_SNS_ENABLE | \151MAX77621_RAMP_12mV_PER_US)152#define MAX77621_CPU_CTRL2_POR_DEFAULT (MAX77621_T_JUNCTION_120 | \153MAX77621_FT_ENABLE | \154MAX77621_CKKADV_TRIP_DISABLE | \155MAX77621_INDUCTOR_NOMINAL)156#define MAX77621_CPU_CTRL2_HOS_DEFAULT (MAX77621_T_JUNCTION_120 | \157MAX77621_WDTMR_ENABLE | \158MAX77621_CKKADV_TRIP_75mV_PER_US | \159MAX77621_INDUCTOR_NOMINAL)160161#define MAX77621_CTRL_HOS_CFG 0162#define MAX77621_CTRL_POR_CFG 1163164int max77620_regulator_get_status(u32 id);165int max77620_regulator_config_fps(u32 id);166int max7762x_regulator_set_voltage(u32 id, u32 uv);167int max7762x_regulator_enable(u32 id, bool enable);168void max77620_config_gpio(u32 id, bool enable);169void max77620_config_default();170void max77620_low_battery_monitor_config(bool enable);171172void max77621_config_default(u32 id, bool por);173174#endif175176177