ab8500_char...atchdog_work(9)
π ab8500_charger_kick_watchdog_work(9) β the Kernel API Manual, but make it make sense
okay so bestie, welcome to the Kernel API Manual β¨ this one's a function page, and honestly it's giving "small function, big drama" β no cap.
π NAME π
ab8500_charger_kick_watchdog_work β literally just kick the watchdog. that's the whole job. that's the assignment. π
β¨ SYNOPSIS β¨
void ab8500_charger_kick_watchdog_work (struct work_struct *work );
like yes, it returns void, and yes, it takes exactly one (1) argument. minimalism icon π«Ά
π¦ ARGUMENTS π¦
workβ a pointer to thework_structstructure. that's it. that's the argument. she's a work queue callback and she knows it. π
π₯ DESCRIPTION π₯
okay so this is the work queue function for kicking the charger watchdog. very "just do your little job" energy. β
but HERE'S the tea, and it's kind of cursed β for ABB revision 1.0 and 1.1 there is a bug in the watchdog logic π and because of that bug, we have to continuously kick the charger watchdog even when no charger is connected. not me having to babysit a watchdog at 3am. π
and the caveat that matters (do NOT skip this, fr fr): this is only valid once the AC charger has been enabled. β οΈ
it's a bug that is not handled by the algorithm, so the watchdog has to be kicked by the charger driver when the AC charger is disabled. so yeah β the driver's gotta pick up the slack. the algorithm said "not my problem" and honestly? rude. π
π¨ lowkey important: this whole "kick it constantly with nothing plugged in" thing is a workaround for a real hardware/logic bug on ABB revision 1.0 and 1.1 β don't read it as normal, intended behaviour. it only applies once the AC charger has been enabled, and the disabled-AC-charger case has to be kicked by the charger driver itself.
π SEE ALSO π
bestie the cross-reference list is LONG. like, "she's got range" levels of long. buckle up, we're going through all of them, no skipping, every single one, because i love you and i respect the manual. π
the kernel file in question: ./drivers/power/supply/ab8500_charger.c β plus all of these:
struct ab8500_charger_interrupts(9)struct ab8500_charger(9)ab8500_power_supply_changed(9)ab8500_charger_get_ac_voltage(9)ab8500_charger_ac_cv(9)ab8500_charger_get_vbus_voltage(9)ab8500_charger_get_usb_current(9)ab8500_charger_get_ac_current(9)ab8500_charger_usb_cv(9)ab8500_charger_detect_chargers(9)ab8500_charger_max_usb_curr(9)ab8500_charger_read_usb_type(9)ab8500_charger_detect_usb_type(9)ab8500_charger_get_usb_cur(9)ab8500_charger_check_continue_stepping(9)ab8500_charger_set_current(9)ab8500_charger_set_vbus_in_curr(9)ab8500_charger_set_main_in_curr(9)ab8500_charger_set_output_curr(9)ab8500_charger_led_en(9)ab8500_charger_ac_en(9)ab8500_charger_usb_en(9)ab8500_charger_usb_check_enable(9)ab8500_charger_ac_check_enable(9)ab8500_charger_watchdog_kick(9)ab8500_charger_update_charger_current(9)ab8500_charger_check_vbat_work(9)ab8500_charger_check_hw_failure_work(9)ab8500_charger_ac_work(9)ab8500_charger_detect_usb_type_work(9)ab8500_charger_usb_link_attach_work(9)ab8500_charger_usb_link_status_work(9)ab8500_charger_check_usbchargernotok_work(9)ab8500_charger_check_main_thermal_prot_work(9)ab8500_charger_check_usb_thermal_prot_work(9)ab8500_charger_mainchunplugdet_handler(9)ab8500_charger_mainchplugdet_handler(9)ab8500_charger_mainextchnotok_handler(9)ab8500_charger_mainchthprotr_handler(9)ab8500_charger_mainchthprotf_handler(9)ab8500_charger_vbusdetf_handler(9)ab8500_charger_vbusdetr_handler(9)ab8500_charger_usblinkstatus_handler(9)ab8500_charger_usbchthprotr_handler(9)ab8500_charger_usbchthprotf_handler(9)ab8500_charger_usbchargernotokr_handler(9)ab8500_charger_chwdexp_handler(9)ab8500_charger_vbuschdropend_handler(9)ab8500_charger_vbusovv_handler(9)ab8500_charger_ac_get_property(9)ab8500_charger_usb_get_property(9)ab8500_charger_init_hw_registers(9)
like i said. range. π
mwah, that's the page π«Ά this lil ode to the ab8500 charger lives over in ./drivers/power/supply, and it was dated October 2026 β so mark your calendar bestie, she's from the future (or the docs just said so) π¦β¨π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms