AXP209/PMIC control Linux
< AXP209
Jump to navigation
Jump to search
This page describes how to get information from PMIC AXP209.
TODO: how to change PMIC AXP209 behaviour.
Get information
From /sys/ directory
Armbian examples for SBC Olimex A20-OLinuXino-LIME2 (Allwinner A20 + AXP209):
It is possible to see information from current and voltage sensors (each multiplied by 1'000'000). Here, battery is charging:
$ cat /sys/power/axp_pmu/ac/amperage 1467500 $ cat /sys/power/axp_pmu/ac/voltage 4751500 $ cat /sys/power/axp_pmu/battery/charge 5718926 $ cat /sys/power/axp_pmu/battery/charging 1
So you can calculate current AC power (A*V) by:
$ echo "$(echo scale=3\; $(cat /sys/power/axp_pmu/ac/voltage) \* $(cat /sys/power/axp_pmu/ac/amperage)) / 10^12" | bc -l 7.125
Or, current power from battery:
$ echo "$(echo scale=3\; $(cat /sys/power/axp_pmu/battery/voltage) \* $(cat /sys/power/axp_pmu/battery/amperage)) / 10^12" | bc -l 2.641
Mainline directory:
$ ls -lAF /sys/power/axp_pmu/ drwxr-xr-x 2 root root 0 Jun 27 15:34 ac/ drwxr-xr-x 3 root root 0 Jun 27 15:34 axp20x-ac-power-supply/ drwxr-xr-x 4 root root 0 Jun 27 15:34 axp20x-adc/ drwxr-xr-x 4 root root 0 Jun 27 15:34 axp20x-battery-power-supply/ drwxr-xr-x 5 root root 0 Jun 27 15:34 axp20x-gpio/ drwxr-xr-x 5 root root 0 Jun 27 15:34 axp20x-pek/ drwxr-xr-x 3 root root 0 Jun 27 15:34 axp20x-regulator/ drwxr-xr-x 2 root root 0 Jun 27 15:34 battery/ drwxr-xr-x 2 root root 0 Jun 27 15:34 charger/ drwxr-xr-x 2 root root 0 Jun 27 15:34 control/ lrwxrwxrwx 1 root root 0 Jun 27 15:34 driver -> ../../../../../../bus/i2c/drivers/axp20x-i2c/ -r--r--r-- 1 root root 4096 Jun 27 15:34 modalias -r--r--r-- 1 root root 4096 Jun 27 15:34 name -rw-r--r-- 1 root root 16 Jun 27 16:22 ocv_curve lrwxrwxrwx 1 root root 0 Jun 27 16:22 of_node -> '../../../../../../firmware/devicetree/base/soc/i2c@1c2ac00/pmic@34'/ drwxr-xr-x 2 root root 0 Jun 27 15:34 pmu/ drwxr-xr-x 2 root root 0 Jun 27 15:34 power/ drwxr-xr-x 9 root root 0 Jun 27 15:34 regulator/ lrwxrwxrwx 1 root root 0 Jun 27 15:34 subsystem -> ../../../../../../bus/i2c/ -rw-r--r-- 1 root root 4096 Jun 27 15:34 uevent drwxr-xr-x 2 root root 0 Jun 27 15:34 vbus/ $ ls -lAF /sys/power/axp_pmu/battery/ -r--r--r-- 1 root root 4096 Jun 27 16:22 amperage -r--r--r-- 1 root root 4096 Jun 27 15:35 capacity -r--r--r-- 1 root root 4096 Jun 27 16:22 charge -r--r--r-- 1 root root 4096 Jun 27 16:22 charging -r--r--r-- 1 root root 4096 Jun 27 15:35 connected -r--r--r-- 1 root root 4096 Jun 27 16:22 power -r--r--r-- 1 root root 4096 Jun 27 16:22 ts_voltage -r--r--r-- 1 root root 4096 Jun 27 16:22 voltage $ ls -lAF /sys/power/axp_pmu/ac/ -r--r--r-- 1 root root 4096 Jun 27 16:26 amperage -r--r--r-- 1 root root 4096 Jun 27 15:35 connected -r--r--r-- 1 root root 4096 Jun 27 16:28 used -r--r--r-- 1 root root 4096 Jun 27 15:34 voltage $ ls -lAF /sys/power/axp_pmu/charger -r--r--r-- 1 root root 4096 Jun 27 16:34 amperage -r--r--r-- 1 root root 4096 Jun 27 16:34 cell_activation -r--r--r-- 1 root root 4096 Jun 27 15:35 charging -r--r--r-- 1 root root 4096 Jun 27 16:34 low_power $ ls -lAF /sys/power/axp_pmu/control -rw-r--r-- 1 root root 4096 Jun 27 16:34 battery_rdc -rw-r--r-- 1 root root 4096 Jun 27 16:34 charge_rtc_battery -rw-r--r-- 1 root root 4096 Jun 27 16:34 disable_fuel_gauge -rw-r--r-- 1 root root 4096 Jun 27 16:34 reset_charge_counter -rw-r--r-- 1 root root 4096 Jun 27 16:34 set_vbus_direct_mode $ ls -lAF /sys/power/axp_pmu/pmu -r--r--r-- 1 root root 4096 Jun 27 16:34 overheat -r--r--r-- 1 root root 4096 Jun 27 15:34 temp -r--r--r-- 1 root root 4096 Jun 27 16:34 voltage
Legacy directory:
$ ls -lAF /sys/class/power_supply/axp20x-battery/ total 0 -r--r--r-- 1 root root 4096 Jun 27 16:22 capacity -rw-r--r-- 1 root root 4096 Jun 27 16:22 constant_charge_current -rw-r--r-- 1 root root 4096 Jun 27 16:22 constant_charge_current_max -r--r--r-- 1 root root 4096 Jun 27 16:22 current_now lrwxrwxrwx 1 root root 0 Jun 27 16:22 device -> ../../../axp20x-battery-power-supply/ -r--r--r-- 1 root root 4096 Jun 27 16:22 health drwxr-xr-x 3 root root 0 Jun 27 15:34 hwmon0/ -r--r--r-- 1 root root 4096 Jun 27 16:22 online drwxr-xr-x 2 root root 0 Jun 27 15:34 power/ -r--r--r-- 1 root root 4096 Jun 27 16:22 present -r--r--r-- 1 root root 4096 Jun 27 16:22 status lrwxrwxrwx 1 root root 0 Jun 27 15:34 subsystem -> ../../../../../../../../../class/power_supply/ -r--r--r-- 1 root root 4096 Jun 27 16:22 type -rw-r--r-- 1 root root 4096 Jun 27 15:34 uevent -rw-r--r-- 1 root root 4096 Jun 27 16:22 voltage_max_design -rw-r--r-- 1 root root 4096 Jun 27 16:22 voltage_min_design -r--r--r-- 1 root root 4096 Jun 27 16:22 voltage_now -r--r--r-- 1 root root 4096 Jun 27 16:22 voltage_ocv drwxr-xr-x 2 root root 0 Jun 27 15:34 wakeup4/
Scripts
Bash script /etc/update-motd.d/30-armbian-sysinfo
(source code) in Armbian gives such output:
System load: 7% Up time: 44 min Local users: 3 Memory usage: 10% of 998M IP: 192.168.1.188 172.20.1.1 CPU temp: 47°C Usage of /: 5% of 29G Battery: 29% charging
From i2c
Scripts
axp209.sh — with a links to another scripts
See also
- I2Cdev — general information about i2c