Module Name: src Committed By: jmcneill Date: Mon Dec 30 12:31:10 UTC 2024
Modified Files: src/sys/arch/evbarm/conf: GENERIC64 src/sys/dev/acpi: files.acpi Added Files: src/sys/dev/acpi: qcomipcc.c qcomipcc.h qcompas.c qcompep.c qcompep.h qcomscm.c qcomscm.h qcomsmem.c qcomsmem.h qcomsmptp.c qcomsmptp.h qcomspmi.c Log Message: arm64: Add support for Snapdragon X1E battery and charger sensors. This is a port of a set of drivers from OpenBSD, adapted to use ACPI instead of FDT bindings. These drivers are required to boot firmware on the application DSP which is required to read sensors. This is an impressive collection of work on the OpenBSD side -- big thank you to Patrick for writing this code and his help with this porting effort. Firmware is signed and as a result may be board specific. The qcompas(4) driver looks for firmware files in qcompas/<subsystem> where <subsystem> is the string returned by the _SUB method on the ADSP device node. For example, on Lenovo ThinkPad T14s Gen 6 the subsystem ID is "233817AA". The files "qcadsp8380.mbn" and "adsp_dtbs.elf" must be placed in this directory to read sensor data. These files can be obtained by downloading the appropriate OEM drivers for Windows. When everything is online, the sensors are reported by sysmon_envsys and the charger creates a sysmon_pswitch of type PSWITCH_TYPE_ACADAPTER. The goal is to match the acpiacad(4) and acpibat(4) behaviour as much as possible. XXX Firmware loading sometimes fails, still looking into this. When this happens, sensors are not registered. [battery] design voltage: 0.000 V voltage: 12.980 V design cap: 58.000 Wh last full cap: 59.810 Wh charge: 59.740 2.000% 8.998% Wh (99.88%) charge rate: N/A discharge rate: N/A charging: FALSE charge state: NORMAL discharge cycles: 4 0 0 0 0 none temperature: 30.230 degC [charger] connected: TRUE To generate a diff of this commit: cvs rdiff -u -r1.221 -r1.222 src/sys/arch/evbarm/conf/GENERIC64 cvs rdiff -u -r1.135 -r1.136 src/sys/dev/acpi/files.acpi cvs rdiff -u -r0 -r1.1 src/sys/dev/acpi/qcomipcc.c \ src/sys/dev/acpi/qcomipcc.h src/sys/dev/acpi/qcompas.c \ src/sys/dev/acpi/qcompep.c src/sys/dev/acpi/qcompep.h \ src/sys/dev/acpi/qcomscm.c src/sys/dev/acpi/qcomscm.h \ src/sys/dev/acpi/qcomsmem.c src/sys/dev/acpi/qcomsmem.h \ src/sys/dev/acpi/qcomsmptp.c src/sys/dev/acpi/qcomsmptp.h \ src/sys/dev/acpi/qcomspmi.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.