0x0A - ACPI: Control Method Battery
- Normal I2c
- Address: 0x0A
Surface RT uses the Embedded Controller Topology. The controller is located at 0xa. That means that there must be an IC somewhere which interacts with the Charger and the Fuelgauge and provide an interface to both of them to the SoC. The Charger and the Fuelgauge are exposed through 0xa which provides an ACPI interface. The ACPI
BAT0device deals with the Fuelgauge. The ACPI
ADP0device deals with the Charger.
https://wiki.ubuntu.com/Kernel/Reference/Battery "(Control Method) Batteries and ACPI are tied together in quite a complex way. Generally, the battery state information is transmitted over a SMBUS bus to the embedded controller, a.k.a. EC, which in turn interfaces to the OS via ACPI methods. These methods can interrogate the embedded controller for battery state information ..."
Battery <-- EC <--> BIOS ACPI Methods <--> OS
Since there is no ACPI implementation for ARM32 and we need to replace the ACPI Methods with a custom driver. all Necessary information can be found in the SSDT0000 ACPI table
The Embedded Controller directly interacts with the Charger and the Fuelgauge.
The Embedded Controller topology prevents the use of SmartBatterySystem (SBS) and requires an ACPI or custom driver. ACPI isn't (fully) implemented on ARM32 therefore we need a custom driver which resembels the ACPI methods.