erosqhosted: Support HW volume control on rev2+ hardware

This also adds hwrev info to the debug output.

Change-Id: Ia75218cacb8f756a23a77334ea6ab69ac3b20d10
This commit is contained in:
Solomon Peachy 2024-10-10 13:25:47 -04:00
parent 1c28cb439b
commit 51ba8b3eee
4 changed files with 95 additions and 20 deletions

View file

@ -45,16 +45,16 @@ const char * const sysfs_bat_status[2] = {
"/sys/class/power_supply/axp_battery/status",
};
static int hwver = 0;
int hwver = 1; /* Exported */
unsigned int erosq_power_get_battery_voltage(void)
{
int battery_voltage;
int x = sysfs_get_int(sysfs_bat_voltage[hwver], &battery_voltage);
int x = sysfs_get_int(sysfs_bat_voltage[hwver == 4], &battery_voltage);
if (!x) {
hwver ^= 1;
sysfs_get_int(sysfs_bat_voltage[hwver], &battery_voltage);
if (!x && hwver != 4) {
hwver = 4;
sysfs_get_int(sysfs_bat_voltage[hwver == 4], &battery_voltage);
}
return battery_voltage/1000;
@ -63,11 +63,11 @@ unsigned int erosq_power_get_battery_voltage(void)
unsigned int erosq_power_get_battery_capacity(void)
{
int battery_capacity;
int x = sysfs_get_int(sysfs_bat_capacity[hwver], &battery_capacity);
int x = sysfs_get_int(sysfs_bat_capacity[hwver == 4], &battery_capacity);
if (!x) {
hwver ^= 1;
sysfs_get_int(sysfs_bat_capacity[hwver], &battery_capacity);
if (!x && hwver != 4) {
hwver = 4;
sysfs_get_int(sysfs_bat_capacity[hwver == 4], &battery_capacity);
}
return battery_capacity;
@ -81,11 +81,11 @@ bool charging_state(void)
{
if ((current_tick - last_tick) > HZ/2 ) {
char buf[12] = {0};
int x = sysfs_get_string(sysfs_bat_status[hwver], buf, sizeof(buf));
int x = sysfs_get_string(sysfs_bat_status[hwver == 4], buf, sizeof(buf));
if (!x) {
hwver ^= 1;
sysfs_get_string(sysfs_bat_status[hwver], buf, sizeof(buf));
if (!x && hwver != 4) {
hwver = 4;
sysfs_get_string(sysfs_bat_status[hwver == 4], buf, sizeof(buf));
}
last_tick = current_tick;