Battery contains a ds2760 type chip on the 1-wire bus connected to the middle battery pin. The battery is charged by a MAX8677 chip inside the iPAQ. USB feature is not used - both USB and DC in are wired to DC input. Only !DOK output is wire to anything. Relevant GPIOs: 91 In Wired to !DOK pin of MAX8677. Low when DC or USB power present and good. 105 In Charging status. High when actually charging (orange light( 106 In Charging status. High when charging, also high when battery full (green light) 107 In Battery present 120 Out Wired to !CEN of MAX8677. Set low to enable charging. In windows: When battery reaches 100%, 106,105 both go low then 106 comes high again. Windows leaves 120 low (CEN on) even when AC not connected. Windows sets wake-up IRQ on gpio 91, so wakes up and does stuff when DC is plugged in/removed. In linux: Pulled 120 low in LPM (by MFP) so it charged in suspend always. Should find a way of making sure if 105, 106 and 107 for charging status rather than ds1760 guess based on current.