Drop the Pocket EVO fan tachometer interrupt - #25
Conversation
pocket-common.dtsi gives pwm-fan an edge-falling TLMM interrupt on GPIO 64 for the tacho. On a Pocket EVO it fires about 80 times a second whenever the fan spins; /proc/interrupts showed IRQ 202 past 234,000 counts. Nothing reads the resulting fan1_input -- armada-powerd only writes pwm1 and pwm1_enable -- so the interrupt buys nothing and costs a steady stream of CPU0 wakeups. It also keeps the SoC from staying in suspend-to-RAM: with the fan spinning a deep suspend held 2-8s, and with it stopped the same suspend held 13-92s. The AYN Odin 3, which suspends for hours, declares no tacho interrupt at all in cq8725s-ayn-common.dtsi. Overridden in the EVO .dts rather than the shared DTSI, which is included by six other boards whose fan wiring has not been checked. Split out of the SM8550 deep suspend work: this stands alone, does not depend on those patches, and is inert on a device that only fake-suspends. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Correction to the suspend-duration evidence in this PR, having since found a confounder. I claimed deep suspend held 2–8s with the fan spinning versus 13–92s stopped. Those runs were all taken with This does not change the case for this PR, which never rested on the suspend numbers:
Those stand on their own and are unaffected. I'd just discount the suspend-duration figures until they can be re-measured with #27 applied. |
Split out of #23 per review — this stands on its own, doesn't depend on the ROCKNIX suspend series, and is inert on a device that only fake-suspends.
Problem
qcs8550-ayaneo-pocket-common.dtsigivespwm-fanan edge-falling TLMM interrupt on GPIO 64 for the tachometer. On a Pocket EVO it fires ~80×/sec whenever the fan spins —/proc/interruptsshowed IRQ 202 past 234,000 counts:Nothing consumes the resulting
fan1_input.armada-powerdonly ever writespwm1/pwm1_enable; no reader of fan RPM exists anywhere in armada or armada-packages. So it's a continuous stream of CPU0 interrupts for a value nobody uses.The AYN Odin 3 declares no tacho interrupt at all in
cq8725s-ayn-common.dtsi, and itsfan1_inputis simply empty.Effect on suspend
Secondary, and the reason it turned up: it also stops the SoC staying in suspend-to-RAM. With the fan spinning a
deepsuspend held 2–8s; with the fan stopped the same suspend held 13–92s.Being straight about that evidence — the suspend-duration measurements were noisy (run-to-run variance was comparable to the effect), so treat it as supporting rather than decisive. The interrupt rate itself is directly measured and not in doubt.
Scope
Overridden in the EVO
.dts, not the shared DTSI — that file is included by six other boards (Pocket ACE/DMG/DS/S2K and two Retroid) whose fan wiring I haven't checked.Cost
fan1_inputstops reporting RPM, matching the Odin 3. No functional impact given nothing reads it.Testing
Verified on a Pocket EVO:
pwm-fangone from/proc/interrupts,pwm-fannode in the live DT has nointerruptsproperty, fan control unchanged (armada-powerdstill drivespwm1normally, fan spins up and down under load as before).🤖 Generated with Claude Code