1453c5a92SJacob Chen /* 2453c5a92SJacob Chen * Copyright (C) 2015 Google, Inc 3453c5a92SJacob Chen * Written by Simon Glass <sjg@chromium.org> 4453c5a92SJacob Chen * 5453c5a92SJacob Chen * SPDX-License-Identifier: GPL-2.0+ 6453c5a92SJacob Chen */ 7453c5a92SJacob Chen 8453c5a92SJacob Chen #ifndef _PMIC_RK8XX_H_ 9453c5a92SJacob Chen #define _PMIC_RK8XX_H_ 10453c5a92SJacob Chen 11453c5a92SJacob Chen enum { 12453c5a92SJacob Chen REG_SECONDS = 0x00, 13453c5a92SJacob Chen REG_MINUTES, 14453c5a92SJacob Chen REG_HOURS, 15453c5a92SJacob Chen REG_DAYS, 16453c5a92SJacob Chen REG_MONTHS, 17453c5a92SJacob Chen REG_YEARS, 18453c5a92SJacob Chen REG_WEEKS, 19453c5a92SJacob Chen REG_ALARM_SECONDS, 20453c5a92SJacob Chen REG_ALARM_MINUTES, 21453c5a92SJacob Chen REG_ALARM_HOURS, 22453c5a92SJacob Chen REG_ALARM_DAYS, 23453c5a92SJacob Chen REG_ALARM_MONTHS, 24453c5a92SJacob Chen REG_ALARM_YEARS, 25453c5a92SJacob Chen 26453c5a92SJacob Chen REG_RTC_CTRL = 0x10, 27453c5a92SJacob Chen REG_RTC_STATUS, 28453c5a92SJacob Chen REG_RTC_INT, 29453c5a92SJacob Chen REG_RTC_COMP_LSB, 30453c5a92SJacob Chen REG_RTC_COMP_MSB, 31453c5a92SJacob Chen 32453c5a92SJacob Chen ID_MSB = 0x17, 33453c5a92SJacob Chen ID_LSB, 34453c5a92SJacob Chen 35453c5a92SJacob Chen REG_CLK32OUT = 0x20, 36453c5a92SJacob Chen REG_VB_MON, 37453c5a92SJacob Chen REG_THERMAL, 38453c5a92SJacob Chen REG_DCDC_EN, 39453c5a92SJacob Chen REG_LDO_EN, 40453c5a92SJacob Chen REG_SLEEP_SET_OFF1, 41453c5a92SJacob Chen REG_SLEEP_SET_OFF2, 42453c5a92SJacob Chen REG_DCDC_UV_STS, 43453c5a92SJacob Chen REG_DCDC_UV_ACT, 44453c5a92SJacob Chen REG_LDO_UV_STS, 45453c5a92SJacob Chen REG_LDO_UV_ACT, 46453c5a92SJacob Chen REG_DCDC_PG, 47453c5a92SJacob Chen REG_LDO_PG, 48453c5a92SJacob Chen REG_VOUT_MON_TDB, 49453c5a92SJacob Chen REG_BUCK1_CONFIG, 50453c5a92SJacob Chen REG_BUCK1_ON_VSEL, 51453c5a92SJacob Chen REG_BUCK1_SLP_VSEL, 52453c5a92SJacob Chen REG_BUCK1_DVS_VSEL, 53453c5a92SJacob Chen REG_BUCK2_CONFIG, 54453c5a92SJacob Chen REG_BUCK2_ON_VSEL, 55453c5a92SJacob Chen REG_BUCK2_SLP_VSEL, 56453c5a92SJacob Chen REG_BUCK2_DVS_VSEL, 57453c5a92SJacob Chen REG_BUCK3_CONFIG, 58453c5a92SJacob Chen REG_BUCK4_CONFIG, 59453c5a92SJacob Chen REG_BUCK4_ON_VSEL, 60453c5a92SJacob Chen REG_BUCK4_SLP_VSEL, 61453c5a92SJacob Chen REG_BOOST_CONFIG_REG, 62453c5a92SJacob Chen REG_LDO1_ON_VSEL, 63453c5a92SJacob Chen REG_LDO1_SLP_VSEL, 64453c5a92SJacob Chen REG_LDO2_ON_VSEL, 65453c5a92SJacob Chen REG_LDO2_SLP_VSEL, 66453c5a92SJacob Chen REG_LDO3_ON_VSEL, 67453c5a92SJacob Chen REG_LDO3_SLP_VSEL, 68453c5a92SJacob Chen REG_LDO4_ON_VSEL, 69453c5a92SJacob Chen REG_LDO4_SLP_VSEL, 70453c5a92SJacob Chen REG_LDO5_ON_VSEL, 71453c5a92SJacob Chen REG_LDO5_SLP_VSEL, 72453c5a92SJacob Chen REG_LDO6_ON_VSEL, 73453c5a92SJacob Chen REG_LDO6_SLP_VSEL, 74453c5a92SJacob Chen REG_LDO7_ON_VSEL, 75453c5a92SJacob Chen REG_LDO7_SLP_VSEL, 76453c5a92SJacob Chen REG_LDO8_ON_VSEL, 77453c5a92SJacob Chen REG_LDO8_SLP_VSEL, 78453c5a92SJacob Chen REG_DEVCTRL, 79453c5a92SJacob Chen REG_INT_STS1, 80453c5a92SJacob Chen REG_INT_STS_MSK1, 81453c5a92SJacob Chen REG_INT_STS2, 82453c5a92SJacob Chen REG_INT_STS_MSK2, 83453c5a92SJacob Chen REG_IO_POL, 84453c5a92SJacob Chen REG_OTP_VDD_EN, 85453c5a92SJacob Chen REG_H5V_EN, 86453c5a92SJacob Chen REG_SLEEP_SET_OFF, 87453c5a92SJacob Chen REG_BOOST_LDO9_ON_VSEL, 88453c5a92SJacob Chen REG_BOOST_LDO9_SLP_VSEL, 89453c5a92SJacob Chen REG_BOOST_CTRL, 90453c5a92SJacob Chen 91453c5a92SJacob Chen /* Not sure what this does */ 92453c5a92SJacob Chen REG_DCDC_ILMAX = 0x90, 93453c5a92SJacob Chen REG_CHRG_COMP = 0x9a, 94453c5a92SJacob Chen REG_SUP_STS = 0xa0, 95453c5a92SJacob Chen REG_USB_CTRL, 96453c5a92SJacob Chen REG1_CHRG_CTRL, 97453c5a92SJacob Chen REG2_CHRG_CTRL, 98453c5a92SJacob Chen REG3_CHRG_CTRL, 99453c5a92SJacob Chen REG_BAT_CTRL, 100453c5a92SJacob Chen REG_BAT_HTS_TS1, 101453c5a92SJacob Chen REG_BAT_LTS_TS1, 102453c5a92SJacob Chen REG_BAT_HTS_TS2, 103453c5a92SJacob Chen REG_BAT_LTS_TS2, 104453c5a92SJacob Chen REG_TS_CTRL, 105453c5a92SJacob Chen REG_ADC_CTRL, 106453c5a92SJacob Chen REG_ON_SOURCE, 107453c5a92SJacob Chen REG_OFF_SOURCE, 108453c5a92SJacob Chen REG_GGCON, 109453c5a92SJacob Chen REG_GGSTS, 110453c5a92SJacob Chen REG_FRAME_SMP_INTERV, 111453c5a92SJacob Chen REG_AUTO_SLP_CUR_THR, 112453c5a92SJacob Chen REG3_GASCNT_CAL, 113453c5a92SJacob Chen REG2_GASCNT_CAL, 114453c5a92SJacob Chen REG1_GASCNT_CAL, 115453c5a92SJacob Chen REG0_GASCNT_CAL, 116453c5a92SJacob Chen REG3_GASCNT, 117453c5a92SJacob Chen REG2_GASCNT, 118453c5a92SJacob Chen REG1_GASCNT, 119453c5a92SJacob Chen REG0_GASCNT, 120453c5a92SJacob Chen REGH_BAT_CUR_AVG, 121453c5a92SJacob Chen REGL_BAT_CUR_AVG, 122453c5a92SJacob Chen REGH_TS1_ADC, 123453c5a92SJacob Chen REGL_TS1_ADC, 124453c5a92SJacob Chen REGH_TS2_ADC, 125453c5a92SJacob Chen REGL_TS2_ADC, 126453c5a92SJacob Chen REGH_BAT_OCV, 127453c5a92SJacob Chen REGL_BAT_OCV, 128453c5a92SJacob Chen REGH_BAT_VOL, 129453c5a92SJacob Chen REGL_BAT_VOL, 130453c5a92SJacob Chen REGH_RELAX_ENTRY_THRES, 131453c5a92SJacob Chen REGL_RELAX_ENTRY_THRES, 132453c5a92SJacob Chen REGH_RELAX_EXIT_THRES, 133453c5a92SJacob Chen REGL_RELAX_EXIT_THRES, 134453c5a92SJacob Chen REGH_RELAX_VOL1, 135453c5a92SJacob Chen REGL_RELAX_VOL1, 136453c5a92SJacob Chen REGH_RELAX_VOL2, 137453c5a92SJacob Chen REGL_RELAX_VOL2, 138453c5a92SJacob Chen REGH_BAT_CUR_R_CALC, 139453c5a92SJacob Chen REGL_BAT_CUR_R_CALC, 140453c5a92SJacob Chen REGH_BAT_VOL_R_CALC, 141453c5a92SJacob Chen REGL_BAT_VOL_R_CALC, 142453c5a92SJacob Chen REGH_CAL_OFFSET, 143453c5a92SJacob Chen REGL_CAL_OFFSET, 144453c5a92SJacob Chen REG_NON_ACT_TIMER_CNT, 145453c5a92SJacob Chen REGH_VCALIB0, 146453c5a92SJacob Chen REGL_VCALIB0, 147453c5a92SJacob Chen REGH_VCALIB1, 148453c5a92SJacob Chen REGL_VCALIB1, 149453c5a92SJacob Chen REGH_IOFFSET, 150453c5a92SJacob Chen REGL_IOFFSET, 151453c5a92SJacob Chen REG_SOC, 152453c5a92SJacob Chen REG3_REMAIN_CAP, 153453c5a92SJacob Chen REG2_REMAIN_CAP, 154453c5a92SJacob Chen REG1_REMAIN_CAP, 155453c5a92SJacob Chen REG0_REMAIN_CAP, 156453c5a92SJacob Chen REG_UPDAT_LEVE, 157453c5a92SJacob Chen REG3_NEW_FCC, 158453c5a92SJacob Chen REG2_NEW_FCC, 159453c5a92SJacob Chen REG1_NEW_FCC, 160453c5a92SJacob Chen REG0_NEW_FCC, 161453c5a92SJacob Chen REG_NON_ACT_TIMER_CNT_SAVE, 162453c5a92SJacob Chen REG_OCV_VOL_VALID, 163453c5a92SJacob Chen REG_REBOOT_CNT, 164453c5a92SJacob Chen REG_POFFSET, 165453c5a92SJacob Chen REG_MISC_MARK, 166453c5a92SJacob Chen REG_HALT_CNT, 167453c5a92SJacob Chen REGH_CALC_REST, 168453c5a92SJacob Chen REGL_CALC_REST, 169453c5a92SJacob Chen SAVE_DATA19, 170453c5a92SJacob Chen RK808_NUM_OF_REGS, 171453c5a92SJacob Chen }; 172453c5a92SJacob Chen 173453c5a92SJacob Chen enum { 1747f18d96cSJoseph Chen RK817_REG_SYS_CFG3 = 0xf4, 1757f18d96cSJoseph Chen }; 1767f18d96cSJoseph Chen 1777f18d96cSJoseph Chen enum { 1785e1bceeaSElaine Zhang RK816_REG_DCDC_EN1 = 0x23, 1795e1bceeaSElaine Zhang RK816_REG_DCDC_EN2, 180e917b032SJoseph Chen RK816_REG_DCDC_SLP_EN, 181e917b032SJoseph Chen RK816_REG_LDO_SLP_EN, 1825e1bceeaSElaine Zhang RK816_REG_LDO_EN1 = 0x27, 1835e1bceeaSElaine Zhang RK816_REG_LDO_EN2, 1845e1bceeaSElaine Zhang }; 1855e1bceeaSElaine Zhang 1865e1bceeaSElaine Zhang enum { 1874b6f5dc9SElaine Zhang RK805_ID = 0x8050, 1889361c683Sshengfei Xu RK806_ID = 0x8060, 189453c5a92SJacob Chen RK808_ID = 0x0000, 1901b6b965cSJoseph Chen RK809_ID = 0x8090, 1915e1bceeaSElaine Zhang RK816_ID = 0x8160, 1927f18d96cSJoseph Chen RK817_ID = 0x8170, 193453c5a92SJacob Chen RK818_ID = 0x8180, 194453c5a92SJacob Chen }; 195453c5a92SJacob Chen 1969e9e0e07SShengfei Xu enum { 1979e9e0e07SShengfei Xu RK817_POWER_EN0 = 0xb1, 1989e9e0e07SShengfei Xu RK817_POWER_EN1, 1999e9e0e07SShengfei Xu RK817_POWER_EN2, 2009e9e0e07SShengfei Xu RK817_POWER_EN3, 2019e9e0e07SShengfei Xu }; 2029e9e0e07SShengfei Xu #define RK817_POWER_EN_SAVE0 0x99 2039e9e0e07SShengfei Xu #define RK817_POWER_EN_SAVE1 0xa4 2049e9e0e07SShengfei Xu 2057f18d96cSJoseph Chen #define RK817_ID_MSB 0xed 2067f18d96cSJoseph Chen #define RK817_ID_LSB 0xee 207453c5a92SJacob Chen #define RK8XX_ID_MSK 0xfff0 208453c5a92SJacob Chen 209d76e1bedSshengfei Xu #define RK817_PMIC_CHRG_TERM 0xe6 210465b1b6cSshengfei Xu #define RK817_PMIC_SYS_CFG1 0xf1 2111c223666SJoseph Chen #define RK817_PMIC_SYS_CFG3 0xf4 2121c223666SJoseph Chen #define RK817_GPIO_INT_CFG 0xfe 2131c223666SJoseph Chen 2147623c170SJoseph Chen #define RK8XX_ON_SOURCE 0xae 2157623c170SJoseph Chen #define RK8XX_OFF_SOURCE 0xaf 216ba76dc00SShengfei Xu #define RK817_BUCK4_CMIN 0xc6 2177623c170SJoseph Chen #define RK817_ON_SOURCE 0xf5 2187623c170SJoseph Chen #define RK817_OFF_SOURCE 0xf6 2193ec172baSJoseph Chen #define RK817_NUM_OF_REGS 0xff 2207623c170SJoseph Chen 22100d11ef2SShunqing Chen #define RK8XX_DEVCTRL_REG 0x4b 22200d11ef2SShunqing Chen #define RK817_PWRON_KEY 0xf7 22300d11ef2SShunqing Chen #define RK8XX_LP_ACTION_MSK BIT(6) 22400d11ef2SShunqing Chen #define RK8XX_LP_OFF (0 << 6) 22500d11ef2SShunqing Chen #define RK8XX_LP_RESTART (1 << 6) 22600d11ef2SShunqing Chen #define RK8XX_LP_OFF_MSK BIT(4) | BIT(5) 22700d11ef2SShunqing Chen #define RK8XX_LP_TIME_6S (0 << 4) 22800d11ef2SShunqing Chen #define RK8XX_LP_TIME_8S (1 << 4) 22900d11ef2SShunqing Chen #define RK8XX_LP_TIME_10S (2 << 4) 23000d11ef2SShunqing Chen #define RK8XX_LP_TIME_12S (3 << 4) 23100d11ef2SShunqing Chen 232ded32713SJoseph Chen /* IRQ definitions */ 233ded32713SJoseph Chen #define RK8XX_IRQ_PWRON_FALL 0 234ded32713SJoseph Chen #define RK8XX_IRQ_PWRON_RISE 1 235ded32713SJoseph Chen #define RK8XX_IRQ_PLUG_OUT 2 236ded32713SJoseph Chen #define RK8XX_IRQ_PLUG_IN 3 237ded32713SJoseph Chen #define RK8XX_IRQ_CHG_OK 4 238ded32713SJoseph Chen 239ded32713SJoseph Chen #define RK808_INT_STS_REG1 0x4c 240ded32713SJoseph Chen #define RK808_INT_MSK_REG1 0x4d 241ded32713SJoseph Chen #define RK808_IRQ_PLUG_OUT_MSK BIT(1) 242ded32713SJoseph Chen 243ded32713SJoseph Chen #define RK805_INT_STS_REG 0x4c 244ded32713SJoseph Chen #define RK805_INT_MSK_REG 0x4d 245ded32713SJoseph Chen #define RK805_IRQ_PWRON_FALL_MSK BIT(7) 246ded32713SJoseph Chen #define RK805_IRQ_PWRON_RISE_MSK BIT(0) 247ded32713SJoseph Chen 248ef9c5d10Sshengfei Xu #define RK806_CHIP_NAME 0x5A 249ef9c5d10Sshengfei Xu #define RK806_CHIP_VER 0x5B 250ef9c5d10Sshengfei Xu #define RK806_HW_VER 0x21 251ef9c5d10Sshengfei Xu #define HW_DUAL_PMIC 0x28 252ef9c5d10Sshengfei Xu #define HW_SINGLE_PMIC 0xe8 253ef9c5d10Sshengfei Xu 254ef9c5d10Sshengfei Xu #define RK806_CMD_READ 0 255ef9c5d10Sshengfei Xu #define RK806_CMD_WRITE BIT(7) 256ef9c5d10Sshengfei Xu #define RK806_CMD_CRC_EN BIT(6) 257ef9c5d10Sshengfei Xu #define RK806_CMD_CRC_DIS 0 258ef9c5d10Sshengfei Xu #define RK806_CMD_LEN_MSK 0x0f 259ef9c5d10Sshengfei Xu #define RK806_REG_H 0x00 260ef9c5d10Sshengfei Xu 261ef9c5d10Sshengfei Xu #define RK806_SYS_CFG1 0x5f 262ef9c5d10Sshengfei Xu #define RK806_PWRCTRL_CONFIG0 0x62 263ef9c5d10Sshengfei Xu #define RK806_PWRCTRL_CONFIG1 0x63 264ef9c5d10Sshengfei Xu #define RK806_VSEL_CTR_SEL0 0x64 265ef9c5d10Sshengfei Xu #define RK806_DVS_CTR_SEL4 0x6e 266*4e54e501Sshengfei Xu #define RK806_PWRCTRL_GPIO 0x71 267ef9c5d10Sshengfei Xu #define RK806_SYS_CFG3 0x72 268ef9c5d10Sshengfei Xu #define RK806_PWRON_KEY 0x76 269ef9c5d10Sshengfei Xu #define RK806_INT_STS0 0x77 270ef9c5d10Sshengfei Xu #define RK806_INT_MSK0 0x78 271ef9c5d10Sshengfei Xu #define RK806_INT_STS1 0x79 272ef9c5d10Sshengfei Xu #define RK806_INT_MSK1 0x7A 273ef9c5d10Sshengfei Xu #define RK806_GPIO_INT_CONFIG 0x7B 274ef9c5d10Sshengfei Xu #define RK806_ON_SOURCE 0x74 275ef9c5d10Sshengfei Xu #define RK806_OFF_SOURCE 0x75 276f335f73cSshengfei Xu #define RK806_BUCK_RSERVE_REG3 0xfd 277ef9c5d10Sshengfei Xu 278*4e54e501Sshengfei Xu #define RK806_PWRCTRL1 0x01 279*4e54e501Sshengfei Xu #define RK806_PWRCTRL2 0x02 280*4e54e501Sshengfei Xu #define RK806_PWRCTRL3 0x03 281*4e54e501Sshengfei Xu 282*4e54e501Sshengfei Xu #define RK806_PWRCTR_GPIO_FUN 0x05 283*4e54e501Sshengfei Xu #define RK806_PWRCTR_MSK_FUN 0x07 284*4e54e501Sshengfei Xu #define RK806_PWRCTR_OUTPUT_MSK 0x11 285*4e54e501Sshengfei Xu #define RK806_PWRCTR_OUTPUT0 0x01 286*4e54e501Sshengfei Xu #define RK806_PWRCTR_OUTPUT1 0x11 287*4e54e501Sshengfei Xu 288ece79c0fSshengfei Xu #define RK806_INT_POL_HIGH BIT(1) 289ef9c5d10Sshengfei Xu #define RK806_IRQ_PWRON_FALL_MSK BIT(0) 290ef9c5d10Sshengfei Xu #define RK806_IRQ_PWRON_RISE_MSK BIT(1) 291ef9c5d10Sshengfei Xu #define RK806_DEV_OFF BIT(0) 292ef9c5d10Sshengfei Xu #define RK806_RST_MODE1 0x01 293ef9c5d10Sshengfei Xu #define RK806_RST_MODE2 0x02 294ef9c5d10Sshengfei Xu #define RK806_PWRCTRL_FUN_MSK 0x88 295ef9c5d10Sshengfei Xu #define RK806_VSEL_CTRL_MSK 0xcc 296ef9c5d10Sshengfei Xu #define RK806_VSEL_PWRCTRL1 0x11 297ef9c5d10Sshengfei Xu #define RK806_ENABLE_PWRCTRL 0x04 298ef9c5d10Sshengfei Xu #define RK806_VERSION_AB 0x01 299ef9c5d10Sshengfei Xu 300ef9c5d10Sshengfei Xu #define RK806_ABNORDET_EN 0x80 301ef9c5d10Sshengfei Xu #define RK806_VERSION_MSK 0x0f 302ef9c5d10Sshengfei Xu #define RK806_RESET_FUN_CLR 0x3f 303f335f73cSshengfei Xu #define RK806_BUCK5_EX_RES_EN 0x10 304ef9c5d10Sshengfei Xu 305ef9c5d10Sshengfei Xu /* RK806 buck*/ 306ef9c5d10Sshengfei Xu #define RK806_BUCK_ON_VSEL(n) (0x1a + n - 1) 307ef9c5d10Sshengfei Xu #define RK806_BUCK_SLP_VSEL(n) (0x24 + n - 1) 308ef9c5d10Sshengfei Xu #define RK806_BUCK_CONFIG(n) (0x10 + n - 1) 309ef9c5d10Sshengfei Xu #define RK806_BUCK_VSEL_MASK 0xff 310ef9c5d10Sshengfei Xu 311ef9c5d10Sshengfei Xu /* RK806 LDO */ 312ef9c5d10Sshengfei Xu #define RK806_NLDO_ON_VSEL(n) (0x43 + n - 1) 313ef9c5d10Sshengfei Xu #define RK806_NLDO_SLP_VSEL(n) (0x48 + n - 1) 314ef9c5d10Sshengfei Xu #define RK806_NLDO_VSEL_MASK 0xff 315ef9c5d10Sshengfei Xu #define RK806_PLDO_ON_VSEL(n) (0x4e + n - 1) 316ef9c5d10Sshengfei Xu #define RK806_PLDO_SLP_VSEL(n) (0x54 + n - 1) 317ef9c5d10Sshengfei Xu #define RK806_PLDO_VSEL_MASK 0xff 318ef9c5d10Sshengfei Xu 319ef9c5d10Sshengfei Xu /* RK806 ENABLE */ 320ef9c5d10Sshengfei Xu #define RK806_POWER_EN(n) (0x00 + n) 321ef9c5d10Sshengfei Xu #define RK806_NLDO_EN(n) (0x03 + n) 322ef9c5d10Sshengfei Xu #define RK806_PLDO_EN(n) (0x04 + n) 323ef9c5d10Sshengfei Xu 324ef9c5d10Sshengfei Xu #define RK806_BUCK_SUSPEND_EN 0x06 325ef9c5d10Sshengfei Xu #define RK806_NLDO_SUSPEND_EN 0x07 326ef9c5d10Sshengfei Xu #define RK806_PLDO_SUSPEND_EN 0x08 327ef9c5d10Sshengfei Xu 328ef9c5d10Sshengfei Xu #define RK806_RAMP_RATE_MASK1 0xc0 329ef9c5d10Sshengfei Xu #define RK806_RAMP_RATE_REG1(n) (0x10 + n) 330ef9c5d10Sshengfei Xu #define RK806_RAMP_RATE_REG1_8 0xeb 331ef9c5d10Sshengfei Xu #define RK806_RAMP_RATE_REG9_10 0xea 332ef9c5d10Sshengfei Xu 333ef9c5d10Sshengfei Xu #define RK806_RAMP_RATE_4LSB_PER_1CLK 0x00/* LDO 100mV/uS buck 50mV/us */ 334ef9c5d10Sshengfei Xu #define RK806_RAMP_RATE_2LSB_PER_1CLK 0x01/* LDO 50mV/uS buck 25mV/us */ 335ef9c5d10Sshengfei Xu #define RK806_RAMP_RATE_1LSB_PER_1CLK 0x02/* LDO 25mV/uS buck 12.5mV/us */ 336ef9c5d10Sshengfei Xu #define RK806_RAMP_RATE_1LSB_PER_2CLK 0x03/* LDO 12.5mV/uS buck 6.25mV/us */ 337ef9c5d10Sshengfei Xu 338ef9c5d10Sshengfei Xu #define RK806_RAMP_RATE_1LSB_PER_4CLK 0x04/* LDO 6.28/2mV/uS buck 3.125mV/us */ 339ef9c5d10Sshengfei Xu #define RK806_RAMP_RATE_1LSB_PER_8CLK 0x05/* LDO 3.12mV/uS buck 1.56mV/us */ 340ef9c5d10Sshengfei Xu #define RK806_RAMP_RATE_1LSB_PER_13CLK 0x06/* LDO 1.9mV/uS buck 961mV/us */ 341ef9c5d10Sshengfei Xu #define RK806_RAMP_RATE_1LSB_PER_32CLK 0x07/* LDO 0.78mV/uS buck 0.39mV/us */ 342ef9c5d10Sshengfei Xu 343ef9c5d10Sshengfei Xu #define RK806_PLDO0_2_MSK(pldo) (BIT(pldo + 5)) 344ef9c5d10Sshengfei Xu #define RK806_PLDO0_2_SET(pldo) (BIT(pldo + 1) | RK806_PLDO0_2_MSK(pldo)) 345ef9c5d10Sshengfei Xu #define RK806_PLDO0_2_CLR(pldo) RK806_PLDO0_2_MSK(pldo) 346ef9c5d10Sshengfei Xu 347ded32713SJoseph Chen #define RK816_INT_STS_REG1 0x49 348ded32713SJoseph Chen #define RK816_INT_MSK_REG1 0x4a 349ded32713SJoseph Chen #define RK816_INT_STS_REG3 0x4e 350ded32713SJoseph Chen #define RK816_INT_STS_MSK_REG3 0x4f 351ded32713SJoseph Chen #define RK816_IRQ_PWRON_RISE_MSK BIT(6) 352ded32713SJoseph Chen #define RK816_IRQ_PWRON_FALL_MSK BIT(5) 353ded32713SJoseph Chen #define RK816_IRQ_PLUG_OUT_MSK BIT(1) 354ded32713SJoseph Chen #define RK816_IRQ_CHR_OK_MSK BIT(2) 355ded32713SJoseph Chen 356ded32713SJoseph Chen #define RK818_INT_STS_REG1 0x4c 357ded32713SJoseph Chen #define RK818_INT_MSK_REG1 0x4d 358ded32713SJoseph Chen #define RK818_IRQ_PLUG_OUT_MSK BIT(1) 359ded32713SJoseph Chen #define RK818_IRQ_CHR_OK_MSK BIT(2) 360ded32713SJoseph Chen 361ded32713SJoseph Chen #define RK817_INT_STS_REG0 0xf8 362ded32713SJoseph Chen #define RK817_INT_MSK_REG0 0xf9 363ded32713SJoseph Chen #define RK817_IRQ_PWRON_FALL_MSK BIT(0) 364ded32713SJoseph Chen #define RK817_IRQ_PWRON_RISE_MSK BIT(1) 365ded32713SJoseph Chen #define RK817_IRQ_PLUG_OUT_MSK BIT(1) 366ded32713SJoseph Chen #define RK817_IRQ_PLUG_IN_MSK BIT(0) 367ded32713SJoseph Chen 3681c223666SJoseph Chen struct reg_data { 3691c223666SJoseph Chen u8 reg; 3701c223666SJoseph Chen u8 val; 3711c223666SJoseph Chen u8 mask; 3721c223666SJoseph Chen }; 3731c223666SJoseph Chen 374453c5a92SJacob Chen struct rk8xx_reg_table { 375453c5a92SJacob Chen char *name; 376453c5a92SJacob Chen u8 reg_ctl; 377453c5a92SJacob Chen u8 reg_vol; 378453c5a92SJacob Chen }; 379453c5a92SJacob Chen 380453c5a92SJacob Chen struct rk8xx_priv { 38140db7404SJoseph Chen struct virq_chip *irq_chip; 3829361c683Sshengfei Xu struct spi_slave *slave; 383453c5a92SJacob Chen int variant; 384ded32713SJoseph Chen int irq; 38500d11ef2SShunqing Chen int lp_off_time; 38600d11ef2SShunqing Chen int lp_action; 38740db7404SJoseph Chen uint8_t sleep_pin; 388467c0e51Sshengfei Xu uint8_t rst_fun; 389b9e9168cSshengfei Xu int not_save_power_en; 390d76e1bedSshengfei Xu int sys_can_sd; 391f335f73cSshengfei Xu int buck5_feedback_dis; 392*4e54e501Sshengfei Xu int pwr_ctr[3]; 393453c5a92SJacob Chen }; 394453c5a92SJacob Chen 395453c5a92SJacob Chen int rk8xx_spl_configure_buck(struct udevice *pmic, int buck, int uvolt); 396ad98f882SWadim Egorov int rk818_spl_configure_usb_input_current(struct udevice *pmic, int current_ma); 397ad98f882SWadim Egorov int rk818_spl_configure_usb_chrg_shutdown(struct udevice *pmic, int uvolt); 398453c5a92SJacob Chen 399453c5a92SJacob Chen #endif 400