162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci/* 462306a36Sopenharmony_ci * Battery data and characteristics for Samsung SDI (Samsung Digital Interface) 562306a36Sopenharmony_ci * batteries. The data is retrieved automatically into drivers using 662306a36Sopenharmony_ci * the power_supply_get_battery_info() call. 762306a36Sopenharmony_ci * 862306a36Sopenharmony_ci * The BTI (battery type indicator) resistance in the code drops was very 962306a36Sopenharmony_ci * unreliable. The resistance listed here was obtained by simply measuring 1062306a36Sopenharmony_ci * the BTI resistance with a multimeter on the battery. 1162306a36Sopenharmony_ci */ 1262306a36Sopenharmony_ci#include <linux/module.h> 1362306a36Sopenharmony_ci#include <linux/power_supply.h> 1462306a36Sopenharmony_ci#include "samsung-sdi-battery.h" 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_cistruct samsung_sdi_battery { 1762306a36Sopenharmony_ci char *compatible; 1862306a36Sopenharmony_ci char *name; 1962306a36Sopenharmony_ci struct power_supply_battery_info info; 2062306a36Sopenharmony_ci}; 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci/* 2362306a36Sopenharmony_ci * Voltage to internal resistance tables. The internal resistance varies 2462306a36Sopenharmony_ci * depending on the VBAT voltage, so look this up from a table. Different 2562306a36Sopenharmony_ci * tables apply depending on whether we are charging or not. 2662306a36Sopenharmony_ci */ 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_cistatic struct power_supply_vbat_ri_table samsung_vbat2res_discharging_eb_l1m7flu[] = { 2962306a36Sopenharmony_ci { .vbat_uv = 4240000, .ri_uohm = 160000 }, 3062306a36Sopenharmony_ci { .vbat_uv = 4210000, .ri_uohm = 179000 }, 3162306a36Sopenharmony_ci { .vbat_uv = 4180000, .ri_uohm = 183000 }, 3262306a36Sopenharmony_ci { .vbat_uv = 4160000, .ri_uohm = 184000 }, 3362306a36Sopenharmony_ci { .vbat_uv = 4140000, .ri_uohm = 191000 }, 3462306a36Sopenharmony_ci { .vbat_uv = 4120000, .ri_uohm = 204000 }, 3562306a36Sopenharmony_ci { .vbat_uv = 4076000, .ri_uohm = 220000 }, 3662306a36Sopenharmony_ci { .vbat_uv = 4030000, .ri_uohm = 227000 }, 3762306a36Sopenharmony_ci { .vbat_uv = 3986000, .ri_uohm = 215000 }, 3862306a36Sopenharmony_ci { .vbat_uv = 3916000, .ri_uohm = 221000 }, 3962306a36Sopenharmony_ci { .vbat_uv = 3842000, .ri_uohm = 259000 }, 4062306a36Sopenharmony_ci { .vbat_uv = 3773000, .ri_uohm = 287000 }, 4162306a36Sopenharmony_ci { .vbat_uv = 3742000, .ri_uohm = 283000 }, 4262306a36Sopenharmony_ci { .vbat_uv = 3709000, .ri_uohm = 277000 }, 4362306a36Sopenharmony_ci { .vbat_uv = 3685000, .ri_uohm = 297000 }, 4462306a36Sopenharmony_ci { .vbat_uv = 3646000, .ri_uohm = 310000 }, 4562306a36Sopenharmony_ci { .vbat_uv = 3616000, .ri_uohm = 331000 }, 4662306a36Sopenharmony_ci { .vbat_uv = 3602000, .ri_uohm = 370000 }, 4762306a36Sopenharmony_ci { .vbat_uv = 3578000, .ri_uohm = 350000 }, 4862306a36Sopenharmony_ci { .vbat_uv = 3553000, .ri_uohm = 321000 }, 4962306a36Sopenharmony_ci { .vbat_uv = 3503000, .ri_uohm = 322000 }, 5062306a36Sopenharmony_ci { .vbat_uv = 3400000, .ri_uohm = 269000 }, 5162306a36Sopenharmony_ci { .vbat_uv = 3360000, .ri_uohm = 328000 }, 5262306a36Sopenharmony_ci { .vbat_uv = 3330000, .ri_uohm = 305000 }, 5362306a36Sopenharmony_ci { .vbat_uv = 3300000, .ri_uohm = 339000 }, 5462306a36Sopenharmony_ci}; 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_cistatic struct power_supply_vbat_ri_table samsung_vbat2res_charging_eb_l1m7flu[] = { 5762306a36Sopenharmony_ci { .vbat_uv = 4302000, .ri_uohm = 230000 }, 5862306a36Sopenharmony_ci { .vbat_uv = 4276000, .ri_uohm = 345000 }, 5962306a36Sopenharmony_ci { .vbat_uv = 4227000, .ri_uohm = 345000 }, 6062306a36Sopenharmony_ci { .vbat_uv = 4171000, .ri_uohm = 346000 }, 6162306a36Sopenharmony_ci { .vbat_uv = 4134000, .ri_uohm = 311000 }, 6262306a36Sopenharmony_ci { .vbat_uv = 4084000, .ri_uohm = 299000 }, 6362306a36Sopenharmony_ci { .vbat_uv = 4052000, .ri_uohm = 316000 }, 6462306a36Sopenharmony_ci { .vbat_uv = 4012000, .ri_uohm = 309000 }, 6562306a36Sopenharmony_ci { .vbat_uv = 3961000, .ri_uohm = 303000 }, 6662306a36Sopenharmony_ci { .vbat_uv = 3939000, .ri_uohm = 280000 }, 6762306a36Sopenharmony_ci { .vbat_uv = 3904000, .ri_uohm = 261000 }, 6862306a36Sopenharmony_ci { .vbat_uv = 3850000, .ri_uohm = 212000 }, 6962306a36Sopenharmony_ci { .vbat_uv = 3800000, .ri_uohm = 232000 }, 7062306a36Sopenharmony_ci { .vbat_uv = 3750000, .ri_uohm = 177000 }, 7162306a36Sopenharmony_ci { .vbat_uv = 3712000, .ri_uohm = 164000 }, 7262306a36Sopenharmony_ci { .vbat_uv = 3674000, .ri_uohm = 161000 }, 7362306a36Sopenharmony_ci { .vbat_uv = 3590000, .ri_uohm = 164000 }, 7462306a36Sopenharmony_ci}; 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_cistatic struct power_supply_vbat_ri_table samsung_vbat2res_discharging_eb425161la[] = { 7762306a36Sopenharmony_ci { .vbat_uv = 4240000, .ri_uohm = 160000 }, 7862306a36Sopenharmony_ci { .vbat_uv = 4210000, .ri_uohm = 179000 }, 7962306a36Sopenharmony_ci { .vbat_uv = 4180000, .ri_uohm = 183000 }, 8062306a36Sopenharmony_ci { .vbat_uv = 4160000, .ri_uohm = 184000 }, 8162306a36Sopenharmony_ci { .vbat_uv = 4140000, .ri_uohm = 191000 }, 8262306a36Sopenharmony_ci { .vbat_uv = 4120000, .ri_uohm = 204000 }, 8362306a36Sopenharmony_ci { .vbat_uv = 4080000, .ri_uohm = 200000 }, 8462306a36Sopenharmony_ci { .vbat_uv = 4027000, .ri_uohm = 202000 }, 8562306a36Sopenharmony_ci { .vbat_uv = 3916000, .ri_uohm = 221000 }, 8662306a36Sopenharmony_ci { .vbat_uv = 3842000, .ri_uohm = 259000 }, 8762306a36Sopenharmony_ci { .vbat_uv = 3800000, .ri_uohm = 262000 }, 8862306a36Sopenharmony_ci { .vbat_uv = 3742000, .ri_uohm = 263000 }, 8962306a36Sopenharmony_ci { .vbat_uv = 3709000, .ri_uohm = 277000 }, 9062306a36Sopenharmony_ci { .vbat_uv = 3685000, .ri_uohm = 312000 }, 9162306a36Sopenharmony_ci { .vbat_uv = 3668000, .ri_uohm = 258000 }, 9262306a36Sopenharmony_ci { .vbat_uv = 3660000, .ri_uohm = 247000 }, 9362306a36Sopenharmony_ci { .vbat_uv = 3636000, .ri_uohm = 293000 }, 9462306a36Sopenharmony_ci { .vbat_uv = 3616000, .ri_uohm = 331000 }, 9562306a36Sopenharmony_ci { .vbat_uv = 3600000, .ri_uohm = 349000 }, 9662306a36Sopenharmony_ci { .vbat_uv = 3593000, .ri_uohm = 345000 }, 9762306a36Sopenharmony_ci { .vbat_uv = 3585000, .ri_uohm = 344000 }, 9862306a36Sopenharmony_ci { .vbat_uv = 3572000, .ri_uohm = 336000 }, 9962306a36Sopenharmony_ci { .vbat_uv = 3553000, .ri_uohm = 321000 }, 10062306a36Sopenharmony_ci { .vbat_uv = 3517000, .ri_uohm = 336000 }, 10162306a36Sopenharmony_ci { .vbat_uv = 3503000, .ri_uohm = 322000 }, 10262306a36Sopenharmony_ci { .vbat_uv = 3400000, .ri_uohm = 269000 }, 10362306a36Sopenharmony_ci { .vbat_uv = 3360000, .ri_uohm = 328000 }, 10462306a36Sopenharmony_ci { .vbat_uv = 3330000, .ri_uohm = 305000 }, 10562306a36Sopenharmony_ci { .vbat_uv = 3300000, .ri_uohm = 339000 }, 10662306a36Sopenharmony_ci}; 10762306a36Sopenharmony_ci 10862306a36Sopenharmony_cistatic struct power_supply_vbat_ri_table samsung_vbat2res_charging_eb425161la[] = { 10962306a36Sopenharmony_ci { .vbat_uv = 4345000, .ri_uohm = 230000 }, 11062306a36Sopenharmony_ci { .vbat_uv = 4329000, .ri_uohm = 238000 }, 11162306a36Sopenharmony_ci { .vbat_uv = 4314000, .ri_uohm = 225000 }, 11262306a36Sopenharmony_ci { .vbat_uv = 4311000, .ri_uohm = 239000 }, 11362306a36Sopenharmony_ci { .vbat_uv = 4294000, .ri_uohm = 235000 }, 11462306a36Sopenharmony_ci { .vbat_uv = 4264000, .ri_uohm = 229000 }, 11562306a36Sopenharmony_ci { .vbat_uv = 4262000, .ri_uohm = 228000 }, 11662306a36Sopenharmony_ci { .vbat_uv = 4252000, .ri_uohm = 236000 }, 11762306a36Sopenharmony_ci { .vbat_uv = 4244000, .ri_uohm = 234000 }, 11862306a36Sopenharmony_ci { .vbat_uv = 4235000, .ri_uohm = 234000 }, 11962306a36Sopenharmony_ci { .vbat_uv = 4227000, .ri_uohm = 238000 }, 12062306a36Sopenharmony_ci { .vbat_uv = 4219000, .ri_uohm = 242000 }, 12162306a36Sopenharmony_ci { .vbat_uv = 4212000, .ri_uohm = 239000 }, 12262306a36Sopenharmony_ci { .vbat_uv = 4206000, .ri_uohm = 231000 }, 12362306a36Sopenharmony_ci { .vbat_uv = 4201000, .ri_uohm = 231000 }, 12462306a36Sopenharmony_ci { .vbat_uv = 4192000, .ri_uohm = 224000 }, 12562306a36Sopenharmony_ci { .vbat_uv = 4184000, .ri_uohm = 238000 }, 12662306a36Sopenharmony_ci { .vbat_uv = 4173000, .ri_uohm = 245000 }, 12762306a36Sopenharmony_ci { .vbat_uv = 4161000, .ri_uohm = 244000 }, 12862306a36Sopenharmony_ci { .vbat_uv = 4146000, .ri_uohm = 244000 }, 12962306a36Sopenharmony_ci { .vbat_uv = 4127000, .ri_uohm = 228000 }, 13062306a36Sopenharmony_ci { .vbat_uv = 4119000, .ri_uohm = 218000 }, 13162306a36Sopenharmony_ci { .vbat_uv = 4112000, .ri_uohm = 215000 }, 13262306a36Sopenharmony_ci { .vbat_uv = 4108000, .ri_uohm = 209000 }, 13362306a36Sopenharmony_ci { .vbat_uv = 4102000, .ri_uohm = 214000 }, 13462306a36Sopenharmony_ci { .vbat_uv = 4096000, .ri_uohm = 215000 }, 13562306a36Sopenharmony_ci { .vbat_uv = 4090000, .ri_uohm = 215000 }, 13662306a36Sopenharmony_ci { .vbat_uv = 4083000, .ri_uohm = 219000 }, 13762306a36Sopenharmony_ci { .vbat_uv = 4078000, .ri_uohm = 208000 }, 13862306a36Sopenharmony_ci { .vbat_uv = 4071000, .ri_uohm = 205000 }, 13962306a36Sopenharmony_ci { .vbat_uv = 4066000, .ri_uohm = 208000 }, 14062306a36Sopenharmony_ci { .vbat_uv = 4061000, .ri_uohm = 210000 }, 14162306a36Sopenharmony_ci { .vbat_uv = 4055000, .ri_uohm = 212000 }, 14262306a36Sopenharmony_ci { .vbat_uv = 4049000, .ri_uohm = 215000 }, 14362306a36Sopenharmony_ci { .vbat_uv = 4042000, .ri_uohm = 212000 }, 14462306a36Sopenharmony_ci { .vbat_uv = 4032000, .ri_uohm = 217000 }, 14562306a36Sopenharmony_ci { .vbat_uv = 4027000, .ri_uohm = 220000 }, 14662306a36Sopenharmony_ci { .vbat_uv = 4020000, .ri_uohm = 210000 }, 14762306a36Sopenharmony_ci { .vbat_uv = 4013000, .ri_uohm = 214000 }, 14862306a36Sopenharmony_ci { .vbat_uv = 4007000, .ri_uohm = 219000 }, 14962306a36Sopenharmony_ci { .vbat_uv = 4003000, .ri_uohm = 229000 }, 15062306a36Sopenharmony_ci { .vbat_uv = 3996000, .ri_uohm = 246000 }, 15162306a36Sopenharmony_ci { .vbat_uv = 3990000, .ri_uohm = 245000 }, 15262306a36Sopenharmony_ci { .vbat_uv = 3984000, .ri_uohm = 242000 }, 15362306a36Sopenharmony_ci { .vbat_uv = 3977000, .ri_uohm = 236000 }, 15462306a36Sopenharmony_ci { .vbat_uv = 3971000, .ri_uohm = 231000 }, 15562306a36Sopenharmony_ci { .vbat_uv = 3966000, .ri_uohm = 229000 }, 15662306a36Sopenharmony_ci { .vbat_uv = 3952000, .ri_uohm = 226000 }, 15762306a36Sopenharmony_ci { .vbat_uv = 3946000, .ri_uohm = 222000 }, 15862306a36Sopenharmony_ci { .vbat_uv = 3941000, .ri_uohm = 222000 }, 15962306a36Sopenharmony_ci { .vbat_uv = 3936000, .ri_uohm = 217000 }, 16062306a36Sopenharmony_ci { .vbat_uv = 3932000, .ri_uohm = 217000 }, 16162306a36Sopenharmony_ci { .vbat_uv = 3928000, .ri_uohm = 212000 }, 16262306a36Sopenharmony_ci { .vbat_uv = 3926000, .ri_uohm = 214000 }, 16362306a36Sopenharmony_ci { .vbat_uv = 3922000, .ri_uohm = 209000 }, 16462306a36Sopenharmony_ci { .vbat_uv = 3917000, .ri_uohm = 215000 }, 16562306a36Sopenharmony_ci { .vbat_uv = 3914000, .ri_uohm = 212000 }, 16662306a36Sopenharmony_ci { .vbat_uv = 3912000, .ri_uohm = 220000 }, 16762306a36Sopenharmony_ci { .vbat_uv = 3910000, .ri_uohm = 226000 }, 16862306a36Sopenharmony_ci { .vbat_uv = 3903000, .ri_uohm = 226000 }, 16962306a36Sopenharmony_ci { .vbat_uv = 3891000, .ri_uohm = 222000 }, 17062306a36Sopenharmony_ci { .vbat_uv = 3871000, .ri_uohm = 221000 }, 17162306a36Sopenharmony_ci { .vbat_uv = 3857000, .ri_uohm = 219000 }, 17262306a36Sopenharmony_ci { .vbat_uv = 3850000, .ri_uohm = 216000 }, 17362306a36Sopenharmony_ci { .vbat_uv = 3843000, .ri_uohm = 212000 }, 17462306a36Sopenharmony_ci { .vbat_uv = 3835000, .ri_uohm = 206000 }, 17562306a36Sopenharmony_ci { .vbat_uv = 3825000, .ri_uohm = 217000 }, 17662306a36Sopenharmony_ci { .vbat_uv = 3824000, .ri_uohm = 220000 }, 17762306a36Sopenharmony_ci { .vbat_uv = 3820000, .ri_uohm = 237000 }, 17862306a36Sopenharmony_ci { .vbat_uv = 3800000, .ri_uohm = 232000 }, 17962306a36Sopenharmony_ci { .vbat_uv = 3750000, .ri_uohm = 177000 }, 18062306a36Sopenharmony_ci { .vbat_uv = 3712000, .ri_uohm = 164000 }, 18162306a36Sopenharmony_ci { .vbat_uv = 3674000, .ri_uohm = 161000 }, 18262306a36Sopenharmony_ci { .vbat_uv = 3590000, .ri_uohm = 164000 }, 18362306a36Sopenharmony_ci}; 18462306a36Sopenharmony_ci 18562306a36Sopenharmony_cistatic struct power_supply_vbat_ri_table samsung_vbat2res_discharging_eb425161lu[] = { 18662306a36Sopenharmony_ci { .vbat_uv = 4240000, .ri_uohm = 160000 }, 18762306a36Sopenharmony_ci { .vbat_uv = 4210000, .ri_uohm = 179000 }, 18862306a36Sopenharmony_ci { .vbat_uv = 4180000, .ri_uohm = 183000 }, 18962306a36Sopenharmony_ci { .vbat_uv = 4160000, .ri_uohm = 184000 }, 19062306a36Sopenharmony_ci { .vbat_uv = 4140000, .ri_uohm = 191000 }, 19162306a36Sopenharmony_ci { .vbat_uv = 4120000, .ri_uohm = 204000 }, 19262306a36Sopenharmony_ci { .vbat_uv = 4080000, .ri_uohm = 200000 }, 19362306a36Sopenharmony_ci { .vbat_uv = 4027000, .ri_uohm = 202000 }, 19462306a36Sopenharmony_ci { .vbat_uv = 3916000, .ri_uohm = 221000 }, 19562306a36Sopenharmony_ci { .vbat_uv = 3842000, .ri_uohm = 259000 }, 19662306a36Sopenharmony_ci { .vbat_uv = 3800000, .ri_uohm = 262000 }, 19762306a36Sopenharmony_ci { .vbat_uv = 3742000, .ri_uohm = 263000 }, 19862306a36Sopenharmony_ci { .vbat_uv = 3708000, .ri_uohm = 277000 }, 19962306a36Sopenharmony_ci { .vbat_uv = 3684000, .ri_uohm = 272000 }, 20062306a36Sopenharmony_ci { .vbat_uv = 3664000, .ri_uohm = 278000 }, 20162306a36Sopenharmony_ci { .vbat_uv = 3655000, .ri_uohm = 285000 }, 20262306a36Sopenharmony_ci { .vbat_uv = 3638000, .ri_uohm = 261000 }, 20362306a36Sopenharmony_ci { .vbat_uv = 3624000, .ri_uohm = 259000 }, 20462306a36Sopenharmony_ci { .vbat_uv = 3616000, .ri_uohm = 266000 }, 20562306a36Sopenharmony_ci { .vbat_uv = 3597000, .ri_uohm = 278000 }, 20662306a36Sopenharmony_ci { .vbat_uv = 3581000, .ri_uohm = 281000 }, 20762306a36Sopenharmony_ci { .vbat_uv = 3560000, .ri_uohm = 287000 }, 20862306a36Sopenharmony_ci { .vbat_uv = 3527000, .ri_uohm = 289000 }, 20962306a36Sopenharmony_ci { .vbat_uv = 3512000, .ri_uohm = 286000 }, 21062306a36Sopenharmony_ci { .vbat_uv = 3494000, .ri_uohm = 282000 }, 21162306a36Sopenharmony_ci { .vbat_uv = 3400000, .ri_uohm = 269000 }, 21262306a36Sopenharmony_ci { .vbat_uv = 3360000, .ri_uohm = 328000 }, 21362306a36Sopenharmony_ci { .vbat_uv = 3330000, .ri_uohm = 305000 }, 21462306a36Sopenharmony_ci { .vbat_uv = 3300000, .ri_uohm = 339000 }, 21562306a36Sopenharmony_ci}; 21662306a36Sopenharmony_ci 21762306a36Sopenharmony_cistatic struct power_supply_vbat_ri_table samsung_vbat2res_charging_eb425161lu[] = { 21862306a36Sopenharmony_ci { .vbat_uv = 4346000, .ri_uohm = 293000 }, 21962306a36Sopenharmony_ci { .vbat_uv = 4336000, .ri_uohm = 290000 }, 22062306a36Sopenharmony_ci { .vbat_uv = 4315000, .ri_uohm = 274000 }, 22162306a36Sopenharmony_ci { .vbat_uv = 4310000, .ri_uohm = 264000 }, 22262306a36Sopenharmony_ci { .vbat_uv = 4275000, .ri_uohm = 275000 }, 22362306a36Sopenharmony_ci { .vbat_uv = 4267000, .ri_uohm = 274000 }, 22462306a36Sopenharmony_ci { .vbat_uv = 4227000, .ri_uohm = 262000 }, 22562306a36Sopenharmony_ci { .vbat_uv = 4186000, .ri_uohm = 282000 }, 22662306a36Sopenharmony_ci { .vbat_uv = 4136000, .ri_uohm = 246000 }, 22762306a36Sopenharmony_ci { .vbat_uv = 4110000, .ri_uohm = 242000 }, 22862306a36Sopenharmony_ci { .vbat_uv = 4077000, .ri_uohm = 249000 }, 22962306a36Sopenharmony_ci { .vbat_uv = 4049000, .ri_uohm = 238000 }, 23062306a36Sopenharmony_ci { .vbat_uv = 4017000, .ri_uohm = 268000 }, 23162306a36Sopenharmony_ci { .vbat_uv = 3986000, .ri_uohm = 261000 }, 23262306a36Sopenharmony_ci { .vbat_uv = 3962000, .ri_uohm = 252000 }, 23362306a36Sopenharmony_ci { .vbat_uv = 3940000, .ri_uohm = 235000 }, 23462306a36Sopenharmony_ci { .vbat_uv = 3930000, .ri_uohm = 237000 }, 23562306a36Sopenharmony_ci { .vbat_uv = 3924000, .ri_uohm = 255000 }, 23662306a36Sopenharmony_ci { .vbat_uv = 3910000, .ri_uohm = 244000 }, 23762306a36Sopenharmony_ci { .vbat_uv = 3889000, .ri_uohm = 231000 }, 23862306a36Sopenharmony_ci { .vbat_uv = 3875000, .ri_uohm = 249000 }, 23962306a36Sopenharmony_ci { .vbat_uv = 3850000, .ri_uohm = 212000 }, 24062306a36Sopenharmony_ci { .vbat_uv = 3800000, .ri_uohm = 232000 }, 24162306a36Sopenharmony_ci { .vbat_uv = 3750000, .ri_uohm = 177000 }, 24262306a36Sopenharmony_ci { .vbat_uv = 3712000, .ri_uohm = 164000 }, 24362306a36Sopenharmony_ci { .vbat_uv = 3674000, .ri_uohm = 161000 }, 24462306a36Sopenharmony_ci { .vbat_uv = 3590000, .ri_uohm = 164000 }, 24562306a36Sopenharmony_ci}; 24662306a36Sopenharmony_ci 24762306a36Sopenharmony_cistatic struct power_supply_vbat_ri_table samsung_vbat2res_discharging_eb485159lu[] = { 24862306a36Sopenharmony_ci { .vbat_uv = 4240000, .ri_uohm = 160000 }, 24962306a36Sopenharmony_ci { .vbat_uv = 4210000, .ri_uohm = 179000 }, 25062306a36Sopenharmony_ci { .vbat_uv = 4180000, .ri_uohm = 183000 }, 25162306a36Sopenharmony_ci { .vbat_uv = 4160000, .ri_uohm = 184000 }, 25262306a36Sopenharmony_ci { .vbat_uv = 4140000, .ri_uohm = 191000 }, 25362306a36Sopenharmony_ci { .vbat_uv = 4120000, .ri_uohm = 204000 }, 25462306a36Sopenharmony_ci { .vbat_uv = 4080000, .ri_uohm = 200000 }, 25562306a36Sopenharmony_ci { .vbat_uv = 4027000, .ri_uohm = 202000 }, 25662306a36Sopenharmony_ci { .vbat_uv = 3916000, .ri_uohm = 221000 }, 25762306a36Sopenharmony_ci { .vbat_uv = 3842000, .ri_uohm = 259000 }, 25862306a36Sopenharmony_ci { .vbat_uv = 3800000, .ri_uohm = 262000 }, 25962306a36Sopenharmony_ci { .vbat_uv = 3715000, .ri_uohm = 340000 }, 26062306a36Sopenharmony_ci { .vbat_uv = 3700000, .ri_uohm = 300000 }, 26162306a36Sopenharmony_ci { .vbat_uv = 3682000, .ri_uohm = 233000 }, 26262306a36Sopenharmony_ci { .vbat_uv = 3655000, .ri_uohm = 246000 }, 26362306a36Sopenharmony_ci { .vbat_uv = 3639000, .ri_uohm = 260000 }, 26462306a36Sopenharmony_ci { .vbat_uv = 3621000, .ri_uohm = 254000 }, 26562306a36Sopenharmony_ci { .vbat_uv = 3583000, .ri_uohm = 266000 }, 26662306a36Sopenharmony_ci { .vbat_uv = 3536000, .ri_uohm = 274000 }, 26762306a36Sopenharmony_ci { .vbat_uv = 3502000, .ri_uohm = 300000 }, 26862306a36Sopenharmony_ci { .vbat_uv = 3465000, .ri_uohm = 245000 }, 26962306a36Sopenharmony_ci { .vbat_uv = 3438000, .ri_uohm = 225000 }, 27062306a36Sopenharmony_ci { .vbat_uv = 3330000, .ri_uohm = 305000 }, 27162306a36Sopenharmony_ci { .vbat_uv = 3300000, .ri_uohm = 339000 }, 27262306a36Sopenharmony_ci}; 27362306a36Sopenharmony_ci 27462306a36Sopenharmony_cistatic struct power_supply_vbat_ri_table samsung_vbat2res_charging_eb485159lu[] = { 27562306a36Sopenharmony_ci { .vbat_uv = 4302000, .ri_uohm = 200000 }, 27662306a36Sopenharmony_ci { .vbat_uv = 4258000, .ri_uohm = 206000 }, 27762306a36Sopenharmony_ci { .vbat_uv = 4200000, .ri_uohm = 231000 }, 27862306a36Sopenharmony_ci { .vbat_uv = 4150000, .ri_uohm = 198000 }, 27962306a36Sopenharmony_ci { .vbat_uv = 4134000, .ri_uohm = 268000 }, 28062306a36Sopenharmony_ci { .vbat_uv = 4058000, .ri_uohm = 172000 }, 28162306a36Sopenharmony_ci { .vbat_uv = 4003000, .ri_uohm = 227000 }, 28262306a36Sopenharmony_ci { .vbat_uv = 3972000, .ri_uohm = 241000 }, 28362306a36Sopenharmony_ci { .vbat_uv = 3953000, .ri_uohm = 244000 }, 28462306a36Sopenharmony_ci { .vbat_uv = 3950000, .ri_uohm = 213000 }, 28562306a36Sopenharmony_ci { .vbat_uv = 3900000, .ri_uohm = 225000 }, 28662306a36Sopenharmony_ci { .vbat_uv = 3850000, .ri_uohm = 212000 }, 28762306a36Sopenharmony_ci { .vbat_uv = 3800000, .ri_uohm = 232000 }, 28862306a36Sopenharmony_ci { .vbat_uv = 3750000, .ri_uohm = 177000 }, 28962306a36Sopenharmony_ci { .vbat_uv = 3712000, .ri_uohm = 164000 }, 29062306a36Sopenharmony_ci { .vbat_uv = 3674000, .ri_uohm = 161000 }, 29162306a36Sopenharmony_ci { .vbat_uv = 3590000, .ri_uohm = 164000 }, 29262306a36Sopenharmony_ci}; 29362306a36Sopenharmony_ci 29462306a36Sopenharmony_cistatic struct power_supply_vbat_ri_table samsung_vbat2res_discharging_eb535151vu[] = { 29562306a36Sopenharmony_ci { .vbat_uv = 4071000, .ri_uohm = 158000 }, 29662306a36Sopenharmony_ci { .vbat_uv = 4019000, .ri_uohm = 187000 }, 29762306a36Sopenharmony_ci { .vbat_uv = 3951000, .ri_uohm = 191000 }, 29862306a36Sopenharmony_ci { .vbat_uv = 3901000, .ri_uohm = 193000 }, 29962306a36Sopenharmony_ci { .vbat_uv = 3850000, .ri_uohm = 273000 }, 30062306a36Sopenharmony_ci { .vbat_uv = 3800000, .ri_uohm = 305000 }, 30162306a36Sopenharmony_ci { .vbat_uv = 3750000, .ri_uohm = 205000 }, 30262306a36Sopenharmony_ci { .vbat_uv = 3700000, .ri_uohm = 290000 }, 30362306a36Sopenharmony_ci { .vbat_uv = 3650000, .ri_uohm = 262000 }, 30462306a36Sopenharmony_ci { .vbat_uv = 3618000, .ri_uohm = 290000 }, 30562306a36Sopenharmony_ci { .vbat_uv = 3505000, .ri_uohm = 235000 }, 30662306a36Sopenharmony_ci { .vbat_uv = 3484000, .ri_uohm = 253000 }, 30762306a36Sopenharmony_ci { .vbat_uv = 3413000, .ri_uohm = 243000 }, 30862306a36Sopenharmony_ci { .vbat_uv = 3393000, .ri_uohm = 285000 }, 30962306a36Sopenharmony_ci { .vbat_uv = 3361000, .ri_uohm = 281000 }, 31062306a36Sopenharmony_ci { .vbat_uv = 3302000, .ri_uohm = 286000 }, 31162306a36Sopenharmony_ci { .vbat_uv = 3280000, .ri_uohm = 250000 }, 31262306a36Sopenharmony_ci}; 31362306a36Sopenharmony_ci 31462306a36Sopenharmony_cistatic struct power_supply_vbat_ri_table samsung_vbat2res_charging_eb535151vu[] = { 31562306a36Sopenharmony_ci { .vbat_uv = 4190000, .ri_uohm = 214000 }, 31662306a36Sopenharmony_ci { .vbat_uv = 4159000, .ri_uohm = 252000 }, 31762306a36Sopenharmony_ci { .vbat_uv = 4121000, .ri_uohm = 245000 }, 31862306a36Sopenharmony_ci { .vbat_uv = 4069000, .ri_uohm = 228000 }, 31962306a36Sopenharmony_ci { .vbat_uv = 4046000, .ri_uohm = 229000 }, 32062306a36Sopenharmony_ci { .vbat_uv = 4026000, .ri_uohm = 233000 }, 32162306a36Sopenharmony_ci { .vbat_uv = 4007000, .ri_uohm = 240000 }, 32262306a36Sopenharmony_ci { .vbat_uv = 3982000, .ri_uohm = 291000 }, 32362306a36Sopenharmony_ci { .vbat_uv = 3945000, .ri_uohm = 276000 }, 32462306a36Sopenharmony_ci { .vbat_uv = 3924000, .ri_uohm = 266000 }, 32562306a36Sopenharmony_ci { .vbat_uv = 3910000, .ri_uohm = 258000 }, 32662306a36Sopenharmony_ci { .vbat_uv = 3900000, .ri_uohm = 271000 }, 32762306a36Sopenharmony_ci { .vbat_uv = 3844000, .ri_uohm = 279000 }, 32862306a36Sopenharmony_ci { .vbat_uv = 3772000, .ri_uohm = 217000 }, 32962306a36Sopenharmony_ci { .vbat_uv = 3673000, .ri_uohm = 208000 }, 33062306a36Sopenharmony_ci { .vbat_uv = 3571000, .ri_uohm = 208000 }, 33162306a36Sopenharmony_ci { .vbat_uv = 3510000, .ri_uohm = 228000 }, 33262306a36Sopenharmony_ci}; 33362306a36Sopenharmony_ci 33462306a36Sopenharmony_cistatic struct power_supply_vbat_ri_table samsung_vbat2res_discharging_eb585157lu[] = { 33562306a36Sopenharmony_ci { .vbat_uv = 4194000, .ri_uohm = 121000 }, 33662306a36Sopenharmony_ci { .vbat_uv = 4169000, .ri_uohm = 188000 }, 33762306a36Sopenharmony_ci { .vbat_uv = 4136000, .ri_uohm = 173000 }, 33862306a36Sopenharmony_ci { .vbat_uv = 4108000, .ri_uohm = 158000 }, 33962306a36Sopenharmony_ci { .vbat_uv = 4064000, .ri_uohm = 143000 }, 34062306a36Sopenharmony_ci { .vbat_uv = 3956000, .ri_uohm = 160000 }, 34162306a36Sopenharmony_ci { .vbat_uv = 3847000, .ri_uohm = 262000 }, 34262306a36Sopenharmony_ci { .vbat_uv = 3806000, .ri_uohm = 280000 }, 34362306a36Sopenharmony_ci { .vbat_uv = 3801000, .ri_uohm = 266000 }, 34462306a36Sopenharmony_ci { .vbat_uv = 3794000, .ri_uohm = 259000 }, 34562306a36Sopenharmony_ci { .vbat_uv = 3785000, .ri_uohm = 234000 }, 34662306a36Sopenharmony_ci { .vbat_uv = 3779000, .ri_uohm = 227000 }, 34762306a36Sopenharmony_ci { .vbat_uv = 3772000, .ri_uohm = 222000 }, 34862306a36Sopenharmony_ci { .vbat_uv = 3765000, .ri_uohm = 221000 }, 34962306a36Sopenharmony_ci { .vbat_uv = 3759000, .ri_uohm = 216000 }, 35062306a36Sopenharmony_ci { .vbat_uv = 3754000, .ri_uohm = 206000 }, 35162306a36Sopenharmony_ci { .vbat_uv = 3747000, .ri_uohm = 212000 }, 35262306a36Sopenharmony_ci { .vbat_uv = 3743000, .ri_uohm = 208000 }, 35362306a36Sopenharmony_ci { .vbat_uv = 3737000, .ri_uohm = 212000 }, 35462306a36Sopenharmony_ci { .vbat_uv = 3733000, .ri_uohm = 200000 }, 35562306a36Sopenharmony_ci { .vbat_uv = 3728000, .ri_uohm = 203000 }, 35662306a36Sopenharmony_ci { .vbat_uv = 3722000, .ri_uohm = 207000 }, 35762306a36Sopenharmony_ci { .vbat_uv = 3719000, .ri_uohm = 208000 }, 35862306a36Sopenharmony_ci { .vbat_uv = 3715000, .ri_uohm = 209000 }, 35962306a36Sopenharmony_ci { .vbat_uv = 3712000, .ri_uohm = 211000 }, 36062306a36Sopenharmony_ci { .vbat_uv = 3709000, .ri_uohm = 210000 }, 36162306a36Sopenharmony_ci { .vbat_uv = 3704000, .ri_uohm = 216000 }, 36262306a36Sopenharmony_ci { .vbat_uv = 3701000, .ri_uohm = 218000 }, 36362306a36Sopenharmony_ci { .vbat_uv = 3698000, .ri_uohm = 222000 }, 36462306a36Sopenharmony_ci { .vbat_uv = 3694000, .ri_uohm = 218000 }, 36562306a36Sopenharmony_ci { .vbat_uv = 3692000, .ri_uohm = 215000 }, 36662306a36Sopenharmony_ci { .vbat_uv = 3688000, .ri_uohm = 224000 }, 36762306a36Sopenharmony_ci { .vbat_uv = 3686000, .ri_uohm = 224000 }, 36862306a36Sopenharmony_ci { .vbat_uv = 3683000, .ri_uohm = 228000 }, 36962306a36Sopenharmony_ci { .vbat_uv = 3681000, .ri_uohm = 228000 }, 37062306a36Sopenharmony_ci { .vbat_uv = 3679000, .ri_uohm = 229000 }, 37162306a36Sopenharmony_ci { .vbat_uv = 3676000, .ri_uohm = 232000 }, 37262306a36Sopenharmony_ci { .vbat_uv = 3675000, .ri_uohm = 229000 }, 37362306a36Sopenharmony_ci { .vbat_uv = 3673000, .ri_uohm = 229000 }, 37462306a36Sopenharmony_ci { .vbat_uv = 3672000, .ri_uohm = 223000 }, 37562306a36Sopenharmony_ci { .vbat_uv = 3669000, .ri_uohm = 224000 }, 37662306a36Sopenharmony_ci { .vbat_uv = 3666000, .ri_uohm = 224000 }, 37762306a36Sopenharmony_ci { .vbat_uv = 3663000, .ri_uohm = 221000 }, 37862306a36Sopenharmony_ci { .vbat_uv = 3660000, .ri_uohm = 218000 }, 37962306a36Sopenharmony_ci { .vbat_uv = 3657000, .ri_uohm = 215000 }, 38062306a36Sopenharmony_ci { .vbat_uv = 3654000, .ri_uohm = 212000 }, 38162306a36Sopenharmony_ci { .vbat_uv = 3649000, .ri_uohm = 215000 }, 38262306a36Sopenharmony_ci { .vbat_uv = 3644000, .ri_uohm = 215000 }, 38362306a36Sopenharmony_ci { .vbat_uv = 3636000, .ri_uohm = 215000 }, 38462306a36Sopenharmony_ci { .vbat_uv = 3631000, .ri_uohm = 206000 }, 38562306a36Sopenharmony_ci { .vbat_uv = 3623000, .ri_uohm = 205000 }, 38662306a36Sopenharmony_ci { .vbat_uv = 3616000, .ri_uohm = 193000 }, 38762306a36Sopenharmony_ci { .vbat_uv = 3605000, .ri_uohm = 193000 }, 38862306a36Sopenharmony_ci { .vbat_uv = 3600000, .ri_uohm = 198000 }, 38962306a36Sopenharmony_ci { .vbat_uv = 3597000, .ri_uohm = 198000 }, 39062306a36Sopenharmony_ci { .vbat_uv = 3592000, .ri_uohm = 203000 }, 39162306a36Sopenharmony_ci { .vbat_uv = 3591000, .ri_uohm = 188000 }, 39262306a36Sopenharmony_ci { .vbat_uv = 3587000, .ri_uohm = 188000 }, 39362306a36Sopenharmony_ci { .vbat_uv = 3583000, .ri_uohm = 177000 }, 39462306a36Sopenharmony_ci { .vbat_uv = 3577000, .ri_uohm = 170000 }, 39562306a36Sopenharmony_ci { .vbat_uv = 3568000, .ri_uohm = 135000 }, 39662306a36Sopenharmony_ci { .vbat_uv = 3552000, .ri_uohm = 54000 }, 39762306a36Sopenharmony_ci { .vbat_uv = 3526000, .ri_uohm = 130000 }, 39862306a36Sopenharmony_ci { .vbat_uv = 3501000, .ri_uohm = 48000 }, 39962306a36Sopenharmony_ci { .vbat_uv = 3442000, .ri_uohm = 183000 }, 40062306a36Sopenharmony_ci { .vbat_uv = 3326000, .ri_uohm = 372000 }, 40162306a36Sopenharmony_ci { .vbat_uv = 3161000, .ri_uohm = 452000 }, 40262306a36Sopenharmony_ci}; 40362306a36Sopenharmony_ci 40462306a36Sopenharmony_cistatic struct power_supply_vbat_ri_table samsung_vbat2res_charging_eb585157lu[] = { 40562306a36Sopenharmony_ci { .vbat_uv = 4360000, .ri_uohm = 128000 }, 40662306a36Sopenharmony_ci { .vbat_uv = 4325000, .ri_uohm = 130000 }, 40762306a36Sopenharmony_ci { .vbat_uv = 4316000, .ri_uohm = 148000 }, 40862306a36Sopenharmony_ci { .vbat_uv = 4308000, .ri_uohm = 162000 }, 40962306a36Sopenharmony_ci { .vbat_uv = 4301000, .ri_uohm = 162000 }, 41062306a36Sopenharmony_ci { .vbat_uv = 4250000, .ri_uohm = 162000 }, 41162306a36Sopenharmony_ci { .vbat_uv = 4230000, .ri_uohm = 164000 }, 41262306a36Sopenharmony_ci { .vbat_uv = 4030000, .ri_uohm = 164000 }, 41362306a36Sopenharmony_ci { .vbat_uv = 4000000, .ri_uohm = 193000 }, 41462306a36Sopenharmony_ci { .vbat_uv = 3950000, .ri_uohm = 204000 }, 41562306a36Sopenharmony_ci { .vbat_uv = 3850000, .ri_uohm = 210000 }, 41662306a36Sopenharmony_ci { .vbat_uv = 3800000, .ri_uohm = 230000 }, 41762306a36Sopenharmony_ci { .vbat_uv = 3790000, .ri_uohm = 240000 }, 41862306a36Sopenharmony_ci { .vbat_uv = 3780000, .ri_uohm = 311000 }, 41962306a36Sopenharmony_ci { .vbat_uv = 3760000, .ri_uohm = 420000 }, 42062306a36Sopenharmony_ci { .vbat_uv = 3700000, .ri_uohm = 504000 }, 42162306a36Sopenharmony_ci { .vbat_uv = 3600000, .ri_uohm = 565000 }, 42262306a36Sopenharmony_ci}; 42362306a36Sopenharmony_ci 42462306a36Sopenharmony_ci/* 42562306a36Sopenharmony_ci * Temperature to internal resistance scaling tables. 42662306a36Sopenharmony_ci * 42762306a36Sopenharmony_ci * "resistance" is the percentage of the resistance determined from the voltage 42862306a36Sopenharmony_ci * so this represents the capacity ratio at different temperatures. 42962306a36Sopenharmony_ci * 43062306a36Sopenharmony_ci * FIXME: the proper table is missing: Samsung does not provide the necessary 43162306a36Sopenharmony_ci * temperature compensation tables so we just state 100% for every temperature. 43262306a36Sopenharmony_ci * If you have the datasheets, please provide these tables. 43362306a36Sopenharmony_ci */ 43462306a36Sopenharmony_cistatic struct power_supply_resistance_temp_table samsung_temp2res[] = { 43562306a36Sopenharmony_ci { .temp = 50, .resistance = 100 }, 43662306a36Sopenharmony_ci { .temp = 40, .resistance = 100 }, 43762306a36Sopenharmony_ci { .temp = 30, .resistance = 100 }, 43862306a36Sopenharmony_ci { .temp = 20, .resistance = 100 }, 43962306a36Sopenharmony_ci { .temp = 10, .resistance = 100 }, 44062306a36Sopenharmony_ci { .temp = 00, .resistance = 100 }, 44162306a36Sopenharmony_ci { .temp = -10, .resistance = 100 }, 44262306a36Sopenharmony_ci { .temp = -20, .resistance = 100 }, 44362306a36Sopenharmony_ci}; 44462306a36Sopenharmony_ci 44562306a36Sopenharmony_ci/* 44662306a36Sopenharmony_ci * Capacity tables for different Open Circuit Voltages (OCV). 44762306a36Sopenharmony_ci * These must be sorted by falling OCV value. 44862306a36Sopenharmony_ci */ 44962306a36Sopenharmony_ci 45062306a36Sopenharmony_cistatic struct power_supply_battery_ocv_table samsung_ocv_cap_eb485159lu[] = { 45162306a36Sopenharmony_ci { .ocv = 4330000, .capacity = 100}, 45262306a36Sopenharmony_ci { .ocv = 4320000, .capacity = 99}, 45362306a36Sopenharmony_ci { .ocv = 4283000, .capacity = 95}, 45462306a36Sopenharmony_ci { .ocv = 4246000, .capacity = 92}, 45562306a36Sopenharmony_ci { .ocv = 4211000, .capacity = 89}, 45662306a36Sopenharmony_ci { .ocv = 4167000, .capacity = 85}, 45762306a36Sopenharmony_ci { .ocv = 4146000, .capacity = 83}, 45862306a36Sopenharmony_ci { .ocv = 4124000, .capacity = 81}, 45962306a36Sopenharmony_ci { .ocv = 4062000, .capacity = 75}, 46062306a36Sopenharmony_ci { .ocv = 4013000, .capacity = 70}, 46162306a36Sopenharmony_ci { .ocv = 3977000, .capacity = 66}, 46262306a36Sopenharmony_ci { .ocv = 3931000, .capacity = 60}, 46362306a36Sopenharmony_ci { .ocv = 3914000, .capacity = 58}, 46462306a36Sopenharmony_ci { .ocv = 3901000, .capacity = 57}, 46562306a36Sopenharmony_ci { .ocv = 3884000, .capacity = 56}, 46662306a36Sopenharmony_ci { .ocv = 3870000, .capacity = 55}, 46762306a36Sopenharmony_ci { .ocv = 3862000, .capacity = 54}, 46862306a36Sopenharmony_ci { .ocv = 3854000, .capacity = 53}, 46962306a36Sopenharmony_ci { .ocv = 3838000, .capacity = 50}, 47062306a36Sopenharmony_ci { .ocv = 3823000, .capacity = 47}, 47162306a36Sopenharmony_ci { .ocv = 3813000, .capacity = 45}, 47262306a36Sopenharmony_ci { .ocv = 3807000, .capacity = 43}, 47362306a36Sopenharmony_ci { .ocv = 3800000, .capacity = 41}, 47462306a36Sopenharmony_ci { .ocv = 3795000, .capacity = 40}, 47562306a36Sopenharmony_ci { .ocv = 3786000, .capacity = 37}, 47662306a36Sopenharmony_ci { .ocv = 3783000, .capacity = 35}, 47762306a36Sopenharmony_ci { .ocv = 3773000, .capacity = 30}, 47862306a36Sopenharmony_ci { .ocv = 3758000, .capacity = 25}, 47962306a36Sopenharmony_ci { .ocv = 3745000, .capacity = 22}, 48062306a36Sopenharmony_ci { .ocv = 3738000, .capacity = 20}, 48162306a36Sopenharmony_ci { .ocv = 3733000, .capacity = 19}, 48262306a36Sopenharmony_ci { .ocv = 3716000, .capacity = 17}, 48362306a36Sopenharmony_ci { .ocv = 3709000, .capacity = 16}, 48462306a36Sopenharmony_ci { .ocv = 3698000, .capacity = 15}, 48562306a36Sopenharmony_ci { .ocv = 3687000, .capacity = 14}, 48662306a36Sopenharmony_ci { .ocv = 3684000, .capacity = 13}, 48762306a36Sopenharmony_ci { .ocv = 3684000, .capacity = 12}, 48862306a36Sopenharmony_ci { .ocv = 3678000, .capacity = 10}, 48962306a36Sopenharmony_ci { .ocv = 3671000, .capacity = 9}, 49062306a36Sopenharmony_ci { .ocv = 3665000, .capacity = 8}, 49162306a36Sopenharmony_ci { .ocv = 3651000, .capacity = 7}, 49262306a36Sopenharmony_ci { .ocv = 3634000, .capacity = 6}, 49362306a36Sopenharmony_ci { .ocv = 3601000, .capacity = 5}, 49462306a36Sopenharmony_ci { .ocv = 3564000, .capacity = 4}, 49562306a36Sopenharmony_ci { .ocv = 3516000, .capacity = 3}, 49662306a36Sopenharmony_ci { .ocv = 3456000, .capacity = 2}, 49762306a36Sopenharmony_ci { .ocv = 3381000, .capacity = 1}, 49862306a36Sopenharmony_ci { .ocv = 3300000, .capacity = 0}, 49962306a36Sopenharmony_ci}; 50062306a36Sopenharmony_ci 50162306a36Sopenharmony_ci/* Same capacity table is used by eb-l1m7flu, eb425161la, eb425161lu */ 50262306a36Sopenharmony_cistatic struct power_supply_battery_ocv_table samsung_ocv_cap_1500mah[] = { 50362306a36Sopenharmony_ci { .ocv = 4328000, .capacity = 100}, 50462306a36Sopenharmony_ci { .ocv = 4299000, .capacity = 99}, 50562306a36Sopenharmony_ci { .ocv = 4281000, .capacity = 98}, 50662306a36Sopenharmony_ci { .ocv = 4241000, .capacity = 95}, 50762306a36Sopenharmony_ci { .ocv = 4183000, .capacity = 90}, 50862306a36Sopenharmony_ci { .ocv = 4150000, .capacity = 87}, 50962306a36Sopenharmony_ci { .ocv = 4116000, .capacity = 84}, 51062306a36Sopenharmony_ci { .ocv = 4077000, .capacity = 80}, 51162306a36Sopenharmony_ci { .ocv = 4068000, .capacity = 79}, 51262306a36Sopenharmony_ci { .ocv = 4058000, .capacity = 77}, 51362306a36Sopenharmony_ci { .ocv = 4026000, .capacity = 75}, 51462306a36Sopenharmony_ci { .ocv = 3987000, .capacity = 72}, 51562306a36Sopenharmony_ci { .ocv = 3974000, .capacity = 69}, 51662306a36Sopenharmony_ci { .ocv = 3953000, .capacity = 66}, 51762306a36Sopenharmony_ci { .ocv = 3933000, .capacity = 63}, 51862306a36Sopenharmony_ci { .ocv = 3911000, .capacity = 60}, 51962306a36Sopenharmony_ci { .ocv = 3900000, .capacity = 58}, 52062306a36Sopenharmony_ci { .ocv = 3873000, .capacity = 55}, 52162306a36Sopenharmony_ci { .ocv = 3842000, .capacity = 52}, 52262306a36Sopenharmony_ci { .ocv = 3829000, .capacity = 50}, 52362306a36Sopenharmony_ci { .ocv = 3810000, .capacity = 45}, 52462306a36Sopenharmony_ci { .ocv = 3793000, .capacity = 40}, 52562306a36Sopenharmony_ci { .ocv = 3783000, .capacity = 35}, 52662306a36Sopenharmony_ci { .ocv = 3776000, .capacity = 30}, 52762306a36Sopenharmony_ci { .ocv = 3762000, .capacity = 25}, 52862306a36Sopenharmony_ci { .ocv = 3746000, .capacity = 20}, 52962306a36Sopenharmony_ci { .ocv = 3739000, .capacity = 18}, 53062306a36Sopenharmony_ci { .ocv = 3715000, .capacity = 15}, 53162306a36Sopenharmony_ci { .ocv = 3700000, .capacity = 12}, 53262306a36Sopenharmony_ci { .ocv = 3690000, .capacity = 10}, 53362306a36Sopenharmony_ci { .ocv = 3680000, .capacity = 9}, 53462306a36Sopenharmony_ci { .ocv = 3670000, .capacity = 7}, 53562306a36Sopenharmony_ci { .ocv = 3656000, .capacity = 5}, 53662306a36Sopenharmony_ci { .ocv = 3634000, .capacity = 4}, 53762306a36Sopenharmony_ci { .ocv = 3614000, .capacity = 3}, 53862306a36Sopenharmony_ci { .ocv = 3551000, .capacity = 2}, 53962306a36Sopenharmony_ci { .ocv = 3458000, .capacity = 1}, 54062306a36Sopenharmony_ci { .ocv = 3300000, .capacity = 0}, 54162306a36Sopenharmony_ci}; 54262306a36Sopenharmony_ci 54362306a36Sopenharmony_cistatic struct power_supply_battery_ocv_table samsung_ocv_cap_eb535151vu[] = { 54462306a36Sopenharmony_ci { .ocv = 4178000, .capacity = 100}, 54562306a36Sopenharmony_ci { .ocv = 4148000, .capacity = 99}, 54662306a36Sopenharmony_ci { .ocv = 4105000, .capacity = 95}, 54762306a36Sopenharmony_ci { .ocv = 4078000, .capacity = 92}, 54862306a36Sopenharmony_ci { .ocv = 4057000, .capacity = 89}, 54962306a36Sopenharmony_ci { .ocv = 4013000, .capacity = 85}, 55062306a36Sopenharmony_ci { .ocv = 3988000, .capacity = 82}, 55162306a36Sopenharmony_ci { .ocv = 3962000, .capacity = 77}, 55262306a36Sopenharmony_ci { .ocv = 3920000, .capacity = 70}, 55362306a36Sopenharmony_ci { .ocv = 3891000, .capacity = 65}, 55462306a36Sopenharmony_ci { .ocv = 3874000, .capacity = 62}, 55562306a36Sopenharmony_ci { .ocv = 3839000, .capacity = 59}, 55662306a36Sopenharmony_ci { .ocv = 3816000, .capacity = 55}, 55762306a36Sopenharmony_ci { .ocv = 3798000, .capacity = 50}, 55862306a36Sopenharmony_ci { .ocv = 3778000, .capacity = 40}, 55962306a36Sopenharmony_ci { .ocv = 3764000, .capacity = 30}, 56062306a36Sopenharmony_ci { .ocv = 3743000, .capacity = 25}, 56162306a36Sopenharmony_ci { .ocv = 3711000, .capacity = 20}, 56262306a36Sopenharmony_ci { .ocv = 3691000, .capacity = 18}, 56362306a36Sopenharmony_ci { .ocv = 3685000, .capacity = 15}, 56462306a36Sopenharmony_ci { .ocv = 3680000, .capacity = 12}, 56562306a36Sopenharmony_ci { .ocv = 3662000, .capacity = 10}, 56662306a36Sopenharmony_ci { .ocv = 3638000, .capacity = 9}, 56762306a36Sopenharmony_ci { .ocv = 3593000, .capacity = 7}, 56862306a36Sopenharmony_ci { .ocv = 3566000, .capacity = 6}, 56962306a36Sopenharmony_ci { .ocv = 3497000, .capacity = 4}, 57062306a36Sopenharmony_ci { .ocv = 3405000, .capacity = 2}, 57162306a36Sopenharmony_ci { .ocv = 3352000, .capacity = 1}, 57262306a36Sopenharmony_ci { .ocv = 3300000, .capacity = 0}, 57362306a36Sopenharmony_ci}; 57462306a36Sopenharmony_ci 57562306a36Sopenharmony_cistatic struct power_supply_battery_ocv_table samsung_ocv_cap_eb585157lu[] = { 57662306a36Sopenharmony_ci { .ocv = 4320000, .capacity = 100}, 57762306a36Sopenharmony_ci { .ocv = 4296000, .capacity = 99}, 57862306a36Sopenharmony_ci { .ocv = 4283000, .capacity = 98}, 57962306a36Sopenharmony_ci { .ocv = 4245000, .capacity = 95}, 58062306a36Sopenharmony_ci { .ocv = 4185000, .capacity = 90}, 58162306a36Sopenharmony_ci { .ocv = 4152000, .capacity = 87}, 58262306a36Sopenharmony_ci { .ocv = 4119000, .capacity = 84}, 58362306a36Sopenharmony_ci { .ocv = 4077000, .capacity = 80}, 58462306a36Sopenharmony_ci { .ocv = 4057000, .capacity = 78}, 58562306a36Sopenharmony_ci { .ocv = 4048000, .capacity = 77}, 58662306a36Sopenharmony_ci { .ocv = 4020000, .capacity = 74}, 58762306a36Sopenharmony_ci { .ocv = 4003000, .capacity = 72}, 58862306a36Sopenharmony_ci { .ocv = 3978000, .capacity = 69}, 58962306a36Sopenharmony_ci { .ocv = 3955000, .capacity = 66}, 59062306a36Sopenharmony_ci { .ocv = 3934000, .capacity = 63}, 59162306a36Sopenharmony_ci { .ocv = 3912000, .capacity = 60}, 59262306a36Sopenharmony_ci { .ocv = 3894000, .capacity = 58}, 59362306a36Sopenharmony_ci { .ocv = 3860000, .capacity = 55}, 59462306a36Sopenharmony_ci { .ocv = 3837000, .capacity = 52}, 59562306a36Sopenharmony_ci { .ocv = 3827000, .capacity = 50}, 59662306a36Sopenharmony_ci { .ocv = 3806000, .capacity = 45}, 59762306a36Sopenharmony_ci { .ocv = 3791000, .capacity = 40}, 59862306a36Sopenharmony_ci { .ocv = 3779000, .capacity = 35}, 59962306a36Sopenharmony_ci { .ocv = 3770000, .capacity = 30}, 60062306a36Sopenharmony_ci { .ocv = 3758000, .capacity = 25}, 60162306a36Sopenharmony_ci { .ocv = 3739000, .capacity = 20}, 60262306a36Sopenharmony_ci { .ocv = 3730000, .capacity = 18}, 60362306a36Sopenharmony_ci { .ocv = 3706000, .capacity = 15}, 60462306a36Sopenharmony_ci { .ocv = 3684000, .capacity = 13}, 60562306a36Sopenharmony_ci { .ocv = 3675000, .capacity = 10}, 60662306a36Sopenharmony_ci { .ocv = 3673000, .capacity = 9}, 60762306a36Sopenharmony_ci { .ocv = 3665000, .capacity = 7}, 60862306a36Sopenharmony_ci { .ocv = 3649000, .capacity = 5}, 60962306a36Sopenharmony_ci { .ocv = 3628000, .capacity = 4}, 61062306a36Sopenharmony_ci { .ocv = 3585000, .capacity = 3}, 61162306a36Sopenharmony_ci { .ocv = 3525000, .capacity = 2}, 61262306a36Sopenharmony_ci { .ocv = 3441000, .capacity = 1}, 61362306a36Sopenharmony_ci { .ocv = 3300000, .capacity = 0}, 61462306a36Sopenharmony_ci}; 61562306a36Sopenharmony_ci 61662306a36Sopenharmony_cistatic struct power_supply_maintenance_charge_table samsung_maint_charge_table[] = { 61762306a36Sopenharmony_ci { 61862306a36Sopenharmony_ci /* Maintenance charging phase A, 60 hours */ 61962306a36Sopenharmony_ci .charge_current_max_ua = 600000, 62062306a36Sopenharmony_ci .charge_voltage_max_uv = 4150000, 62162306a36Sopenharmony_ci .charge_safety_timer_minutes = 60*60, 62262306a36Sopenharmony_ci }, 62362306a36Sopenharmony_ci { 62462306a36Sopenharmony_ci /* Maintenance charging phase B, 200 hours */ 62562306a36Sopenharmony_ci .charge_current_max_ua = 600000, 62662306a36Sopenharmony_ci .charge_voltage_max_uv = 4100000, 62762306a36Sopenharmony_ci .charge_safety_timer_minutes = 200*60, 62862306a36Sopenharmony_ci } 62962306a36Sopenharmony_ci}; 63062306a36Sopenharmony_ci 63162306a36Sopenharmony_cistatic struct samsung_sdi_battery samsung_sdi_batteries[] = { 63262306a36Sopenharmony_ci { 63362306a36Sopenharmony_ci /* 63462306a36Sopenharmony_ci * Used in Samsung GT-I8190 "Golden" 63562306a36Sopenharmony_ci * Data from vendor boardfile board-golden-[bm|battery].c 63662306a36Sopenharmony_ci */ 63762306a36Sopenharmony_ci .compatible = "samsung,eb-l1m7flu", 63862306a36Sopenharmony_ci .name = "EB-L1M7FLU", 63962306a36Sopenharmony_ci .info = { 64062306a36Sopenharmony_ci .charge_full_design_uah = 1500000, 64162306a36Sopenharmony_ci .technology = POWER_SUPPLY_TECHNOLOGY_LION, 64262306a36Sopenharmony_ci .factory_internal_resistance_uohm = 100000, 64362306a36Sopenharmony_ci .factory_internal_resistance_charging_uohm = 200000, 64462306a36Sopenharmony_ci /* If you have data on this fix the min_design_uv */ 64562306a36Sopenharmony_ci .voltage_min_design_uv = 3320000, 64662306a36Sopenharmony_ci .voltage_max_design_uv = 4340000, 64762306a36Sopenharmony_ci .overvoltage_limit_uv = 4500000, 64862306a36Sopenharmony_ci .constant_charge_current_max_ua = 900000, 64962306a36Sopenharmony_ci .constant_charge_voltage_max_uv = 4320000, 65062306a36Sopenharmony_ci .charge_term_current_ua = 200000, 65162306a36Sopenharmony_ci .charge_restart_voltage_uv = 4300000, 65262306a36Sopenharmony_ci .maintenance_charge = samsung_maint_charge_table, 65362306a36Sopenharmony_ci .maintenance_charge_size = ARRAY_SIZE(samsung_maint_charge_table), 65462306a36Sopenharmony_ci .alert_low_temp_charge_current_ua = 300000, 65562306a36Sopenharmony_ci .alert_low_temp_charge_voltage_uv = 4000000, 65662306a36Sopenharmony_ci .alert_high_temp_charge_current_ua = 300000, 65762306a36Sopenharmony_ci .alert_high_temp_charge_voltage_uv = 4000000, 65862306a36Sopenharmony_ci .temp_min = -50, 65962306a36Sopenharmony_ci .temp_alert_min = 0, 66062306a36Sopenharmony_ci .temp_alert_max = 40, 66162306a36Sopenharmony_ci .temp_max = 60, 66262306a36Sopenharmony_ci .resist_table = samsung_temp2res, 66362306a36Sopenharmony_ci .resist_table_size = ARRAY_SIZE(samsung_temp2res), 66462306a36Sopenharmony_ci /* If you have tables for more temperatures, add them */ 66562306a36Sopenharmony_ci .ocv_temp[0] = 25, 66662306a36Sopenharmony_ci .ocv_table[0] = samsung_ocv_cap_1500mah, 66762306a36Sopenharmony_ci .ocv_table_size[0] = ARRAY_SIZE(samsung_ocv_cap_1500mah), 66862306a36Sopenharmony_ci .vbat2ri_discharging = samsung_vbat2res_discharging_eb_l1m7flu, 66962306a36Sopenharmony_ci .vbat2ri_discharging_size = ARRAY_SIZE(samsung_vbat2res_discharging_eb_l1m7flu), 67062306a36Sopenharmony_ci .vbat2ri_charging = samsung_vbat2res_charging_eb_l1m7flu, 67162306a36Sopenharmony_ci .vbat2ri_charging_size = ARRAY_SIZE(samsung_vbat2res_charging_eb_l1m7flu), 67262306a36Sopenharmony_ci .bti_resistance_ohm = 2400, 67362306a36Sopenharmony_ci .bti_resistance_tolerance = 40, 67462306a36Sopenharmony_ci }, 67562306a36Sopenharmony_ci }, 67662306a36Sopenharmony_ci { 67762306a36Sopenharmony_ci /* 67862306a36Sopenharmony_ci * Used in Samsung SGH-T599 "Codina TMO" and SGH-I407 "Kyle" 67962306a36Sopenharmony_ci * Data from vendor boardfile board-kyle-[bm|battery].c 68062306a36Sopenharmony_ci */ 68162306a36Sopenharmony_ci .compatible = "samsung,eb425161la", 68262306a36Sopenharmony_ci .name = "EB425161LA", 68362306a36Sopenharmony_ci .info = { 68462306a36Sopenharmony_ci .charge_full_design_uah = 1500000, 68562306a36Sopenharmony_ci .technology = POWER_SUPPLY_TECHNOLOGY_LION, 68662306a36Sopenharmony_ci .factory_internal_resistance_uohm = 136000, 68762306a36Sopenharmony_ci .factory_internal_resistance_charging_uohm = 200000, 68862306a36Sopenharmony_ci /* If you have data on this fix the min_design_uv */ 68962306a36Sopenharmony_ci .voltage_min_design_uv = 3320000, 69062306a36Sopenharmony_ci .voltage_max_design_uv = 4340000, 69162306a36Sopenharmony_ci .overvoltage_limit_uv = 4500000, 69262306a36Sopenharmony_ci .constant_charge_current_max_ua = 900000, 69362306a36Sopenharmony_ci .constant_charge_voltage_max_uv = 4320000, 69462306a36Sopenharmony_ci .charge_term_current_ua = 200000, 69562306a36Sopenharmony_ci .charge_restart_voltage_uv = 4270000, 69662306a36Sopenharmony_ci .maintenance_charge = samsung_maint_charge_table, 69762306a36Sopenharmony_ci .maintenance_charge_size = ARRAY_SIZE(samsung_maint_charge_table), 69862306a36Sopenharmony_ci .alert_low_temp_charge_current_ua = 300000, 69962306a36Sopenharmony_ci .alert_low_temp_charge_voltage_uv = 4000000, 70062306a36Sopenharmony_ci .alert_high_temp_charge_current_ua = 300000, 70162306a36Sopenharmony_ci .alert_high_temp_charge_voltage_uv = 4000000, 70262306a36Sopenharmony_ci .temp_min = -30, 70362306a36Sopenharmony_ci .temp_alert_min = 0, 70462306a36Sopenharmony_ci .temp_alert_max = 40, 70562306a36Sopenharmony_ci .temp_max = 47, 70662306a36Sopenharmony_ci .resist_table = samsung_temp2res, 70762306a36Sopenharmony_ci .resist_table_size = ARRAY_SIZE(samsung_temp2res), 70862306a36Sopenharmony_ci /* If you have tables for more temperatures, add them */ 70962306a36Sopenharmony_ci .ocv_temp[0] = 25, 71062306a36Sopenharmony_ci .ocv_table[0] = samsung_ocv_cap_1500mah, 71162306a36Sopenharmony_ci .ocv_table_size[0] = ARRAY_SIZE(samsung_ocv_cap_1500mah), 71262306a36Sopenharmony_ci .vbat2ri_discharging = samsung_vbat2res_discharging_eb425161la, 71362306a36Sopenharmony_ci .vbat2ri_discharging_size = ARRAY_SIZE(samsung_vbat2res_discharging_eb425161la), 71462306a36Sopenharmony_ci .vbat2ri_charging = samsung_vbat2res_charging_eb425161la, 71562306a36Sopenharmony_ci .vbat2ri_charging_size = ARRAY_SIZE(samsung_vbat2res_charging_eb425161la), 71662306a36Sopenharmony_ci .bti_resistance_ohm = 2400, 71762306a36Sopenharmony_ci .bti_resistance_tolerance = 40, 71862306a36Sopenharmony_ci }, 71962306a36Sopenharmony_ci }, 72062306a36Sopenharmony_ci { 72162306a36Sopenharmony_ci /* 72262306a36Sopenharmony_ci * Used in Samsung GT-I8160 "Codina" 72362306a36Sopenharmony_ci * Data from vendor boardfile board-codina-[bm|battery].c 72462306a36Sopenharmony_ci */ 72562306a36Sopenharmony_ci .compatible = "samsung,eb425161lu", 72662306a36Sopenharmony_ci .name = "EB425161LU", 72762306a36Sopenharmony_ci .info = { 72862306a36Sopenharmony_ci .charge_full_design_uah = 1500000, 72962306a36Sopenharmony_ci .technology = POWER_SUPPLY_TECHNOLOGY_LION, 73062306a36Sopenharmony_ci .factory_internal_resistance_uohm = 100000, 73162306a36Sopenharmony_ci .factory_internal_resistance_charging_uohm = 200000, 73262306a36Sopenharmony_ci /* If you have data on this fix the min_design_uv */ 73362306a36Sopenharmony_ci .voltage_min_design_uv = 3320000, 73462306a36Sopenharmony_ci .voltage_max_design_uv = 4350000, 73562306a36Sopenharmony_ci .overvoltage_limit_uv = 4500000, 73662306a36Sopenharmony_ci .constant_charge_current_max_ua = 900000, 73762306a36Sopenharmony_ci .constant_charge_voltage_max_uv = 4340000, 73862306a36Sopenharmony_ci .charge_term_current_ua = 200000, 73962306a36Sopenharmony_ci .charge_restart_voltage_uv = 4280000, 74062306a36Sopenharmony_ci .maintenance_charge = samsung_maint_charge_table, 74162306a36Sopenharmony_ci .maintenance_charge_size = ARRAY_SIZE(samsung_maint_charge_table), 74262306a36Sopenharmony_ci .alert_low_temp_charge_current_ua = 300000, 74362306a36Sopenharmony_ci .alert_low_temp_charge_voltage_uv = 4000000, 74462306a36Sopenharmony_ci .alert_high_temp_charge_current_ua = 300000, 74562306a36Sopenharmony_ci .alert_high_temp_charge_voltage_uv = 4000000, 74662306a36Sopenharmony_ci .temp_min = -50, 74762306a36Sopenharmony_ci .temp_alert_min = 0, 74862306a36Sopenharmony_ci .temp_alert_max = 43, 74962306a36Sopenharmony_ci .temp_max = 49, 75062306a36Sopenharmony_ci .resist_table = samsung_temp2res, 75162306a36Sopenharmony_ci .resist_table_size = ARRAY_SIZE(samsung_temp2res), 75262306a36Sopenharmony_ci /* If you have tables for more temperatures, add them */ 75362306a36Sopenharmony_ci .ocv_temp[0] = 25, 75462306a36Sopenharmony_ci .ocv_table[0] = samsung_ocv_cap_1500mah, 75562306a36Sopenharmony_ci .ocv_table_size[0] = ARRAY_SIZE(samsung_ocv_cap_1500mah), 75662306a36Sopenharmony_ci .vbat2ri_discharging = samsung_vbat2res_discharging_eb425161lu, 75762306a36Sopenharmony_ci .vbat2ri_discharging_size = ARRAY_SIZE(samsung_vbat2res_discharging_eb425161lu), 75862306a36Sopenharmony_ci .vbat2ri_charging = samsung_vbat2res_charging_eb425161lu, 75962306a36Sopenharmony_ci .vbat2ri_charging_size = ARRAY_SIZE(samsung_vbat2res_charging_eb425161lu), 76062306a36Sopenharmony_ci .bti_resistance_ohm = 2400, 76162306a36Sopenharmony_ci .bti_resistance_tolerance = 40, 76262306a36Sopenharmony_ci }, 76362306a36Sopenharmony_ci }, 76462306a36Sopenharmony_ci { 76562306a36Sopenharmony_ci /* 76662306a36Sopenharmony_ci * Used in Samsung GT-S7710 "Skomer" 76762306a36Sopenharmony_ci * Data from vendor boardfile board-skomer-[bm|battery].c 76862306a36Sopenharmony_ci */ 76962306a36Sopenharmony_ci .compatible = "samsung,eb485159lu", 77062306a36Sopenharmony_ci .name = "EB485159LU", 77162306a36Sopenharmony_ci .info = { 77262306a36Sopenharmony_ci .charge_full_design_uah = 1700000, 77362306a36Sopenharmony_ci .technology = POWER_SUPPLY_TECHNOLOGY_LION, 77462306a36Sopenharmony_ci .factory_internal_resistance_uohm = 100000, 77562306a36Sopenharmony_ci .factory_internal_resistance_charging_uohm = 200000, 77662306a36Sopenharmony_ci .voltage_min_design_uv = 3320000, 77762306a36Sopenharmony_ci .voltage_max_design_uv = 4350000, 77862306a36Sopenharmony_ci .overvoltage_limit_uv = 4500000, 77962306a36Sopenharmony_ci .constant_charge_current_max_ua = 900000, 78062306a36Sopenharmony_ci .constant_charge_voltage_max_uv = 4340000, 78162306a36Sopenharmony_ci .charge_term_current_ua = 200000, 78262306a36Sopenharmony_ci .charge_restart_voltage_uv = 4300000, 78362306a36Sopenharmony_ci .maintenance_charge = samsung_maint_charge_table, 78462306a36Sopenharmony_ci .maintenance_charge_size = ARRAY_SIZE(samsung_maint_charge_table), 78562306a36Sopenharmony_ci .alert_low_temp_charge_current_ua = 300000, 78662306a36Sopenharmony_ci .alert_low_temp_charge_voltage_uv = 4000000, 78762306a36Sopenharmony_ci .alert_high_temp_charge_current_ua = 300000, 78862306a36Sopenharmony_ci .alert_high_temp_charge_voltage_uv = 4000000, 78962306a36Sopenharmony_ci .temp_min = -50, 79062306a36Sopenharmony_ci .temp_alert_min = 0, 79162306a36Sopenharmony_ci .temp_alert_max = 40, 79262306a36Sopenharmony_ci .temp_max = 60, 79362306a36Sopenharmony_ci .resist_table = samsung_temp2res, 79462306a36Sopenharmony_ci .resist_table_size = ARRAY_SIZE(samsung_temp2res), 79562306a36Sopenharmony_ci /* If you have tables for more temperatures, add them */ 79662306a36Sopenharmony_ci .ocv_temp[0] = 25, 79762306a36Sopenharmony_ci .ocv_table[0] = samsung_ocv_cap_eb485159lu, 79862306a36Sopenharmony_ci .ocv_table_size[0] = ARRAY_SIZE(samsung_ocv_cap_eb485159lu), 79962306a36Sopenharmony_ci /* CHECKME: vendor uses the 1500 mAh table, check against datasheet */ 80062306a36Sopenharmony_ci .vbat2ri_discharging = samsung_vbat2res_discharging_eb485159lu, 80162306a36Sopenharmony_ci .vbat2ri_discharging_size = ARRAY_SIZE(samsung_vbat2res_discharging_eb485159lu), 80262306a36Sopenharmony_ci .vbat2ri_charging = samsung_vbat2res_charging_eb485159lu, 80362306a36Sopenharmony_ci .vbat2ri_charging_size = ARRAY_SIZE(samsung_vbat2res_charging_eb485159lu), 80462306a36Sopenharmony_ci .bti_resistance_ohm = 2400, 80562306a36Sopenharmony_ci .bti_resistance_tolerance = 40, 80662306a36Sopenharmony_ci }, 80762306a36Sopenharmony_ci }, 80862306a36Sopenharmony_ci { 80962306a36Sopenharmony_ci /* 81062306a36Sopenharmony_ci * Used in Samsung GT-I9070 "Janice" 81162306a36Sopenharmony_ci * Data from vendor boardfile board-janice-bm.c 81262306a36Sopenharmony_ci */ 81362306a36Sopenharmony_ci .compatible = "samsung,eb535151vu", 81462306a36Sopenharmony_ci .name = "EB535151VU", 81562306a36Sopenharmony_ci .info = { 81662306a36Sopenharmony_ci .charge_full_design_uah = 1500000, 81762306a36Sopenharmony_ci .technology = POWER_SUPPLY_TECHNOLOGY_LION, 81862306a36Sopenharmony_ci .factory_internal_resistance_uohm = 100000, 81962306a36Sopenharmony_ci .factory_internal_resistance_charging_uohm = 200000, 82062306a36Sopenharmony_ci /* If you have data on this fix the min_design_uv */ 82162306a36Sopenharmony_ci .voltage_min_design_uv = 3300000, 82262306a36Sopenharmony_ci .voltage_max_design_uv = 4180000, 82362306a36Sopenharmony_ci .overvoltage_limit_uv = 4500000, 82462306a36Sopenharmony_ci .constant_charge_current_max_ua = 900000, 82562306a36Sopenharmony_ci .constant_charge_voltage_max_uv = 4200000, 82662306a36Sopenharmony_ci .charge_term_current_ua = 200000, 82762306a36Sopenharmony_ci .charge_restart_voltage_uv = 4170000, 82862306a36Sopenharmony_ci .maintenance_charge = samsung_maint_charge_table, 82962306a36Sopenharmony_ci .maintenance_charge_size = ARRAY_SIZE(samsung_maint_charge_table), 83062306a36Sopenharmony_ci .alert_low_temp_charge_current_ua = 300000, 83162306a36Sopenharmony_ci .alert_low_temp_charge_voltage_uv = 4000000, 83262306a36Sopenharmony_ci .alert_high_temp_charge_current_ua = 300000, 83362306a36Sopenharmony_ci .alert_high_temp_charge_voltage_uv = 4000000, 83462306a36Sopenharmony_ci .temp_min = -5, 83562306a36Sopenharmony_ci .temp_alert_min = 0, 83662306a36Sopenharmony_ci .temp_alert_max = 40, 83762306a36Sopenharmony_ci .temp_max = 60, 83862306a36Sopenharmony_ci .resist_table = samsung_temp2res, 83962306a36Sopenharmony_ci .resist_table_size = ARRAY_SIZE(samsung_temp2res), 84062306a36Sopenharmony_ci /* If you have tables for more temperatures, add them */ 84162306a36Sopenharmony_ci .ocv_temp[0] = 25, 84262306a36Sopenharmony_ci .ocv_table[0] = samsung_ocv_cap_eb535151vu, 84362306a36Sopenharmony_ci .ocv_table_size[0] = ARRAY_SIZE(samsung_ocv_cap_eb535151vu), 84462306a36Sopenharmony_ci .vbat2ri_discharging = samsung_vbat2res_discharging_eb535151vu, 84562306a36Sopenharmony_ci .vbat2ri_discharging_size = ARRAY_SIZE(samsung_vbat2res_discharging_eb535151vu), 84662306a36Sopenharmony_ci .vbat2ri_charging = samsung_vbat2res_charging_eb535151vu, 84762306a36Sopenharmony_ci .vbat2ri_charging_size = ARRAY_SIZE(samsung_vbat2res_charging_eb535151vu), 84862306a36Sopenharmony_ci .bti_resistance_ohm = 1500, 84962306a36Sopenharmony_ci .bti_resistance_tolerance = 40, 85062306a36Sopenharmony_ci }, 85162306a36Sopenharmony_ci }, 85262306a36Sopenharmony_ci { 85362306a36Sopenharmony_ci /* 85462306a36Sopenharmony_ci * Used in Samsung GT-I8530 "Gavini" 85562306a36Sopenharmony_ci * Data from vendor boardfile board-gavini-bm.c 85662306a36Sopenharmony_ci */ 85762306a36Sopenharmony_ci .compatible = "samsung,eb585157lu", 85862306a36Sopenharmony_ci .name = "EB585157LU", 85962306a36Sopenharmony_ci .info = { 86062306a36Sopenharmony_ci .charge_full_design_uah = 2000000, 86162306a36Sopenharmony_ci .technology = POWER_SUPPLY_TECHNOLOGY_LION, 86262306a36Sopenharmony_ci .factory_internal_resistance_uohm = 105000, 86362306a36Sopenharmony_ci .factory_internal_resistance_charging_uohm = 160000, 86462306a36Sopenharmony_ci /* If you have data on this fix the min_design_uv */ 86562306a36Sopenharmony_ci .voltage_min_design_uv = 3300000, 86662306a36Sopenharmony_ci .voltage_max_design_uv = 4320000, 86762306a36Sopenharmony_ci .overvoltage_limit_uv = 4500000, 86862306a36Sopenharmony_ci .constant_charge_current_max_ua = 1500000, 86962306a36Sopenharmony_ci .constant_charge_voltage_max_uv = 4350000, 87062306a36Sopenharmony_ci .charge_term_current_ua = 120000, 87162306a36Sopenharmony_ci .charge_restart_voltage_uv = 4300000, 87262306a36Sopenharmony_ci .maintenance_charge = samsung_maint_charge_table, 87362306a36Sopenharmony_ci .maintenance_charge_size = ARRAY_SIZE(samsung_maint_charge_table), 87462306a36Sopenharmony_ci .alert_low_temp_charge_current_ua = 300000, 87562306a36Sopenharmony_ci .alert_low_temp_charge_voltage_uv = 4000000, 87662306a36Sopenharmony_ci .alert_high_temp_charge_current_ua = 300000, 87762306a36Sopenharmony_ci .alert_high_temp_charge_voltage_uv = 4000000, 87862306a36Sopenharmony_ci .temp_min = -5, 87962306a36Sopenharmony_ci .temp_alert_min = 0, 88062306a36Sopenharmony_ci .temp_alert_max = 40, 88162306a36Sopenharmony_ci .temp_max = 60, 88262306a36Sopenharmony_ci .resist_table = samsung_temp2res, 88362306a36Sopenharmony_ci .resist_table_size = ARRAY_SIZE(samsung_temp2res), 88462306a36Sopenharmony_ci /* If you have tables for more temperatures, add them */ 88562306a36Sopenharmony_ci .ocv_temp[0] = 25, 88662306a36Sopenharmony_ci .ocv_table[0] = samsung_ocv_cap_eb585157lu, 88762306a36Sopenharmony_ci .ocv_table_size[0] = ARRAY_SIZE(samsung_ocv_cap_eb585157lu), 88862306a36Sopenharmony_ci .vbat2ri_discharging = samsung_vbat2res_discharging_eb585157lu, 88962306a36Sopenharmony_ci .vbat2ri_discharging_size = ARRAY_SIZE(samsung_vbat2res_discharging_eb585157lu), 89062306a36Sopenharmony_ci .vbat2ri_charging = samsung_vbat2res_charging_eb585157lu, 89162306a36Sopenharmony_ci .vbat2ri_charging_size = ARRAY_SIZE(samsung_vbat2res_charging_eb585157lu), 89262306a36Sopenharmony_ci .bti_resistance_ohm = 2400, 89362306a36Sopenharmony_ci .bti_resistance_tolerance = 40, 89462306a36Sopenharmony_ci }, 89562306a36Sopenharmony_ci }, 89662306a36Sopenharmony_ci}; 89762306a36Sopenharmony_ci 89862306a36Sopenharmony_ciint samsung_sdi_battery_get_info(struct device *dev, 89962306a36Sopenharmony_ci const char *compatible, 90062306a36Sopenharmony_ci struct power_supply_battery_info **info) 90162306a36Sopenharmony_ci{ 90262306a36Sopenharmony_ci struct samsung_sdi_battery *batt; 90362306a36Sopenharmony_ci int i; 90462306a36Sopenharmony_ci 90562306a36Sopenharmony_ci for (i = 0; i < ARRAY_SIZE(samsung_sdi_batteries); i++) { 90662306a36Sopenharmony_ci batt = &samsung_sdi_batteries[i]; 90762306a36Sopenharmony_ci if (!strcmp(compatible, batt->compatible)) 90862306a36Sopenharmony_ci break; 90962306a36Sopenharmony_ci } 91062306a36Sopenharmony_ci 91162306a36Sopenharmony_ci if (i == ARRAY_SIZE(samsung_sdi_batteries)) 91262306a36Sopenharmony_ci return -ENODEV; 91362306a36Sopenharmony_ci 91462306a36Sopenharmony_ci *info = &batt->info; 91562306a36Sopenharmony_ci dev_info(dev, "Samsung SDI %s battery %d mAh\n", 91662306a36Sopenharmony_ci batt->name, batt->info.charge_full_design_uah / 1000); 91762306a36Sopenharmony_ci 91862306a36Sopenharmony_ci return 0; 91962306a36Sopenharmony_ci} 92062306a36Sopenharmony_ciEXPORT_SYMBOL_GPL(samsung_sdi_battery_get_info); 921