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.
- 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.
- Exports symbols or registers init work; inspect boot/module ordering and who consumes the exported contract.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/module.hlinux/power_supply.hsamsung-sdi-battery.h
Detected Declarations
struct samsung_sdi_batteryfunction samsung_sdi_battery_get_infoexport samsung_sdi_battery_get_info
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
- Immediate include surface: `linux/module.h`, `linux/power_supply.h`, `samsung-sdi-battery.h`.
- Detected declarations: `struct samsung_sdi_battery`, `function samsung_sdi_battery_get_info`, `export samsung_sdi_battery_get_info`.
- Atlas domain: Driver Families / drivers/power.
- Implementation status: integration implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.