[PATCH 0/4] ALSA: isa/gus: add ISA PM support for GUS Classic, GUS Extreme and GUS MAX

From: Cássio Gabriel

Date: Sun Apr 05 2026 - 23:20:26 EST


gusclassic, gusextreme and gusmax still leave their ISA PM callbacks
disabled, so a suspend/resume cycle does not restore usable GF1 operation
on these cards.

A simple wrapper around the existing GF1 start/stop paths is not enough.
Those helpers are probe and shutdown paths: they reset software handlers
and tear down runtime state such as the DRAM allocator, timer state, DMA
queues, PCM state and UART setup. Resume instead needs a narrower recovery
path that rebuilds the GF1 hardware state without rerunning probe-only
detection or discarding the bookkeeping kept by the card instance.

gusextreme and gusmax also need board-specific resume glue around that
shared GF1 recovery path. GUS Extreme has to restore the ES1688-side GF1
routing before the GF1 is touched again. GUS MAX has to rewrite the MAX
control register and restore the attached WSS codec state before the full
card is brought back.

This series does that in four steps:

- add shared GF1 suspend/resume helpers that quiesce PCM, DMA and UART
activity and restart the GF1 hardware without rerunning memory detection
or allocator initialization
- wire gusclassic up to the shared helpers
- wire gusextreme up as well, restoring the ES1688-side GF1 routing
before the shared resume path runs
- wire gusmax up too, restoring the MAX control register and the WSS codec
state around the shared GF1 resume path

The scope is limited to restoring post-resume usability for these ISA
cards. It does not attempt transparent continuation of active GF1 PCM or
synth state across suspend, and userspace may still need to reprepare
streams or reload onboard sample data after resume. Open rawmidi
substreams are restored only to a usable post-resume state.

Signed-off-by: Cássio Gabriel <cassiogabrielcontato@xxxxxxxxx>
---
Cássio Gabriel (4):
ALSA: gus: add shared GF1 suspend and resume helpers
ALSA: gusclassic: add ISA suspend and resume callbacks
ALSA: gusextreme: add ISA suspend and resume callbacks
ALSA: gusmax: add ISA suspend and resume callbacks

include/sound/gus.h | 8 ++++++
sound/isa/gus/gus_dma.c | 33 ++++++++++++++++++++++++
sound/isa/gus/gus_main.c | 36 +++++++++++++++++++++++++++
sound/isa/gus/gus_pcm.c | 7 +++---
sound/isa/gus/gus_reset.c | 62 ++++++++++++++++++++++++++++++++++++++--------
sound/isa/gus/gus_timer.c | 14 +++++++++++
sound/isa/gus/gus_uart.c | 47 +++++++++++++++++++++++++++++++++++
sound/isa/gus/gusclassic.c | 21 +++++++++++++++-
sound/isa/gus/gusextreme.c | 57 +++++++++++++++++++++++++++++++++++-------
sound/isa/gus/gusmax.c | 28 ++++++++++++++++++++-
10 files changed, 289 insertions(+), 24 deletions(-)
---
base-commit: 9f2a23bd5d30dc0968e56a2b6e5edb58aff1bc6d
change-id: 20260405-b4-alsa-gus-isa-pm-34f42868428e

Best regards,
--
Cássio Gabriel <cassiogabrielcontato@xxxxxxxxx>