From nobody Wed Jun 17 01:38:28 2026 Received: from smtp-relay-internal-1.canonical.com (smtp-relay-internal-1.canonical.com [185.125.188.123]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 38AD623AB9D for ; Wed, 22 Apr 2026 13:31:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.125.188.123 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776864687; cv=none; b=L6IU0ni+RrWJB4d052FfS+hB7V5xXpft5C3b54MHlw7uj0Ju2TaDBq1Mx71pXvXtQv21zX08OcW1IC9NoEwQM6F71h/g/ep2VJyNgmpnT5kaq4B42LW8QQbotkzaMOZbc9aiHGezLBn2zxvlsYxfqiRGUsMKWHYHtVCvU3QEqeg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776864687; c=relaxed/simple; bh=g94WIdZemflk+5Q1F4Y3kp9tBKG09ebztYM7MASnMIY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=ViEjMyjnbPPid+hQbpBcw18vswuijgG4fBIRAoQtwt9fj2sKBN+cWOb8R7Pw7WDIO4nO9haX37Qr8i9fUIU6sRRuzwZN9IACEMZS7jU8AsRYSjUle3s6FAaF5Yv4msrdqkN86/l2SK14Z/kPSAn7QVvhBEdm2mJ5T1aobBK7My0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=canonical.com; spf=pass smtp.mailfrom=canonical.com; dkim=pass (4096-bit key) header.d=canonical.com header.i=@canonical.com header.b=GJq5zgvQ; arc=none smtp.client-ip=185.125.188.123 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=canonical.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=canonical.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (4096-bit key) header.d=canonical.com header.i=@canonical.com header.b="GJq5zgvQ" Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 1680F3F9BB for ; Wed, 22 Apr 2026 13:31:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20251003; t=1776864677; bh=J/2SRm1BWzzBNEgb9l5BqievhU03d/3lP1bud/lb9eI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=GJq5zgvQ+Pac/0143a0VeyqOsfHPs6uiYQVOhSBlfx6MNRGR3XJ1lZghygeT2WG02 FNTIHavKoLByKEogW8SI2fp5eDDjYwDCZjm7MbIbKonHQZQaLM+R/04ezNvDgFvvf4 QNIB6i3XWO1nHwHOfU6RyjTIsMNcZ73QMISuKXbOS+xTi39LFPSCFz/vt3Th9hvPWq WPHpY9oRaaXgxXN2ZePPgi+tsByndVI/UJ2HSHlRU/AfRF/p8NM+pVkspCivS1yM7u 0hVvj2+ulPVNdX1/yiynuCvwWX4bWHbippAVBtgUvhhk/YM7cJhtKuH0rLm0EsFXpK 2vwwIQpzhAWXV+GjcpChOcJcxlnyZiIICktuyhpdc3eXLimY25ywuOywKmArjSEg1i yHFIoGOtqvuGog4GsFUMPPx7vBj2t31gW2RpyMI0f7JoRLZJ8Aw63mZCykTBSSQAAh R+diw1UWY4JgnPCuzcg/JSN9FYXsrko840x41KmET7DN/IxxIWFSdKjrhuUxVfeJpY yEcFGcKMPQ0R2EbQKtZKUNl1R7Qep0FIzfjrO3Tc7aO/Vo8alQe2erqrftX368Z53m UDFbnfkTvvCxVz5pcMKsdXuk2POwcVv2AQOmNtOYni8CzSiKxH/RCYUg14iQVC8rR1 t+2Sz8gTP+knXJUvhYiR1ElE= Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4837bfcfe0dso62660925e9.1 for ; Wed, 22 Apr 2026 06:31:17 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776864676; x=1777469476; 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=J/2SRm1BWzzBNEgb9l5BqievhU03d/3lP1bud/lb9eI=; b=CQSY46Mi76hptbWaxIQtFa6xleq+xT7EkbNP4mjuhGo8Gh/2CK0Z6IxsYdUrkNuuol aIdSiqPizyV5PGEkSgmZ97nuhCLFVhhLNVIMeJUGlHd+U3FRQ1VRlDlM6RL9GuY1efoa Lw6cjWZwKXDryAmWTt73xKk1S8r98Joo2BRcQBjvNikh0ae0dlYYHEAfJwVJKUwKOBAI hQhnTMzaojvb4arN+Yyl/6VR1SmPocg9MynhIwu76YgmQILovYIK/21AW0HLTQDDiE9I atQHTMHEPcG2vqRuRxHIeFIR4Q74CcTwTlaZRjsjMegALLCNBb0PmXFhcK4Hsg2XKXaS Welw== X-Forwarded-Encrypted: i=1; AFNElJ9mxkQwC50EeoTUrFsQvHQC6Yp3qmnykyHkymaw168WPY02Xuv5Ms4zfPAckGaQK8uGHFp/F/0+sMJL5RY=@vger.kernel.org X-Gm-Message-State: AOJu0YxqjEWrSwpzzwBBOhgOuYYL1gs0SYiLv4DHk3JD5wlliCB79DF5 Puj0kCcFEAWR8EIF184RnesX4YD9+qr3GFWaTeSrgW5kffj45Dw0MORhxGRgfBua0ZhwFyCKPkO Tnu50WJ7p0U6qOpizNCCwOFcZ1wvbKHy5QW4AkURRB+Ot3sCY9pVNBoGNR2KM0IpO6aX8MnCnXt dZjzQtqw== X-Gm-Gg: AeBDietYnES0dtEr9NzoyGI6RA8R/PTDBup2OfdWhIgsoW50EpM8d9X+P1Ob6NTwebW kdGqUlewhMB71liN7PPRu/zLQVXwnRXpIztaF7xcFl9TpUhlTq13byMTBx3lvglcirJ9+uN6wr+ U1EzntjCmCgKiS4AVbtQvK0oEa+WadAH/2f95zIm66UkwceExo757mutjSPsLE0Aq/g6sxyoWE/ UOYznVdgxXdFq1z7CInQ+VrwgVVYbSdlFu9aROuJ9imm0tsOVjyz8ly/FDcxeQwW98NTzPNAizm 7K8o636YRbAxEtyVjuM6U8qcykxKBE6szfcELVU/+FXHFQRrIfXsZ4ySJbAv49+kKuRSMOtEvDd 3jFqlNpPI0GnjSo8Z7MXQ6OPccKinLr3Sn+OSld1yqycR X-Received: by 2002:a05:600c:8b2e:b0:488:b749:8482 with SMTP id 5b1f17b1804b1-488fb7469b3mr345910165e9.4.1776864676425; Wed, 22 Apr 2026 06:31:16 -0700 (PDT) X-Received: by 2002:a05:600c:8b2e:b0:488:b749:8482 with SMTP id 5b1f17b1804b1-488fb7469b3mr345909755e9.4.1776864675910; Wed, 22 Apr 2026 06:31:15 -0700 (PDT) Received: from [127.0.0.1] ([2001:a61:259e:101:228f:8fe3:f47b:8e2c]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48a4b329542sm310769625e9.3.2026.04.22.06.31.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Apr 2026 06:31:15 -0700 (PDT) From: Tobias Heider Date: Wed, 22 Apr 2026 15:30:59 +0200 Subject: [PATCH v2] ASoC: qcom: x1e80100: limit speaker volumes 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: <20260422-x1e80100-audio-limit-v2-1-333258b97697@canonical.com> X-B4-Tracking: v=1; b=H4sIAJLN6GkC/4WNQQ6CMBBFr0Jm7Zh2glhdeQ/DopZBJoHWtNhgC He3cgGX7yX//RUSR+EE12qFyFmSBF+ADhW4wfono3SFgRQ1qiaNi2ajtFJo350EHGWSGfuGzyd WtquJoExfkXtZ9uy9LTxImkP87C9Z/+yfYNao8WIe1hnHTMw3Z33w4ux4dGGCdtu2L6zIe3+8A AAA X-Change-ID: 20260421-x1e80100-audio-limit-f6e75e0ad422 To: Srinivas Kandagatla , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai Cc: linux-sound@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold , Tobias Heider X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3740; i=tobias.heider@canonical.com; h=from:subject:message-id; bh=g94WIdZemflk+5Q1F4Y3kp9tBKG09ebztYM7MASnMIY=; b=owEBbQKS/ZANAwAKARNJjwMsz+naAcsmYgBp6M2ivmuhRgSi5vtje82PKSC71bssI2GP9oXv5 odfVqhMF7KJAjMEAAEKAB0WIQSbaT10QIAuim/4A94TSY8DLM/p2gUCaejNogAKCRATSY8DLM/p 2tliEACfrCjtdsitau9UKrLRDF2w6HYDgnasCyZNLuwgTGg6NDwgZX3SZJnGFhjsoYBge8a1ofR M4tPolS7/QVMToR1q0bllDRLCHIi/whYouX2x8ZCwzxaJ35zWmuXoQCdDo5ku1/n0WquOoqPSyw X55Mfk7mWlfsWG5Gvy3ijkjbgEypO0UtTx4WE2n07ldg8fVFmjE6WuDob+HeaVNAe7OfPf2Cb8o IVPb/yCowhSX8woqg5nvj8wo53YxDk/BZ/+S4zHP7wW5nWnJGGjYICx8+RuLTAyfQy18AqGtYUs TdkyeNOai0X2eTO1XICoZxsKeyEPxbJGI4Am6IUJZFsXbtlSYWN2xx3V4vdPkNuCgLgmgD0BXsd tRhjv8/kyQrJHlRJ84FqwDESw5cFoNLtFCCi0Hk01l1/4TX4bclVGWS3SS087s5GKFDILX9LAm9 /kTu/QUoNtIFz+EjBNtOOeIUhXoaVk2n3GPbC0qkCCc8XL0HMX5t5Mji1N1BgQ+OdEEyCnQLFOu GalqSQH8M31V+E70AaZhDLtxG+N5u+pE7b0//G7Su32JYecuzVTnh81zBAqrrYUAAoxxqzIJM/G 9qCuYnjgSNXGfSeCw3gRVGcj3LZu8km5GB2q8rTgTRo6Euzh2kQogjBnqaNoJykVwzHwHKI7nMs mR9hgb/IQdTg0Zw== X-Developer-Key: i=tobias.heider@canonical.com; a=openpgp; fpr=9B693D7440802E8A6FF803DE13498F032CCFE9DA Limit the digital gain and PA volumes to a combined -3 dB in the machine driver to reduce the risk of speaker damage until we have active speaker protection in place (or higher safe levels have been established). Based on commit c481016bb4f8 ("ASoC: qcom: sc8280xp: limit speaker volumes") which addressed the same issue on the sc8280x SoC with some minor changes as explained below. The Digital Volume behaves almost identical to sc8280x since both use the same lpass-wsa-macro, but x1e80100 has two sets of controls prefixed with WSA and WSA2. For PA x1e80100 machines use wsa884x amplifiers which expose a linear scale from -9 dB to 9 dB with a 1.5 dB step size giving us 0 dB =3D -9 dB + 6 * 1.5 dB. On x1e80100 there are two different speaker topologies we need to handle: 2-Speakers: SpkrLeft, Spkr Right 4-Speakers: WooferLeft, WooferRight, TweeterLeft, TweeterRight Signed-off-by: Tobias Heider Reviewed-by: Srinivas Kandagatla Tested-by: Srinivas Kandagatla --- On x1e80100 laptops like the Lenovo T14s Gen 6 most of the audio enablement work has landed upstream at this point meaning it works out of the box on any Linux system. One unresolved problem is that there isn't a solution for active speaker protection yet and the current default seems to be unsafe. With the current defaults it is trivial to crank up the volume to a point where the T14s will hit what I believe is a hardware protection that shuts down the speakers entirely until the next reboot. I am worried that this means there is also a risk cause permanent hardware damage with the default settings. This patch adopts the same limits we currently use for sc8280x to x1e80100. With this applied I can't trigger the same shutoff I described above. --- Changes in v2: - Adjusted Digital Volume names as suggested by Mark Brown - Link to v1: https://lore.kernel.org/r/20260421-x1e80100-audio-limit-v1-1-= 98bac8cee2ee@canonical.com --- sound/soc/qcom/x1e80100.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/sound/soc/qcom/x1e80100.c b/sound/soc/qcom/x1e80100.c index a3f4785c4bbe62e7e027deb6d810e0a0275d81c2..c81df41ace8839cf912a5551451= 8f1d8cd3e58c1 100644 --- a/sound/soc/qcom/x1e80100.c +++ b/sound/soc/qcom/x1e80100.c @@ -27,10 +27,29 @@ static int x1e80100_snd_init(struct snd_soc_pcm_runtime= *rtd) { struct x1e80100_snd_data *data =3D snd_soc_card_get_drvdata(rtd->card); struct snd_soc_dai *cpu_dai =3D snd_soc_rtd_to_cpu(rtd, 0); + struct snd_soc_card *card =3D rtd->card; struct snd_soc_jack *dp_jack =3D NULL; int dp_pcm_id =3D 0; =20 switch (cpu_dai->id) { + case WSA_CODEC_DMA_RX_0: + case WSA_CODEC_DMA_RX_1: + /* + * Set limit of -3 dB on Digital Volume and 0 dB on PA Volume + * to reduce the risk of speaker damage until we have active + * speaker protection in place. + */ + snd_soc_limit_volume(card, "WSA WSA_RX0 Digital Volume", 81); + snd_soc_limit_volume(card, "WSA WSA_RX1 Digital Volume", 81); + snd_soc_limit_volume(card, "WSA2 WSA_RX0 Digital Volume", 81); + snd_soc_limit_volume(card, "WSA2 WSA_RX1 Digital Volume", 81); + snd_soc_limit_volume(card, "SpkrLeft PA Volume", 6); + snd_soc_limit_volume(card, "SpkrRight PA Volume", 6); + snd_soc_limit_volume(card, "WooferLeft PA Volume", 6); + snd_soc_limit_volume(card, "TweeterLeft PA Volume", 6); + snd_soc_limit_volume(card, "WooferRight PA Volume", 6); + snd_soc_limit_volume(card, "TweeterRight PA Volume", 6); + break; case DISPLAY_PORT_RX_0: dp_pcm_id =3D 0; dp_jack =3D &data->dp_jack[dp_pcm_id]; --- base-commit: b4e07588e743c989499ca24d49e752c074924a9a change-id: 20260421-x1e80100-audio-limit-f6e75e0ad422 Best regards, --=20 Tobias Heider