AXP209/PMIC control Linux

From linux-sunxi.org
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