0001
0002
0003
0004
0005
0006
0007
0008 #ifndef __LINUX_MFD_RN5T618_H
0009 #define __LINUX_MFD_RN5T618_H
0010
0011 #include <linux/regmap.h>
0012
0013 #define RN5T618_LSIVER 0x00
0014 #define RN5T618_OTPVER 0x01
0015 #define RN5T618_IODAC 0x02
0016 #define RN5T618_VINDAC 0x03
0017 #define RN5T618_OUT32KEN 0x05
0018 #define RN5T618_CPUCNT 0x06
0019 #define RN5T618_PSWR 0x07
0020 #define RN5T618_PONHIS 0x09
0021 #define RN5T618_POFFHIS 0x0a
0022 #define RN5T618_WATCHDOG 0x0b
0023 #define RN5T618_WATCHDOGCNT 0x0c
0024 #define RN5T618_PWRFUNC 0x0d
0025 #define RN5T618_SLPCNT 0x0e
0026 #define RN5T618_REPCNT 0x0f
0027 #define RN5T618_PWRONTIMSET 0x10
0028 #define RN5T618_NOETIMSETCNT 0x11
0029 #define RN5T618_PWRIREN 0x12
0030 #define RN5T618_PWRIRQ 0x13
0031 #define RN5T618_PWRMON 0x14
0032 #define RN5T618_PWRIRSEL 0x15
0033 #define RN5T618_DC1_SLOT 0x16
0034 #define RN5T618_DC2_SLOT 0x17
0035 #define RN5T618_DC3_SLOT 0x18
0036 #define RN5T618_DC4_SLOT 0x19
0037 #define RN5T618_LDO1_SLOT 0x1b
0038 #define RN5T618_LDO2_SLOT 0x1c
0039 #define RN5T618_LDO3_SLOT 0x1d
0040 #define RN5T618_LDO4_SLOT 0x1e
0041 #define RN5T618_LDO5_SLOT 0x1f
0042 #define RN5T618_PSO0_SLOT 0x25
0043 #define RN5T618_PSO1_SLOT 0x26
0044 #define RN5T618_PSO2_SLOT 0x27
0045 #define RN5T618_PSO3_SLOT 0x28
0046 #define RN5T618_LDORTC1_SLOT 0x2a
0047 #define RN5T618_DC1CTL 0x2c
0048 #define RN5T618_DC1CTL2 0x2d
0049 #define RN5T618_DC2CTL 0x2e
0050 #define RN5T618_DC2CTL2 0x2f
0051 #define RN5T618_DC3CTL 0x30
0052 #define RN5T618_DC3CTL2 0x31
0053 #define RN5T618_DC4CTL 0x32
0054 #define RN5T618_DC4CTL2 0x33
0055 #define RN5T618_DC5CTL 0x34
0056 #define RN5T618_DC5CTL2 0x35
0057 #define RN5T618_DC1DAC 0x36
0058 #define RN5T618_DC2DAC 0x37
0059 #define RN5T618_DC3DAC 0x38
0060 #define RN5T618_DC4DAC 0x39
0061 #define RN5T618_DC5DAC 0x3a
0062 #define RN5T618_DC1DAC_SLP 0x3b
0063 #define RN5T618_DC2DAC_SLP 0x3c
0064 #define RN5T618_DC3DAC_SLP 0x3d
0065 #define RN5T618_DC4DAC_SLP 0x3e
0066 #define RN5T618_DCIREN 0x40
0067 #define RN5T618_DCIRQ 0x41
0068 #define RN5T618_DCIRMON 0x42
0069 #define RN5T618_LDOEN1 0x44
0070 #define RN5T618_LDOEN2 0x45
0071 #define RN5T618_LDODIS 0x46
0072 #define RN5T618_LDO1DAC 0x4c
0073 #define RN5T618_LDO2DAC 0x4d
0074 #define RN5T618_LDO3DAC 0x4e
0075 #define RN5T618_LDO4DAC 0x4f
0076 #define RN5T618_LDO5DAC 0x50
0077 #define RN5T618_LDO6DAC 0x51
0078 #define RN5T618_LDO7DAC 0x52
0079 #define RN5T618_LDO8DAC 0x53
0080 #define RN5T618_LDO9DAC 0x54
0081 #define RN5T618_LDO10DAC 0x55
0082 #define RN5T618_LDORTCDAC 0x56
0083 #define RN5T618_LDORTC2DAC 0x57
0084 #define RN5T618_LDO1DAC_SLP 0x58
0085 #define RN5T618_LDO2DAC_SLP 0x59
0086 #define RN5T618_LDO3DAC_SLP 0x5a
0087 #define RN5T618_LDO4DAC_SLP 0x5b
0088 #define RN5T618_LDO5DAC_SLP 0x5c
0089 #define RN5T618_ADCCNT1 0x64
0090 #define RN5T618_ADCCNT2 0x65
0091 #define RN5T618_ADCCNT3 0x66
0092 #define RN5T618_ILIMDATAH 0x68
0093 #define RN5T618_ILIMDATAL 0x69
0094 #define RN5T618_VBATDATAH 0x6a
0095 #define RN5T618_VBATDATAL 0x6b
0096 #define RN5T618_VADPDATAH 0x6c
0097 #define RN5T618_VADPDATAL 0x6d
0098 #define RN5T618_VUSBDATAH 0x6e
0099 #define RN5T618_VUSBDATAL 0x6f
0100 #define RN5T618_VSYSDATAH 0x70
0101 #define RN5T618_VSYSDATAL 0x71
0102 #define RN5T618_VTHMDATAH 0x72
0103 #define RN5T618_VTHMDATAL 0x73
0104 #define RN5T618_AIN1DATAH 0x74
0105 #define RN5T618_AIN1DATAL 0x75
0106 #define RN5T618_AIN0DATAH 0x76
0107 #define RN5T618_AIN0DATAL 0x77
0108 #define RN5T618_ILIMTHL 0x78
0109 #define RN5T618_ILIMTHH 0x79
0110 #define RN5T618_VBATTHL 0x7a
0111 #define RN5T618_VBATTHH 0x7b
0112 #define RN5T618_VADPTHL 0x7c
0113 #define RN5T618_VADPTHH 0x7d
0114 #define RN5T618_VUSBTHL 0x7e
0115 #define RN5T618_VUSBTHH 0x7f
0116 #define RN5T618_VSYSTHL 0x80
0117 #define RN5T618_VSYSTHH 0x81
0118 #define RN5T618_VTHMTHL 0x82
0119 #define RN5T618_VTHMTHH 0x83
0120 #define RN5T618_AIN1THL 0x84
0121 #define RN5T618_AIN1THH 0x85
0122 #define RN5T618_AIN0THL 0x86
0123 #define RN5T618_AIN0THH 0x87
0124 #define RN5T618_EN_ADCIR1 0x88
0125 #define RN5T618_EN_ADCIR2 0x89
0126 #define RN5T618_EN_ADCIR3 0x8a
0127 #define RN5T618_IR_ADC1 0x8c
0128 #define RN5T618_IR_ADC2 0x8d
0129 #define RN5T618_IR_ADC3 0x8e
0130 #define RN5T618_IOSEL 0x90
0131 #define RN5T618_IOOUT 0x91
0132 #define RN5T618_GPEDGE1 0x92
0133 #define RN5T618_GPEDGE2 0x93
0134 #define RN5T618_EN_GPIR 0x94
0135 #define RN5T618_IR_GPR 0x95
0136 #define RN5T618_IR_GPF 0x96
0137 #define RN5T618_MON_IOIN 0x97
0138 #define RN5T618_GPLED_FUNC 0x98
0139 #define RN5T618_INTPOL 0x9c
0140 #define RN5T618_INTEN 0x9d
0141 #define RN5T618_INTMON 0x9e
0142
0143 #define RN5T618_RTC_SECONDS 0xA0
0144 #define RN5T618_RTC_MDAY 0xA4
0145 #define RN5T618_RTC_MONTH 0xA5
0146 #define RN5T618_RTC_YEAR 0xA6
0147 #define RN5T618_RTC_ADJUST 0xA7
0148 #define RN5T618_RTC_ALARM_Y_SEC 0xA8
0149 #define RN5T618_RTC_DAL_MONTH 0xAC
0150 #define RN5T618_RTC_CTRL1 0xAE
0151 #define RN5T618_RTC_CTRL2 0xAF
0152
0153 #define RN5T618_PREVINDAC 0xb0
0154 #define RN5T618_BATDAC 0xb1
0155 #define RN5T618_CHGCTL1 0xb3
0156 #define RN5T618_CHGCTL2 0xb4
0157 #define RN5T618_VSYSSET 0xb5
0158 #define RN5T618_REGISET1 0xb6
0159 #define RN5T618_REGISET2 0xb7
0160 #define RN5T618_CHGISET 0xb8
0161 #define RN5T618_TIMSET 0xb9
0162 #define RN5T618_BATSET1 0xba
0163 #define RN5T618_BATSET2 0xbb
0164 #define RN5T618_DIESET 0xbc
0165 #define RN5T618_CHGSTATE 0xbd
0166 #define RN5T618_CHGCTRL_IRFMASK 0xbe
0167 #define RN5T618_CHGSTAT_IRFMASK1 0xbf
0168 #define RN5T618_CHGSTAT_IRFMASK2 0xc0
0169 #define RN5T618_CHGERR_IRFMASK 0xc1
0170 #define RN5T618_CHGCTRL_IRR 0xc2
0171 #define RN5T618_CHGSTAT_IRR1 0xc3
0172 #define RN5T618_CHGSTAT_IRR2 0xc4
0173 #define RN5T618_CHGERR_IRR 0xc5
0174 #define RN5T618_CHGCTRL_MONI 0xc6
0175 #define RN5T618_CHGSTAT_MONI1 0xc7
0176 #define RN5T618_CHGSTAT_MONI2 0xc8
0177 #define RN5T618_CHGERR_MONI 0xc9
0178 #define RN5T618_CHGCTRL_DETMOD1 0xca
0179 #define RN5T618_CHGCTRL_DETMOD2 0xcb
0180 #define RN5T618_CHGSTAT_DETMOD1 0xcc
0181 #define RN5T618_CHGSTAT_DETMOD2 0xcd
0182 #define RN5T618_CHGSTAT_DETMOD3 0xce
0183 #define RN5T618_CHGERR_DETMOD1 0xcf
0184 #define RN5T618_CHGERR_DETMOD2 0xd0
0185 #define RN5T618_CHGOSCCTL 0xd4
0186 #define RN5T618_CHGOSCSCORESET1 0xd5
0187 #define RN5T618_CHGOSCSCORESET2 0xd6
0188 #define RN5T618_CHGOSCSCORESET3 0xd7
0189 #define RN5T618_CHGOSCFREQSET1 0xd8
0190 #define RN5T618_CHGOSCFREQSET2 0xd9
0191 #define RN5T618_GCHGDET 0xda
0192 #define RN5T618_CONTROL 0xe0
0193 #define RN5T618_SOC 0xe1
0194 #define RN5T618_RE_CAP_H 0xe2
0195 #define RN5T618_RE_CAP_L 0xe3
0196 #define RN5T618_FA_CAP_H 0xe4
0197 #define RN5T618_FA_CAP_L 0xe5
0198 #define RN5T618_AGE 0xe6
0199 #define RN5T618_TT_EMPTY_H 0xe7
0200 #define RN5T618_TT_EMPTY_L 0xe8
0201 #define RN5T618_TT_FULL_H 0xe9
0202 #define RN5T618_TT_FULL_L 0xea
0203 #define RN5T618_VOLTAGE_1 0xeb
0204 #define RN5T618_VOLTAGE_0 0xec
0205 #define RN5T618_TEMP_1 0xed
0206 #define RN5T618_TEMP_0 0xee
0207 #define RN5T618_CC_CTRL 0xef
0208 #define RN5T618_CC_COUNT2 0xf0
0209 #define RN5T618_CC_COUNT1 0xf1
0210 #define RN5T618_CC_COUNT0 0xf2
0211 #define RN5T618_CC_SUMREG3 0xf3
0212 #define RN5T618_CC_SUMREG2 0xf4
0213 #define RN5T618_CC_SUMREG1 0xf5
0214 #define RN5T618_CC_SUMREG0 0xf6
0215 #define RN5T618_CC_OFFREG1 0xf7
0216 #define RN5T618_CC_OFFREG0 0xf8
0217 #define RN5T618_CC_GAINREG1 0xf9
0218 #define RN5T618_CC_GAINREG0 0xfa
0219 #define RN5T618_CC_AVEREG1 0xfb
0220 #define RN5T618_CC_AVEREG0 0xfc
0221 #define RN5T618_MAX_REG 0xfc
0222
0223 #define RN5T618_REPCNT_REPWRON BIT(0)
0224 #define RN5T618_SLPCNT_SWPWROFF BIT(0)
0225 #define RN5T618_WATCHDOG_WDOGEN BIT(2)
0226 #define RN5T618_WATCHDOG_WDOGTIM_M (BIT(0) | BIT(1))
0227 #define RN5T618_WATCHDOG_WDOGTIM_S 0
0228 #define RN5T618_PWRIRQ_IR_WDOG BIT(6)
0229
0230 enum {
0231 RN5T618_DCDC1,
0232 RN5T618_DCDC2,
0233 RN5T618_DCDC3,
0234 RN5T618_DCDC4,
0235 RN5T618_DCDC5,
0236 RN5T618_LDO1,
0237 RN5T618_LDO2,
0238 RN5T618_LDO3,
0239 RN5T618_LDO4,
0240 RN5T618_LDO5,
0241 RN5T618_LDO6,
0242 RN5T618_LDO7,
0243 RN5T618_LDO8,
0244 RN5T618_LDO9,
0245 RN5T618_LDO10,
0246 RN5T618_LDORTC1,
0247 RN5T618_LDORTC2,
0248 RN5T618_REG_NUM,
0249 };
0250
0251 enum {
0252 RN5T567 = 0,
0253 RN5T618,
0254 RC5T619,
0255 };
0256
0257
0258 enum {
0259 RN5T618_IRQ_SYS = 0,
0260 RN5T618_IRQ_DCDC,
0261 RN5T618_IRQ_RTC,
0262 RN5T618_IRQ_ADC,
0263 RN5T618_IRQ_GPIO,
0264 RN5T618_IRQ_CHG,
0265 RN5T618_NR_IRQS,
0266 };
0267
0268 struct rn5t618 {
0269 struct regmap *regmap;
0270 struct device *dev;
0271 long variant;
0272
0273 int irq;
0274 struct regmap_irq_chip_data *irq_data;
0275 };
0276
0277 #endif