1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * Copyright (C) 2015 Google, Inc 4 * Written by Simon Glass <sjg@chromium.org> 5 */ 6 7 #ifndef _PMIC_RK8XX_H_ 8 #define _PMIC_RK8XX_H_ 9 10 enum { 11 REG_SECONDS = 0x00, 12 REG_MINUTES, 13 REG_HOURS, 14 REG_DAYS, 15 REG_MONTHS, 16 REG_YEARS, 17 REG_WEEKS, 18 REG_ALARM_SECONDS, 19 REG_ALARM_MINUTES, 20 REG_ALARM_HOURS, 21 REG_ALARM_DAYS, 22 REG_ALARM_MONTHS, 23 REG_ALARM_YEARS, 24 25 REG_RTC_CTRL = 0x10, 26 REG_RTC_STATUS, 27 REG_RTC_INT, 28 REG_RTC_COMP_LSB, 29 REG_RTC_COMP_MSB, 30 31 ID_MSB = 0x17, 32 ID_LSB, 33 34 REG_CLK32OUT = 0x20, 35 REG_VB_MON, 36 REG_THERMAL, 37 REG_DCDC_EN, 38 REG_LDO_EN, 39 REG_SLEEP_SET_OFF1, 40 REG_SLEEP_SET_OFF2, 41 REG_DCDC_UV_STS, 42 REG_DCDC_UV_ACT, 43 REG_LDO_UV_STS, 44 REG_LDO_UV_ACT, 45 REG_DCDC_PG, 46 REG_LDO_PG, 47 REG_VOUT_MON_TDB, 48 REG_BUCK1_CONFIG, 49 REG_BUCK1_ON_VSEL, 50 REG_BUCK1_SLP_VSEL, 51 REG_BUCK1_DVS_VSEL, 52 REG_BUCK2_CONFIG, 53 REG_BUCK2_ON_VSEL, 54 REG_BUCK2_SLP_VSEL, 55 REG_BUCK2_DVS_VSEL, 56 REG_BUCK3_CONFIG, 57 REG_BUCK4_CONFIG, 58 REG_BUCK4_ON_VSEL, 59 REG_BUCK4_SLP_VSEL, 60 REG_BOOST_CONFIG_REG, 61 REG_LDO1_ON_VSEL, 62 REG_LDO1_SLP_VSEL, 63 REG_LDO2_ON_VSEL, 64 REG_LDO2_SLP_VSEL, 65 REG_LDO3_ON_VSEL, 66 REG_LDO3_SLP_VSEL, 67 REG_LDO4_ON_VSEL, 68 REG_LDO4_SLP_VSEL, 69 REG_LDO5_ON_VSEL, 70 REG_LDO5_SLP_VSEL, 71 REG_LDO6_ON_VSEL, 72 REG_LDO6_SLP_VSEL, 73 REG_LDO7_ON_VSEL, 74 REG_LDO7_SLP_VSEL, 75 REG_LDO8_ON_VSEL, 76 REG_LDO8_SLP_VSEL, 77 REG_DEVCTRL, 78 REG_INT_STS1, 79 REG_INT_STS_MSK1, 80 REG_INT_STS2, 81 REG_INT_STS_MSK2, 82 REG_IO_POL, 83 REG_OTP_VDD_EN, 84 REG_H5V_EN, 85 REG_SLEEP_SET_OFF, 86 REG_BOOST_LDO9_ON_VSEL, 87 REG_BOOST_LDO9_SLP_VSEL, 88 REG_BOOST_CTRL, 89 90 /* Not sure what this does */ 91 REG_DCDC_ILMAX = 0x90, 92 REG_CHRG_COMP = 0x9a, 93 REG_SUP_STS = 0xa0, 94 REG_USB_CTRL, 95 REG1_CHRG_CTRL, 96 REG2_CHRG_CTRL, 97 REG3_CHRG_CTRL, 98 REG_BAT_CTRL, 99 REG_BAT_HTS_TS1, 100 REG_BAT_LTS_TS1, 101 REG_BAT_HTS_TS2, 102 REG_BAT_LTS_TS2, 103 REG_TS_CTRL, 104 REG_ADC_CTRL, 105 REG_ON_SOURCE, 106 REG_OFF_SOURCE, 107 REG_GGCON, 108 REG_GGSTS, 109 REG_FRAME_SMP_INTERV, 110 REG_AUTO_SLP_CUR_THR, 111 REG3_GASCNT_CAL, 112 REG2_GASCNT_CAL, 113 REG1_GASCNT_CAL, 114 REG0_GASCNT_CAL, 115 REG3_GASCNT, 116 REG2_GASCNT, 117 REG1_GASCNT, 118 REG0_GASCNT, 119 REGH_BAT_CUR_AVG, 120 REGL_BAT_CUR_AVG, 121 REGH_TS1_ADC, 122 REGL_TS1_ADC, 123 REGH_TS2_ADC, 124 REGL_TS2_ADC, 125 REGH_BAT_OCV, 126 REGL_BAT_OCV, 127 REGH_BAT_VOL, 128 REGL_BAT_VOL, 129 REGH_RELAX_ENTRY_THRES, 130 REGL_RELAX_ENTRY_THRES, 131 REGH_RELAX_EXIT_THRES, 132 REGL_RELAX_EXIT_THRES, 133 REGH_RELAX_VOL1, 134 REGL_RELAX_VOL1, 135 REGH_RELAX_VOL2, 136 REGL_RELAX_VOL2, 137 REGH_BAT_CUR_R_CALC, 138 REGL_BAT_CUR_R_CALC, 139 REGH_BAT_VOL_R_CALC, 140 REGL_BAT_VOL_R_CALC, 141 REGH_CAL_OFFSET, 142 REGL_CAL_OFFSET, 143 REG_NON_ACT_TIMER_CNT, 144 REGH_VCALIB0, 145 REGL_VCALIB0, 146 REGH_VCALIB1, 147 REGL_VCALIB1, 148 REGH_IOFFSET, 149 REGL_IOFFSET, 150 REG_SOC, 151 REG3_REMAIN_CAP, 152 REG2_REMAIN_CAP, 153 REG1_REMAIN_CAP, 154 REG0_REMAIN_CAP, 155 REG_UPDAT_LEVE, 156 REG3_NEW_FCC, 157 REG2_NEW_FCC, 158 REG1_NEW_FCC, 159 REG0_NEW_FCC, 160 REG_NON_ACT_TIMER_CNT_SAVE, 161 REG_OCV_VOL_VALID, 162 REG_REBOOT_CNT, 163 REG_POFFSET, 164 REG_MISC_MARK, 165 REG_HALT_CNT, 166 REGH_CALC_REST, 167 REGL_CALC_REST, 168 SAVE_DATA19, 169 RK808_NUM_OF_REGS, 170 }; 171 172 enum { 173 RK817_REG_SYS_CFG3 = 0xf4, 174 }; 175 176 enum { 177 RK816_REG_DCDC_EN1 = 0x23, 178 RK816_REG_DCDC_EN2, 179 RK816_REG_DCDC_SLP_EN, 180 RK816_REG_LDO_SLP_EN, 181 RK816_REG_LDO_EN1 = 0x27, 182 RK816_REG_LDO_EN2, 183 }; 184 185 enum { 186 RK805_ID = 0x8050, 187 RK808_ID = 0x0000, 188 RK809_ID = 0x8090, 189 RK816_ID = 0x8160, 190 RK817_ID = 0x8170, 191 RK818_ID = 0x8180, 192 }; 193 194 enum { 195 RK817_POWER_EN0 = 0xb1, 196 RK817_POWER_EN1, 197 RK817_POWER_EN2, 198 RK817_POWER_EN3, 199 }; 200 201 #define RK817_POWER_EN_SAVE0 0x99 202 #define RK817_POWER_EN_SAVE1 0xa4 203 204 #define RK817_ID_MSB 0xed 205 #define RK817_ID_LSB 0xee 206 #define RK8XX_ID_MSK 0xfff0 207 208 #define RK817_PMIC_SYS_CFG3 0xf4 209 #define RK817_GPIO_INT_CFG 0xfe 210 211 #define RK8XX_ON_SOURCE 0xae 212 #define RK8XX_OFF_SOURCE 0xaf 213 #define RK817_BUCK4_CMIN 0xc6 214 #define RK817_ON_SOURCE 0xf5 215 #define RK817_OFF_SOURCE 0xf6 216 217 struct reg_data { 218 u8 reg; 219 u8 val; 220 u8 mask; 221 }; 222 struct rk8xx_reg_table { 223 char *name; 224 u8 reg_ctl; 225 u8 reg_vol; 226 }; 227 228 struct rk8xx_priv { 229 int variant; 230 }; 231 232 int rk8xx_spl_configure_buck(struct udevice *pmic, int buck, int uvolt); 233 int rk818_spl_configure_usb_input_current(struct udevice *pmic, int current_ma); 234 int rk818_spl_configure_usb_chrg_shutdown(struct udevice *pmic, int uvolt); 235 236 #endif 237