1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0+ */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Common variables for the Maxim MAX77843 driver 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2015 Samsung Electronics 6*4882a593Smuzhiyun * Author: Jaewon Kim <jaewon02.kim@samsung.com> 7*4882a593Smuzhiyun * Author: Beomho Seo <beomho.seo@samsung.com> 8*4882a593Smuzhiyun */ 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #ifndef __MAX77843_PRIVATE_H_ 11*4882a593Smuzhiyun #define __MAX77843_PRIVATE_H_ 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #include <linux/i2c.h> 14*4882a593Smuzhiyun #include <linux/regmap.h> 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun #define I2C_ADDR_TOPSYS (0xCC >> 1) 17*4882a593Smuzhiyun #define I2C_ADDR_CHG (0xD2 >> 1) 18*4882a593Smuzhiyun #define I2C_ADDR_FG (0x6C >> 1) 19*4882a593Smuzhiyun #define I2C_ADDR_MUIC (0x4A >> 1) 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun /* Topsys, Haptic and LED registers */ 22*4882a593Smuzhiyun enum max77843_sys_reg { 23*4882a593Smuzhiyun MAX77843_SYS_REG_PMICID = 0x00, 24*4882a593Smuzhiyun MAX77843_SYS_REG_PMICREV = 0x01, 25*4882a593Smuzhiyun MAX77843_SYS_REG_MAINCTRL1 = 0x02, 26*4882a593Smuzhiyun MAX77843_SYS_REG_INTSRC = 0x22, 27*4882a593Smuzhiyun MAX77843_SYS_REG_INTSRCMASK = 0x23, 28*4882a593Smuzhiyun MAX77843_SYS_REG_SYSINTSRC = 0x24, 29*4882a593Smuzhiyun MAX77843_SYS_REG_SYSINTMASK = 0x26, 30*4882a593Smuzhiyun MAX77843_SYS_REG_TOPSYS_STAT = 0x28, 31*4882a593Smuzhiyun MAX77843_SYS_REG_SAFEOUTCTRL = 0xC6, 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun MAX77843_SYS_REG_END, 34*4882a593Smuzhiyun }; 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun enum max77843_haptic_reg { 37*4882a593Smuzhiyun MAX77843_HAP_REG_MCONFIG = 0x10, 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun MAX77843_HAP_REG_END, 40*4882a593Smuzhiyun }; 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun enum max77843_led_reg { 43*4882a593Smuzhiyun MAX77843_LED_REG_LEDEN = 0x30, 44*4882a593Smuzhiyun MAX77843_LED_REG_LED0BRT = 0x31, 45*4882a593Smuzhiyun MAX77843_LED_REG_LED1BRT = 0x32, 46*4882a593Smuzhiyun MAX77843_LED_REG_LED2BRT = 0x33, 47*4882a593Smuzhiyun MAX77843_LED_REG_LED3BRT = 0x34, 48*4882a593Smuzhiyun MAX77843_LED_REG_LEDBLNK = 0x38, 49*4882a593Smuzhiyun MAX77843_LED_REG_LEDRAMP = 0x36, 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun MAX77843_LED_REG_END, 52*4882a593Smuzhiyun }; 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun /* Charger registers */ 55*4882a593Smuzhiyun enum max77843_charger_reg { 56*4882a593Smuzhiyun MAX77843_CHG_REG_CHG_INT = 0xB0, 57*4882a593Smuzhiyun MAX77843_CHG_REG_CHG_INT_MASK = 0xB1, 58*4882a593Smuzhiyun MAX77843_CHG_REG_CHG_INT_OK = 0xB2, 59*4882a593Smuzhiyun MAX77843_CHG_REG_CHG_DTLS_00 = 0xB3, 60*4882a593Smuzhiyun MAX77843_CHG_REG_CHG_DTLS_01 = 0xB4, 61*4882a593Smuzhiyun MAX77843_CHG_REG_CHG_DTLS_02 = 0xB5, 62*4882a593Smuzhiyun MAX77843_CHG_REG_CHG_CNFG_00 = 0xB7, 63*4882a593Smuzhiyun MAX77843_CHG_REG_CHG_CNFG_01 = 0xB8, 64*4882a593Smuzhiyun MAX77843_CHG_REG_CHG_CNFG_02 = 0xB9, 65*4882a593Smuzhiyun MAX77843_CHG_REG_CHG_CNFG_03 = 0xBA, 66*4882a593Smuzhiyun MAX77843_CHG_REG_CHG_CNFG_04 = 0xBB, 67*4882a593Smuzhiyun MAX77843_CHG_REG_CHG_CNFG_06 = 0xBD, 68*4882a593Smuzhiyun MAX77843_CHG_REG_CHG_CNFG_07 = 0xBE, 69*4882a593Smuzhiyun MAX77843_CHG_REG_CHG_CNFG_09 = 0xC0, 70*4882a593Smuzhiyun MAX77843_CHG_REG_CHG_CNFG_10 = 0xC1, 71*4882a593Smuzhiyun MAX77843_CHG_REG_CHG_CNFG_11 = 0xC2, 72*4882a593Smuzhiyun MAX77843_CHG_REG_CHG_CNFG_12 = 0xC3, 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun MAX77843_CHG_REG_END, 75*4882a593Smuzhiyun }; 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun /* Fuel gauge registers */ 78*4882a593Smuzhiyun enum max77843_fuelgauge { 79*4882a593Smuzhiyun MAX77843_FG_REG_STATUS = 0x00, 80*4882a593Smuzhiyun MAX77843_FG_REG_VALRT_TH = 0x01, 81*4882a593Smuzhiyun MAX77843_FG_REG_TALRT_TH = 0x02, 82*4882a593Smuzhiyun MAX77843_FG_REG_SALRT_TH = 0x03, 83*4882a593Smuzhiyun MAX77843_FG_RATE_AT_RATE = 0x04, 84*4882a593Smuzhiyun MAX77843_FG_REG_REMCAP_REP = 0x05, 85*4882a593Smuzhiyun MAX77843_FG_REG_SOCREP = 0x06, 86*4882a593Smuzhiyun MAX77843_FG_REG_AGE = 0x07, 87*4882a593Smuzhiyun MAX77843_FG_REG_TEMP = 0x08, 88*4882a593Smuzhiyun MAX77843_FG_REG_VCELL = 0x09, 89*4882a593Smuzhiyun MAX77843_FG_REG_CURRENT = 0x0A, 90*4882a593Smuzhiyun MAX77843_FG_REG_AVG_CURRENT = 0x0B, 91*4882a593Smuzhiyun MAX77843_FG_REG_SOCMIX = 0x0D, 92*4882a593Smuzhiyun MAX77843_FG_REG_SOCAV = 0x0E, 93*4882a593Smuzhiyun MAX77843_FG_REG_REMCAP_MIX = 0x0F, 94*4882a593Smuzhiyun MAX77843_FG_REG_FULLCAP = 0x10, 95*4882a593Smuzhiyun MAX77843_FG_REG_AVG_TEMP = 0x16, 96*4882a593Smuzhiyun MAX77843_FG_REG_CYCLES = 0x17, 97*4882a593Smuzhiyun MAX77843_FG_REG_AVG_VCELL = 0x19, 98*4882a593Smuzhiyun MAX77843_FG_REG_CONFIG = 0x1D, 99*4882a593Smuzhiyun MAX77843_FG_REG_REMCAP_AV = 0x1F, 100*4882a593Smuzhiyun MAX77843_FG_REG_FULLCAP_NOM = 0x23, 101*4882a593Smuzhiyun MAX77843_FG_REG_MISCCFG = 0x2B, 102*4882a593Smuzhiyun MAX77843_FG_REG_RCOMP = 0x38, 103*4882a593Smuzhiyun MAX77843_FG_REG_FSTAT = 0x3D, 104*4882a593Smuzhiyun MAX77843_FG_REG_DQACC = 0x45, 105*4882a593Smuzhiyun MAX77843_FG_REG_DPACC = 0x46, 106*4882a593Smuzhiyun MAX77843_FG_REG_OCV = 0xEE, 107*4882a593Smuzhiyun MAX77843_FG_REG_VFOCV = 0xFB, 108*4882a593Smuzhiyun MAX77843_FG_SOCVF = 0xFF, 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun MAX77843_FG_END, 111*4882a593Smuzhiyun }; 112*4882a593Smuzhiyun 113*4882a593Smuzhiyun /* MUIC registers */ 114*4882a593Smuzhiyun enum max77843_muic_reg { 115*4882a593Smuzhiyun MAX77843_MUIC_REG_ID = 0x00, 116*4882a593Smuzhiyun MAX77843_MUIC_REG_INT1 = 0x01, 117*4882a593Smuzhiyun MAX77843_MUIC_REG_INT2 = 0x02, 118*4882a593Smuzhiyun MAX77843_MUIC_REG_INT3 = 0x03, 119*4882a593Smuzhiyun MAX77843_MUIC_REG_STATUS1 = 0x04, 120*4882a593Smuzhiyun MAX77843_MUIC_REG_STATUS2 = 0x05, 121*4882a593Smuzhiyun MAX77843_MUIC_REG_STATUS3 = 0x06, 122*4882a593Smuzhiyun MAX77843_MUIC_REG_INTMASK1 = 0x07, 123*4882a593Smuzhiyun MAX77843_MUIC_REG_INTMASK2 = 0x08, 124*4882a593Smuzhiyun MAX77843_MUIC_REG_INTMASK3 = 0x09, 125*4882a593Smuzhiyun MAX77843_MUIC_REG_CDETCTRL1 = 0x0A, 126*4882a593Smuzhiyun MAX77843_MUIC_REG_CDETCTRL2 = 0x0B, 127*4882a593Smuzhiyun MAX77843_MUIC_REG_CONTROL1 = 0x0C, 128*4882a593Smuzhiyun MAX77843_MUIC_REG_CONTROL2 = 0x0D, 129*4882a593Smuzhiyun MAX77843_MUIC_REG_CONTROL3 = 0x0E, 130*4882a593Smuzhiyun MAX77843_MUIC_REG_CONTROL4 = 0x16, 131*4882a593Smuzhiyun MAX77843_MUIC_REG_HVCONTROL1 = 0x17, 132*4882a593Smuzhiyun MAX77843_MUIC_REG_HVCONTROL2 = 0x18, 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun MAX77843_MUIC_REG_END, 135*4882a593Smuzhiyun }; 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun enum max77843_irq { 138*4882a593Smuzhiyun /* Topsys: SYSTEM */ 139*4882a593Smuzhiyun MAX77843_SYS_IRQ_SYSINTSRC_SYSUVLO_INT, 140*4882a593Smuzhiyun MAX77843_SYS_IRQ_SYSINTSRC_SYSOVLO_INT, 141*4882a593Smuzhiyun MAX77843_SYS_IRQ_SYSINTSRC_TSHDN_INT, 142*4882a593Smuzhiyun MAX77843_SYS_IRQ_SYSINTSRC_TM_INT, 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun /* Charger: CHG_INT */ 145*4882a593Smuzhiyun MAX77843_CHG_IRQ_CHG_INT_BYP_I, 146*4882a593Smuzhiyun MAX77843_CHG_IRQ_CHG_INT_BATP_I, 147*4882a593Smuzhiyun MAX77843_CHG_IRQ_CHG_INT_BAT_I, 148*4882a593Smuzhiyun MAX77843_CHG_IRQ_CHG_INT_CHG_I, 149*4882a593Smuzhiyun MAX77843_CHG_IRQ_CHG_INT_WCIN_I, 150*4882a593Smuzhiyun MAX77843_CHG_IRQ_CHG_INT_CHGIN_I, 151*4882a593Smuzhiyun MAX77843_CHG_IRQ_CHG_INT_AICL_I, 152*4882a593Smuzhiyun 153*4882a593Smuzhiyun MAX77843_IRQ_NUM, 154*4882a593Smuzhiyun }; 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun enum max77843_irq_muic { 157*4882a593Smuzhiyun /* MUIC: INT1 */ 158*4882a593Smuzhiyun MAX77843_MUIC_IRQ_INT1_ADC, 159*4882a593Smuzhiyun MAX77843_MUIC_IRQ_INT1_ADCERROR, 160*4882a593Smuzhiyun MAX77843_MUIC_IRQ_INT1_ADC1K, 161*4882a593Smuzhiyun 162*4882a593Smuzhiyun /* MUIC: INT2 */ 163*4882a593Smuzhiyun MAX77843_MUIC_IRQ_INT2_CHGTYP, 164*4882a593Smuzhiyun MAX77843_MUIC_IRQ_INT2_CHGDETRUN, 165*4882a593Smuzhiyun MAX77843_MUIC_IRQ_INT2_DCDTMR, 166*4882a593Smuzhiyun MAX77843_MUIC_IRQ_INT2_DXOVP, 167*4882a593Smuzhiyun MAX77843_MUIC_IRQ_INT2_VBVOLT, 168*4882a593Smuzhiyun 169*4882a593Smuzhiyun /* MUIC: INT3 */ 170*4882a593Smuzhiyun MAX77843_MUIC_IRQ_INT3_VBADC, 171*4882a593Smuzhiyun MAX77843_MUIC_IRQ_INT3_VDNMON, 172*4882a593Smuzhiyun MAX77843_MUIC_IRQ_INT3_DNRES, 173*4882a593Smuzhiyun MAX77843_MUIC_IRQ_INT3_MPNACK, 174*4882a593Smuzhiyun MAX77843_MUIC_IRQ_INT3_MRXBUFOW, 175*4882a593Smuzhiyun MAX77843_MUIC_IRQ_INT3_MRXTRF, 176*4882a593Smuzhiyun MAX77843_MUIC_IRQ_INT3_MRXPERR, 177*4882a593Smuzhiyun MAX77843_MUIC_IRQ_INT3_MRXRDY, 178*4882a593Smuzhiyun 179*4882a593Smuzhiyun MAX77843_MUIC_IRQ_NUM, 180*4882a593Smuzhiyun }; 181*4882a593Smuzhiyun 182*4882a593Smuzhiyun /* MAX77843 interrupts */ 183*4882a593Smuzhiyun #define MAX77843_SYS_IRQ_SYSUVLO_INT BIT(0) 184*4882a593Smuzhiyun #define MAX77843_SYS_IRQ_SYSOVLO_INT BIT(1) 185*4882a593Smuzhiyun #define MAX77843_SYS_IRQ_TSHDN_INT BIT(2) 186*4882a593Smuzhiyun #define MAX77843_SYS_IRQ_TM_INT BIT(3) 187*4882a593Smuzhiyun 188*4882a593Smuzhiyun /* MAX77843 MAINCTRL1 register */ 189*4882a593Smuzhiyun #define MAINCTRL1_BIASEN_SHIFT 7 190*4882a593Smuzhiyun #define MAX77843_MAINCTRL1_BIASEN_MASK BIT(MAINCTRL1_BIASEN_SHIFT) 191*4882a593Smuzhiyun 192*4882a593Smuzhiyun /* MAX77843 MCONFIG register */ 193*4882a593Smuzhiyun #define MCONFIG_MODE_SHIFT 7 194*4882a593Smuzhiyun #define MCONFIG_MEN_SHIFT 6 195*4882a593Smuzhiyun #define MCONFIG_PDIV_SHIFT 0 196*4882a593Smuzhiyun 197*4882a593Smuzhiyun #define MAX77843_MCONFIG_MODE_MASK BIT(MCONFIG_MODE_SHIFT) 198*4882a593Smuzhiyun #define MAX77843_MCONFIG_MEN_MASK BIT(MCONFIG_MEN_SHIFT) 199*4882a593Smuzhiyun #define MAX77843_MCONFIG_PDIV_MASK (0x3 << MCONFIG_PDIV_SHIFT) 200*4882a593Smuzhiyun 201*4882a593Smuzhiyun /* Max77843 charger insterrupts */ 202*4882a593Smuzhiyun #define MAX77843_CHG_BYP_I BIT(0) 203*4882a593Smuzhiyun #define MAX77843_CHG_BATP_I BIT(2) 204*4882a593Smuzhiyun #define MAX77843_CHG_BAT_I BIT(3) 205*4882a593Smuzhiyun #define MAX77843_CHG_CHG_I BIT(4) 206*4882a593Smuzhiyun #define MAX77843_CHG_WCIN_I BIT(5) 207*4882a593Smuzhiyun #define MAX77843_CHG_CHGIN_I BIT(6) 208*4882a593Smuzhiyun #define MAX77843_CHG_AICL_I BIT(7) 209*4882a593Smuzhiyun 210*4882a593Smuzhiyun /* MAX77843 CHG_INT_OK register */ 211*4882a593Smuzhiyun #define MAX77843_CHG_BYP_OK BIT(0) 212*4882a593Smuzhiyun #define MAX77843_CHG_BATP_OK BIT(2) 213*4882a593Smuzhiyun #define MAX77843_CHG_BAT_OK BIT(3) 214*4882a593Smuzhiyun #define MAX77843_CHG_CHG_OK BIT(4) 215*4882a593Smuzhiyun #define MAX77843_CHG_WCIN_OK BIT(5) 216*4882a593Smuzhiyun #define MAX77843_CHG_CHGIN_OK BIT(6) 217*4882a593Smuzhiyun #define MAX77843_CHG_AICL_OK BIT(7) 218*4882a593Smuzhiyun 219*4882a593Smuzhiyun /* MAX77843 CHG_DETAILS_00 register */ 220*4882a593Smuzhiyun #define MAX77843_CHG_BAT_DTLS BIT(0) 221*4882a593Smuzhiyun 222*4882a593Smuzhiyun /* MAX77843 CHG_DETAILS_01 register */ 223*4882a593Smuzhiyun #define MAX77843_CHG_DTLS_MASK 0x0f 224*4882a593Smuzhiyun #define MAX77843_CHG_PQ_MODE 0x00 225*4882a593Smuzhiyun #define MAX77843_CHG_CC_MODE 0x01 226*4882a593Smuzhiyun #define MAX77843_CHG_CV_MODE 0x02 227*4882a593Smuzhiyun #define MAX77843_CHG_TO_MODE 0x03 228*4882a593Smuzhiyun #define MAX77843_CHG_DO_MODE 0x04 229*4882a593Smuzhiyun #define MAX77843_CHG_HT_MODE 0x05 230*4882a593Smuzhiyun #define MAX77843_CHG_TF_MODE 0x06 231*4882a593Smuzhiyun #define MAX77843_CHG_TS_MODE 0x07 232*4882a593Smuzhiyun #define MAX77843_CHG_OFF_MODE 0x08 233*4882a593Smuzhiyun 234*4882a593Smuzhiyun #define MAX77843_CHG_BAT_DTLS_MASK 0xf0 235*4882a593Smuzhiyun #define MAX77843_CHG_NO_BAT (0x00 << 4) 236*4882a593Smuzhiyun #define MAX77843_CHG_LOW_VOLT_BAT (0x01 << 4) 237*4882a593Smuzhiyun #define MAX77843_CHG_LONG_BAT_TIME (0x02 << 4) 238*4882a593Smuzhiyun #define MAX77843_CHG_OK_BAT (0x03 << 4) 239*4882a593Smuzhiyun #define MAX77843_CHG_OK_LOW_VOLT_BAT (0x04 << 4) 240*4882a593Smuzhiyun #define MAX77843_CHG_OVER_VOLT_BAT (0x05 << 4) 241*4882a593Smuzhiyun #define MAX77843_CHG_OVER_CURRENT_BAT (0x06 << 4) 242*4882a593Smuzhiyun 243*4882a593Smuzhiyun /* MAX77843 CHG_CNFG_00 register */ 244*4882a593Smuzhiyun #define MAX77843_CHG_MODE_MASK 0x0f 245*4882a593Smuzhiyun #define MAX77843_CHG_DISABLE 0x00 246*4882a593Smuzhiyun #define MAX77843_CHG_ENABLE 0x05 247*4882a593Smuzhiyun #define MAX77843_CHG_MASK 0x01 248*4882a593Smuzhiyun #define MAX77843_CHG_OTG_MASK 0x02 249*4882a593Smuzhiyun #define MAX77843_CHG_BUCK_MASK 0x04 250*4882a593Smuzhiyun #define MAX77843_CHG_BOOST_MASK 0x08 251*4882a593Smuzhiyun 252*4882a593Smuzhiyun /* MAX77843 CHG_CNFG_01 register */ 253*4882a593Smuzhiyun #define MAX77843_CHG_RESTART_THRESHOLD_100 0x00 254*4882a593Smuzhiyun #define MAX77843_CHG_RESTART_THRESHOLD_150 0x10 255*4882a593Smuzhiyun #define MAX77843_CHG_RESTART_THRESHOLD_200 0x20 256*4882a593Smuzhiyun #define MAX77843_CHG_RESTART_THRESHOLD_DISABLE 0x30 257*4882a593Smuzhiyun 258*4882a593Smuzhiyun /* MAX77843 CHG_CNFG_02 register */ 259*4882a593Smuzhiyun #define MAX77843_CHG_FAST_CHG_CURRENT_MIN 100000 260*4882a593Smuzhiyun #define MAX77843_CHG_FAST_CHG_CURRENT_MAX 3150000 261*4882a593Smuzhiyun #define MAX77843_CHG_FAST_CHG_CURRENT_STEP 50000 262*4882a593Smuzhiyun #define MAX77843_CHG_FAST_CHG_CURRENT_MASK 0x3f 263*4882a593Smuzhiyun #define MAX77843_CHG_OTG_ILIMIT_500 (0x00 << 6) 264*4882a593Smuzhiyun #define MAX77843_CHG_OTG_ILIMIT_900 (0x01 << 6) 265*4882a593Smuzhiyun #define MAX77843_CHG_OTG_ILIMIT_1200 (0x02 << 6) 266*4882a593Smuzhiyun #define MAX77843_CHG_OTG_ILIMIT_1500 (0x03 << 6) 267*4882a593Smuzhiyun #define MAX77843_CHG_OTG_ILIMIT_MASK 0xc0 268*4882a593Smuzhiyun 269*4882a593Smuzhiyun /* MAX77843 CHG_CNFG_03 register */ 270*4882a593Smuzhiyun #define MAX77843_CHG_TOP_OFF_CURRENT_MIN 125000 271*4882a593Smuzhiyun #define MAX77843_CHG_TOP_OFF_CURRENT_MAX 650000 272*4882a593Smuzhiyun #define MAX77843_CHG_TOP_OFF_CURRENT_STEP 75000 273*4882a593Smuzhiyun #define MAX77843_CHG_TOP_OFF_CURRENT_MASK 0x07 274*4882a593Smuzhiyun 275*4882a593Smuzhiyun /* MAX77843 CHG_CNFG_06 register */ 276*4882a593Smuzhiyun #define MAX77843_CHG_WRITE_CAP_BLOCK 0x10 277*4882a593Smuzhiyun #define MAX77843_CHG_WRITE_CAP_UNBLOCK 0x0C 278*4882a593Smuzhiyun 279*4882a593Smuzhiyun /* MAX77843_CHG_CNFG_09_register */ 280*4882a593Smuzhiyun #define MAX77843_CHG_INPUT_CURRENT_LIMIT_MIN 100000 281*4882a593Smuzhiyun #define MAX77843_CHG_INPUT_CURRENT_LIMIT_MAX 4000000 282*4882a593Smuzhiyun #define MAX77843_CHG_INPUT_CURRENT_LIMIT_REF 3367000 283*4882a593Smuzhiyun #define MAX77843_CHG_INPUT_CURRENT_LIMIT_STEP 33000 284*4882a593Smuzhiyun 285*4882a593Smuzhiyun #define MAX77843_MUIC_ADC BIT(0) 286*4882a593Smuzhiyun #define MAX77843_MUIC_ADCERROR BIT(2) 287*4882a593Smuzhiyun #define MAX77843_MUIC_ADC1K BIT(3) 288*4882a593Smuzhiyun 289*4882a593Smuzhiyun #define MAX77843_MUIC_CHGTYP BIT(0) 290*4882a593Smuzhiyun #define MAX77843_MUIC_CHGDETRUN BIT(1) 291*4882a593Smuzhiyun #define MAX77843_MUIC_DCDTMR BIT(2) 292*4882a593Smuzhiyun #define MAX77843_MUIC_DXOVP BIT(3) 293*4882a593Smuzhiyun #define MAX77843_MUIC_VBVOLT BIT(4) 294*4882a593Smuzhiyun 295*4882a593Smuzhiyun #define MAX77843_MUIC_VBADC BIT(0) 296*4882a593Smuzhiyun #define MAX77843_MUIC_VDNMON BIT(1) 297*4882a593Smuzhiyun #define MAX77843_MUIC_DNRES BIT(2) 298*4882a593Smuzhiyun #define MAX77843_MUIC_MPNACK BIT(3) 299*4882a593Smuzhiyun #define MAX77843_MUIC_MRXBUFOW BIT(4) 300*4882a593Smuzhiyun #define MAX77843_MUIC_MRXTRF BIT(5) 301*4882a593Smuzhiyun #define MAX77843_MUIC_MRXPERR BIT(6) 302*4882a593Smuzhiyun #define MAX77843_MUIC_MRXRDY BIT(7) 303*4882a593Smuzhiyun 304*4882a593Smuzhiyun /* MAX77843 INTSRCMASK register */ 305*4882a593Smuzhiyun #define MAX77843_INTSRCMASK_CHGR 0 306*4882a593Smuzhiyun #define MAX77843_INTSRCMASK_SYS 1 307*4882a593Smuzhiyun #define MAX77843_INTSRCMASK_FG 2 308*4882a593Smuzhiyun #define MAX77843_INTSRCMASK_MUIC 3 309*4882a593Smuzhiyun 310*4882a593Smuzhiyun #define MAX77843_INTSRCMASK_CHGR_MASK BIT(MAX77843_INTSRCMASK_CHGR) 311*4882a593Smuzhiyun #define MAX77843_INTSRCMASK_SYS_MASK BIT(MAX77843_INTSRCMASK_SYS) 312*4882a593Smuzhiyun #define MAX77843_INTSRCMASK_FG_MASK BIT(MAX77843_INTSRCMASK_FG) 313*4882a593Smuzhiyun #define MAX77843_INTSRCMASK_MUIC_MASK BIT(MAX77843_INTSRCMASK_MUIC) 314*4882a593Smuzhiyun 315*4882a593Smuzhiyun #define MAX77843_INTSRC_MASK_MASK \ 316*4882a593Smuzhiyun (MAX77843_INTSRCMASK_MUIC_MASK | MAX77843_INTSRCMASK_FG_MASK | \ 317*4882a593Smuzhiyun MAX77843_INTSRCMASK_SYS_MASK | MAX77843_INTSRCMASK_CHGR_MASK) 318*4882a593Smuzhiyun 319*4882a593Smuzhiyun /* MAX77843 STATUS register*/ 320*4882a593Smuzhiyun #define MAX77843_MUIC_STATUS1_ADC_SHIFT 0 321*4882a593Smuzhiyun #define MAX77843_MUIC_STATUS1_ADCERROR_SHIFT 6 322*4882a593Smuzhiyun #define MAX77843_MUIC_STATUS1_ADC1K_SHIFT 7 323*4882a593Smuzhiyun #define MAX77843_MUIC_STATUS2_CHGTYP_SHIFT 0 324*4882a593Smuzhiyun #define MAX77843_MUIC_STATUS2_CHGDETRUN_SHIFT 3 325*4882a593Smuzhiyun #define MAX77843_MUIC_STATUS2_DCDTMR_SHIFT 4 326*4882a593Smuzhiyun #define MAX77843_MUIC_STATUS2_DXOVP_SHIFT 5 327*4882a593Smuzhiyun #define MAX77843_MUIC_STATUS2_VBVOLT_SHIFT 6 328*4882a593Smuzhiyun #define MAX77843_MUIC_STATUS3_VBADC_SHIFT 0 329*4882a593Smuzhiyun #define MAX77843_MUIC_STATUS3_VDNMON_SHIFT 4 330*4882a593Smuzhiyun #define MAX77843_MUIC_STATUS3_DNRES_SHIFT 5 331*4882a593Smuzhiyun #define MAX77843_MUIC_STATUS3_MPNACK_SHIFT 6 332*4882a593Smuzhiyun 333*4882a593Smuzhiyun #define MAX77843_MUIC_STATUS1_ADC_MASK (0x1f << MAX77843_MUIC_STATUS1_ADC_SHIFT) 334*4882a593Smuzhiyun #define MAX77843_MUIC_STATUS1_ADCERROR_MASK BIT(MAX77843_MUIC_STATUS1_ADCERROR_SHIFT) 335*4882a593Smuzhiyun #define MAX77843_MUIC_STATUS1_ADC1K_MASK BIT(MAX77843_MUIC_STATUS1_ADC1K_SHIFT) 336*4882a593Smuzhiyun #define MAX77843_MUIC_STATUS2_CHGTYP_MASK (0x7 << MAX77843_MUIC_STATUS2_CHGTYP_SHIFT) 337*4882a593Smuzhiyun #define MAX77843_MUIC_STATUS2_CHGDETRUN_MASK BIT(MAX77843_MUIC_STATUS2_CHGDETRUN_SHIFT) 338*4882a593Smuzhiyun #define MAX77843_MUIC_STATUS2_DCDTMR_MASK BIT(MAX77843_MUIC_STATUS2_DCDTMR_SHIFT) 339*4882a593Smuzhiyun #define MAX77843_MUIC_STATUS2_DXOVP_MASK BIT(MAX77843_MUIC_STATUS2_DXOVP_SHIFT) 340*4882a593Smuzhiyun #define MAX77843_MUIC_STATUS2_VBVOLT_MASK BIT(MAX77843_MUIC_STATUS2_VBVOLT_SHIFT) 341*4882a593Smuzhiyun #define MAX77843_MUIC_STATUS3_VBADC_MASK (0xf << MAX77843_MUIC_STATUS3_VBADC_SHIFT) 342*4882a593Smuzhiyun #define MAX77843_MUIC_STATUS3_VDNMON_MASK BIT(MAX77843_MUIC_STATUS3_VDNMON_SHIFT) 343*4882a593Smuzhiyun #define MAX77843_MUIC_STATUS3_DNRES_MASK BIT(MAX77843_MUIC_STATUS3_DNRES_SHIFT) 344*4882a593Smuzhiyun #define MAX77843_MUIC_STATUS3_MPNACK_MASK BIT(MAX77843_MUIC_STATUS3_MPNACK_SHIFT) 345*4882a593Smuzhiyun 346*4882a593Smuzhiyun /* MAX77843 CONTROL register */ 347*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL1_COMP1SW_SHIFT 0 348*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL1_COMP2SW_SHIFT 3 349*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL1_NOBCCOMP_SHIFT 6 350*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL1_IDBEN_SHIFT 7 351*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL2_LOWPWR_SHIFT 0 352*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL2_ADCEN_SHIFT 1 353*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL2_CPEN_SHIFT 2 354*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL2_ACC_DET_SHIFT 5 355*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL2_USBCPINT_SHIFT 6 356*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL2_RCPS_SHIFT 7 357*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL3_JIGSET_SHIFT 0 358*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL4_ADCDBSET_SHIFT 0 359*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL4_USBAUTO_SHIFT 4 360*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL4_FCTAUTO_SHIFT 5 361*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL4_ADCMODE_SHIFT 6 362*4882a593Smuzhiyun 363*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL1_COMP1SW_MASK (0x7 << MAX77843_MUIC_CONTROL1_COMP1SW_SHIFT) 364*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL1_COMP2SW_MASK (0x7 << MAX77843_MUIC_CONTROL1_COMP2SW_SHIFT) 365*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL1_IDBEN_MASK BIT(MAX77843_MUIC_CONTROL1_IDBEN_SHIFT) 366*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL1_NOBCCOMP_MASK BIT(MAX77843_MUIC_CONTROL1_NOBCCOMP_SHIFT) 367*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL2_LOWPWR_MASK BIT(MAX77843_MUIC_CONTROL2_LOWPWR_SHIFT) 368*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL2_ADCEN_MASK BIT(MAX77843_MUIC_CONTROL2_ADCEN_SHIFT) 369*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL2_CPEN_MASK BIT(MAX77843_MUIC_CONTROL2_CPEN_SHIFT) 370*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL2_ACC_DET_MASK BIT(MAX77843_MUIC_CONTROL2_ACC_DET_SHIFT) 371*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL2_USBCPINT_MASK BIT(MAX77843_MUIC_CONTROL2_USBCPINT_SHIFT) 372*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL2_RCPS_MASK BIT(MAX77843_MUIC_CONTROL2_RCPS_SHIFT) 373*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL3_JIGSET_MASK (0x3 << MAX77843_MUIC_CONTROL3_JIGSET_SHIFT) 374*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL4_ADCDBSET_MASK (0x3 << MAX77843_MUIC_CONTROL4_ADCDBSET_SHIFT) 375*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL4_USBAUTO_MASK BIT(MAX77843_MUIC_CONTROL4_USBAUTO_SHIFT) 376*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL4_FCTAUTO_MASK BIT(MAX77843_MUIC_CONTROL4_FCTAUTO_SHIFT) 377*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL4_ADCMODE_MASK (0x3 << MAX77843_MUIC_CONTROL4_ADCMODE_SHIFT) 378*4882a593Smuzhiyun 379*4882a593Smuzhiyun /* MAX77843 switch port */ 380*4882a593Smuzhiyun #define COM_OPEN 0 381*4882a593Smuzhiyun #define COM_USB 1 382*4882a593Smuzhiyun #define COM_AUDIO 2 383*4882a593Smuzhiyun #define COM_UART 3 384*4882a593Smuzhiyun #define COM_AUX_USB 4 385*4882a593Smuzhiyun #define COM_AUX_UART 5 386*4882a593Smuzhiyun 387*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL1_COM_SW \ 388*4882a593Smuzhiyun ((MAX77843_MUIC_CONTROL1_COMP1SW_MASK | \ 389*4882a593Smuzhiyun MAX77843_MUIC_CONTROL1_COMP2SW_MASK)) 390*4882a593Smuzhiyun 391*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL1_SW_OPEN \ 392*4882a593Smuzhiyun ((COM_OPEN << MAX77843_MUIC_CONTROL1_COMP1SW_SHIFT | \ 393*4882a593Smuzhiyun COM_OPEN << MAX77843_MUIC_CONTROL1_COMP2SW_SHIFT)) 394*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL1_SW_USB \ 395*4882a593Smuzhiyun ((COM_USB << MAX77843_MUIC_CONTROL1_COMP1SW_SHIFT | \ 396*4882a593Smuzhiyun COM_USB << MAX77843_MUIC_CONTROL1_COMP2SW_SHIFT)) 397*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL1_SW_AUDIO \ 398*4882a593Smuzhiyun ((COM_AUDIO << MAX77843_MUIC_CONTROL1_COMP1SW_SHIFT | \ 399*4882a593Smuzhiyun COM_AUDIO << MAX77843_MUIC_CONTROL1_COMP2SW_SHIFT)) 400*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL1_SW_UART \ 401*4882a593Smuzhiyun ((COM_UART << MAX77843_MUIC_CONTROL1_COMP1SW_SHIFT | \ 402*4882a593Smuzhiyun COM_UART << MAX77843_MUIC_CONTROL1_COMP2SW_SHIFT)) 403*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL1_SW_AUX_USB \ 404*4882a593Smuzhiyun ((COM_AUX_USB << MAX77843_MUIC_CONTROL1_COMP1SW_SHIFT | \ 405*4882a593Smuzhiyun COM_AUX_USB << MAX77843_MUIC_CONTROL1_COMP2SW_SHIFT)) 406*4882a593Smuzhiyun #define MAX77843_MUIC_CONTROL1_SW_AUX_UART \ 407*4882a593Smuzhiyun ((COM_AUX_UART << MAX77843_MUIC_CONTROL1_COMP1SW_SHIFT | \ 408*4882a593Smuzhiyun COM_AUX_UART << MAX77843_MUIC_CONTROL1_COMP2SW_SHIFT)) 409*4882a593Smuzhiyun 410*4882a593Smuzhiyun #define MAX77843_DISABLE 0 411*4882a593Smuzhiyun #define MAX77843_ENABLE 1 412*4882a593Smuzhiyun 413*4882a593Smuzhiyun #define CONTROL4_AUTO_DISABLE \ 414*4882a593Smuzhiyun ((MAX77843_DISABLE << MAX77843_MUIC_CONTROL4_USBAUTO_SHIFT) | \ 415*4882a593Smuzhiyun (MAX77843_DISABLE << MAX77843_MUIC_CONTROL4_FCTAUTO_SHIFT)) 416*4882a593Smuzhiyun #define CONTROL4_AUTO_ENABLE \ 417*4882a593Smuzhiyun ((MAX77843_ENABLE << MAX77843_MUIC_CONTROL4_USBAUTO_SHIFT) | \ 418*4882a593Smuzhiyun (MAX77843_ENABLE << MAX77843_MUIC_CONTROL4_FCTAUTO_SHIFT)) 419*4882a593Smuzhiyun 420*4882a593Smuzhiyun /* MAX77843 SAFEOUT LDO Control register */ 421*4882a593Smuzhiyun #define SAFEOUTCTRL_SAFEOUT1_SHIFT 0 422*4882a593Smuzhiyun #define SAFEOUTCTRL_SAFEOUT2_SHIFT 2 423*4882a593Smuzhiyun #define SAFEOUTCTRL_ENSAFEOUT1_SHIFT 6 424*4882a593Smuzhiyun #define SAFEOUTCTRL_ENSAFEOUT2_SHIFT 7 425*4882a593Smuzhiyun 426*4882a593Smuzhiyun #define MAX77843_REG_SAFEOUTCTRL_ENSAFEOUT1 \ 427*4882a593Smuzhiyun BIT(SAFEOUTCTRL_ENSAFEOUT1_SHIFT) 428*4882a593Smuzhiyun #define MAX77843_REG_SAFEOUTCTRL_ENSAFEOUT2 \ 429*4882a593Smuzhiyun BIT(SAFEOUTCTRL_ENSAFEOUT2_SHIFT) 430*4882a593Smuzhiyun #define MAX77843_REG_SAFEOUTCTRL_SAFEOUT1_MASK \ 431*4882a593Smuzhiyun (0x3 << SAFEOUTCTRL_SAFEOUT1_SHIFT) 432*4882a593Smuzhiyun #define MAX77843_REG_SAFEOUTCTRL_SAFEOUT2_MASK \ 433*4882a593Smuzhiyun (0x3 << SAFEOUTCTRL_SAFEOUT2_SHIFT) 434*4882a593Smuzhiyun 435*4882a593Smuzhiyun #endif /* __MAX77843_H__ */ 436