From a81cfbda9b6ed69ae4a58a63bf2fdaa016734279 Mon Sep 17 00:00:00 2001 From: MasaGratoR Date: Tue, 26 May 2026 20:20:50 +0200 Subject: [PATCH 1/2] Fix wrong struct for BatteryChargeInfoFields --- nx/include/switch/services/psm.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nx/include/switch/services/psm.h b/nx/include/switch/services/psm.h index 60691c2000..f37e7573db 100644 --- a/nx/include/switch/services/psm.h +++ b/nx/include/switch/services/psm.h @@ -73,6 +73,7 @@ typedef struct { u32 battery_charge_percentage; ///< Raw battery charged capacity per cent-mille u32 battery_charge_milli_voltage; ///< Voltage average in mV u32 battery_age_percentage; ///< Battery age per cent-mille + u32 unk_x2c; ///< It's the same value as charger_input_voltage_limit u32 usb_power_role; u32 usb_charger_type; u32 charger_input_voltage_limit; ///< Charger and external device voltage limit in mV @@ -81,7 +82,7 @@ typedef struct { bool controller_power_supply; bool otg_request; u8 reserved; - u8 unk_x40[0x14]; + u8 unk_x44[0x10]; } PsmBatteryChargeInfoFields; /// IPsmSession From ed58163d3e87e34867b740deadadd448e1f3252d Mon Sep 17 00:00:00 2001 From: MasaGratoR Date: Tue, 26 May 2026 20:30:17 +0200 Subject: [PATCH 2/2] Update psm to reflect struct changes --- nx/source/services/psm.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/nx/source/services/psm.c b/nx/source/services/psm.c index cdcdf314d0..0db068a865 100644 --- a/nx/source/services/psm.c +++ b/nx/source/services/psm.c @@ -143,6 +143,14 @@ Result psmGetBatteryChargeInfoFields(PsmBatteryChargeInfoFields *out_fields) { if (R_SUCCEEDED(rc)) { memset(out_fields, 0, sizeof(*out_fields)); memcpy(out_fields, &fields, sizeof(fields)); + out_fields->reserved = fields.reserved; + out_fields->otg_request = fields.otg_request; + out_fields->controller_power_supply = fields.controller_power_supply; + out_fields->fast_battery_charging = fields.fast_battery_charging; + out_fields->charger_input_current_limit = fields.charger_input_current_limit; + out_fields->charger_input_voltage_limit = fields.charger_input_voltage_limit; + out_fields->usb_charger_type = fields.usb_charger_type; + out_fields->usb_power_role = fields.usb_power_role; } return rc; }