From nobody Mon Apr 13 06:57:58 2026 Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) (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 8FBD832ED2A for ; Sun, 1 Mar 2026 08:06:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772352378; cv=none; b=Z8GiCaj0n3cJz6Xx9A0CBh96Rvg1SPvEoYyMKy5cgS7mS2dBHVqREzfRJfQlXM12jC8ynl8xVuLFDSh/Qefhg6D3Hv7bU2nY8M/RzDr4tgzTJEzdhZgmtE3WgppE+wnMfeiEj0ilYEmGbr0+nXPMntTX5xZeRutvSDXHSiiKm+A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772352378; c=relaxed/simple; bh=HNjAg2xdRxewqWz3EXUwC/PrDpEvfT/uT/eZPObjn+w=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sosOa43v7NYCVx4P9OuB0Vd/u/6dJJsxyeMNGP0dp3EVeXIpIdc1L/5xoz7GJGhIJX3n6+t5yrku58tIfQLI3AIOXhxC02sutbs/8Zuz4Om+VQx7kflSC+aWRxnC1SQd6bjH0aK6ZXe2R+FKckzvegbClJx0/db8GjzvakEz7FU= 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=Ee9nhMZN; arc=none smtp.client-ip=209.85.216.53 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="Ee9nhMZN" Received: by mail-pj1-f53.google.com with SMTP id 98e67ed59e1d1-35980423087so312163a91.3 for ; Sun, 01 Mar 2026 00:06:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772352376; x=1772957176; 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=HKbztpHgM8PKD0CcFwHhxyWzraGVBnVo495326Vfa6Y=; b=Ee9nhMZNNt9f6rtp0dxzeXF5BSJx4DMEFgz38EJXcCHPAF3eQVEENH8Vd1bq+w6AEr YmUzCBUpR/ZiA4DvhdK8iGHLj3U7D5YAHJYU74vzrxootWoCVHE09QfNhEML188l/x3A 5hVEAv5XjpbbhVF9gGugeevnrk2cFToI06foGzQdLKXYt0n/WxiC29bNkbE3hFyeJTtc HNR4yS7MuSlbLtaeBpZdQLOrlwZTCb/aGozpiQG1JxvObxtdyQmcsAn7IjovgFHAZEax bfYrO2SL7XBGqa31bj5022wXGJ/ys2K2CuA8iHG3nAI2HEkrkwnNq4uhExA+Qd5swmYa WMDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772352376; x=1772957176; 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=HKbztpHgM8PKD0CcFwHhxyWzraGVBnVo495326Vfa6Y=; b=odsZ9/De2PyPpfGoKwlCRI+ywQ8eMkCFZhMTeaM5resJt4A57U8kr24Thoax/765+i TfyU6vbh4YyVohXmpsp1ZymVJ880gKY6gMTz4rzHIlhiiyqaoMBbRdnQ3jvIRPuCp5xb J4hREut34gTYeCpxaNviOmo1hRUsWaR9FkWsWlcQiw+tyI76TH82e8zBVGhQHq8SXJPM 1ryyTDrp+rvQz9Niqx2aWnSwNFrTU1ZK34SSx2dkR7GO9bVWOb8B/cTEu6GtdMuGcHtG GWKJgqUvXuZfWVfOEggVJRIb2m6802ccvROz7p4x5eg/FVOHhzLMm91+IhQdYkfffU7X PWrQ== X-Forwarded-Encrypted: i=1; AJvYcCUzT6Mn8htn1ERlE0PGpVxVU70j9aPKcLKQhocFKHnzBZfsWibuNUVln4uoCgnaIDmvLvzw7SrErtKGT94=@vger.kernel.org X-Gm-Message-State: AOJu0YyqpdECJdZNIAYjBLv2kuVUp7koMddtKA0npj7WUPr1DlBpEkK4 10BpZiT51yW0Xl53BXz/Aq4KnxK9EpKJ5vG0Yoa4JPDz6GcOydL1pYcw X-Gm-Gg: ATEYQzx/+TuUP0Hu5wRGV01s/VJFNNgYWpCMDF5+vD8Lujtu1a/+DAxLpIIm7Ry8Au9 qhL0hNNSekEbE0nVSKNPzefIINfsgOW/etaD5wDCsEPHLUVtr6RRWAMPHVtU/H/LJj5wPImA0ms iuvNH9dPxGBQBzTrB/HpZtwybvZDfkNN0a6g8Ym7v4V95jqMXQRz9znE+hQhIwBUhkeSoyHugpm tcYAaybQ8k8GytUw3nJF2CrCbuP3QslJFLvRclaZ3pIlJhYQDHtIFWo0G9DImVx6/1eu7dwXHzQ 4lqwcz+qP2d8ecs9P7ptk4fujZFjpZRz6KMnl1rtvn++uVdLbgyk+DREyw1pBqUaBnPgv81QQzQ XsVzJKONup4cAGXZTFva+4K9zI6ddqq3QYKAfLM1S0Qxfuj1pjFynyTsVHPhfmdreUwRBrosg4y XyOARznPPa5bNMFC/XaXGc1k/w8oz/Pbs33/th9P2yRshdB69DWvB5T77URC6zPvqg1yqCNWn23 eY8ZPxUdATwGrk7T7wkRTN0tZu5Ri/v+l9VMYFZ0Gr0O6CNaWK+NOqHMkazcKCdHAez3DvE21w7 X-Received: by 2002:a17:90b:3f87:b0:359:8014:d5fb with SMTP id 98e67ed59e1d1-3598014d645mr3245982a91.0.1772352375853; Sun, 01 Mar 2026 00:06:15 -0800 (PST) Received: from [192.168.2.3] ([2403:581e:d87e:0:fc2d:ed31:e80e:412d]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-359135ef1d7sm8885384a91.5.2026.03.01.00.06.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Mar 2026 00:06:15 -0800 (PST) From: James Calligeros Date: Sun, 01 Mar 2026 18:05:20 +1000 Subject: [PATCH v3 1/7] ASoC: dt-bindings: convert tdm-slot to YAML 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: <20260301-tdm-idle-slots-v3-1-c6ac5351489a@gmail.com> References: <20260301-tdm-idle-slots-v3-0-c6ac5351489a@gmail.com> In-Reply-To: <20260301-tdm-idle-slots-v3-0-c6ac5351489a@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 , Frank Li 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=3210; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=HNjAg2xdRxewqWz3EXUwC/PrDpEvfT/uT/eZPObjn+w=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDJmLP6dvf2pd1qHRvMz1xi4v/i9vSkzeL088WKxRn2z4p TMz/bl2x0QWBjEuBksxRZYNTUIes43YbvaLVO6FmcPKBDJEWqSBAQhYGPhyE/NKjXSM9Ey1DfUM jXSMdYwYuDgFYKpP6jD8FdFdfO5hUsaOKw+lrt6UzfgXfjtO7nf3noRZrzrm8ISFFzAy3LpZs+4 O53ye+6smZzlZH57lNf3Lovuq18IcX523mefVyQgA X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 This schema was still in plaintext form. Convert to YAML format. Signed-off-by: James Calligeros Reviewed-by: Rob Herring (Arm) --- .../bindings/sound/tdm-slot.txt | 29 ---------------------- .../bindings/sound/tdm-slot.yaml | 33 +++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/Documentation/devicetree/bindings/sound/tdm-slot.txt b/Documen= tation/devicetree/bindings/sound/tdm-slot.txt deleted file mode 100644 index 4bb513ae62fc..000000000000 --- a/Documentation/devicetree/bindings/sound/tdm-slot.txt +++ /dev/null @@ -1,29 +0,0 @@ -TDM slot: - -This specifies audio DAI's TDM slot. - -TDM slot properties: -dai-tdm-slot-num : Number of slots in use. -dai-tdm-slot-width : Width in bits for each slot. -dai-tdm-slot-tx-mask : Transmit direction slot mask, optional -dai-tdm-slot-rx-mask : Receive direction slot mask, optional - -For instance: - dai-tdm-slot-num =3D <2>; - dai-tdm-slot-width =3D <8>; - dai-tdm-slot-tx-mask =3D <0 1>; - dai-tdm-slot-rx-mask =3D <1 0>; - -And for each specified driver, there could be one .of_xlate_tdm_slot_mask() -to specify an explicit mapping of the channels and the slots. If it's abse= nt -the default snd_soc_of_xlate_tdm_slot_mask() will be used to generating the -tx and rx masks. - -For snd_soc_of_xlate_tdm_slot_mask(), the tx and rx masks will use a 1 bit -for an active slot as default, and the default active bits are at the LSB = of -the masks. - -The explicit masks are given as array of integers, where the first -number presents bit-0 (LSB), second presents bit-1, etc. Any non zero -number is considered 1 and 0 is 0. snd_soc_of_xlate_tdm_slot_mask() -does not do anything, if either mask is set non zero value. diff --git a/Documentation/devicetree/bindings/sound/tdm-slot.yaml b/Docume= ntation/devicetree/bindings/sound/tdm-slot.yaml new file mode 100644 index 000000000000..ca71e3660f62 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/tdm-slot.yaml @@ -0,0 +1,33 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/sound/tdm-slot.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Time Division Multiplexing (TDM) Slot Parameters + +maintainers: + - Liam Girdwood + +select: false + +properties: + dai-tdm-slot-num: + $ref: /schemas/types.yaml#/definitions/uint32 + description: Number of slots in use + + dai-tdm-slot-width: + $ref: /schemas/types.yaml#/definitions/uint32 + description: Width, in bits, of each slot + +patternProperties: + '^dai-tdm-slot-[rt]x-mask$': + $ref: /schemas/types.yaml#/definitions/uint32-array + description: Slot mask for active TDM slots. Optional. Drivers may + specify .xlate_tdm_slot_mask() to generate a slot mask dynamically. = If + neither this property nor a driver-specific function are specified, = the + default snd_soc_xlate_tdm_slot_mask() function will be used to gener= ate + a mask. The first element of the array is slot 0 (LSB). Any nonzero + value will be treated as 1. + +additionalProperties: true --=20 2.53.0 From nobody Mon Apr 13 06:57:58 2026 Received: from mail-pg1-f169.google.com (mail-pg1-f169.google.com [209.85.215.169]) (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 742812C2363 for ; Sun, 1 Mar 2026 08:06:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772352385; cv=none; b=c1htzHeIniYBQw9WxCL3E7DUEVjLpaXhbEJmBH7HlydZUV8DtgAsfurZqwoSmM6++FihbfY7NWPaEqNYmWyNMb9OdbMCDe1rmyZv7aGlyUjbozTWdoIBRBMk4M5+SXHGke/CBTg8TTu0DK95szsRrIIeYEFcDLnCwNNPRiWRHqA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772352385; c=relaxed/simple; bh=lwN3AXla5E+hMpOvc4cTc/hS2rvMFZBUZ7ENOshqDaA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BZaV4igaU1cyEvf31/qzLio1DeX3hy6oJQLq5B+NBbs538cSYAn5r/NVuegvTm5dqZoFxxY00qaHkbbBABYZQ8qPI0DDQ5yReHFyBV/KBss9+HNrxT5DhuOnDwF3QGPpzbdtbf+tnOcqA4/qSUrPsHjYdgZM+B04KhgUf4lYlLg= 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=Of4jPXgl; arc=none smtp.client-ip=209.85.215.169 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="Of4jPXgl" Received: by mail-pg1-f169.google.com with SMTP id 41be03b00d2f7-c70f191313cso1340749a12.3 for ; Sun, 01 Mar 2026 00:06:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772352384; x=1772957184; 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=SejpEdn5w8C9URiM1Is7ely7u34ezEnpcYmkEzh4N/0=; b=Of4jPXglZ9UMySYQgG+KBUjZHUGQI0Q6wA4LQJODvjVvpsGqUsPVxg5ipjk50HfxPU Yy35ROpty9y8+hy0egSERcobI4aLjY3e5BR/LkochEqjSGQNf6P4YJkyQaebUsfVA2CV zpTIulggSr6vxr4vMCyEpV5k0nPY96N7bKNZwdUKuGWPBbwA3iroltUZHib0xXNvtayk YPu1jwjiGRppusLXU9Jlk5xArwvQZRtsjIaLaPrnaOC/09N7WtPemAXGGW7EEoaqj2HW VdzLSDJsvVbK/cKF7t4PAA242hImeh1HvqCe9smQDD4uzkB9v7/XFs8+p7/xUc6rtQhx rdMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772352384; x=1772957184; 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=SejpEdn5w8C9URiM1Is7ely7u34ezEnpcYmkEzh4N/0=; b=gPucF/jN2NlPCPRp7mpICJ4GaUrCxp3YBg30V6xL4Uo8Zb/y7xvEY0IRPyr74H86QP p3QRpB6lsQs6Le/9SxjMxFqb7bDIjZHwwFECOW403Q1gkwcXTq0krmlm9IzlQ7DCCN/h P7LeQnP8VQm10WHi/h6wiTG6dD2TLXme4G2jZ6Ok8hBdT+9Oovs6m1pIdRxBhWCNgje3 hpyZk1XcvyzIrg+v9J3m9+5uex5GLj/jMpJ5CDnttCsGoxjSZLJoTLd7Zyj+PxWDPeuq mz33T5qR5x4mMhHPbkm9iU067CO6jkAE2V5jyS2aMLNEG4xXEEZ/Hts/DuZsEfAqK7eH 8o5w== X-Forwarded-Encrypted: i=1; AJvYcCWBeboxiVJaLj/UsuUU7AR/fw0O2JaqyyxC1cR4RaLtG2mx5PhUp8a7ZaGcwdX9lCAspFI6ydOsFJmgN5k=@vger.kernel.org X-Gm-Message-State: AOJu0YzaKgXeRzclWkx+TZRGoBi/2W2w8DXKUZeYYT5GErf4pzniVyT4 SVFbuWFd8cV1ij93sUm1Kzh0N7ppoXxslfOS/CR1rsJHIiF3uVZskL0r X-Gm-Gg: ATEYQzxfsvkmyoZP0jlCEHzA1v9mHr7koSgbypHgznRH/ypa0yNYuQiQLVHAshWnRJ5 zX82Ugs+tVkgtf0mZKd4x4d7z/hc1X/RYCkT9WaJUyAyJp81ZGRzlmNEKI3tIKMBECk5fodNEL6 RwrY5ev19CMAiv21KIabd2ocwAuwgJCLqwrXsZUt2STPgV/0n8+hkYufiCNZitaONz0Tj1CQ9bL Mrlw6nm+8FhOiOjcZwpnKFrBx9gHbfGz9hjE/UU8eb3ReHpKj1GWpKmaJfCpMXnpGqwRHXQhNd8 xoY6xb2dbSt87JmwlWj0/YJ/YE+L9UG5D3P6kicK+izazyBmmApQsHs2/5u9dae1JmE1HTI0fOq iZAKNMQOnYJTIZEwzBR10mUZmdyKpuRrbQmeiac/tfTJlOmVSdwWDK0ucEYHbzfNtdack6NYlzk OkoFGPXB/cQ7Hw7gerZALM93Q3BSJ5/gFHa3bNM31SIjfx/OZrJzCeHdkHEGLqkXq0Vf6P7ggWN YlDu3mq/mszu1SROpMTF5PAhU9PsamiTgleZBStM4EwZVbHaYXUiowqJefB3rRPO0mLM2y4oUDP X-Received: by 2002:a17:90b:5408:b0:341:134:a962 with SMTP id 98e67ed59e1d1-35965ccab15mr6135772a91.28.1772352383697; Sun, 01 Mar 2026 00:06:23 -0800 (PST) Received: from [192.168.2.3] ([2403:581e:d87e:0:fc2d:ed31:e80e:412d]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-359135ef1d7sm8885384a91.5.2026.03.01.00.06.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Mar 2026 00:06:23 -0800 (PST) From: James Calligeros Date: Sun, 01 Mar 2026 18:05:21 +1000 Subject: [PATCH v3 2/7] ASoC: dt-bindings: update tdm-slot.txt references to tdm-slot.yaml 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: <20260301-tdm-idle-slots-v3-2-c6ac5351489a@gmail.com> References: <20260301-tdm-idle-slots-v3-0-c6ac5351489a@gmail.com> In-Reply-To: <20260301-tdm-idle-slots-v3-0-c6ac5351489a@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 , Frank Li 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=2590; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=lwN3AXla5E+hMpOvc4cTc/hS2rvMFZBUZ7ENOshqDaA=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDJmLP6cHMG3JNUtnOnhEU8P3mFxZpKZOq9r+mHi5Zf112 n8W7lrVMZGFQYyLwVJMkWVDk5DHbCO2m/0ilXth5rAygQyRFmlgAAIWBr7cxLxSIx0jPVNtQz1D Ix1jHSMGLk4BmOrtJQz/LDoPXY//4G2ZqVPwOXFFua35oXjbRTty8nIZnjV5Ltrkw/CbjWWO294 VAcvlGK7uLd4ovun4uwWP3tfumPhD8feCpi8T2AE= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 Ensure that all references to tdm-slot.txt have been updated to tdm-slot.yaml, and are schema-compliant. Signed-off-by: James Calligeros Reviewed-by: Rob Herring (Arm) --- .../bindings/sound/imx-audio-card.yaml | 9 +++------ .../bindings/sound/simple-card.yaml | 14 ++------------ 2 files changed, 5 insertions(+), 18 deletions(-) diff --git a/Documentation/devicetree/bindings/sound/imx-audio-card.yaml b/= Documentation/devicetree/bindings/sound/imx-audio-card.yaml index 3c75c8c78987..5424d4f16f52 100644 --- a/Documentation/devicetree/bindings/sound/imx-audio-card.yaml +++ b/Documentation/devicetree/bindings/sound/imx-audio-card.yaml @@ -24,6 +24,7 @@ patternProperties: cpu/codec dais. =20 type: object + $ref: tdm-slot.yaml# =20 properties: link-name: @@ -38,13 +39,9 @@ patternProperties: - i2s - dsp_b =20 - dai-tdm-slot-num: - description: see tdm-slot.txt. - $ref: /schemas/types.yaml#/definitions/uint32 + dai-tdm-slot-num: true =20 - dai-tdm-slot-width: - description: see tdm-slot.txt. - $ref: /schemas/types.yaml#/definitions/uint32 + dai-tdm-slot-width: true =20 playback-only: description: link is used only for playback diff --git a/Documentation/devicetree/bindings/sound/simple-card.yaml b/Doc= umentation/devicetree/bindings/sound/simple-card.yaml index 533d0a1da56e..a14716b2732f 100644 --- a/Documentation/devicetree/bindings/sound/simple-card.yaml +++ b/Documentation/devicetree/bindings/sound/simple-card.yaml @@ -27,14 +27,6 @@ definitions: description: dai-link uses bit clock inversion $ref: /schemas/types.yaml#/definitions/flag =20 - dai-tdm-slot-num: - description: see tdm-slot.txt. - $ref: /schemas/types.yaml#/definitions/uint32 - - dai-tdm-slot-width: - description: see tdm-slot.txt. - $ref: /schemas/types.yaml#/definitions/uint32 - system-clock-frequency: description: | If a clock is specified and a multiplication factor is given with @@ -115,6 +107,8 @@ definitions: =20 dai: type: object + $ref: tdm-slot.yaml# + properties: sound-dai: maxItems: 1 @@ -133,10 +127,6 @@ definitions: bitclock-master: $ref: /schemas/types.yaml#/definitions/flag =20 - dai-tdm-slot-num: - $ref: "#/definitions/dai-tdm-slot-num" - dai-tdm-slot-width: - $ref: "#/definitions/dai-tdm-slot-width" clocks: maxItems: 1 system-clock-frequency: --=20 2.53.0 From nobody Mon Apr 13 06:57:58 2026 Received: from mail-pg1-f177.google.com (mail-pg1-f177.google.com [209.85.215.177]) (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 B1C9D32ED29 for ; Sun, 1 Mar 2026 08:06:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772352393; cv=none; b=fkP36PKnCG3medq2/OASCYqTJYx1wEKCivZINK7dC1RO507LgRGWm1k3Qr3hOlJZnty8K+q2PPbO6W7RdPvAjBmmOR8qUdipFiKiGxefjTs8EZymEsy019kt8moePj3BcPS9TmHluHNfRXXnN1QLeU8tTZrMDscfHPJUmIlxX7I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772352393; c=relaxed/simple; bh=115g/WH2mtui7fHuZcwchXsAefVgpriJAftdKhU/VY4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pnM3vzrjWKv+Cc6YPzSb68ljOelRo0Zym6KxT+S6MAlMo7PHtBlHDxDxrrmi2geuy6vShUaWMv5ls+4GRFPJXE6key7rkK94m1h554jvp40sAo0ZfRVvYKSaXN7xaCdwrRVhg8ED4y46mmrHQN5lBpdKgDbilOAx939JpXPV1NI= 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=d7pITuBX; arc=none smtp.client-ip=209.85.215.177 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="d7pITuBX" Received: by mail-pg1-f177.google.com with SMTP id 41be03b00d2f7-c70bc5b4e86so1346726a12.0 for ; Sun, 01 Mar 2026 00:06:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772352392; x=1772957192; 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=fGlR6YzXE5keZeD5R4R4wdzj80ZRJofyKqhSLLbK2aA=; b=d7pITuBXKb+ttwvFoN/kH/q1zeDoKEb0U2dhezOjnn+nO4deEhnECCj8d/o+jCtTxn nNpLau8ubEpcpA4s80a3qq2cKmtXBA3V6CIuQCkHgZ1CJG5U/Ar4ijK+eBWCOhGLcs51 WGeJ36o/35rxxsi354zuLla6pyPZ4gzb6D9+he5t/3UQ8SBAJ2QzkumnmY7KmALva+0D LmXnHeV4tyV8hLCkqwld0CfGDxAVA7ujJoUj8pFFSDTl83g7H6a+FEwsbb02GlkKfQXb nNzqg0GVgoRa17KlI+2RRtsaec08fJV2TJAEv6inDsIodYy40miW4G4Okwb1bnyLSweK 3B9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772352392; x=1772957192; 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=fGlR6YzXE5keZeD5R4R4wdzj80ZRJofyKqhSLLbK2aA=; b=RILD50AuWQ9Pc2vZ+nxqsDIBC/f8sQbd7xCZXw9jkxPGQEbrDqM27Kk8FDLdxlPiHn XXvxAs0DCKUXzaJKV/nQqQC7v2lE8wo7FOOK2qT/1jHPG79qWDVYxfkouMc5//ywBxGG oP5hwProuZXrkkC/9RjTHgYfag+8gA7JUE5ZYJFmslq4CyDuj/+hGHltBrUmsZE8diYy e2luidUNBJeJON2HUvjooY8kseTaXScb/iKUD8p2+rb5Z/g6kboeWlfgqysn12eIgf3r ZqGYghLi+6ppkqSjdjyk4W24pP34so9nLF05MR+L8pxRTzMFruElaBnBC3YVMJz08H2w b7YQ== X-Forwarded-Encrypted: i=1; AJvYcCVmYlayy3U1pC1xumrwm4vz+mUs7BJM93rYMD+L9RbM16l1fYmuDNiIWyrz7KfjFtPn24foxSQBWkiBO5Q=@vger.kernel.org X-Gm-Message-State: AOJu0YzO9ObM0dJfwou8NrN3qlluwOWSn9lQ/od/iGC5d/y0NQX0jSge 2AWMT8PHeDvxOf38EInEd9kfzAVRKD4xdcFeG6n8FHpCUvwklH/GOiOGoWjx7HzG X-Gm-Gg: ATEYQzyDc2PaA6H053MNvzbssY9WUVDQsDC6CLBUiSHBifFyYO+j5+WLqyXCcPe2asa 5CR+Ce3DQGl8zpCC7FJMOvPtnqo0Y3l7bagZYNdknYsaNscSaB4kGHLvl6hX0Z1W8IBqSAaefYb S0DTh/WM1njl42VG3SaZfPyqwMMWDVBXNIVWqOF+DbXX/vkKNjiLI0YEIoxhrrEF31jRUhlwTGJ B/Bisy4BI2ROyONvwuyjGiuv9kMHAgm6bI19eYqmWK0EukevUEceauD8188nQO9R6NOyg0MNFwH a0llKW+gFtvSjrfSo5NSAhCDLq3MzTSabmE/wM4maP+R0RX5RvDjhpBNKCzzHM1mMYik4GG4x5/ JnGnULXsE4adn4FRcH0h7Vfjqhg6vgrV8OhGW4PHpMX4L0qJ659XZhtfgcdRGWZnD4mN6PKVray DqNifMA1RpdIQyr9j044FwAlN0cc+6GXj2Me9V0KO2oWoQwLnRjUOxYzZkyg1ZF+KTBLWOEuDqq mMib2jwa1+UNSOtHcICuvQ9pPJy+Zy1NweJqvualeO0V1drk6J+LCxXvN+lLJhHhWEfpbtK9Ux+ X-Received: by 2002:a17:90b:578e:b0:34c:2db6:578f with SMTP id 98e67ed59e1d1-35965cccb83mr6714723a91.19.1772352392000; Sun, 01 Mar 2026 00:06:32 -0800 (PST) Received: from [192.168.2.3] ([2403:581e:d87e:0:fc2d:ed31:e80e:412d]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-359135ef1d7sm8885384a91.5.2026.03.01.00.06.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Mar 2026 00:06:31 -0800 (PST) From: James Calligeros Date: Sun, 01 Mar 2026 18:05:22 +1000 Subject: [PATCH v3 3/7] ASoC: dt-bindings: add TDM slot idle mode properties 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: <20260301-tdm-idle-slots-v3-3-c6ac5351489a@gmail.com> References: <20260301-tdm-idle-slots-v3-0-c6ac5351489a@gmail.com> In-Reply-To: <20260301-tdm-idle-slots-v3-0-c6ac5351489a@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 , Frank Li 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=2001; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=115g/WH2mtui7fHuZcwchXsAefVgpriJAftdKhU/VY4=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDJmLP6fH1CYvWfDi6+VdS/ptHsxy/zZ9/q/rWu7bdB9du c1wrz6BrWMiC4MYF4OlmCLLhiYhj9lGbDf7RSr3wsxhZQIZIi3SwAAELAx8uYl5pUY6Rnqm2oZ6 hkY6xjpGDFycAjDV96cxMvRPZA5hNnB6kNker/euf6nWnZJG5XMz9l95IXBFaqHH4QUM/13ivlz XP+vO+XRlp0D1vO8fDn37U1wXWD5Z6kr+pOTQSCYA X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 Add properties to describe TDM slot idle behaviour. These properties can be used to describe how a DAI is supposed to behave when not active. For example, Apple Silicon laptops split a single I2S bus between two physical lines which are combined at an OR gate in front of the receiving port. One codec on each line is expected to transmit zeroes during the active TDM slots of the opposite line, or we will have corrupted data at the receiver. Signed-off-by: James Calligeros Reviewed-by: Rob Herring (Arm) --- .../bindings/sound/tdm-slot.yaml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/Documentation/devicetree/bindings/sound/tdm-slot.yaml b/Docume= ntation/devicetree/bindings/sound/tdm-slot.yaml index ca71e3660f62..457a899e8872 100644 --- a/Documentation/devicetree/bindings/sound/tdm-slot.yaml +++ b/Documentation/devicetree/bindings/sound/tdm-slot.yaml @@ -20,6 +20,20 @@ properties: $ref: /schemas/types.yaml#/definitions/uint32 description: Width, in bits, of each slot =20 + dai-tdm-idle-mode: + $ref: /schemas/types.yaml#/definitions/string + enum: + - none + - off + - zero + - pulldown + - hiz + - pullup + - drivehigh + description: Drive mode for inactive/idle TDM slots. For hardware that + implements .set_tdm_idle(). Optional. "None" represents undefined + behaviour and is the same as not setting this property. + patternProperties: '^dai-tdm-slot-[rt]x-mask$': $ref: /schemas/types.yaml#/definitions/uint32-array @@ -30,4 +44,9 @@ patternProperties: a mask. The first element of the array is slot 0 (LSB). Any nonzero value will be treated as 1. =20 + '^dai-tdm-slot-[rt]x-idle-mask$': + $ref: /schemas/types.yaml#/definitions/uint32 + description: Idle slot mask. Optional. A bit being set to 1 indicates + that the corresponding TDM slot is inactive/idle. + additionalProperties: true --=20 2.53.0 From nobody Mon Apr 13 06:57:58 2026 Received: from mail-pf1-f175.google.com (mail-pf1-f175.google.com [209.85.210.175]) (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 7D01132E138 for ; Sun, 1 Mar 2026 08:06:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772352401; cv=none; b=UinBz9WWL09UCXtkfEGTfLEQpBM+nKoNEQt69mqtOZcDbDvlFSk2y4rS/WEHcs+l3XxiDJ9WqLOAZEzlV1axzWOmaHxa5LGHSeoqj9BpO8MvjvKD1EuIRGj16X8IZEcq+DGJtJj9crHiRzOfmyeF15CzdK4HCvnGxacb2krLmD8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772352401; c=relaxed/simple; bh=VyTWRPS81+vOo86P7NyB7zBl67kC7Sarhern+hi6yV0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=R5o3bMaGLpwAdd2+YAFmkQr/iNhtJMt4pumS7li/Tm8fptOvnG833vd2DUbxRnGgHQ1aZhDEtLKCDml6KjjNwBMx3JI83ZWNwML/GxrcvczeIIVcfOzg7bnwZYCUkUdwPsr5kI6aFMPpAVB0OhnKQz8g9oMuxGasqKPDciuf3hA= 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=U9bwnysP; arc=none smtp.client-ip=209.85.210.175 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="U9bwnysP" Received: by mail-pf1-f175.google.com with SMTP id d2e1a72fcca58-8273e0fb87aso1865963b3a.1 for ; Sun, 01 Mar 2026 00:06:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772352400; x=1772957200; 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=COktpS70G1jBT7Oq0awQeJHx1NZJeipbMMF36OzY5Z0=; b=U9bwnysPsazAHpbYU8klwctF30VxW0j2I3eRmugN45MVcbGBNG8WrxWxAsUAD2AZVz YYng8FmyQTqiQkLiwKXUgP63t2geqsGGR/aiZE0HLCCiI53SIw4NzP3mlFgIimuKaIEA qfPLt1Xky++OIMNBrnXJliqb69p96D1CjdBQlWZBde6xI7NqHxkneDQUErLiIxdHyQJ3 dV1jlvJFY6UHzLkchbIkUL1u0X/FrY5Oj2Y7+6PvwgXVkANLP7KsXcgu0wAY04IZumwk PMlsihkZghn+EH7bomWaoVhjr7mM6OXHdvchV6u+iD5oSdEK8vMaxfHo5cQbQ7g0biQT kR9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772352400; x=1772957200; 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=COktpS70G1jBT7Oq0awQeJHx1NZJeipbMMF36OzY5Z0=; b=avvmLMttV5ojRxEQIlGeZ8Kfk9SRnC251BOx7W05+6Amo2MMrAASRxdOdwD0R96f9x 8rVZAcT/GHirMpUcUjQ2mBHUsrgT3hZoY+eSK7FK5k6y54Xz7302MYySCjJUJ/ZC9PxM WK7agZbxRm7EjnZU+m99fau1iEIGShR4CqattpY317ykLX4v3dnG1RfZh96D8q5frDp0 4QWveKE5CjTaBDiHdASeIcXZyXyYoOyUjVW62zSNlIrKwaoH2ySfnRbRgzmbI/inWTOO PfLB+nsWcUgyPKRGlKbPxUmTXdUnOW7SHNTOFIVbsmYrZi7bmGQaJBDrPV9/gz8TsNlK 6/Wg== X-Forwarded-Encrypted: i=1; AJvYcCXJhlP+cnciDsyX6ziGJlpJbtbMsm60/Cvn6/Rjfz3jxlQ9GN/NKesryNPqY7rzf0oRxmOqB0VYE44w4CI=@vger.kernel.org X-Gm-Message-State: AOJu0YzRJTv4q1SGU+ncAMywp0Ia9y3gguviJU8alzpz5BUsmJlsSnei 8ReCU/VqozPrUZMQ0b5bhQmRo6E1M+KMyxKslMZ+5vwHGkMBphAOWfyiB28Us6MT X-Gm-Gg: ATEYQzxFW/t7ip66qkWxCFvRMx2DZ4yG0UmjWKneb6zwtMaq67U7NaGcmytdMOUzdU0 EuJyNBSGHbIHCtbHhbvjW1qSUuYR8aTYh/qRQfbM8f4YgYFurZY1zGaqabjaBEK9+F5eiJMUmxj FaQhVXxeTNoZ2S0fQLwpZTxob1AovtqHemSsEzYObS5u7Nc3vIGh6LYogO9iz8xfIullyadof3z l8D03ehAUwRUV63EzLjJM0JPO7adEmpJJgE8TEIx2shVoxEr37VvLVG5quEFa3Xrk5GW6FoWNMx MqjdS6EfVLxnHbA2lpXWtmz77ljOHSdwSJ0MHbB5a4Rxc2+lintwmYpwiKuB8qrW/0i8cs1JbY1 /CMmRT5rhJSOeNUCi5zNtdXooumCyb0n+KAwq0nncPgWRkVSODzJh8dQvBLuJd5NZgXuR5xvY+p sTDb1w83I+HkyynF1D5M9XtSI6uq4CqespQ4eqeRiprkH2f3/EZ6G9otrksmFqXCj3e1yXzcvuR v+FC+meIGi6JwS9vDH3dHn7W47rpYlHTHaMwghHhqvL4vwWz+1AUtSwHHnhaljYcX84YCKy7sog X-Received: by 2002:a17:90a:fd97:b0:349:3fe8:e7de with SMTP id 98e67ed59e1d1-35965cd1066mr4480685a91.28.1772352399832; Sun, 01 Mar 2026 00:06:39 -0800 (PST) Received: from [192.168.2.3] ([2403:581e:d87e:0:fc2d:ed31:e80e:412d]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-359135ef1d7sm8885384a91.5.2026.03.01.00.06.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Mar 2026 00:06:39 -0800 (PST) From: James Calligeros Date: Sun, 01 Mar 2026 18:05:23 +1000 Subject: [PATCH v3 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: <20260301-tdm-idle-slots-v3-4-c6ac5351489a@gmail.com> References: <20260301-tdm-idle-slots-v3-0-c6ac5351489a@gmail.com> In-Reply-To: <20260301-tdm-idle-slots-v3-0-c6ac5351489a@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 , Frank Li 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=VyTWRPS81+vOo86P7NyB7zBl67kC7Sarhern+hi6yV0=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDJmLP6fXyj+ot16S9/zirdpppzcc2LDlnapn6bXO1G+Hz 6y9z3LmXMdEFgYxLgZLMUWWDU1CHrON2G72i1TuhZnDygQyRFqkgQEIWBj4chPzSo10jPRMtQ31 DI10jHWMGLg4BWCqJ+gx/GJO9N22/us5k96pFR4/V7C08c4w3xVVcFidZcP8zCcfjNIZGQ6lTXT u+PN3rYrwtOxN968V75nySMXRV/eSfPhus8QJ+iwA 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.53.0 From nobody Mon Apr 13 06:57:58 2026 Received: from mail-pj1-f43.google.com (mail-pj1-f43.google.com [209.85.216.43]) (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 44873325707 for ; Sun, 1 Mar 2026 08:06:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772352409; cv=none; b=WUbn3ij22tU1WFEoZ0oqVoDYg8KlMQS8ZTFJaRazmMDXcmAOs+hXmXiLuD1YPPGZIwvu362LJU2FOxYTcJSg+wXO/9dOUOdTuSHrUx7ThDa74ReC7p57QAWLCxAyQYZaIzveHNBjzvgINg7OFeG5jSRLl0m6rdVBNZhqUBp7z7w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772352409; c=relaxed/simple; bh=rqHc/7eJJOJ6QC/+Z/HBxx57SV1pobAnEybE9GKRIxI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WdpmS6SB3XeLyV94eDAxl0AEhDnrXUxxjNcs34IwNit+2C9JX5R3QqwYoWULUJYf5GhZheF+dati/UTNO+xCVQ3kSN6uV4ufObBAUlqNv9MuRRnTLvU6/otkPVbFa8SuV26yi5F2kHyW/ITPlR6gwIceqkAp9fU/DaynmCDJrMI= 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=ilXetxV/; arc=none smtp.client-ip=209.85.216.43 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="ilXetxV/" Received: by mail-pj1-f43.google.com with SMTP id 98e67ed59e1d1-35983877dc5so203287a91.2 for ; Sun, 01 Mar 2026 00:06:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772352408; x=1772957208; 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=A7FTeTejosz3HBWt4lvx3HRODQxLOqbKVT6yXP2mGuM=; b=ilXetxV/zcUPo/7SgqT+LY2jiBmHLRg1+8tv2oJSmRx95DyLVEtv1wFqV7YLqzeXyB zpDTMrU+UxgttG0YhdSa79vdGUcVCXkqSW89tNlS16G43FDs3vp6M3LIQ1FfZVGzrhwL A6TcO9W4q9jij8zIvE4F1vYD8QIFFbit0ZfJAlh9SjzLUdNnOzYiLCREglZBeJVkoA3T FVqUsypxeiQrhqu4zISqQrncxZOUsUbxVaGtSeWWD+JfOPr4KsZR4GtYNfmyqwCjC3my tyxx2NIQ3x6LsrhQWP67zp3inDp/OVnvXI98B5TW6beeWNxvZAab7ENFnjSe5X9VNA0X EZuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772352408; x=1772957208; 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=A7FTeTejosz3HBWt4lvx3HRODQxLOqbKVT6yXP2mGuM=; b=ozYSb9uVGrNgHZby/kB7MmWEyg3steFVcmZJyATLiulHH3JyL3bfrvHvt2pJda8EKh Shf2N9EaN+pvvUkktPX4j/+TYyWRZ6Av1wc0eh9XRdMG6yxB0r+wyTVy8zYcQjKaxBEM nVH8jPk8GJ8UfFyFP1ezspPP71W2Us3gYf7naH2iZFWB96659xFXcdI/xV4qIifnblTu ftOuFWy4rYQttOu31mKHQ1IrGcJyjhIMyb9WfmORTTLlQ4G8mNyol16teYPs65UmL9Qd TDHM5uiR0AmSqbnUNXlPwuFD5OHSNmUSApEScDBO4zQI0bhJotT6VjU4ctujuoGfk1bF L3nA== X-Forwarded-Encrypted: i=1; AJvYcCWmB9jM+i0WwlpXzibbpje1IB9T3zw144QryYr8iIb+xwxL7W2InhqQ0HtWBbZdC0sjXF85DnDvEB3EAVw=@vger.kernel.org X-Gm-Message-State: AOJu0YzNQie7GysciQ/JY1pmCRnWDrYZBeLf8k5BWlnJ/lXcQh3HAmUx YrJflHn9X6bfej0hLUf66/rPpNYhV+QheugvDTolHGKbBEN/fx4f8p7g X-Gm-Gg: ATEYQzxAvQvEZzSJJDtQhhN46e+0M/PefuCgUmvVkLWVc03ue6Vh6a01TsBYBVoIfmV rHmVgLtz408g0KwwCmtD6fmwecfj4FFqGNtFB8e1xzdzejohcn327hen51zqvi0GSBsqKeQOc6G komzYLzsMX0ajBuKbD7uViKmv4gLXziqpF8KiGuNu3qE99T58basDvuz/hLBN15hub2wopVtjy3 CDyuNsFV/9u/3vE7jW7kfAaYUQoYH/vqcE7nO0KC+YkSUwRHmS84mLccyF92mGrW0vb64FBImCN YQ+kjsfr11mdIDO+pmPY972eY6Mm5vIyOVhG8zS9jQglRcMkpnUq18367oeUBhIMTbHVxhZTa2n 1TrTFywB8DNgS1f8JJ3Tbl5fDT+elyjcLHQ1ZR0pmq1unhYNxsDGWUDHPleAeRBT+a6Kjbgk+J+ wVFfG2AWQOxYM9Ew0TKGnp+fvuKOm14kuW3y6k/8Hd1Lj0Vd37HguInPhqU4a63XH4/dpGT+yDq 2D9pfx93Y/7JtVWiZIbYgUTIlZwZy/b7DW/GcGZRlSDRacm/exfM4LXW1MhsEBSmCQV++hUht5d X-Received: by 2002:a17:90a:f950:b0:356:22ef:57ba with SMTP id 98e67ed59e1d1-35965c17f28mr6826445a91.7.1772352407658; Sun, 01 Mar 2026 00:06:47 -0800 (PST) Received: from [192.168.2.3] ([2403:581e:d87e:0:fc2d:ed31:e80e:412d]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-359135ef1d7sm8885384a91.5.2026.03.01.00.06.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Mar 2026 00:06:47 -0800 (PST) From: James Calligeros Date: Sun, 01 Mar 2026 18:05:24 +1000 Subject: [PATCH v3 5/7] ASoC: soc-dai: add common operation to set TDM idle mode 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: <20260301-tdm-idle-slots-v3-5-c6ac5351489a@gmail.com> References: <20260301-tdm-idle-slots-v3-0-c6ac5351489a@gmail.com> In-Reply-To: <20260301-tdm-idle-slots-v3-0-c6ac5351489a@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 , Frank Li 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=3972; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=rqHc/7eJJOJ6QC/+Z/HBxx57SV1pobAnEybE9GKRIxI=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDJmLP6fHbmx7kXl96WTxidGSMsWbznFOqazZpjSdxWp3p OgcsdayjoksDGJcDJZiiiwbmoQ8Zhux3ewXqdwLM4eVCWSItEgDAxCwMPDlJuaVGukY6ZlqG+oZ GukY6xgxcHEKwFQHlTIy7H+vPHeZsVjRqpyjTIlX6t/3GuyeUMb6iHdldILNd5V78xj++y1kKM/ kX1mzJXNuWVb416nGnxV5G11PqHusm5xx8qY2FwA= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 Some audio devices, like certain Texas Instruments codecs, integrate configurable bus keepers that dictate the codec's behaviour during idle TDM slots. Now that we have definitions for various idle modes, add a snd_soc_dai_set_tdm_idle() operation to control this in a standardised way. This is useful on Apple Silicon laptops, where a single I2S bus is comprised of two physical lines which are ORed just before the receiving port. When a codec on one line is transmitting, we must guarantee that the other line is low. We can achieve this by configuring one codec on each line to use its bus keeper to fill its line with zeroes during the active slots of the other line. Signed-off-by: James Calligeros --- include/sound/soc-dai.h | 7 +++++ sound/soc/soc-dai.c | 40 +++++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/include/sound/soc-dai.h b/include/sound/soc-dai.h index 44dd06add52e..6a42812bba8c 100644 --- a/include/sound/soc-dai.h +++ b/include/sound/soc-dai.h @@ -196,6 +196,10 @@ int snd_soc_dai_set_fmt(struct snd_soc_dai *dai, unsig= ned int fmt); int snd_soc_dai_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask, unsigned int rx_mask, int slots, int slot_width); =20 +int snd_soc_dai_set_tdm_idle(struct snd_soc_dai *dai, + unsigned int tx_mask, unsigned int rx_mask, + int tx_mode, int rx_mode); + int snd_soc_dai_set_channel_map(struct snd_soc_dai *dai, unsigned int tx_num, const unsigned int *tx_slot, unsigned int rx_num, const unsigned int *rx_slot); @@ -312,6 +316,9 @@ struct snd_soc_dai_ops { int (*set_tdm_slot)(struct snd_soc_dai *dai, unsigned int tx_mask, unsigned int rx_mask, int slots, int slot_width); + int (*set_tdm_idle)(struct snd_soc_dai *dai, + unsigned int tx_mask, unsigned int rx_mask, + int tx_mode, int rx_mode); int (*set_channel_map)(struct snd_soc_dai *dai, unsigned int tx_num, const unsigned int *tx_slot, unsigned int rx_num, const unsigned int *rx_slot); diff --git a/sound/soc/soc-dai.c b/sound/soc/soc-dai.c index a1e05307067d..2f370fda1266 100644 --- a/sound/soc/soc-dai.c +++ b/sound/soc/soc-dai.c @@ -282,6 +282,46 @@ int snd_soc_dai_set_tdm_slot(struct snd_soc_dai *dai, } EXPORT_SYMBOL_GPL(snd_soc_dai_set_tdm_slot); =20 +/** + * snd_soc_dai_set_tdm_idle() - Configure a DAI's TDM idle mode + * @dai: The DAI to configure + * @tx_mask: bitmask representing idle TX slots. + * @rx_mask: bitmask representing idle RX slots. + * @tx_mode: idle mode to set for TX slots. + * @rx_mode: idle mode to set for RX slots. + * + * This function configures the DAI to handle idle TDM slots in the + * specified manner. @tx_mode and @rx_mode can be one of + * SND_SOC_DAI_TDM_IDLE_NONE, SND_SOC_DAI_TDM_IDLE_ZERO, + * SND_SOC_DAI_TDM_IDLE_PULLDOWN, or SND_SOC_DAI_TDM_IDLE_HIZ. + * SND_SOC_TDM_IDLE_NONE represents the DAI's default/unset idle slot + * handling state and could be any of the other modes depending on the + * hardware behind the DAI. It is therefore undefined behaviour when set + * explicitly. + * + * Mode and mask can be set independently for both the TX and RX direction. + * Some hardware may ignore both TX and RX masks depending on its + * capabilities. + */ +int snd_soc_dai_set_tdm_idle(struct snd_soc_dai *dai, + unsigned int tx_mask, unsigned int rx_mask, + int tx_mode, int rx_mode) +{ + int ret =3D -EOPNOTSUPP; + + /* You can't write to the RX line */ + if (rx_mode =3D=3D SND_SOC_DAI_TDM_IDLE_ZERO) + return soc_dai_ret(dai, -EINVAL); + + if (dai->driver->ops && + dai->driver->ops->set_tdm_idle) + ret =3D dai->driver->ops->set_tdm_idle(dai, tx_mask, rx_mask, + tx_mode, rx_mode); + + return soc_dai_ret(dai, ret); +} +EXPORT_SYMBOL_GPL(snd_soc_dai_set_tdm_idle); + /** * snd_soc_dai_set_channel_map - configure DAI audio channel map * @dai: DAI --=20 2.53.0 From nobody Mon Apr 13 06:57:58 2026 Received: from mail-pj1-f44.google.com (mail-pj1-f44.google.com [209.85.216.44]) (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 17938325707 for ; Sun, 1 Mar 2026 08:06:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772352417; cv=none; b=BXOwqIvLFgDZfoioVchVIfmRdW114NZF6OA7xVaP7jXod290SWWnXnSk8s2UwrkujE9QD+nW8uD+9k3aT1mk5zc4vAuJLix4gwfvUYA6512exeRgffBIupqQVO0ETerGKpW12aUmEWB5urOjt1SKiTJWVnob/ORhbD1Kqy+TagQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772352417; c=relaxed/simple; bh=Vu++GF5ETzV25pFIC4PFfCrxUq2vxpmKW9zJn8nLbis=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ccu5HkUFnFJmhKhuKzwrvs8WU0HB6YV/NcraN46+U63rjsGO0+X9RcuRTOr15DAYIkeageZRf7pXhv8f/Le8yI/IMtjZs83LtkM3JUdWY8eD9zk16NTqbQY5CEdk4Hgb1XqM5OMD6h3HdcPydYqyzZs31rG5ZBpP7Ty9VfHdFAM= 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=G8XGbW3G; arc=none smtp.client-ip=209.85.216.44 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="G8XGbW3G" Received: by mail-pj1-f44.google.com with SMTP id 98e67ed59e1d1-35851eadc17so2160116a91.2 for ; Sun, 01 Mar 2026 00:06:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772352415; x=1772957215; 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=JyY9G+TpSKpweHm5kQNAg6JQKS/x6D4lbPKE8/3PcuQ=; b=G8XGbW3GYFk1fue6NlaKsG9Da+xsXLBYr6eMwmWIzgvIKPAngI5xE9YfSQ/oeDGP/Y y6RGJoiF/vqvxbZMSTXdnNrVigoG3QDkCPb1Tf59D7ca5E9FEcBn0d8KnD78mnnpPRxi VaOf/rUcZXt+vTxvDr31wyFs+2zAQwTKPazEh21FuGRWo7WqqMdEWU1wJ0b1Z2YatlVf D/iC18KhX3zRm92F2LE/TuHsZm+l8yBcyCY1WeD7LsmJ5OocYSY1Cq5Jou04j6p7vx1B kGAwXdApZpKkls1Kz+9v2MJJqKBNW7QYxF6MUEfNIt7a5IYJY01uy00zybAsy+usnOaD gC+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772352415; x=1772957215; 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=JyY9G+TpSKpweHm5kQNAg6JQKS/x6D4lbPKE8/3PcuQ=; b=O3s8WFX7hPQTfMzrfuQhO3EYY2ysflTy4kdLIqQLkdenSrof/L+1T1YErbPuYVgpZp CbziJcR+XavIY37KCo0blSMT4G3B0SzjcaX9orhVgdSR97r520/IY42iwgrN4G7HXCkv Xj1Uyf3lRlx7Y+RdJDRsgmnHctAyLV7QH/SaLDZ9vveCBOFCL/ErVgiZJyLFsi8No9wA 1pXCFK6PLhev/vmVoEZc91YLMsWRkngAEqSnabCnpwJB4vEwX+bVDfE+m15KlUIIUfMI Fc5w+fNztObhAduQ6xKtDaImfRNXzVn011ad3Lw67umEgj+RT9Njsd3w/SlKfzO6YMTL tNUw== X-Forwarded-Encrypted: i=1; AJvYcCUTf87Vmm/gZJWAQfhA7yTZX1gKZWO6NT5awDn8e3fGGEtcLPyEmM74YUCkxrYBZdokmE7NS51xJJS4w68=@vger.kernel.org X-Gm-Message-State: AOJu0Yw5QYRDeaCBYGLTda7e5dp8HF7QGiBEYPfn42KSfrXgY0ix0IN/ f7UA4RlN1JeqgEOXZi02xYgikP5ZHSQ05gakDAGqgHBVwH3Lg+P7pG4r X-Gm-Gg: ATEYQzy8KD/dqrRdrFmx6RfHGPKm45pDYB400YAlnhToETjYPL0pD6ONqq4EKahp9lW Ji/s0SMXoUEQg4fz2yckoP6r0/gaNNLN1c8+RJIotoU8Sgok4j0RFJ3vTEJ+gbA5AjbJXEkZI41 rXBpRqdWOcUqWIpE7nbfUnmwUZUCzrnKyW2rBaBqm4BEtaKLnbNSDnqIy7x0jyyoInv8HGeH8HL 6ptBstO5ssCPyRPoZ2m59c3S/+YOnt0RVAXrMpipcUFB+CcR8ET2PG2nYYHuqH+wgwW2K+v2FSE Z+ykq0NFSOq06q7x5gwssr1HCCI+Nlh1FcpihUtB04ekpljAcMGWQXyKcZIb6xtsnmwYjdYUGWQ oH4T7sDDIj1t7WtEHiYa2QGUf56Yf5kDkK5hFjbn/cn+QVfuhcZtx0bknVwGVyRBf0/JnQk8C3L i3HNcUFv8EAixUu1koew6gprNAq+BM6nfS/yT7xxX4ngPzZGTPi3Pj2UcSZnEzvEZMojWhUPLn/ 0ZKCpzukAxsgJ5N8eePfSsqoYfugfT6RmEQ6ex/2a0fVZzIWyMvu3Zq2rEOaHRaHHcXHf5am73N X-Received: by 2002:a17:90b:5843:b0:340:776d:f4ca with SMTP id 98e67ed59e1d1-35965cc7144mr7861675a91.26.1772352415479; Sun, 01 Mar 2026 00:06:55 -0800 (PST) Received: from [192.168.2.3] ([2403:581e:d87e:0:fc2d:ed31:e80e:412d]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-359135ef1d7sm8885384a91.5.2026.03.01.00.06.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Mar 2026 00:06:55 -0800 (PST) From: James Calligeros Date: Sun, 01 Mar 2026 18:05:25 +1000 Subject: [PATCH v3 6/7] ASoC: tas2764: expose SDOUT bus keeper via set_tdm_idle operation 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: <20260301-tdm-idle-slots-v3-6-c6ac5351489a@gmail.com> References: <20260301-tdm-idle-slots-v3-0-c6ac5351489a@gmail.com> In-Reply-To: <20260301-tdm-idle-slots-v3-0-c6ac5351489a@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 , Frank Li 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=4983; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=Vu++GF5ETzV25pFIC4PFfCrxUq2vxpmKW9zJn8nLbis=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDJmLP6fbzXi237ksdNkrtpPrtvx/flhkTavndm4hKccDN kseZh793jGRhUGMi8FSTJFlQ5OQx2wjtpv9IpV7YeawMoEMkRZpYAACFga+3MS8UiMdIz1TbUM9 QyMdYx0jBi5OAZjqjiBGhjXHfFdmNmrrbLe9FOwu6+jap7PBkn3f461fXm3L4omqfs3I8DS37Gn DnLMuwmz8VWHXDmvO6nbbOzuB8ejCRHdh0zU2zAA= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 TAS2764, and the Apple-exclusive variant SN012776, include bus keepers on the SDOUT pin that can be configured to alter the behaviour of the SDOUT pin during specified TDM slots. The chip can either leave the bus floating (default/uninitialised behaviour) or fill the specified slots with zeroes. Expose the SDOUT bus keeper and allow it to be configured using the set_tdm_idle DAI op. The mask must be cropped to only cover slots valid for the configured BCLK ratio, so introduce a set_bclk_ratio op that properly configures this. Signed-off-by: James Calligeros --- sound/soc/codecs/tas2764.c | 95 +++++++++++++++++++++++++ sound/soc/codecs/tas2764.h | 11 +++ 2 files changed, 106 insertions(+) diff --git a/sound/soc/codecs/tas2764.c b/sound/soc/codecs/tas2764.c index 36e25e48b354..423b7073b302 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -44,6 +44,11 @@ struct tas2764_priv { =20 bool dac_powered; bool unmuted; + + struct { + int tx_mode; + unsigned int tx_mask; + } idle_slot_config; }; =20 #include "tas2764-quirks.h" @@ -509,11 +514,101 @@ static int tas2764_set_dai_tdm_slot(struct snd_soc_d= ai *dai, return 0; } =20 +static int tas2764_write_sdout_idle_mask(struct tas2764_priv *tas2764, u32= mask) +{ + struct snd_soc_component *component =3D tas2764->component; + int i, ret; + + /* Hardware supports up to 64 slots, but we don't */ + for (i =3D 0; i < 4; i++) { + ret =3D snd_soc_component_write(component, + TAS2764_SDOUT_HIZ_1 + i, + (mask >> (i * 8)) & 0xff); + if (ret < 0) + return ret; + } + + return 0; +} + +static int tas2764_set_dai_tdm_idle(struct snd_soc_dai *dai, + unsigned int tx_mask, unsigned int rx_mask, + int tx_mode, int rx_mode) +{ + struct snd_soc_component *component =3D dai->component; + struct tas2764_priv *tas2764 =3D snd_soc_component_get_drvdata(component); + int ret; + + /* We don't support setting anything on SDIN */ + if (rx_mode) + return -EOPNOTSUPP; + + if (tas2764->idle_slot_config.tx_mask =3D=3D tx_mask && + tas2764->idle_slot_config.tx_mode =3D=3D tx_mode) + return 0; + + switch (tx_mode) { + case SND_SOC_DAI_TDM_IDLE_ZERO: + if (!tx_mask) + return -EINVAL; + + ret =3D tas2764_write_sdout_idle_mask(tas2764, tx_mask); + if (ret < 0) + return ret; + + ret =3D snd_soc_component_update_bits(component, + TAS2764_SDOUT_HIZ_9, + TAS2764_SDOUT_HIZ_9_FORCE_0_EN, + TAS2764_SDOUT_HIZ_9_FORCE_0_EN); + if (ret < 0) + return ret; + + tas2764->idle_slot_config.tx_mask =3D tx_mask; + tas2764->idle_slot_config.tx_mode =3D tx_mode; + break; + case SND_SOC_DAI_TDM_IDLE_HIZ: + case SND_SOC_DAI_TDM_IDLE_OFF: + /* HiZ mode does not support a slot mask */ + ret =3D tas2764_write_sdout_idle_mask(tas2764, 0); + if (ret < 0) + return ret; + + ret =3D snd_soc_component_update_bits(component, + TAS2764_SDOUT_HIZ_9, + TAS2764_SDOUT_HIZ_9_FORCE_0_EN, 0); + if (ret < 0) + return ret; + + tas2764->idle_slot_config.tx_mask =3D 0; + tas2764->idle_slot_config.tx_mode =3D tx_mode; + break; + default: + return -EOPNOTSUPP; + } + + return 0; +} + +/* The SDOUT idle slot mask must be cropped based on the BCLK ratio */ +static int tas2764_set_bclk_ratio(struct snd_soc_dai *dai, unsigned int ra= tio) +{ + struct tas2764_priv *tas2764 =3D snd_soc_component_get_drvdata(dai->compo= nent); + + if (!tas2764->idle_slot_config.tx_mask) + return 0; + + tas2764->idle_slot_config.tx_mask &=3D GENMASK((ratio / 8) - 1, 0); + + return tas2764_write_sdout_idle_mask(tas2764, tas2764->idle_slot_config.t= x_mask); +} + static const struct snd_soc_dai_ops tas2764_dai_ops =3D { .mute_stream =3D tas2764_mute, .hw_params =3D tas2764_hw_params, .set_fmt =3D tas2764_set_fmt, + .set_bclk_ratio =3D tas2764_set_bclk_ratio, .set_tdm_slot =3D tas2764_set_dai_tdm_slot, + .set_tdm_idle =3D tas2764_set_dai_tdm_idle, .no_capture_mute =3D 1, }; =20 diff --git a/sound/soc/codecs/tas2764.h b/sound/soc/codecs/tas2764.h index 538290ed3d92..4494bc4889dc 100644 --- a/sound/soc/codecs/tas2764.h +++ b/sound/soc/codecs/tas2764.h @@ -126,4 +126,15 @@ =20 #define TAS2764_BOP_CFG0 TAS2764_REG(0X0, 0x1d) =20 +#define TAS2764_SDOUT_HIZ_1 TAS2764_REG(0x1, 0x3d) +#define TAS2764_SDOUT_HIZ_2 TAS2764_REG(0x1, 0x3e) +#define TAS2764_SDOUT_HIZ_3 TAS2764_REG(0x1, 0x3f) +#define TAS2764_SDOUT_HIZ_4 TAS2764_REG(0x1, 0x40) +#define TAS2764_SDOUT_HIZ_5 TAS2764_REG(0x1, 0x41) +#define TAS2764_SDOUT_HIZ_6 TAS2764_REG(0x1, 0x42) +#define TAS2764_SDOUT_HIZ_7 TAS2764_REG(0x1, 0x43) +#define TAS2764_SDOUT_HIZ_8 TAS2764_REG(0x1, 0x44) +#define TAS2764_SDOUT_HIZ_9 TAS2764_REG(0x1, 0x45) +#define TAS2764_SDOUT_HIZ_9_FORCE_0_EN BIT(7) + #endif /* __TAS2764__ */ --=20 2.53.0 From nobody Mon Apr 13 06:57:58 2026 Received: from mail-pj1-f44.google.com (mail-pj1-f44.google.com [209.85.216.44]) (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 2B50F15539A for ; Sun, 1 Mar 2026 08:07:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772352426; cv=none; b=YdoAofs9LNlYDnortKamlov/Q9p2uNcWRLqprQVtXSaA8IBfR5agnNHNOAoqt09smTPDaO+4xp/BJgk51hz8s/M3XiF+uZZNwE6wv4cQu+ElstgY+olo3Guck6hLCfO41JIbflc7dY/3PRbgSNqyylzhHE+SFpe4OFHEvu9LDcg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772352426; c=relaxed/simple; bh=tgaTiLnqDVU09V+sOch0MS59MDRnaMGowpS7pQpkHvk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=g7NfB0ZPLOwuPI5kqPeq4jdGwnQKxcmIGLYikwZCKh2vJI+At6tGBskZ3b3x5U3VskZUprDYkPV8Ry2Z128n4W3qXIBZ/UeKxDXtXQFYtU+y4U0Ew+YqMa/vuRkB+R0aZJOE3nJd3+yOIyW2fM2yPLfMf7d5QUncMw+y2T6G8FQ= 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=YYe4LbjL; arc=none smtp.client-ip=209.85.216.44 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="YYe4LbjL" Received: by mail-pj1-f44.google.com with SMTP id 98e67ed59e1d1-359894e17b8so126698a91.1 for ; Sun, 01 Mar 2026 00:07:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772352423; x=1772957223; 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=MUY9ZBmDZl+OfoG0SmjcuxGXm9iN1eBUEEJQwad6G5U=; b=YYe4LbjLoKhJqGfmGUo/URpC9aSyiORt8niRgTowcRmJBptAvvUxxmCnLuJzAB+rfB Xu5HC5sUFsj7U/FHcOW/B/H17tNrv5Jo4sxPuSWH+NtOOof/7lh1o8JqSImwL2G1PBWF NzpHKhZ8Dh6jJNcYfXh5QJ34TKhD0fr3w4w4qnFL2XX4BdfeH0+AGcNJUg+Kr6vDwknQ WKOmxhq+X4CLunnL42nSwSB2U9vhw/Sgstk8VdsAdJoJ1xckcziA5QRFFGsNi20l2foj NKZYrN4ErEGf8GY5TkuwTCb6CmOsMiCmBRCMHwg/52+u5Qx5OACOBkBPPz5mnDEZSjs5 Cu5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772352423; x=1772957223; 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=MUY9ZBmDZl+OfoG0SmjcuxGXm9iN1eBUEEJQwad6G5U=; b=n9laV5MSZwvkR6x53EqxpDE8c2VIf9kOLoh285/HFYtt2I2NLRiB/8rX1HKgUpTr3T +YAlhgbA9+AsxxbcdkPHt7B+FlQHgOYZvLnB2SNRxSCJ62bovxhSEy6AnACp8/wFRR3i Mq5gT7FKztlA1lf2uz8qhsgR4BdpPBngqtMOF0nAyKoC06N4ZEehA30GPMqCLayYXOEU 0wkIMrU8L/gnckoEmwZ6PaiyqFOye3bkXQsUkXUgT7k5zEOdqiqxfdpzLSeX3B3gj1Bi kHBAuJ1LXW2SFX0gqHEir1GXumnBWShKkWOvO5DZSfJVBptbubrl5AA7DLpJoCj49sxe faFg== X-Forwarded-Encrypted: i=1; AJvYcCXq3JzlOLc9jSmkcwaxLPDpheXscVQ0waXh0Tor41s+xwxTh9BLhX7zQGUGH1GbEb7iONtJxsLcVrbS8r0=@vger.kernel.org X-Gm-Message-State: AOJu0YwjZLIoaH40SgwlcHL57aY9ADNB0ndKdSDB4kqR+oj/MXOS62RM vPYoE0iW88ATF1sq81FDEm00ckqeOBnsMqKTpR8jbpjb8lsD8UX8ZjHj X-Gm-Gg: ATEYQzywxOYqYy358QZn41sptqeu9lfIJWC4jEgkK5kSwEEmG8z+9nSqudAr+pzxpH7 pnBLnjksh8tzdHDpYH6290KM1D7g4m9uJZDUzmjElPv8Ds3s2+Vv5q5GHHrHyp/oXDOECAk8Wuz kY7zBjQw8YZ2DhdZ6SZitkKlz5ssSZ4ekZ5duJp+zuHZtNM0xnM4pKKGnSVpKpxZcKwlQZE/jPe ycM0uxjBfpFPNJCF+uYXzog7GnUgMXXJqWFqWrMp7RU4ZfKLaXxCStvdYeAlHt+4DEYWmP0zEL2 JzSAAZEYNOOtuYVfAq6Lcy7VYve5EkBf4CgPljciQOvg2FCP9FHPUXeHd8c+UObe3Wn8gv8vQjZ zO3Id+/QZiFXkVCoidhFKaQWjdrBubFdYnbdMOSWa9WnRD6Ps09srkifpfqzgxxFXRqOVK43zlZ EIOvlgBEnMS8rxp5O5PxA1AIVf846umrI+nAfRmKlbnM6Zx20GrxZzXev7MV/RYBUNzbQh/S928 8kNhU32uDO5BnpM1EsROCXaiLJlcZ4iiIECYnonmplpwqjv+GuWWjSHgoToErokUe2sZi3Jwfdd X-Received: by 2002:a17:90a:e18f:b0:356:8719:f516 with SMTP id 98e67ed59e1d1-35965ceaf7dmr8142105a91.24.1772352423345; Sun, 01 Mar 2026 00:07:03 -0800 (PST) Received: from [192.168.2.3] ([2403:581e:d87e:0:fc2d:ed31:e80e:412d]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-359135ef1d7sm8885384a91.5.2026.03.01.00.06.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Mar 2026 00:07:02 -0800 (PST) From: James Calligeros Date: Sun, 01 Mar 2026 18:05:26 +1000 Subject: [PATCH v3 7/7] ASoC: tas2770: expose SDOUT bus keeper via set_tdm_idle 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: <20260301-tdm-idle-slots-v3-7-c6ac5351489a@gmail.com> References: <20260301-tdm-idle-slots-v3-0-c6ac5351489a@gmail.com> In-Reply-To: <20260301-tdm-idle-slots-v3-0-c6ac5351489a@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 , Frank Li 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=4520; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=tgaTiLnqDVU09V+sOch0MS59MDRnaMGowpS7pQpkHvk=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDJmLP2dcTLpzemWex/bfGxXUDX58YpGPWnFnj8yUCo28u 2eU9EtmdExkYRDjYrAUU2TZ0CTkMduI7Wa/SOVemDmsTCBDpEUaGICAhYEvNzGv1EjHSM9U21DP 0EjHWMeIgYtTAKbaUpCR4YJRr9JVri/nYzdXH/q9TWVPg7Cu/fqlz6NSj7Bqmj44Y8PwT00yTkn RuGpje8r1VntOyysFth9LO+97iO69NGWv9stOdgA= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 TAS2770 includes a bus keeper which can be used to control the behaviour of the SDOUT pin during specified TDM slots. The chip can either pull the pin to ground, actively transmit zeroes, or keep the pin floating (default/uninitialised behaviour). Expose the bus keeper via the set_tdm_idle DAI op so that it can be configured by consumers. Signed-off-by: James Calligeros --- sound/soc/codecs/tas2770.c | 75 +++++++++++++++++++++++++ sound/soc/codecs/tas2770.h | 12 ++++ 2 files changed, 87 insertions(+) diff --git a/sound/soc/codecs/tas2770.c b/sound/soc/codecs/tas2770.c index 6f878b01716f..d4d7d056141b 100644 --- a/sound/soc/codecs/tas2770.c +++ b/sound/soc/codecs/tas2770.c @@ -492,11 +492,86 @@ static int tas2770_set_dai_tdm_slot(struct snd_soc_da= i *dai, return 0; } =20 +static int tas2770_set_dai_tdm_idle(struct snd_soc_dai *dai, + unsigned int tx_mask, + unsigned int rx_mask, + int tx_mode, int rx_mode) +{ + struct snd_soc_component *component =3D dai->component; + struct tas2770_priv *tas2770 =3D snd_soc_component_get_drvdata(component); + int ret; + + /* We don't support setting anything for SDIN */ + if (rx_mode) + return -EOPNOTSUPP; + + if (tas2770->idle_tx_mode =3D=3D tx_mode) + return 0; + + switch (tx_mode) { + case SND_SOC_DAI_TDM_IDLE_PULLDOWN: + ret =3D snd_soc_component_update_bits(component, TAS2770_DIN_PD, + TAS2770_DIN_PD_SDOUT, + TAS2770_DIN_PD_SDOUT); + if (ret) + return ret; + + break; + case SND_SOC_DAI_TDM_IDLE_ZERO: + ret =3D snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG4, + TAS2770_TDM_CFG_REG4_TX_KEEPER, + TAS2770_TDM_CFG_REG4_TX_KEEPER); + if (ret) + return ret; + + ret =3D snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG4, + TAS2770_TDM_CFG_REG4_TX_FILL, 0); + if (ret) + return ret; + + break; + case SND_SOC_DAI_TDM_IDLE_HIZ: + ret =3D snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG4, + TAS2770_TDM_CFG_REG4_TX_KEEPER, + TAS2770_TDM_CFG_REG4_TX_KEEPER); + if (ret) + return ret; + + ret =3D snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG4, + TAS2770_TDM_CFG_REG4_TX_FILL, + TAS2770_TDM_CFG_REG4_TX_FILL); + if (ret) + return ret; + + break; + case SND_SOC_DAI_TDM_IDLE_OFF: + ret =3D snd_soc_component_update_bits(component, TAS2770_DIN_PD, + TAS2770_DIN_PD_SDOUT, 0); + if (ret) + return ret; + + ret =3D snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG4, + TAS2770_TDM_CFG_REG4_TX_KEEPER, 0); + if (ret) + return ret; + + break; + + default: + return -EOPNOTSUPP; + } + + tas2770->idle_tx_mode =3D tx_mode; + + return 0; +} + static const struct snd_soc_dai_ops tas2770_dai_ops =3D { .mute_stream =3D tas2770_mute, .hw_params =3D tas2770_hw_params, .set_fmt =3D tas2770_set_fmt, .set_tdm_slot =3D tas2770_set_dai_tdm_slot, + .set_tdm_idle =3D tas2770_set_dai_tdm_idle, .no_capture_mute =3D 1, }; =20 diff --git a/sound/soc/codecs/tas2770.h b/sound/soc/codecs/tas2770.h index 3fd2e7003c50..102040b6bdf8 100644 --- a/sound/soc/codecs/tas2770.h +++ b/sound/soc/codecs/tas2770.h @@ -67,6 +67,14 @@ #define TAS2770_TDM_CFG_REG3_RXS_SHIFT 0x4 #define TAS2770_TDM_CFG_REG3_30_MASK GENMASK(3, 0) #define TAS2770_TDM_CFG_REG3_30_SHIFT 0 + /* TDM Configuration Reg4 */ +#define TAS2770_TDM_CFG_REG4 TAS2770_REG(0X0, 0x0E) +#define TAS2770_TDM_CFG_REG4_TX_LSB_CFG BIT(7) +#define TAS2770_TDM_CFG_REG4_TX_KEEPER_CFG BIT(6) +#define TAS2770_TDM_CFG_REG4_TX_KEEPER BIT(5) +#define TAS2770_TDM_CFG_REG4_TX_FILL BIT(4) +#define TAS2770_TDM_CFG_REG4_TX_OFFSET_MASK GENMASK(3, 1) +#define TAS2770_TDM_CFG_REG4_TX_EDGE_FALLING BIT(0) /* TDM Configuration Reg5 */ #define TAS2770_TDM_CFG_REG5 TAS2770_REG(0X0, 0x0F) #define TAS2770_TDM_CFG_REG5_VSNS_MASK BIT(6) @@ -115,6 +123,9 @@ #define TAS2770_TEMP_LSB TAS2770_REG(0X0, 0x2A) /* Interrupt Configuration */ #define TAS2770_INT_CFG TAS2770_REG(0X0, 0x30) + /* Data In Pull-Down */ +#define TAS2770_DIN_PD TAS2770_REG(0X0, 0x31) +#define TAS2770_DIN_PD_SDOUT BIT(7) /* Misc IRQ */ #define TAS2770_MISC_IRQ TAS2770_REG(0X0, 0x32) /* Clock Configuration */ @@ -146,6 +157,7 @@ struct tas2770_priv { int pdm_slot; bool dac_powered; bool unmuted; + int idle_tx_mode; }; =20 #endif /* __TAS2770__ */ --=20 2.53.0