From nobody Mon Feb 9 11:47:00 2026 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) (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 494DC21FF4C for ; Sun, 21 Dec 2025 09:36:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766309819; cv=none; b=UKPQKKVjeE7J9ThytJnuORIBJGv8FUxXH+pbchPMgy1BffqcMm/oBsh7L7L/qbMJVCOOwQxPmshEHEJaVPm/YWI2MXfMUVNA9kWJ0LSBg8ngTTuIHGY28mF7ovYRHsV4NDQ3r/JNB41DHcid6fIU52/AeYR8Jbh4N6P52nOd0wU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766309819; c=relaxed/simple; bh=mjOv/Tov/J+hpGHcb49MekTvZZfF0eTnGqqMKw/v44k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=US0rO6DTXtkEVyNDM4WUccd/UDnoUGU7LIxFLD0qZLB0g/B6VNoH3WEXqCWNOZr3CZtSNYFr8ExIRl8pgW0dAAuRUM1+6isCJxTr9j0mQEtczClDxJZ0Q8O8FDe5pKbGBrLdhQQt26DPLpnhr80BFo0jI6X+vU3bNVZ6rHwKG8w= 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=D4X6UUBt; arc=none smtp.client-ip=209.85.214.172 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="D4X6UUBt" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-2a1388cdac3so29367995ad.0 for ; Sun, 21 Dec 2025 01:36:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766309818; x=1766914618; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=oXu17unAaFSnbyi+Zk+8K05FQ3JomK2ILh566085Hbg=; b=D4X6UUBtks6CyuyNrtf0kqp9j8kd0G+JCj+BLzSVapIjwuh9eF5G4ewtN3kelf7+bo vHVKV2pRcG9IgdDJSiGbHjNnDhP4bx8w233vtDccpzfurYazkWmlWiW5l9P8sTYEnGmY sbcSSkiinV04ClYgK+yJc++awmuu1ZRNWdI6ii+73l6Fs1frP5qyxpKGyTFNIhrOBv/o M/+Tq3kTYg6wMsUZtnC/RMoohq+wU0qI6i3QjStG6owpiybgAqjGDexN+n6yOjxzELw+ 2kVjt3x5k5y0jWfssmGj3tQXij6X9DKDP08EfdcrX4GSp22hxZUFMgmHjcAliZC6IilR AUvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766309818; x=1766914618; h=cc:to:in-reply-to:references: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=oXu17unAaFSnbyi+Zk+8K05FQ3JomK2ILh566085Hbg=; b=Cpr0GOvCMghR1HYeRlFbHbDleD0PcOoQPQF07QS2REFbCZBbkFurqRc7UM1LX3q0nf iVwhepUlH6arFJ1MmzHVVAEJdjNc0y0J5AQxW0vhudPUIMxG+PmgqBlQFy4Dr4Vd3JZN 5lbd4KoOQAywr7UnVwSZAZN7uhfOft0xDEdBl3Ob36ErFd6nX+BnAUJ1NK7DsvJGAXvR JefIfUCzE+siwRcNnH2IS5EESVF8Cgy3gmXJ7JVi9gRy3CHWQaAvNZLsT8LrJMlSrlB3 z30tiZciqlw075JHewxC+ij4F5ACEy+8bYvGMb/u2FEAFAlq3LqTJwHPqZxpfBtqpCCE oVOA== X-Forwarded-Encrypted: i=1; AJvYcCXRx3nNz3zKq5IgLZ/6CQSVUXcPoWgGVM84SW9mSreOrtgsTIfj26xBbl7OONSlF5IwsIQXwdJKtFDoCXM=@vger.kernel.org X-Gm-Message-State: AOJu0Yz3DBtr7/kj8TNHbhMsXWehmRNQMQVQXyhPS5oLRpLdn7Eq6pVN 9eOtNaOMzqEHfCRVPA1BzQ7JXByoicxbeWO5PeY1UkPraDdHy0llSZ35 X-Gm-Gg: AY/fxX6kCJkytM0uS0nqbn7zpveKQTakZGBFhYbtReuMFhnkyX3uv8Tu0oXgGDOvJcq 608Q65qMtJrV3JfKZi+o3yy8+mQL9nlZo7mtc17XaCkuHU6CS6HEQFZ4Bsch2p9ccvkiGyJp9sK VQ/p/40qFiw7j2rP5PtNKiNv5jy0n4yYvhz/3qvLGzn0f1RdWhJHtaP1QgF+lfTA4sH6IDTJKQ+ PKUSr241/fFLKGE6ZoREtYL76k67OoqPF0lyqfKVFRQVeANUDZFvV1KaRPxbnwkShytVZUWsikR mVuaZGMhm5ZZv3hYmsM6DVVv15X8DPEkjG7brWy+LA1GvaLVlCd9oVL2Niazu6dbE67WqFwwmWR ezeNzge+Pt9hvJ6MDPaYJELEZSODMzAGUUNIsc3t4f36YxY+Srn07OQH9o667ZbU/9kWlZ5nx0X jafvvss+CN/fCmrxt9WM11hilxca8ydrLlDr5QebMQXIfD4dWqLEuayjESvH8k63PBdgRpDY8uF NI6I51//O9KO+vbUsTcuUrzThUQG6xw7gBmBljiXNzqITCM/XavTJfbuV9HT9dfhayXsTl6PBtk /IgUWfgpI4nlqTyK1Rk+Dmxjsai6ciTk7S/iv2uE4aFwtkx/+9g= X-Google-Smtp-Source: AGHT+IE9k5fjbxVuGHt35PQ2dBtJxutYciuw15r6xi7up9QtKT9LAT9dU495uEoMz6Mf8cwTHCKz/A== X-Received: by 2002:a17:902:ce89:b0:2a0:de4f:ca7 with SMTP id d9443c01a7336-2a2f222add8mr78300875ad.1.1766309817611; Sun, 21 Dec 2025 01:36:57 -0800 (PST) Received: from [192.168.2.3] (2403-580a-80ed-0-4835-5a07-49e7-f115.ip6.aussiebb.net. [2403:580a:80ed:0:4835:5a07:49e7:f115]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a2f3d4d363sm67629495ad.62.2025.12.21.01.36.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 21 Dec 2025 01:36:57 -0800 (PST) From: James Calligeros Date: Sun, 21 Dec 2025 19:36:00 +1000 Subject: [PATCH v2 4/7] ASoC: soc-dai: define possible idle TDM slot modes 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: <20251221-tdm-idle-slots-v2-4-ed4d96413aec@gmail.com> References: <20251221-tdm-idle-slots-v2-0-ed4d96413aec@gmail.com> In-Reply-To: <20251221-tdm-idle-slots-v2-0-ed4d96413aec@gmail.com> To: Liam Girdwood , Mark Brown , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Kuninori Morimoto , Shengjiu Wang , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu Cc: linux-sound@vger.kernel.org, devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, asahi@lists.linux.dev, James Calligeros X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2335; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=mjOv/Tov/J+hpGHcb49MekTvZZfF0eTnGqqMKw/v44k=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDJnu+yc/yutKemkwZXlY9yK/5pRenn0/JK9vi3E23PHj9 rFvd3P6OyayMIhxMViKKbJsaBLymG3EdrNfpHIvzBxWJpAh0iINDEDAwsCXm5hXaqRjpGeqbahn aKhjrGPEwMUpAFPdF8bw3z/6pznLMVbdZTsX729YcvnxuSJLKz6mWU9vrzHWEMiYUMrwP0GFtep N5r9rKW8nhSZYHJ+mwbvD2srqxs45k654uU/+ywIA X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 Some audio devices, such as certain Texas Instruments codecs, include configurable bus keepers. We currently don't have a standardised way to configure such hardware, and instead rely on the hardware initialising setting itself up into a sane state. There are situations where this is insufficient, however, and some platforms require more concrete guarantees as to the state of the bus, and being able to explicitly configure bus keepers enables this. For example, some Apple Silicon machines have an odd bus topology where the SDOUT pins of all codecs are split across two data lines, which are summed via an OR gate in front of the receiving port on the SoC's I2S peripheral. Each line must transmit 0 while a codec on the other line is actively transmitting data, or the SoC will receive garbage data. To do this, one codec on each line must be configured to transmit zeroes during the other line's active TDM slots. Thus, we define seven possible bus-keeping modes that a device can be in: NONE (UB/as initialised), OFF (explicitly disabled), ZERO (actively transmit a 0), PULLDOWN, HIZ (floating), PULLUP, and DRIVE_HIGH. These will be consumed by CODEC/CPU drivers via a common DAI op, enabling the explicit configuration of bus keepers where required. Signed-off-by: James Calligeros --- include/sound/soc-dai.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/include/sound/soc-dai.h b/include/sound/soc-dai.h index 224396927aef..44dd06add52e 100644 --- a/include/sound/soc-dai.h +++ b/include/sound/soc-dai.h @@ -52,6 +52,21 @@ struct snd_compr_stream; #define SND_SOC_POSSIBLE_DAIFMT_AC97 (1 << SND_SOC_DAI_FORMAT_AC97) #define SND_SOC_POSSIBLE_DAIFMT_PDM (1 << SND_SOC_DAI_FORMAT_PDM) =20 +/* + * DAI TDM slot idle modes + * + * Describes a CODEC/CPU's behaviour when not actively receiving or + * transmitting on a given TDM slot. NONE is undefined behaviour. + * Add new modes to the end. + */ +#define SND_SOC_DAI_TDM_IDLE_NONE 0 +#define SND_SOC_DAI_TDM_IDLE_OFF 1 +#define SND_SOC_DAI_TDM_IDLE_ZERO 2 +#define SND_SOC_DAI_TDM_IDLE_PULLDOWN 3 +#define SND_SOC_DAI_TDM_IDLE_HIZ 4 +#define SND_SOC_DAI_TDM_IDLE_PULLUP 5 +#define SND_SOC_DAI_TDM_IDLE_DRIVE_HIGH 6 + /* * DAI Clock gating. * --=20 2.52.0