diff --git a/firmware/export/config/rgnano.h b/firmware/export/config/rgnano.h index 2e12254270..b1a18c723d 100644 --- a/firmware/export/config/rgnano.h +++ b/firmware/export/config/rgnano.h @@ -13,7 +13,7 @@ /* For Rolo and boot loader */ #define MODEL_NUMBER 100 -#define MODEL_NAME "RG Nano" +#define MODEL_NAME "Anbernic RG Nano" #ifndef SIMULATOR #define USB_NONE @@ -60,12 +60,17 @@ #define AB_REPEAT_ENABLE /* Battery stuff */ -#define CONFIG_BATTERY_MEASURE PERCENTAGE_MEASURE +#define CONFIG_BATTERY_MEASURE (PERCENTAGE_MEASURE|VOLTAGE_MEASURE|CURRENT_MEASURE) #define CONFIG_CHARGING CHARGING_MONITOR #define HAVE_POWEROFF_WHILE_CHARGING #define BATTERY_DEV_NAME "axp20x-battery" #define POWER_DEV_NAME "axp20x-usb" +#define BATTERY_CAPACITY_DEFAULT 1050 /* default battery capacity */ +#define BATTERY_CAPACITY_MIN 1050 /* min. capacity selectable */ +#define BATTERY_CAPACITY_MAX 1050 /* max. capacity selectable */ +#define BATTERY_CAPACITY_INC 0 /* capacity increment */ + /* Define this for LCD backlight available */ #define BACKLIGHT_RG_NANO #define HAVE_BACKLIGHT diff --git a/firmware/target/hosted/anbernic/power-rgnano.c b/firmware/target/hosted/anbernic/power-rgnano.c index bd7832ef93..340dc2de3e 100644 --- a/firmware/target/hosted/anbernic/power-rgnano.c +++ b/firmware/target/hosted/anbernic/power-rgnano.c @@ -29,9 +29,32 @@ #include "panic.h" #include "sysfs.h" +const char * const sysfs_bat_voltage = + "/sys/class/power_supply/axp20x-battery/voltage_now"; + +const char * const sysfs_bat_current = + "/sys/class/power_supply/axp20x-battery/current_now"; + const char * const sysfs_bat_level = "/sys/class/power_supply/axp20x-battery/capacity"; +unsigned int rgnano_power_get_battery_voltage(void) +{ + int battery_voltage; + sysfs_get_int(sysfs_bat_voltage, &battery_voltage); + + return battery_voltage; +} + +unsigned int rgnano_power_get_battery_current(void) +{ + int battery_current; + sysfs_get_int(sysfs_bat_current, &battery_current); + + /* Current is in microamps */ + return (battery_current / 1000); +} + unsigned int rgnano_power_get_battery_capacity(void) { int battery_level; diff --git a/firmware/target/hosted/anbernic/power-rgnano.h b/firmware/target/hosted/anbernic/power-rgnano.h index 21fc7da9dd..d8f0098fc1 100644 --- a/firmware/target/hosted/anbernic/power-rgnano.h +++ b/firmware/target/hosted/anbernic/power-rgnano.h @@ -23,5 +23,7 @@ #include #include "config.h" +unsigned int rgnano_power_get_battery_voltage(void); +unsigned int rgnano_power_get_battery_current(void); unsigned int rgnano_power_get_battery_capacity(void); #endif /* _POWER_RGNANO_H_ */ diff --git a/firmware/target/hosted/anbernic/powermgmt-rgnano.c b/firmware/target/hosted/anbernic/powermgmt-rgnano.c index a6a8b34a52..35904f49cb 100644 --- a/firmware/target/hosted/anbernic/powermgmt-rgnano.c +++ b/firmware/target/hosted/anbernic/powermgmt-rgnano.c @@ -22,6 +22,34 @@ #include "power.h" #include "power-rgnano.h" +/* System handles powering off at 2% */ +unsigned short battery_level_disksafe = 0; +unsigned short battery_level_shutoff = 0; + +/* voltages (millivolt) of 0%, 10%, ... 100% when charging disabled */ +/* read from /sys/class/power_supply/axp20x-battery/voltage_now */ +/* in 5s intervals and averaged out */ +unsigned short percent_to_volt_discharge[11] = +{ + 3400, 3597, 3665, 3701, 3736, 3777, 3824, 3882, 3944, 4023, 4162 +}; + +/* voltages (millivolt) of 0%, 10%, ... 100% when charging enabled */ +unsigned short percent_to_volt_charge[11] = +{ + 3512, 3729, 3795, 3831, 3865, 3906, 3953, 4010, 4072, 4150, 4186 +}; + +int _battery_voltage(void) +{ + return rgnano_power_get_battery_voltage(); +} + +int _battery_current(void) +{ + return rgnano_power_get_battery_current(); +} + int _battery_level(void) { return rgnano_power_get_battery_capacity(); diff --git a/packaging/rgnano/rgnano.make b/packaging/rgnano/rgnano.make index 6fa903b9ca..d9e1d05e53 100644 --- a/packaging/rgnano/rgnano.make +++ b/packaging/rgnano/rgnano.make @@ -1,5 +1,5 @@ RG_NANO_DIR=$(ROOTDIR)/packaging/rgnano -MKSQUASHFS=$(dir $(CPP))mksquashfs +MKSQUASHFS=$(FUNKEY_SDK_PATH)/bin/mksquashfs INSTALL_DIR=$(OPK_BUILD_DIR)/install OPK_BUILD_DIR=opkdir