drivers/power/supply/samsung-sdi-battery.c

Source file repositories/reference/linux-study-clean/drivers/power/supply/samsung-sdi-battery.c

File Facts

System
Linux kernel
Corpus path
drivers/power/supply/samsung-sdi-battery.c
Extension
.c
Size
36314 bytes
Lines
921
Domain
Driver Families
Bucket
drivers/power
Inferred role
Driver Families: exported/initcall integration point
Status
integration implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct samsung_sdi_battery {
	char *compatible;
	char *name;
	struct power_supply_battery_info info;
};

/*
 * Voltage to internal resistance tables. The internal resistance varies
 * depending on the VBAT voltage, so look this up from a table. Different
 * tables apply depending on whether we are charging or not.
 */

static const struct power_supply_vbat_ri_table samsung_vbat2res_discharging_eb_l1m7flu[] = {
	{ .vbat_uv = 4240000, .ri_uohm = 160000 },
	{ .vbat_uv = 4210000, .ri_uohm = 179000 },
	{ .vbat_uv = 4180000, .ri_uohm = 183000 },
	{ .vbat_uv = 4160000, .ri_uohm = 184000 },
	{ .vbat_uv = 4140000, .ri_uohm = 191000 },
	{ .vbat_uv = 4120000, .ri_uohm = 204000 },
	{ .vbat_uv = 4076000, .ri_uohm = 220000 },
	{ .vbat_uv = 4030000, .ri_uohm = 227000 },
	{ .vbat_uv = 3986000, .ri_uohm = 215000 },
	{ .vbat_uv = 3916000, .ri_uohm = 221000 },
	{ .vbat_uv = 3842000, .ri_uohm = 259000 },
	{ .vbat_uv = 3773000, .ri_uohm = 287000 },
	{ .vbat_uv = 3742000, .ri_uohm = 283000 },
	{ .vbat_uv = 3709000, .ri_uohm = 277000 },
	{ .vbat_uv = 3685000, .ri_uohm = 297000 },
	{ .vbat_uv = 3646000, .ri_uohm = 310000 },
	{ .vbat_uv = 3616000, .ri_uohm = 331000 },
	{ .vbat_uv = 3602000, .ri_uohm = 370000 },
	{ .vbat_uv = 3578000, .ri_uohm = 350000 },
	{ .vbat_uv = 3553000, .ri_uohm = 321000 },
	{ .vbat_uv = 3503000, .ri_uohm = 322000 },
	{ .vbat_uv = 3400000, .ri_uohm = 269000 },
	{ .vbat_uv = 3360000, .ri_uohm = 328000 },
	{ .vbat_uv = 3330000, .ri_uohm = 305000 },
	{ .vbat_uv = 3300000, .ri_uohm = 339000 },
};

static const struct power_supply_vbat_ri_table samsung_vbat2res_charging_eb_l1m7flu[] = {
	{ .vbat_uv = 4302000, .ri_uohm = 230000 },
	{ .vbat_uv = 4276000, .ri_uohm = 345000 },
	{ .vbat_uv = 4227000, .ri_uohm = 345000 },
	{ .vbat_uv = 4171000, .ri_uohm = 346000 },
	{ .vbat_uv = 4134000, .ri_uohm = 311000 },
	{ .vbat_uv = 4084000, .ri_uohm = 299000 },
	{ .vbat_uv = 4052000, .ri_uohm = 316000 },
	{ .vbat_uv = 4012000, .ri_uohm = 309000 },
	{ .vbat_uv = 3961000, .ri_uohm = 303000 },
	{ .vbat_uv = 3939000, .ri_uohm = 280000 },
	{ .vbat_uv = 3904000, .ri_uohm = 261000 },
	{ .vbat_uv = 3850000, .ri_uohm = 212000 },
	{ .vbat_uv = 3800000, .ri_uohm = 232000 },
	{ .vbat_uv = 3750000, .ri_uohm = 177000 },
	{ .vbat_uv = 3712000, .ri_uohm = 164000 },
	{ .vbat_uv = 3674000, .ri_uohm = 161000 },
	{ .vbat_uv = 3590000, .ri_uohm = 164000 },
};

static const struct power_supply_vbat_ri_table samsung_vbat2res_discharging_eb425161la[] = {
	{ .vbat_uv = 4240000, .ri_uohm = 160000 },
	{ .vbat_uv = 4210000, .ri_uohm = 179000 },
	{ .vbat_uv = 4180000, .ri_uohm = 183000 },
	{ .vbat_uv = 4160000, .ri_uohm = 184000 },
	{ .vbat_uv = 4140000, .ri_uohm = 191000 },
	{ .vbat_uv = 4120000, .ri_uohm = 204000 },
	{ .vbat_uv = 4080000, .ri_uohm = 200000 },
	{ .vbat_uv = 4027000, .ri_uohm = 202000 },
	{ .vbat_uv = 3916000, .ri_uohm = 221000 },
	{ .vbat_uv = 3842000, .ri_uohm = 259000 },
	{ .vbat_uv = 3800000, .ri_uohm = 262000 },
	{ .vbat_uv = 3742000, .ri_uohm = 263000 },
	{ .vbat_uv = 3709000, .ri_uohm = 277000 },
	{ .vbat_uv = 3685000, .ri_uohm = 312000 },
	{ .vbat_uv = 3668000, .ri_uohm = 258000 },
	{ .vbat_uv = 3660000, .ri_uohm = 247000 },
	{ .vbat_uv = 3636000, .ri_uohm = 293000 },
	{ .vbat_uv = 3616000, .ri_uohm = 331000 },
	{ .vbat_uv = 3600000, .ri_uohm = 349000 },
	{ .vbat_uv = 3593000, .ri_uohm = 345000 },
	{ .vbat_uv = 3585000, .ri_uohm = 344000 },
	{ .vbat_uv = 3572000, .ri_uohm = 336000 },
	{ .vbat_uv = 3553000, .ri_uohm = 321000 },
	{ .vbat_uv = 3517000, .ri_uohm = 336000 },
	{ .vbat_uv = 3503000, .ri_uohm = 322000 },
	{ .vbat_uv = 3400000, .ri_uohm = 269000 },
	{ .vbat_uv = 3360000, .ri_uohm = 328000 },
	{ .vbat_uv = 3330000, .ri_uohm = 305000 },
	{ .vbat_uv = 3300000, .ri_uohm = 339000 },

Annotation

Implementation Notes