Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * MFD core driver for Ricoh RN5T618 PMIC
0004  *
0005  * Copyright (C) 2014 Beniamino Galvani <b.galvani@gmail.com>
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 /* RN5T618 IRQ definitions */
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 /* __LINUX_MFD_RN5T618_H */