0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #include <linux/module.h>
0013 #include <linux/power_supply.h>
0014 #include "samsung-sdi-battery.h"
0015
0016 struct samsung_sdi_battery {
0017 char *compatible;
0018 char *name;
0019 struct power_supply_battery_info info;
0020 };
0021
0022
0023
0024
0025
0026
0027
0028 static struct power_supply_vbat_ri_table samsung_vbat2res_discharging_eb_l1m7flu[] = {
0029 { .vbat_uv = 4240000, .ri_uohm = 160000 },
0030 { .vbat_uv = 4210000, .ri_uohm = 179000 },
0031 { .vbat_uv = 4180000, .ri_uohm = 183000 },
0032 { .vbat_uv = 4160000, .ri_uohm = 184000 },
0033 { .vbat_uv = 4140000, .ri_uohm = 191000 },
0034 { .vbat_uv = 4120000, .ri_uohm = 204000 },
0035 { .vbat_uv = 4076000, .ri_uohm = 220000 },
0036 { .vbat_uv = 4030000, .ri_uohm = 227000 },
0037 { .vbat_uv = 3986000, .ri_uohm = 215000 },
0038 { .vbat_uv = 3916000, .ri_uohm = 221000 },
0039 { .vbat_uv = 3842000, .ri_uohm = 259000 },
0040 { .vbat_uv = 3773000, .ri_uohm = 287000 },
0041 { .vbat_uv = 3742000, .ri_uohm = 283000 },
0042 { .vbat_uv = 3709000, .ri_uohm = 277000 },
0043 { .vbat_uv = 3685000, .ri_uohm = 297000 },
0044 { .vbat_uv = 3646000, .ri_uohm = 310000 },
0045 { .vbat_uv = 3616000, .ri_uohm = 331000 },
0046 { .vbat_uv = 3602000, .ri_uohm = 370000 },
0047 { .vbat_uv = 3578000, .ri_uohm = 350000 },
0048 { .vbat_uv = 3553000, .ri_uohm = 321000 },
0049 { .vbat_uv = 3503000, .ri_uohm = 322000 },
0050 { .vbat_uv = 3400000, .ri_uohm = 269000 },
0051 { .vbat_uv = 3360000, .ri_uohm = 328000 },
0052 { .vbat_uv = 3330000, .ri_uohm = 305000 },
0053 { .vbat_uv = 3300000, .ri_uohm = 339000 },
0054 };
0055
0056 static struct power_supply_vbat_ri_table samsung_vbat2res_charging_eb_l1m7flu[] = {
0057 { .vbat_uv = 4302000, .ri_uohm = 230000 },
0058 { .vbat_uv = 4276000, .ri_uohm = 345000 },
0059 { .vbat_uv = 4227000, .ri_uohm = 345000 },
0060 { .vbat_uv = 4171000, .ri_uohm = 346000 },
0061 { .vbat_uv = 4134000, .ri_uohm = 311000 },
0062 { .vbat_uv = 4084000, .ri_uohm = 299000 },
0063 { .vbat_uv = 4052000, .ri_uohm = 316000 },
0064 { .vbat_uv = 4012000, .ri_uohm = 309000 },
0065 { .vbat_uv = 3961000, .ri_uohm = 303000 },
0066 { .vbat_uv = 3939000, .ri_uohm = 280000 },
0067 { .vbat_uv = 3904000, .ri_uohm = 261000 },
0068 { .vbat_uv = 3850000, .ri_uohm = 212000 },
0069 { .vbat_uv = 3800000, .ri_uohm = 232000 },
0070 { .vbat_uv = 3750000, .ri_uohm = 177000 },
0071 { .vbat_uv = 3712000, .ri_uohm = 164000 },
0072 { .vbat_uv = 3674000, .ri_uohm = 161000 },
0073 { .vbat_uv = 3590000, .ri_uohm = 164000 },
0074 };
0075
0076 static struct power_supply_vbat_ri_table samsung_vbat2res_discharging_eb425161la[] = {
0077 { .vbat_uv = 4240000, .ri_uohm = 160000 },
0078 { .vbat_uv = 4210000, .ri_uohm = 179000 },
0079 { .vbat_uv = 4180000, .ri_uohm = 183000 },
0080 { .vbat_uv = 4160000, .ri_uohm = 184000 },
0081 { .vbat_uv = 4140000, .ri_uohm = 191000 },
0082 { .vbat_uv = 4120000, .ri_uohm = 204000 },
0083 { .vbat_uv = 4080000, .ri_uohm = 200000 },
0084 { .vbat_uv = 4027000, .ri_uohm = 202000 },
0085 { .vbat_uv = 3916000, .ri_uohm = 221000 },
0086 { .vbat_uv = 3842000, .ri_uohm = 259000 },
0087 { .vbat_uv = 3800000, .ri_uohm = 262000 },
0088 { .vbat_uv = 3742000, .ri_uohm = 263000 },
0089 { .vbat_uv = 3709000, .ri_uohm = 277000 },
0090 { .vbat_uv = 3685000, .ri_uohm = 312000 },
0091 { .vbat_uv = 3668000, .ri_uohm = 258000 },
0092 { .vbat_uv = 3660000, .ri_uohm = 247000 },
0093 { .vbat_uv = 3636000, .ri_uohm = 293000 },
0094 { .vbat_uv = 3616000, .ri_uohm = 331000 },
0095 { .vbat_uv = 3600000, .ri_uohm = 349000 },
0096 { .vbat_uv = 3593000, .ri_uohm = 345000 },
0097 { .vbat_uv = 3585000, .ri_uohm = 344000 },
0098 { .vbat_uv = 3572000, .ri_uohm = 336000 },
0099 { .vbat_uv = 3553000, .ri_uohm = 321000 },
0100 { .vbat_uv = 3517000, .ri_uohm = 336000 },
0101 { .vbat_uv = 3503000, .ri_uohm = 322000 },
0102 { .vbat_uv = 3400000, .ri_uohm = 269000 },
0103 { .vbat_uv = 3360000, .ri_uohm = 328000 },
0104 { .vbat_uv = 3330000, .ri_uohm = 305000 },
0105 { .vbat_uv = 3300000, .ri_uohm = 339000 },
0106 };
0107
0108 static struct power_supply_vbat_ri_table samsung_vbat2res_charging_eb425161la[] = {
0109 { .vbat_uv = 4345000, .ri_uohm = 230000 },
0110 { .vbat_uv = 4329000, .ri_uohm = 238000 },
0111 { .vbat_uv = 4314000, .ri_uohm = 225000 },
0112 { .vbat_uv = 4311000, .ri_uohm = 239000 },
0113 { .vbat_uv = 4294000, .ri_uohm = 235000 },
0114 { .vbat_uv = 4264000, .ri_uohm = 229000 },
0115 { .vbat_uv = 4262000, .ri_uohm = 228000 },
0116 { .vbat_uv = 4252000, .ri_uohm = 236000 },
0117 { .vbat_uv = 4244000, .ri_uohm = 234000 },
0118 { .vbat_uv = 4235000, .ri_uohm = 234000 },
0119 { .vbat_uv = 4227000, .ri_uohm = 238000 },
0120 { .vbat_uv = 4219000, .ri_uohm = 242000 },
0121 { .vbat_uv = 4212000, .ri_uohm = 239000 },
0122 { .vbat_uv = 4206000, .ri_uohm = 231000 },
0123 { .vbat_uv = 4201000, .ri_uohm = 231000 },
0124 { .vbat_uv = 4192000, .ri_uohm = 224000 },
0125 { .vbat_uv = 4184000, .ri_uohm = 238000 },
0126 { .vbat_uv = 4173000, .ri_uohm = 245000 },
0127 { .vbat_uv = 4161000, .ri_uohm = 244000 },
0128 { .vbat_uv = 4146000, .ri_uohm = 244000 },
0129 { .vbat_uv = 4127000, .ri_uohm = 228000 },
0130 { .vbat_uv = 4119000, .ri_uohm = 218000 },
0131 { .vbat_uv = 4112000, .ri_uohm = 215000 },
0132 { .vbat_uv = 4108000, .ri_uohm = 209000 },
0133 { .vbat_uv = 4102000, .ri_uohm = 214000 },
0134 { .vbat_uv = 4096000, .ri_uohm = 215000 },
0135 { .vbat_uv = 4090000, .ri_uohm = 215000 },
0136 { .vbat_uv = 4083000, .ri_uohm = 219000 },
0137 { .vbat_uv = 4078000, .ri_uohm = 208000 },
0138 { .vbat_uv = 4071000, .ri_uohm = 205000 },
0139 { .vbat_uv = 4066000, .ri_uohm = 208000 },
0140 { .vbat_uv = 4061000, .ri_uohm = 210000 },
0141 { .vbat_uv = 4055000, .ri_uohm = 212000 },
0142 { .vbat_uv = 4049000, .ri_uohm = 215000 },
0143 { .vbat_uv = 4042000, .ri_uohm = 212000 },
0144 { .vbat_uv = 4032000, .ri_uohm = 217000 },
0145 { .vbat_uv = 4027000, .ri_uohm = 220000 },
0146 { .vbat_uv = 4020000, .ri_uohm = 210000 },
0147 { .vbat_uv = 4013000, .ri_uohm = 214000 },
0148 { .vbat_uv = 4007000, .ri_uohm = 219000 },
0149 { .vbat_uv = 4003000, .ri_uohm = 229000 },
0150 { .vbat_uv = 3996000, .ri_uohm = 246000 },
0151 { .vbat_uv = 3990000, .ri_uohm = 245000 },
0152 { .vbat_uv = 3984000, .ri_uohm = 242000 },
0153 { .vbat_uv = 3977000, .ri_uohm = 236000 },
0154 { .vbat_uv = 3971000, .ri_uohm = 231000 },
0155 { .vbat_uv = 3966000, .ri_uohm = 229000 },
0156 { .vbat_uv = 3952000, .ri_uohm = 226000 },
0157 { .vbat_uv = 3946000, .ri_uohm = 222000 },
0158 { .vbat_uv = 3941000, .ri_uohm = 222000 },
0159 { .vbat_uv = 3936000, .ri_uohm = 217000 },
0160 { .vbat_uv = 3932000, .ri_uohm = 217000 },
0161 { .vbat_uv = 3928000, .ri_uohm = 212000 },
0162 { .vbat_uv = 3926000, .ri_uohm = 214000 },
0163 { .vbat_uv = 3922000, .ri_uohm = 209000 },
0164 { .vbat_uv = 3917000, .ri_uohm = 215000 },
0165 { .vbat_uv = 3914000, .ri_uohm = 212000 },
0166 { .vbat_uv = 3912000, .ri_uohm = 220000 },
0167 { .vbat_uv = 3910000, .ri_uohm = 226000 },
0168 { .vbat_uv = 3903000, .ri_uohm = 226000 },
0169 { .vbat_uv = 3891000, .ri_uohm = 222000 },
0170 { .vbat_uv = 3871000, .ri_uohm = 221000 },
0171 { .vbat_uv = 3857000, .ri_uohm = 219000 },
0172 { .vbat_uv = 3850000, .ri_uohm = 216000 },
0173 { .vbat_uv = 3843000, .ri_uohm = 212000 },
0174 { .vbat_uv = 3835000, .ri_uohm = 206000 },
0175 { .vbat_uv = 3825000, .ri_uohm = 217000 },
0176 { .vbat_uv = 3824000, .ri_uohm = 220000 },
0177 { .vbat_uv = 3820000, .ri_uohm = 237000 },
0178 { .vbat_uv = 3800000, .ri_uohm = 232000 },
0179 { .vbat_uv = 3750000, .ri_uohm = 177000 },
0180 { .vbat_uv = 3712000, .ri_uohm = 164000 },
0181 { .vbat_uv = 3674000, .ri_uohm = 161000 },
0182 { .vbat_uv = 3590000, .ri_uohm = 164000 },
0183 };
0184
0185 static struct power_supply_vbat_ri_table samsung_vbat2res_discharging_eb425161lu[] = {
0186 { .vbat_uv = 4240000, .ri_uohm = 160000 },
0187 { .vbat_uv = 4210000, .ri_uohm = 179000 },
0188 { .vbat_uv = 4180000, .ri_uohm = 183000 },
0189 { .vbat_uv = 4160000, .ri_uohm = 184000 },
0190 { .vbat_uv = 4140000, .ri_uohm = 191000 },
0191 { .vbat_uv = 4120000, .ri_uohm = 204000 },
0192 { .vbat_uv = 4080000, .ri_uohm = 200000 },
0193 { .vbat_uv = 4027000, .ri_uohm = 202000 },
0194 { .vbat_uv = 3916000, .ri_uohm = 221000 },
0195 { .vbat_uv = 3842000, .ri_uohm = 259000 },
0196 { .vbat_uv = 3800000, .ri_uohm = 262000 },
0197 { .vbat_uv = 3742000, .ri_uohm = 263000 },
0198 { .vbat_uv = 3708000, .ri_uohm = 277000 },
0199 { .vbat_uv = 3684000, .ri_uohm = 272000 },
0200 { .vbat_uv = 3664000, .ri_uohm = 278000 },
0201 { .vbat_uv = 3655000, .ri_uohm = 285000 },
0202 { .vbat_uv = 3638000, .ri_uohm = 261000 },
0203 { .vbat_uv = 3624000, .ri_uohm = 259000 },
0204 { .vbat_uv = 3616000, .ri_uohm = 266000 },
0205 { .vbat_uv = 3597000, .ri_uohm = 278000 },
0206 { .vbat_uv = 3581000, .ri_uohm = 281000 },
0207 { .vbat_uv = 3560000, .ri_uohm = 287000 },
0208 { .vbat_uv = 3527000, .ri_uohm = 289000 },
0209 { .vbat_uv = 3512000, .ri_uohm = 286000 },
0210 { .vbat_uv = 3494000, .ri_uohm = 282000 },
0211 { .vbat_uv = 3400000, .ri_uohm = 269000 },
0212 { .vbat_uv = 3360000, .ri_uohm = 328000 },
0213 { .vbat_uv = 3330000, .ri_uohm = 305000 },
0214 { .vbat_uv = 3300000, .ri_uohm = 339000 },
0215 };
0216
0217 static struct power_supply_vbat_ri_table samsung_vbat2res_charging_eb425161lu[] = {
0218 { .vbat_uv = 4346000, .ri_uohm = 293000 },
0219 { .vbat_uv = 4336000, .ri_uohm = 290000 },
0220 { .vbat_uv = 4315000, .ri_uohm = 274000 },
0221 { .vbat_uv = 4310000, .ri_uohm = 264000 },
0222 { .vbat_uv = 4275000, .ri_uohm = 275000 },
0223 { .vbat_uv = 4267000, .ri_uohm = 274000 },
0224 { .vbat_uv = 4227000, .ri_uohm = 262000 },
0225 { .vbat_uv = 4186000, .ri_uohm = 282000 },
0226 { .vbat_uv = 4136000, .ri_uohm = 246000 },
0227 { .vbat_uv = 4110000, .ri_uohm = 242000 },
0228 { .vbat_uv = 4077000, .ri_uohm = 249000 },
0229 { .vbat_uv = 4049000, .ri_uohm = 238000 },
0230 { .vbat_uv = 4017000, .ri_uohm = 268000 },
0231 { .vbat_uv = 3986000, .ri_uohm = 261000 },
0232 { .vbat_uv = 3962000, .ri_uohm = 252000 },
0233 { .vbat_uv = 3940000, .ri_uohm = 235000 },
0234 { .vbat_uv = 3930000, .ri_uohm = 237000 },
0235 { .vbat_uv = 3924000, .ri_uohm = 255000 },
0236 { .vbat_uv = 3910000, .ri_uohm = 244000 },
0237 { .vbat_uv = 3889000, .ri_uohm = 231000 },
0238 { .vbat_uv = 3875000, .ri_uohm = 249000 },
0239 { .vbat_uv = 3850000, .ri_uohm = 212000 },
0240 { .vbat_uv = 3800000, .ri_uohm = 232000 },
0241 { .vbat_uv = 3750000, .ri_uohm = 177000 },
0242 { .vbat_uv = 3712000, .ri_uohm = 164000 },
0243 { .vbat_uv = 3674000, .ri_uohm = 161000 },
0244 { .vbat_uv = 3590000, .ri_uohm = 164000 },
0245 };
0246
0247 static struct power_supply_vbat_ri_table samsung_vbat2res_discharging_eb485159lu[] = {
0248 { .vbat_uv = 4240000, .ri_uohm = 160000 },
0249 { .vbat_uv = 4210000, .ri_uohm = 179000 },
0250 { .vbat_uv = 4180000, .ri_uohm = 183000 },
0251 { .vbat_uv = 4160000, .ri_uohm = 184000 },
0252 { .vbat_uv = 4140000, .ri_uohm = 191000 },
0253 { .vbat_uv = 4120000, .ri_uohm = 204000 },
0254 { .vbat_uv = 4080000, .ri_uohm = 200000 },
0255 { .vbat_uv = 4027000, .ri_uohm = 202000 },
0256 { .vbat_uv = 3916000, .ri_uohm = 221000 },
0257 { .vbat_uv = 3842000, .ri_uohm = 259000 },
0258 { .vbat_uv = 3800000, .ri_uohm = 262000 },
0259 { .vbat_uv = 3715000, .ri_uohm = 340000 },
0260 { .vbat_uv = 3700000, .ri_uohm = 300000 },
0261 { .vbat_uv = 3682000, .ri_uohm = 233000 },
0262 { .vbat_uv = 3655000, .ri_uohm = 246000 },
0263 { .vbat_uv = 3639000, .ri_uohm = 260000 },
0264 { .vbat_uv = 3621000, .ri_uohm = 254000 },
0265 { .vbat_uv = 3583000, .ri_uohm = 266000 },
0266 { .vbat_uv = 3536000, .ri_uohm = 274000 },
0267 { .vbat_uv = 3502000, .ri_uohm = 300000 },
0268 { .vbat_uv = 3465000, .ri_uohm = 245000 },
0269 { .vbat_uv = 3438000, .ri_uohm = 225000 },
0270 { .vbat_uv = 3330000, .ri_uohm = 305000 },
0271 { .vbat_uv = 3300000, .ri_uohm = 339000 },
0272 };
0273
0274 static struct power_supply_vbat_ri_table samsung_vbat2res_charging_eb485159lu[] = {
0275 { .vbat_uv = 4302000, .ri_uohm = 200000 },
0276 { .vbat_uv = 4258000, .ri_uohm = 206000 },
0277 { .vbat_uv = 4200000, .ri_uohm = 231000 },
0278 { .vbat_uv = 4150000, .ri_uohm = 198000 },
0279 { .vbat_uv = 4134000, .ri_uohm = 268000 },
0280 { .vbat_uv = 4058000, .ri_uohm = 172000 },
0281 { .vbat_uv = 4003000, .ri_uohm = 227000 },
0282 { .vbat_uv = 3972000, .ri_uohm = 241000 },
0283 { .vbat_uv = 3953000, .ri_uohm = 244000 },
0284 { .vbat_uv = 3950000, .ri_uohm = 213000 },
0285 { .vbat_uv = 3900000, .ri_uohm = 225000 },
0286 { .vbat_uv = 3850000, .ri_uohm = 212000 },
0287 { .vbat_uv = 3800000, .ri_uohm = 232000 },
0288 { .vbat_uv = 3750000, .ri_uohm = 177000 },
0289 { .vbat_uv = 3712000, .ri_uohm = 164000 },
0290 { .vbat_uv = 3674000, .ri_uohm = 161000 },
0291 { .vbat_uv = 3590000, .ri_uohm = 164000 },
0292 };
0293
0294 static struct power_supply_vbat_ri_table samsung_vbat2res_discharging_eb535151vu[] = {
0295 { .vbat_uv = 4071000, .ri_uohm = 158000 },
0296 { .vbat_uv = 4019000, .ri_uohm = 187000 },
0297 { .vbat_uv = 3951000, .ri_uohm = 191000 },
0298 { .vbat_uv = 3901000, .ri_uohm = 193000 },
0299 { .vbat_uv = 3850000, .ri_uohm = 273000 },
0300 { .vbat_uv = 3800000, .ri_uohm = 305000 },
0301 { .vbat_uv = 3750000, .ri_uohm = 205000 },
0302 { .vbat_uv = 3700000, .ri_uohm = 290000 },
0303 { .vbat_uv = 3650000, .ri_uohm = 262000 },
0304 { .vbat_uv = 3618000, .ri_uohm = 290000 },
0305 { .vbat_uv = 3505000, .ri_uohm = 235000 },
0306 { .vbat_uv = 3484000, .ri_uohm = 253000 },
0307 { .vbat_uv = 3413000, .ri_uohm = 243000 },
0308 { .vbat_uv = 3393000, .ri_uohm = 285000 },
0309 { .vbat_uv = 3361000, .ri_uohm = 281000 },
0310 { .vbat_uv = 3302000, .ri_uohm = 286000 },
0311 { .vbat_uv = 3280000, .ri_uohm = 250000 },
0312 };
0313
0314 static struct power_supply_vbat_ri_table samsung_vbat2res_charging_eb535151vu[] = {
0315 { .vbat_uv = 4190000, .ri_uohm = 214000 },
0316 { .vbat_uv = 4159000, .ri_uohm = 252000 },
0317 { .vbat_uv = 4121000, .ri_uohm = 245000 },
0318 { .vbat_uv = 4069000, .ri_uohm = 228000 },
0319 { .vbat_uv = 4046000, .ri_uohm = 229000 },
0320 { .vbat_uv = 4026000, .ri_uohm = 233000 },
0321 { .vbat_uv = 4007000, .ri_uohm = 240000 },
0322 { .vbat_uv = 3982000, .ri_uohm = 291000 },
0323 { .vbat_uv = 3945000, .ri_uohm = 276000 },
0324 { .vbat_uv = 3924000, .ri_uohm = 266000 },
0325 { .vbat_uv = 3910000, .ri_uohm = 258000 },
0326 { .vbat_uv = 3900000, .ri_uohm = 271000 },
0327 { .vbat_uv = 3844000, .ri_uohm = 279000 },
0328 { .vbat_uv = 3772000, .ri_uohm = 217000 },
0329 { .vbat_uv = 3673000, .ri_uohm = 208000 },
0330 { .vbat_uv = 3571000, .ri_uohm = 208000 },
0331 { .vbat_uv = 3510000, .ri_uohm = 228000 },
0332 };
0333
0334 static struct power_supply_vbat_ri_table samsung_vbat2res_discharging_eb585157lu[] = {
0335 { .vbat_uv = 4194000, .ri_uohm = 121000 },
0336 { .vbat_uv = 4169000, .ri_uohm = 188000 },
0337 { .vbat_uv = 4136000, .ri_uohm = 173000 },
0338 { .vbat_uv = 4108000, .ri_uohm = 158000 },
0339 { .vbat_uv = 4064000, .ri_uohm = 143000 },
0340 { .vbat_uv = 3956000, .ri_uohm = 160000 },
0341 { .vbat_uv = 3847000, .ri_uohm = 262000 },
0342 { .vbat_uv = 3806000, .ri_uohm = 280000 },
0343 { .vbat_uv = 3801000, .ri_uohm = 266000 },
0344 { .vbat_uv = 3794000, .ri_uohm = 259000 },
0345 { .vbat_uv = 3785000, .ri_uohm = 234000 },
0346 { .vbat_uv = 3779000, .ri_uohm = 227000 },
0347 { .vbat_uv = 3772000, .ri_uohm = 222000 },
0348 { .vbat_uv = 3765000, .ri_uohm = 221000 },
0349 { .vbat_uv = 3759000, .ri_uohm = 216000 },
0350 { .vbat_uv = 3754000, .ri_uohm = 206000 },
0351 { .vbat_uv = 3747000, .ri_uohm = 212000 },
0352 { .vbat_uv = 3743000, .ri_uohm = 208000 },
0353 { .vbat_uv = 3737000, .ri_uohm = 212000 },
0354 { .vbat_uv = 3733000, .ri_uohm = 200000 },
0355 { .vbat_uv = 3728000, .ri_uohm = 203000 },
0356 { .vbat_uv = 3722000, .ri_uohm = 207000 },
0357 { .vbat_uv = 3719000, .ri_uohm = 208000 },
0358 { .vbat_uv = 3715000, .ri_uohm = 209000 },
0359 { .vbat_uv = 3712000, .ri_uohm = 211000 },
0360 { .vbat_uv = 3709000, .ri_uohm = 210000 },
0361 { .vbat_uv = 3704000, .ri_uohm = 216000 },
0362 { .vbat_uv = 3701000, .ri_uohm = 218000 },
0363 { .vbat_uv = 3698000, .ri_uohm = 222000 },
0364 { .vbat_uv = 3694000, .ri_uohm = 218000 },
0365 { .vbat_uv = 3692000, .ri_uohm = 215000 },
0366 { .vbat_uv = 3688000, .ri_uohm = 224000 },
0367 { .vbat_uv = 3686000, .ri_uohm = 224000 },
0368 { .vbat_uv = 3683000, .ri_uohm = 228000 },
0369 { .vbat_uv = 3681000, .ri_uohm = 228000 },
0370 { .vbat_uv = 3679000, .ri_uohm = 229000 },
0371 { .vbat_uv = 3676000, .ri_uohm = 232000 },
0372 { .vbat_uv = 3675000, .ri_uohm = 229000 },
0373 { .vbat_uv = 3673000, .ri_uohm = 229000 },
0374 { .vbat_uv = 3672000, .ri_uohm = 223000 },
0375 { .vbat_uv = 3669000, .ri_uohm = 224000 },
0376 { .vbat_uv = 3666000, .ri_uohm = 224000 },
0377 { .vbat_uv = 3663000, .ri_uohm = 221000 },
0378 { .vbat_uv = 3660000, .ri_uohm = 218000 },
0379 { .vbat_uv = 3657000, .ri_uohm = 215000 },
0380 { .vbat_uv = 3654000, .ri_uohm = 212000 },
0381 { .vbat_uv = 3649000, .ri_uohm = 215000 },
0382 { .vbat_uv = 3644000, .ri_uohm = 215000 },
0383 { .vbat_uv = 3636000, .ri_uohm = 215000 },
0384 { .vbat_uv = 3631000, .ri_uohm = 206000 },
0385 { .vbat_uv = 3623000, .ri_uohm = 205000 },
0386 { .vbat_uv = 3616000, .ri_uohm = 193000 },
0387 { .vbat_uv = 3605000, .ri_uohm = 193000 },
0388 { .vbat_uv = 3600000, .ri_uohm = 198000 },
0389 { .vbat_uv = 3597000, .ri_uohm = 198000 },
0390 { .vbat_uv = 3592000, .ri_uohm = 203000 },
0391 { .vbat_uv = 3591000, .ri_uohm = 188000 },
0392 { .vbat_uv = 3587000, .ri_uohm = 188000 },
0393 { .vbat_uv = 3583000, .ri_uohm = 177000 },
0394 { .vbat_uv = 3577000, .ri_uohm = 170000 },
0395 { .vbat_uv = 3568000, .ri_uohm = 135000 },
0396 { .vbat_uv = 3552000, .ri_uohm = 54000 },
0397 { .vbat_uv = 3526000, .ri_uohm = 130000 },
0398 { .vbat_uv = 3501000, .ri_uohm = 48000 },
0399 { .vbat_uv = 3442000, .ri_uohm = 183000 },
0400 { .vbat_uv = 3326000, .ri_uohm = 372000 },
0401 { .vbat_uv = 3161000, .ri_uohm = 452000 },
0402 };
0403
0404 static struct power_supply_vbat_ri_table samsung_vbat2res_charging_eb585157lu[] = {
0405 { .vbat_uv = 4360000, .ri_uohm = 128000 },
0406 { .vbat_uv = 4325000, .ri_uohm = 130000 },
0407 { .vbat_uv = 4316000, .ri_uohm = 148000 },
0408 { .vbat_uv = 4308000, .ri_uohm = 162000 },
0409 { .vbat_uv = 4301000, .ri_uohm = 162000 },
0410 { .vbat_uv = 4250000, .ri_uohm = 162000 },
0411 { .vbat_uv = 4230000, .ri_uohm = 164000 },
0412 { .vbat_uv = 4030000, .ri_uohm = 164000 },
0413 { .vbat_uv = 4000000, .ri_uohm = 193000 },
0414 { .vbat_uv = 3950000, .ri_uohm = 204000 },
0415 { .vbat_uv = 3850000, .ri_uohm = 210000 },
0416 { .vbat_uv = 3800000, .ri_uohm = 230000 },
0417 { .vbat_uv = 3790000, .ri_uohm = 240000 },
0418 { .vbat_uv = 3780000, .ri_uohm = 311000 },
0419 { .vbat_uv = 3760000, .ri_uohm = 420000 },
0420 { .vbat_uv = 3700000, .ri_uohm = 504000 },
0421 { .vbat_uv = 3600000, .ri_uohm = 565000 },
0422 };
0423
0424
0425
0426
0427
0428
0429
0430
0431
0432
0433
0434 static struct power_supply_resistance_temp_table samsung_temp2res[] = {
0435 { .temp = 50, .resistance = 100 },
0436 { .temp = 40, .resistance = 100 },
0437 { .temp = 30, .resistance = 100 },
0438 { .temp = 20, .resistance = 100 },
0439 { .temp = 10, .resistance = 100 },
0440 { .temp = 00, .resistance = 100 },
0441 { .temp = -10, .resistance = 100 },
0442 { .temp = -20, .resistance = 100 },
0443 };
0444
0445
0446
0447
0448
0449
0450 static struct power_supply_battery_ocv_table samsung_ocv_cap_eb485159lu[] = {
0451 { .ocv = 4330000, .capacity = 100},
0452 { .ocv = 4320000, .capacity = 99},
0453 { .ocv = 4283000, .capacity = 95},
0454 { .ocv = 4246000, .capacity = 92},
0455 { .ocv = 4211000, .capacity = 89},
0456 { .ocv = 4167000, .capacity = 85},
0457 { .ocv = 4146000, .capacity = 83},
0458 { .ocv = 4124000, .capacity = 81},
0459 { .ocv = 4062000, .capacity = 75},
0460 { .ocv = 4013000, .capacity = 70},
0461 { .ocv = 3977000, .capacity = 66},
0462 { .ocv = 3931000, .capacity = 60},
0463 { .ocv = 3914000, .capacity = 58},
0464 { .ocv = 3901000, .capacity = 57},
0465 { .ocv = 3884000, .capacity = 56},
0466 { .ocv = 3870000, .capacity = 55},
0467 { .ocv = 3862000, .capacity = 54},
0468 { .ocv = 3854000, .capacity = 53},
0469 { .ocv = 3838000, .capacity = 50},
0470 { .ocv = 3823000, .capacity = 47},
0471 { .ocv = 3813000, .capacity = 45},
0472 { .ocv = 3807000, .capacity = 43},
0473 { .ocv = 3800000, .capacity = 41},
0474 { .ocv = 3795000, .capacity = 40},
0475 { .ocv = 3786000, .capacity = 37},
0476 { .ocv = 3783000, .capacity = 35},
0477 { .ocv = 3773000, .capacity = 30},
0478 { .ocv = 3758000, .capacity = 25},
0479 { .ocv = 3745000, .capacity = 22},
0480 { .ocv = 3738000, .capacity = 20},
0481 { .ocv = 3733000, .capacity = 19},
0482 { .ocv = 3716000, .capacity = 17},
0483 { .ocv = 3709000, .capacity = 16},
0484 { .ocv = 3698000, .capacity = 15},
0485 { .ocv = 3687000, .capacity = 14},
0486 { .ocv = 3684000, .capacity = 13},
0487 { .ocv = 3684000, .capacity = 12},
0488 { .ocv = 3678000, .capacity = 10},
0489 { .ocv = 3671000, .capacity = 9},
0490 { .ocv = 3665000, .capacity = 8},
0491 { .ocv = 3651000, .capacity = 7},
0492 { .ocv = 3634000, .capacity = 6},
0493 { .ocv = 3601000, .capacity = 5},
0494 { .ocv = 3564000, .capacity = 4},
0495 { .ocv = 3516000, .capacity = 3},
0496 { .ocv = 3456000, .capacity = 2},
0497 { .ocv = 3381000, .capacity = 1},
0498 { .ocv = 3300000, .capacity = 0},
0499 };
0500
0501
0502 static struct power_supply_battery_ocv_table samsung_ocv_cap_1500mah[] = {
0503 { .ocv = 4328000, .capacity = 100},
0504 { .ocv = 4299000, .capacity = 99},
0505 { .ocv = 4281000, .capacity = 98},
0506 { .ocv = 4241000, .capacity = 95},
0507 { .ocv = 4183000, .capacity = 90},
0508 { .ocv = 4150000, .capacity = 87},
0509 { .ocv = 4116000, .capacity = 84},
0510 { .ocv = 4077000, .capacity = 80},
0511 { .ocv = 4068000, .capacity = 79},
0512 { .ocv = 4058000, .capacity = 77},
0513 { .ocv = 4026000, .capacity = 75},
0514 { .ocv = 3987000, .capacity = 72},
0515 { .ocv = 3974000, .capacity = 69},
0516 { .ocv = 3953000, .capacity = 66},
0517 { .ocv = 3933000, .capacity = 63},
0518 { .ocv = 3911000, .capacity = 60},
0519 { .ocv = 3900000, .capacity = 58},
0520 { .ocv = 3873000, .capacity = 55},
0521 { .ocv = 3842000, .capacity = 52},
0522 { .ocv = 3829000, .capacity = 50},
0523 { .ocv = 3810000, .capacity = 45},
0524 { .ocv = 3793000, .capacity = 40},
0525 { .ocv = 3783000, .capacity = 35},
0526 { .ocv = 3776000, .capacity = 30},
0527 { .ocv = 3762000, .capacity = 25},
0528 { .ocv = 3746000, .capacity = 20},
0529 { .ocv = 3739000, .capacity = 18},
0530 { .ocv = 3715000, .capacity = 15},
0531 { .ocv = 3700000, .capacity = 12},
0532 { .ocv = 3690000, .capacity = 10},
0533 { .ocv = 3680000, .capacity = 9},
0534 { .ocv = 3670000, .capacity = 7},
0535 { .ocv = 3656000, .capacity = 5},
0536 { .ocv = 3634000, .capacity = 4},
0537 { .ocv = 3614000, .capacity = 3},
0538 { .ocv = 3551000, .capacity = 2},
0539 { .ocv = 3458000, .capacity = 1},
0540 { .ocv = 3300000, .capacity = 0},
0541 };
0542
0543 static struct power_supply_battery_ocv_table samsung_ocv_cap_eb535151vu[] = {
0544 { .ocv = 4178000, .capacity = 100},
0545 { .ocv = 4148000, .capacity = 99},
0546 { .ocv = 4105000, .capacity = 95},
0547 { .ocv = 4078000, .capacity = 92},
0548 { .ocv = 4057000, .capacity = 89},
0549 { .ocv = 4013000, .capacity = 85},
0550 { .ocv = 3988000, .capacity = 82},
0551 { .ocv = 3962000, .capacity = 77},
0552 { .ocv = 3920000, .capacity = 70},
0553 { .ocv = 3891000, .capacity = 65},
0554 { .ocv = 3874000, .capacity = 62},
0555 { .ocv = 3839000, .capacity = 59},
0556 { .ocv = 3816000, .capacity = 55},
0557 { .ocv = 3798000, .capacity = 50},
0558 { .ocv = 3778000, .capacity = 40},
0559 { .ocv = 3764000, .capacity = 30},
0560 { .ocv = 3743000, .capacity = 25},
0561 { .ocv = 3711000, .capacity = 20},
0562 { .ocv = 3691000, .capacity = 18},
0563 { .ocv = 3685000, .capacity = 15},
0564 { .ocv = 3680000, .capacity = 12},
0565 { .ocv = 3662000, .capacity = 10},
0566 { .ocv = 3638000, .capacity = 9},
0567 { .ocv = 3593000, .capacity = 7},
0568 { .ocv = 3566000, .capacity = 6},
0569 { .ocv = 3497000, .capacity = 4},
0570 { .ocv = 3405000, .capacity = 2},
0571 { .ocv = 3352000, .capacity = 1},
0572 { .ocv = 3300000, .capacity = 0},
0573 };
0574
0575 static struct power_supply_battery_ocv_table samsung_ocv_cap_eb585157lu[] = {
0576 { .ocv = 4320000, .capacity = 100},
0577 { .ocv = 4296000, .capacity = 99},
0578 { .ocv = 4283000, .capacity = 98},
0579 { .ocv = 4245000, .capacity = 95},
0580 { .ocv = 4185000, .capacity = 90},
0581 { .ocv = 4152000, .capacity = 87},
0582 { .ocv = 4119000, .capacity = 84},
0583 { .ocv = 4077000, .capacity = 80},
0584 { .ocv = 4057000, .capacity = 78},
0585 { .ocv = 4048000, .capacity = 77},
0586 { .ocv = 4020000, .capacity = 74},
0587 { .ocv = 4003000, .capacity = 72},
0588 { .ocv = 3978000, .capacity = 69},
0589 { .ocv = 3955000, .capacity = 66},
0590 { .ocv = 3934000, .capacity = 63},
0591 { .ocv = 3912000, .capacity = 60},
0592 { .ocv = 3894000, .capacity = 58},
0593 { .ocv = 3860000, .capacity = 55},
0594 { .ocv = 3837000, .capacity = 52},
0595 { .ocv = 3827000, .capacity = 50},
0596 { .ocv = 3806000, .capacity = 45},
0597 { .ocv = 3791000, .capacity = 40},
0598 { .ocv = 3779000, .capacity = 35},
0599 { .ocv = 3770000, .capacity = 30},
0600 { .ocv = 3758000, .capacity = 25},
0601 { .ocv = 3739000, .capacity = 20},
0602 { .ocv = 3730000, .capacity = 18},
0603 { .ocv = 3706000, .capacity = 15},
0604 { .ocv = 3684000, .capacity = 13},
0605 { .ocv = 3675000, .capacity = 10},
0606 { .ocv = 3673000, .capacity = 9},
0607 { .ocv = 3665000, .capacity = 7},
0608 { .ocv = 3649000, .capacity = 5},
0609 { .ocv = 3628000, .capacity = 4},
0610 { .ocv = 3585000, .capacity = 3},
0611 { .ocv = 3525000, .capacity = 2},
0612 { .ocv = 3441000, .capacity = 1},
0613 { .ocv = 3300000, .capacity = 0},
0614 };
0615
0616 static struct power_supply_maintenance_charge_table samsung_maint_charge_table[] = {
0617 {
0618
0619 .charge_current_max_ua = 600000,
0620 .charge_voltage_max_uv = 4150000,
0621 .charge_safety_timer_minutes = 60*60,
0622 },
0623 {
0624
0625 .charge_current_max_ua = 600000,
0626 .charge_voltage_max_uv = 4100000,
0627 .charge_safety_timer_minutes = 200*60,
0628 }
0629 };
0630
0631 static struct samsung_sdi_battery samsung_sdi_batteries[] = {
0632 {
0633
0634
0635
0636
0637 .compatible = "samsung,eb-l1m7flu",
0638 .name = "EB-L1M7FLU",
0639 .info = {
0640 .charge_full_design_uah = 1500000,
0641 .technology = POWER_SUPPLY_TECHNOLOGY_LION,
0642 .factory_internal_resistance_uohm = 100000,
0643 .factory_internal_resistance_charging_uohm = 200000,
0644
0645 .voltage_min_design_uv = 3320000,
0646 .voltage_max_design_uv = 4340000,
0647 .overvoltage_limit_uv = 4500000,
0648 .constant_charge_current_max_ua = 900000,
0649 .constant_charge_voltage_max_uv = 4320000,
0650 .charge_term_current_ua = 200000,
0651 .charge_restart_voltage_uv = 4300000,
0652 .maintenance_charge = samsung_maint_charge_table,
0653 .maintenance_charge_size = ARRAY_SIZE(samsung_maint_charge_table),
0654 .alert_low_temp_charge_current_ua = 300000,
0655 .alert_low_temp_charge_voltage_uv = 4000000,
0656 .alert_high_temp_charge_current_ua = 300000,
0657 .alert_high_temp_charge_voltage_uv = 4000000,
0658 .temp_min = -50,
0659 .temp_alert_min = 0,
0660 .temp_alert_max = 40,
0661 .temp_max = 60,
0662 .resist_table = samsung_temp2res,
0663 .resist_table_size = ARRAY_SIZE(samsung_temp2res),
0664
0665 .ocv_temp[0] = 25,
0666 .ocv_table[0] = samsung_ocv_cap_1500mah,
0667 .ocv_table_size[0] = ARRAY_SIZE(samsung_ocv_cap_1500mah),
0668 .vbat2ri_discharging = samsung_vbat2res_discharging_eb_l1m7flu,
0669 .vbat2ri_discharging_size = ARRAY_SIZE(samsung_vbat2res_discharging_eb_l1m7flu),
0670 .vbat2ri_charging = samsung_vbat2res_charging_eb_l1m7flu,
0671 .vbat2ri_charging_size = ARRAY_SIZE(samsung_vbat2res_charging_eb_l1m7flu),
0672 .bti_resistance_ohm = 2400,
0673 .bti_resistance_tolerance = 40,
0674 },
0675 },
0676 {
0677
0678
0679
0680
0681 .compatible = "samsung,eb425161la",
0682 .name = "EB425161LA",
0683 .info = {
0684 .charge_full_design_uah = 1500000,
0685 .technology = POWER_SUPPLY_TECHNOLOGY_LION,
0686 .factory_internal_resistance_uohm = 136000,
0687 .factory_internal_resistance_charging_uohm = 200000,
0688
0689 .voltage_min_design_uv = 3320000,
0690 .voltage_max_design_uv = 4340000,
0691 .overvoltage_limit_uv = 4500000,
0692 .constant_charge_current_max_ua = 900000,
0693 .constant_charge_voltage_max_uv = 4320000,
0694 .charge_term_current_ua = 200000,
0695 .charge_restart_voltage_uv = 4270000,
0696 .maintenance_charge = samsung_maint_charge_table,
0697 .maintenance_charge_size = ARRAY_SIZE(samsung_maint_charge_table),
0698 .alert_low_temp_charge_current_ua = 300000,
0699 .alert_low_temp_charge_voltage_uv = 4000000,
0700 .alert_high_temp_charge_current_ua = 300000,
0701 .alert_high_temp_charge_voltage_uv = 4000000,
0702 .temp_min = -30,
0703 .temp_alert_min = 0,
0704 .temp_alert_max = 40,
0705 .temp_max = 47,
0706 .resist_table = samsung_temp2res,
0707 .resist_table_size = ARRAY_SIZE(samsung_temp2res),
0708
0709 .ocv_temp[0] = 25,
0710 .ocv_table[0] = samsung_ocv_cap_1500mah,
0711 .ocv_table_size[0] = ARRAY_SIZE(samsung_ocv_cap_1500mah),
0712 .vbat2ri_discharging = samsung_vbat2res_discharging_eb425161la,
0713 .vbat2ri_discharging_size = ARRAY_SIZE(samsung_vbat2res_discharging_eb425161la),
0714 .vbat2ri_charging = samsung_vbat2res_charging_eb425161la,
0715 .vbat2ri_charging_size = ARRAY_SIZE(samsung_vbat2res_charging_eb425161la),
0716 .bti_resistance_ohm = 2400,
0717 .bti_resistance_tolerance = 40,
0718 },
0719 },
0720 {
0721
0722
0723
0724
0725 .compatible = "samsung,eb425161lu",
0726 .name = "EB425161LU",
0727 .info = {
0728 .charge_full_design_uah = 1500000,
0729 .technology = POWER_SUPPLY_TECHNOLOGY_LION,
0730 .factory_internal_resistance_uohm = 100000,
0731 .factory_internal_resistance_charging_uohm = 200000,
0732
0733 .voltage_min_design_uv = 3320000,
0734 .voltage_max_design_uv = 4350000,
0735 .overvoltage_limit_uv = 4500000,
0736 .constant_charge_current_max_ua = 900000,
0737 .constant_charge_voltage_max_uv = 4340000,
0738 .charge_term_current_ua = 200000,
0739 .charge_restart_voltage_uv = 4280000,
0740 .maintenance_charge = samsung_maint_charge_table,
0741 .maintenance_charge_size = ARRAY_SIZE(samsung_maint_charge_table),
0742 .alert_low_temp_charge_current_ua = 300000,
0743 .alert_low_temp_charge_voltage_uv = 4000000,
0744 .alert_high_temp_charge_current_ua = 300000,
0745 .alert_high_temp_charge_voltage_uv = 4000000,
0746 .temp_min = -50,
0747 .temp_alert_min = 0,
0748 .temp_alert_max = 43,
0749 .temp_max = 49,
0750 .resist_table = samsung_temp2res,
0751 .resist_table_size = ARRAY_SIZE(samsung_temp2res),
0752
0753 .ocv_temp[0] = 25,
0754 .ocv_table[0] = samsung_ocv_cap_1500mah,
0755 .ocv_table_size[0] = ARRAY_SIZE(samsung_ocv_cap_1500mah),
0756 .vbat2ri_discharging = samsung_vbat2res_discharging_eb425161lu,
0757 .vbat2ri_discharging_size = ARRAY_SIZE(samsung_vbat2res_discharging_eb425161lu),
0758 .vbat2ri_charging = samsung_vbat2res_charging_eb425161lu,
0759 .vbat2ri_charging_size = ARRAY_SIZE(samsung_vbat2res_charging_eb425161lu),
0760 .bti_resistance_ohm = 2400,
0761 .bti_resistance_tolerance = 40,
0762 },
0763 },
0764 {
0765
0766
0767
0768
0769 .compatible = "samsung,eb485159lu",
0770 .name = "EB485159LU",
0771 .info = {
0772 .charge_full_design_uah = 1700000,
0773 .technology = POWER_SUPPLY_TECHNOLOGY_LION,
0774 .factory_internal_resistance_uohm = 100000,
0775 .factory_internal_resistance_charging_uohm = 200000,
0776 .voltage_min_design_uv = 3320000,
0777 .voltage_max_design_uv = 4350000,
0778 .overvoltage_limit_uv = 4500000,
0779 .constant_charge_current_max_ua = 900000,
0780 .constant_charge_voltage_max_uv = 4340000,
0781 .charge_term_current_ua = 200000,
0782 .charge_restart_voltage_uv = 4300000,
0783 .maintenance_charge = samsung_maint_charge_table,
0784 .maintenance_charge_size = ARRAY_SIZE(samsung_maint_charge_table),
0785 .alert_low_temp_charge_current_ua = 300000,
0786 .alert_low_temp_charge_voltage_uv = 4000000,
0787 .alert_high_temp_charge_current_ua = 300000,
0788 .alert_high_temp_charge_voltage_uv = 4000000,
0789 .temp_min = -50,
0790 .temp_alert_min = 0,
0791 .temp_alert_max = 40,
0792 .temp_max = 60,
0793 .resist_table = samsung_temp2res,
0794 .resist_table_size = ARRAY_SIZE(samsung_temp2res),
0795
0796 .ocv_temp[0] = 25,
0797 .ocv_table[0] = samsung_ocv_cap_eb485159lu,
0798 .ocv_table_size[0] = ARRAY_SIZE(samsung_ocv_cap_eb485159lu),
0799
0800 .vbat2ri_discharging = samsung_vbat2res_discharging_eb485159lu,
0801 .vbat2ri_discharging_size = ARRAY_SIZE(samsung_vbat2res_discharging_eb485159lu),
0802 .vbat2ri_charging = samsung_vbat2res_charging_eb485159lu,
0803 .vbat2ri_charging_size = ARRAY_SIZE(samsung_vbat2res_charging_eb485159lu),
0804 .bti_resistance_ohm = 2400,
0805 .bti_resistance_tolerance = 40,
0806 },
0807 },
0808 {
0809
0810
0811
0812
0813 .compatible = "samsung,eb535151vu",
0814 .name = "EB535151VU",
0815 .info = {
0816 .charge_full_design_uah = 1500000,
0817 .technology = POWER_SUPPLY_TECHNOLOGY_LION,
0818 .factory_internal_resistance_uohm = 100000,
0819 .factory_internal_resistance_charging_uohm = 200000,
0820
0821 .voltage_min_design_uv = 3300000,
0822 .voltage_max_design_uv = 4180000,
0823 .overvoltage_limit_uv = 4500000,
0824 .constant_charge_current_max_ua = 900000,
0825 .constant_charge_voltage_max_uv = 4200000,
0826 .charge_term_current_ua = 200000,
0827 .charge_restart_voltage_uv = 4170000,
0828 .maintenance_charge = samsung_maint_charge_table,
0829 .maintenance_charge_size = ARRAY_SIZE(samsung_maint_charge_table),
0830 .alert_low_temp_charge_current_ua = 300000,
0831 .alert_low_temp_charge_voltage_uv = 4000000,
0832 .alert_high_temp_charge_current_ua = 300000,
0833 .alert_high_temp_charge_voltage_uv = 4000000,
0834 .temp_min = -5,
0835 .temp_alert_min = 0,
0836 .temp_alert_max = 40,
0837 .temp_max = 60,
0838 .resist_table = samsung_temp2res,
0839 .resist_table_size = ARRAY_SIZE(samsung_temp2res),
0840
0841 .ocv_temp[0] = 25,
0842 .ocv_table[0] = samsung_ocv_cap_eb535151vu,
0843 .ocv_table_size[0] = ARRAY_SIZE(samsung_ocv_cap_eb535151vu),
0844 .vbat2ri_discharging = samsung_vbat2res_discharging_eb535151vu,
0845 .vbat2ri_discharging_size = ARRAY_SIZE(samsung_vbat2res_discharging_eb535151vu),
0846 .vbat2ri_charging = samsung_vbat2res_charging_eb535151vu,
0847 .vbat2ri_charging_size = ARRAY_SIZE(samsung_vbat2res_charging_eb535151vu),
0848 .bti_resistance_ohm = 1500,
0849 .bti_resistance_tolerance = 40,
0850 },
0851 },
0852 {
0853
0854
0855
0856
0857 .compatible = "samsung,eb585157lu",
0858 .name = "EB585157LU",
0859 .info = {
0860 .charge_full_design_uah = 2000000,
0861 .technology = POWER_SUPPLY_TECHNOLOGY_LION,
0862 .factory_internal_resistance_uohm = 105000,
0863 .factory_internal_resistance_charging_uohm = 160000,
0864
0865 .voltage_min_design_uv = 3300000,
0866 .voltage_max_design_uv = 4320000,
0867 .overvoltage_limit_uv = 4500000,
0868 .constant_charge_current_max_ua = 1500000,
0869 .constant_charge_voltage_max_uv = 4350000,
0870 .charge_term_current_ua = 120000,
0871 .charge_restart_voltage_uv = 4300000,
0872 .maintenance_charge = samsung_maint_charge_table,
0873 .maintenance_charge_size = ARRAY_SIZE(samsung_maint_charge_table),
0874 .alert_low_temp_charge_current_ua = 300000,
0875 .alert_low_temp_charge_voltage_uv = 4000000,
0876 .alert_high_temp_charge_current_ua = 300000,
0877 .alert_high_temp_charge_voltage_uv = 4000000,
0878 .temp_min = -5,
0879 .temp_alert_min = 0,
0880 .temp_alert_max = 40,
0881 .temp_max = 60,
0882 .resist_table = samsung_temp2res,
0883 .resist_table_size = ARRAY_SIZE(samsung_temp2res),
0884
0885 .ocv_temp[0] = 25,
0886 .ocv_table[0] = samsung_ocv_cap_eb585157lu,
0887 .ocv_table_size[0] = ARRAY_SIZE(samsung_ocv_cap_eb585157lu),
0888 .vbat2ri_discharging = samsung_vbat2res_discharging_eb585157lu,
0889 .vbat2ri_discharging_size = ARRAY_SIZE(samsung_vbat2res_discharging_eb585157lu),
0890 .vbat2ri_charging = samsung_vbat2res_charging_eb585157lu,
0891 .vbat2ri_charging_size = ARRAY_SIZE(samsung_vbat2res_charging_eb585157lu),
0892 .bti_resistance_ohm = 2400,
0893 .bti_resistance_tolerance = 40,
0894 },
0895 },
0896 };
0897
0898 int samsung_sdi_battery_get_info(struct device *dev,
0899 const char *compatible,
0900 struct power_supply_battery_info **info)
0901 {
0902 struct samsung_sdi_battery *batt;
0903 int i;
0904
0905 for (i = 0; i < ARRAY_SIZE(samsung_sdi_batteries); i++) {
0906 batt = &samsung_sdi_batteries[i];
0907 if (!strcmp(compatible, batt->compatible))
0908 break;
0909 }
0910
0911 if (i == ARRAY_SIZE(samsung_sdi_batteries))
0912 return -ENODEV;
0913
0914 *info = &batt->info;
0915 dev_info(dev, "Samsung SDI %s battery %d mAh\n",
0916 batt->name, batt->info.charge_full_design_uah / 1000);
0917
0918 return 0;
0919 }
0920 EXPORT_SYMBOL_GPL(samsung_sdi_battery_get_info);