From nobody Wed Apr 1 20:46:27 2026 Received: from mail-dl1-f47.google.com (mail-dl1-f47.google.com [74.125.82.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8C88435DA63 for ; Wed, 1 Apr 2026 11:45:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775043947; cv=none; b=bzrxMQkxaIBfD1s2iDEX5aV8rRR28SpcqviLjNLYNEZTXFFwIiNPsmwGAQyg14p0GxVFhMG+R/M0Ud5UIZTulMiaiiZZQnTcHAKYRDHr8Vcpsq7J7EkEMaJ0/H3pALvArR5Us6kUoLN+th6Eg7h9AtMr/B6JJpfAlc5r9/8TtIg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775043947; c=relaxed/simple; bh=SgAKu3w02+QeTfuUSDWuohDIpW34VKXcOJeJEWHNI8A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=G4Eg/fUzUBb1PcFhU5hOvjshdq70BLXDqQSpffEZqW0g4KtteTNQOmNVZJuNaNJ31bOMVGygx3RH8DAjdszfjyb2FplNjtUu8pO1637a78KCUpjU5Nba+RdCMD0pgMfdDXx0fML3mlQMzl0yQ1D6QCa45KCtw4JUskla/qEeLB4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=MLqV4iEB; arc=none smtp.client-ip=74.125.82.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="MLqV4iEB" Received: by mail-dl1-f47.google.com with SMTP id a92af1059eb24-12a695044a4so2849121c88.0 for ; Wed, 01 Apr 2026 04:45:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775043945; x=1775648745; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=EgccuMBanA331lWrXQNSWh5waQBY5u44pRfQZ1IB7tA=; b=MLqV4iEBTQCHPHrsVzmboTbFbLD0kIgwzhmIEMA6e2nka8zGgmbXHKWDxX2ThjLcSr DZwHJ4ksiOwzzwsKexqaYIJx4TQqncNoMTHvB1uBjiMYGkMwTWb5wrvV4/YU+I6fa1Hu ehr6U9KWpnxeWeNpuWAYyTAkNqcDm0eSV1uTta92QRsZ06PA6as/6GwPaJTM1RygiYvJ zkIVVU4abwZUU77KVTjHK/69LrwFaQcJitoxplycSGslsQcfyAs8FXTchZYY1N+QHV0a p5J5XA40slbF+rf8V70GhgSEhsGKG5zJRBJBVk3DboN+6ibfTlGDiyKNnHrfMMlcWw13 nZkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775043945; x=1775648745; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=EgccuMBanA331lWrXQNSWh5waQBY5u44pRfQZ1IB7tA=; b=XHfqfVhMd6CGzDgmLenp0BNqUmWd9UOcJ3puXu6pvbmtKOMX8qOIbxixk4OuEdQOhi FRZ9R7Dw03tyGPR9JD9wbCdMUfBNao/Cszroz7N2ToGh997LbbtEEsyhV33CR54lOhDi SZWoTulW27EWdk4HBuX53RRwTPSO7BdKWhTHJ/5Ni0DN7dVY2/2LjlZ1t2E9htxfMDhc TmbmjeOTmBMA0bU6gTsjIvi9usSARKuE8vnAqp1LXIreInWx7rYP+MqYf7OXHVT1Fxsx ENbVTpFcjsyj82RCXvw0Q9qj34N3taXsUQWd4MAsBlt1HNMm6J6e5MPMa4QpdMkZ6E3t 3YEg== X-Forwarded-Encrypted: i=1; AJvYcCUbf4b5BQSsl3faHRNmEHbpbHOqg7QTDZQ6BhKXcwhox/dFkSWK8ta0bABTeGyS/4MUIy79Vp81Wp/giBY=@vger.kernel.org X-Gm-Message-State: AOJu0YyKXWPUdDm/Y2EZk8OP0b1hU7blqOlp9Rnca1anfTFpwHaikoBj KyrPdj8DD3UtZiQkaS2efMq3RWI6avsP6qhwy5R4qSleJOPyiGgHh83VTR1SEro2 X-Gm-Gg: ATEYQzyJRtMuuUQKH4m46+8+uXiWgP+ehy6vVu+RA2lPQ21qlO0UZS8A8hNNu3l50Yo t3/eZWFQu7TUDzVZDLzZGvzKMSeTrM6nOtA2ZSjdqWkNiMFaDSUnJVJlpnQKZHaIKhlHLXkJjQ/ uHqjjZs/4OAnlGn/dp+09SpX+Dg3Q2fY134Ou0ngGpfWqmENIeHnQ7sP2vvSFSeibc0Ye8mHlUr CTa0SMzbhHiHIe3G44VEamYGoEMfSKQ9aoiWEx9tlhR/voo5RWJ+b1R112dwuXa/5104P1+I60+ 9mbV32wSUo6Gp4WIkyC8S8wvZmLtT87cDEE6O+oiEw4+NZeFp8XegWxmjNrtPdiqzab4ZOnn95Y 8/Gwc2S/mxkBx4HRMpa0dGJBYBtdWJL95xVniglJHfFJ+ptglH7DYJF9kZyGbIYNe1/5HBLVpx1 fwXc7Ts0BPu9gqbfkob9VJgz/EjDBmlmtOHYR41hs6FczJfJWuYow2F0g/V2spvbWOw8us3YF+N 6+ZD7yHRrty9lQ= X-Received: by 2002:a05:7301:1015:b0:2c5:ed1b:c8a with SMTP id 5a478bee46e88-2c930c76645mr1830944eec.5.1775043945177; Wed, 01 Apr 2026 04:45:45 -0700 (PDT) Received: from [192.168.1.18] (177-4-161-218.user3p.v-tal.net.br. [177.4.161.218]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2c3c4cbbc1fsm11999306eec.13.2026.04.01.04.45.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Apr 2026 04:45:44 -0700 (PDT) From: =?utf-8?q?C=C3=A1ssio_Gabriel?= Date: Wed, 01 Apr 2026 08:45:37 -0300 Subject: [PATCH] ALSA: es1688: add ISA suspend and resume callbacks Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260401-alsa-es1688-pm-v1-1-510767628fe6@gmail.com> X-B4-Tracking: v=1; b=H4sIAAAAAAAC/yXMQQqDMBBA0avIrB2Io4TQq4iLmEx1xFrJaCmId ze2y7f4/wDlJKzwKA5I/BGV95JRlQWE0S8Do8RsIEPW1LVBP6tH1so6h+sLXWMicYhEzkKO1sR P+f6Gbfe37v3EYbsvcJ4Xg7o09XIAAAA= X-Change-ID: 20260330-alsa-es1688-pm-840d2ecd2286 To: Takashi Iwai , Jaroslav Kysela Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, =?utf-8?q?C=C3=A1ssio_Gabriel?= X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=3132; i=cassiogabrielcontato@gmail.com; h=from:subject:message-id; bh=SgAKu3w02+QeTfuUSDWuohDIpW34VKXcOJeJEWHNI8A=; b=owGbwMvMwCV2IdZeKur/u2bG02pJDJlnWdOrlaxbjjzMdjRPrju6Il5m3nXLosh9S3ibTf1PG nHf8ovuKGVhEONikBVTZFmdtMhyT9eDq/VxKzxg5rAygQxh4OIUgIk8Xs7IcHZ26eGdPRGtkRtX TNqlpvqENXHznimXFBcnKTwIq553vpSRYc9pBaeTNyed36J4Ra/ZwWJpr/xFzVhTztWxXPt6TG+ d5wQA X-Developer-Key: i=cassiogabrielcontato@gmail.com; a=openpgp; fpr=AB62A239BC8AE0D57F5EA848D05D3F1A5AFFEE83 The ISA ES1688 driver still carries a disabled suspend/resume block in its isa_driver definition, while the same file already provides minimal power-management handling for the PnP ES968 path. Add ISA-specific PM callbacks and factor the existing ES1688 suspend and resume sequence into common card-level helpers shared by both probe paths. Suspend moves the card to D3hot. Resume reinitializes the chip with snd_es1688_reset() and restores the card to D0, propagating reset failures to the caller. This wires up power-management callbacks for the ISA path and keeps the PM handling consistent between the ISA and PnP probe paths. Signed-off-by: C=C3=A1ssio Gabriel --- sound/isa/es1688/es1688.c | 50 +++++++++++++++++++++++++++++++++++--------= ---- 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/sound/isa/es1688/es1688.c b/sound/isa/es1688/es1688.c index 6a95dfb7600a..7255b34f9148 100644 --- a/sound/isa/es1688/es1688.c +++ b/sound/isa/es1688/es1688.c @@ -184,12 +184,44 @@ static int snd_es1688_isa_probe(struct device *dev, u= nsigned int n) return 0; } =20 +#ifdef CONFIG_PM +static int snd_es1688_card_suspend(struct snd_card *card) +{ + snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); + return 0; +} + +static int snd_es1688_card_resume(struct snd_card *card) +{ + struct snd_es1688 *chip =3D card->private_data; + int err; + + err =3D snd_es1688_reset(chip); + if (err < 0) + return err; + + snd_power_change_state(card, SNDRV_CTL_POWER_D0); + return 0; +} + +static int snd_es1688_isa_suspend(struct device *dev, unsigned int n, + pm_message_t state) +{ + return snd_es1688_card_suspend(dev_get_drvdata(dev)); +} + +static int snd_es1688_isa_resume(struct device *dev, unsigned int n) +{ + return snd_es1688_card_resume(dev_get_drvdata(dev)); +} +#endif + static struct isa_driver snd_es1688_driver =3D { .match =3D snd_es1688_match, .probe =3D snd_es1688_isa_probe, -#if 0 /* FIXME */ - .suspend =3D snd_es1688_suspend, - .resume =3D snd_es1688_resume, +#ifdef CONFIG_PM + .suspend =3D snd_es1688_isa_suspend, + .resume =3D snd_es1688_isa_resume, #endif .driver =3D { .name =3D DEV_NAME @@ -266,20 +298,12 @@ static void snd_es968_pnp_remove(struct pnp_card_link= *pcard) static int snd_es968_pnp_suspend(struct pnp_card_link *pcard, pm_message_t state) { - struct snd_card *card =3D pnp_get_card_drvdata(pcard); - - snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); - return 0; + return snd_es1688_card_suspend(pnp_get_card_drvdata(pcard)); } =20 static int snd_es968_pnp_resume(struct pnp_card_link *pcard) { - struct snd_card *card =3D pnp_get_card_drvdata(pcard); - struct snd_es1688 *chip =3D card->private_data; - - snd_es1688_reset(chip); - snd_power_change_state(card, SNDRV_CTL_POWER_D0); - return 0; + return snd_es1688_card_resume(pnp_get_card_drvdata(pcard)); } #endif =20 --- base-commit: 28f54b0f58c5855d924f970e05ddea9a9d51842f change-id: 20260330-alsa-es1688-pm-840d2ecd2286 Best regards, -- =20 C=C3=A1ssio Gabriel