0x0A - ACPI: Control Method Battery

I2C Specs

  • Normal I2c

  • Address: 0x0A

What is it?

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 BAT0 device deals with the Fuelgauge. The ACPI ADP0 device deals with the Charger.

The ACPI methods like _BIX, _BTS, ... provide all the necessary information about the battery and the charger. They can be decrypted by reading the ACPI Spec p. 492 10.2 Control Method Batteries

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

Embedded Controller

The Embedded Controller directly interacts with the Charger and the Fuelgauge.



https://www.ti.com/lit/ug/sluu431/sluu431.pdf https://www.ti.com/lit/ds/symlink/bq28400.pdf?ts=1625607689401&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FBQ28400





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.



Last updated