From patchwork Tue Feb 18 08:35:35 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979292 Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.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 EE42A22B8D0; Tue, 18 Feb 2025 08:36:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867765; cv=none; b=lCSS4Ezx9ZG/E2FViaMEMNq27UpasxnJPxldLyHAZfz8uo6fhdr4LU2bBSEsGBPBvYhgxrmTBZKZ+QBUPizZjyvqE35TW/X3si4KSVTuOEEgOTtgiQ5+Wu4xrOSnQ+sTgS+36J9JC56n+eZapyOTH7I4nY3upGjZA5+4yjU1HbE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867765; c=relaxed/simple; bh=JjlvOPqR1QdqJhsMRRHhvT8COSrKfIPpL8mmZWKayTs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nAUzLktwFmXZ0mesgnMdBVBRrbvCvvDtxNWuL9hecEuWMMgt0jFdW9E+KVI3bNjh2NtlhbNKDtOfRC6jfWTFrWylwA+cEOqDNShXttPKDZCisEWb3gEU4HSFx8ew0SP/2SeaM2l1vL1jXHlscN4WRKJYTWH849tJ/NlVzGmZ7gA= 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=bG8q7eOR; arc=none smtp.client-ip=209.85.214.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="bG8q7eOR" Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-221050f3f00so50366675ad.2; Tue, 18 Feb 2025 00:36:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867763; x=1740472563; 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=BceYlCX5vbozGNFMmQiIjW33ZPH5I7W91a3fTwyhgQQ=; b=bG8q7eORPvBjTgxG5ri9myYo3BtJsxH9bkH0TMj0l9yyvTnkgghJGrU3QZm3BQhNP6 2N0dPoE2vMpT5Qb9/VQ33qMg2dcd/rMJRngOjRycx8d3tG033Qw4qOktKiar/vjuQKDf 9fRS5HV4rHVos1PENHaXFCgDpxRAyoisvHf+eZMZKbxsL0OTmKrIFEsGknIYk9EH2R6Q JS4fkOveP21/6HTLcUFK9/mL+iQeSL58dixXFeDPE+hdgQ9+rrN3xCO/oGPbyKmjA2Ss v+qiHVblPrG85Y1chQUljksAdt+2DWiNR/v7jtQN+z+H/G7Ha3P03MKF5YEz170K7MAL k0aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867763; x=1740472563; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BceYlCX5vbozGNFMmQiIjW33ZPH5I7W91a3fTwyhgQQ=; b=t8Lh0OW7y+nS91TYbuB1l72pXYOREovlFogbo4Rc7PIRwG8NDuH8eOgEzPeBLvgDVs LdSBPERyXP597oKHH6bPOeto3SZJLqnzXWzu4sYYBimyiij/iSoSjpvF444O3aoHRAsn 4U1ZGbsEW6YgmDaTp7XfT4+vt2x1Ez8kvq/ZQYMpQR6kwcvNVjmlQlJhnjXhJYG+WE3p RD/FLasoFPKYuUeNZpUKBrVyukKucbS4KG+IpPIwZIOZOAUYUK7HBD9DAp1NJEZhrb/P B5sqCJT2tAlqjWwLeB1mb7S7xPXv/DKhnLNbV0bHyxe984jPmKEs7eDjAiRTRFkAx2XW nP7Q== X-Forwarded-Encrypted: i=1; AJvYcCU0lK3lWQ72MUx9XBTndGljlMsHEc31LPBa0WF3r5wzwqZ/GCm2n7mLyWEdtCUnORCn+kcDX03lXZcy@vger.kernel.org, AJvYcCUpn3enwQ1NfpaIgoZOwqNiALOhLJj3PDeTP/G7obSY29x/s80qqw6urnqHgGZzZOgFmswO0bnhhSCt3Fc=@vger.kernel.org, AJvYcCW4ltY7fyGnFdclqy02XxWj3hrAo3HCRFNBZgRwV+iEoF4TQzGZ5lwlt0e1xEwE6JhdftBWQRZkRhz3lRrL@vger.kernel.org, AJvYcCWlj3OPdDFahXcpISTbvhaOVWQc3Uzl3ho2tV0dhEzoFfFeFaxcLRJbDZn1JgYv+MRWX3aFHqnQdrPEsDo=@vger.kernel.org X-Gm-Message-State: AOJu0YxXfLFgbpn+w02AE0XynPzKXok9qrmYtPD20qLfd+U63vF+VeC8 bPLAyV557FYMJvbFAhdm5d76IscwuZWBF4K/EHqrPfvl/YXOwnmEt1xpZT9f X-Gm-Gg: ASbGncsfLMJ5CjDMRYBS1qaQsCFYIBLGO1+iSclerWeBRrPGjAxzD7rYYp3tbgdCmMZ t0PJr0Z8ksz0OtN571ZK0AGNwHrqid01BPFiufA+ryo5GrSz90l/+IiOJ3gg7+E7jM3I5WFzkBr 2jfsno3P5qEPaeF1N7H6pYU5JdIG0k6woR8SwK1WRHpQRd404DaX7njWlM6DjJdFxg6VzQrI128 i64HOONUqQMQsTiBlSOs0kkFhdxxOOpQ8Gr0V29Av1FE4AIcQJZZ0E78rBhKMJx/B3msuPwpccQ S4qdNe284VsHSfb3e7Zle5ItxVbw2LI1SteCMJ1wrtVe3/UChitITJZELGcbkmeoKy7scFP6TN7 vN+XXcSbviA== X-Google-Smtp-Source: AGHT+IExe1obOg6JdhqaMeZP9BJnI/sbek9jjVND4C34Fb62dH/AuT4ztTLKvkL9heLj+cU5Y+13Yw== X-Received: by 2002:a05:6a00:3e0c:b0:730:75b1:7218 with SMTP id d2e1a72fcca58-732618c1ec6mr22056568b3a.16.1739867762934; Tue, 18 Feb 2025 00:36:02 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.35.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:36:02 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:35 +1000 Subject: [PATCH v2 01/29] ASoC: tas2764: Fix power control mask Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-1-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=802; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=3C7DOfIHda8WjgBc3ejixI8wNYha3fB9QmWCFcWPEPU=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3OIF+d793mUl/67UftksU+dWFj03dY0LHw8etclyq Vn7lP1hRwkLgxgXg6yYIsuGJiGP2UZsN/tFKvfCzGFlAhnCwMUpABM5ysvwhW/foRXV/cLFGnsK bHf/EDc3Xrrpk5u47RGjL5X3g50SGRlmLKhnUFc981p7S/gro5hrUXnzPr0RYXuUuejkcruEV+l sAA== X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Hector Martin Reviewed-by: Neal Gompa Signed-off-by: Hector Martin Signed-off-by: James Calligeros --- sound/soc/codecs/tas2764.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/codecs/tas2764.h b/sound/soc/codecs/tas2764.h index 168af772a898ffd1c5e96c50df77ff6225f704cd..d13ecae9c9c2f57853db70bb1eef2380f6fec45c 100644 --- a/sound/soc/codecs/tas2764.h +++ b/sound/soc/codecs/tas2764.h @@ -25,7 +25,7 @@ /* Power Control */ #define TAS2764_PWR_CTRL TAS2764_REG(0X0, 0x02) -#define TAS2764_PWR_CTRL_MASK GENMASK(1, 0) +#define TAS2764_PWR_CTRL_MASK GENMASK(2, 0) #define TAS2764_PWR_CTRL_ACTIVE 0x0 #define TAS2764_PWR_CTRL_MUTE BIT(0) #define TAS2764_PWR_CTRL_SHUTDOWN BIT(1) From patchwork Tue Feb 18 08:35:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979293 Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) (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 8CC27192B71; Tue, 18 Feb 2025 08:36:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867773; cv=none; b=Rqvc1BlqJWsvw8WOM0oVowGLB21beQmVZ4mDIgZnuUWL5sZpoEQA6P3ksvJj8LsL+weGqiQRbVeDI5bXlKru/WR2oLSCpt2K8+8/n7emQuRpn0PdDnCoDi377mf5a7I55YU0fX1900/7p4DUIaWNXKw+qzPDVRUL71ZRHs/s9fU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867773; c=relaxed/simple; bh=ihiPVhcMUYw/qHe10TgorGJcdQbOh6p+yirtw1hvn2I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=p1HkUiAt7gCMralOjCDJrKIUljDhQ22VF0ZveGa56NOkW19HwWMQXpRePScqe9lbaZ5Kj6VFSk2NNuJWxXGrEpsLboz2KqlpFSBS8dcr8Qvun8+E2SwNocfhQkgcTTKpdT4XwUyNGNji2N3WKyQFGTJ2AFjW0BdzwNPvtl2OOkg= 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=UjbI1WKi; arc=none smtp.client-ip=209.85.214.170 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="UjbI1WKi" Received: by mail-pl1-f170.google.com with SMTP id d9443c01a7336-220f4dd756eso64592905ad.3; Tue, 18 Feb 2025 00:36:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867771; x=1740472571; 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=OF/O/lP/mT4jNnw/OxFlvVpNX2pXzauUtJPaPsgZZfE=; b=UjbI1WKiREg+NrjiEsRUJFn2givdYObci7s+6UQVq64r6y6AJqMxAomq9jxwN+E1D9 x0b17z+Z8PpVO7FKp22OhkpATf/JrNRm38OKlKo14RBcYh9IwVrecPimCtJDdmgdK2dB R2BWN7yNLxkf5jAyXuUjfrBzcLb8YAkmP0lnXXIzq0PpXffjb3EPmIW0asPDNZZGZ/+0 hgOjop3C6uqTPYIXnNwHbJPNIiIK2IaR4+f7/9kK+r/oedYBeT+gLM8JcF9GMA8kdMts JBYVrsvA8Yo2HzZAGLOLOx0cY53vHfu/KoCrVVvLHuAptsQYbvwRc0D3wmEpxRLPfUsW w7gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867771; x=1740472571; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OF/O/lP/mT4jNnw/OxFlvVpNX2pXzauUtJPaPsgZZfE=; b=Gea/iYcVDW6YsGzUJYtLOr7HGrIpUZ/EnysymayoAdDXNE9HFIcYYhmH07rcsGjLZA jW6+uX8Y80hf2v74/O44RdK4T7u2uAUXO0ppc7ReeSo6d0tlnIMR6n02cvnQhSMf2FsF pT9tUT3+T2q5s6ylz8LM2qjlTKJgB6oU93ccMZhHkK7MBROCl86ETtoVW2txCwhTR/2q 2CAwFvkh1wmjsgNskldNYzbIIZGzQJLL7ehGPXrSEnjKAjJBx/34r01vmgQFgX7DDHyR bLxTKfzg8AVSXhOkciNoGuG5ZABM5/C51wMGNGpuhXKd0AWeQKp04h0DwNubvWLjqLwB nnKQ== X-Forwarded-Encrypted: i=1; AJvYcCUHpy3aoRS7AU+QW36Pa5kNsWvS6HSXQZYLXEd40sXYSFP4El6Nfuoa2DGWFTLvf1jv+LZZYjl707Xslvc=@vger.kernel.org, AJvYcCV52KjqDI3gkktisYqZqxJImMRxxMOe+lMcqmCiaqvbe0onSzou1BSyxF1deH4cGQptWOwkqDrFLo83CDwv@vger.kernel.org, AJvYcCVn0wTfFNTnaJVtgZNWeetl8oxz3YE1YhfT9jm7YO9tixEVtXOmWTe0GTTmMUCC7qoEe7tg3cdEQa97@vger.kernel.org, AJvYcCXrFiblGKMFau1n44Phxylgirvp1fKzj00x7RE8M/hbNR/bkZY+EegmfiBj6GPszNtSsqEf8GJIDRGviMs=@vger.kernel.org X-Gm-Message-State: AOJu0Ywr9QGQ/JDlIPqzx2HmzJ7BtYfAvAt1tzSXmDIEm9wbSSDqQjZR HYbIdEjEeSk155+WYRZixyfSd6wekApCYc5mzH7DzntMYGnHPPAzrfOJJ5JP X-Gm-Gg: ASbGncu9rXr7w9YXTW5mVtyKiP5mt8gPtACEnsU/hHEfz5lzkdONi1lT7b1d0RcVwNB p2iOJGu+Wm/FkLuhb4e06eUUcgaJnNIXd36nR54GEvft18NRM6JCeW+AZf0qONmDlj2bBg4Fn6C bWFVKg3sG4NBiTwvns8urtjHO/chVRvDJr9W4RCpTdP4u1goyrD+r69KOPGdLCEAIe1j34g60fe +IuEIprpLBRQo/IGBI2/Vp3by6eIPhc2Ps2SUled8HQJxHY0AsJNMYbr0/MMFb8v2k7/omp/hV/ BQdleiDoqj7g7Obdj7fE8E/d9kIPeX9ilNS3VwqP0AKxgxkgq18Lmv8vUuN4RqSNsYWBBUQ5Fzd nSBM48epmKg== X-Google-Smtp-Source: AGHT+IHmXcMPPPj/jkvfcToQWS9qO+2Zddin1cLKfo5/ytUB2jIw0pEXVc/F3aPgclBbVhcX4ndltg== X-Received: by 2002:a05:6a21:8886:b0:1ee:a914:1d57 with SMTP id adf61e73a8af0-1eea914203amr13137022637.3.1739867770702; Tue, 18 Feb 2025 00:36:10 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.36.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:36:10 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:36 +1000 Subject: [PATCH v2 02/29] ASoC: tas2770: Fix volume scale Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-2-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=974; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=q30IbUoUVIty8Km4kUwzvng0oNn9XrUmBVn70mfZY4c=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3OJr/xofZLycZvb43zrhaoccpZTlIc4TiwpcbpkKd F6++1Szo5SFQYyLQVZMkWVDk5DHbCO2m/0ilXth5rAygQxh4OIUgIkI9zP8T9NmfFgRet5Ad7n0 71Mzb/Nfip2Tn9O6/qNGV/MS1pXRpxkZti4UfenQp9ffzVQTJScTs3xbqbGcwGKp0vUZqx+FXzP iAQA= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Hector Martin The scale starts at -100dB, not -128dB. Reviewed-by: Neal Gompa Signed-off-by: Hector Martin Signed-off-by: James Calligeros --- sound/soc/codecs/tas2770.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/codecs/tas2770.c b/sound/soc/codecs/tas2770.c index 9f93b230652a5dd05f325eb506220b17f5a4b91d..863c3f672ba98dd74a5ba1b15d650a90f91176a1 100644 --- a/sound/soc/codecs/tas2770.c +++ b/sound/soc/codecs/tas2770.c @@ -506,7 +506,7 @@ static int tas2770_codec_probe(struct snd_soc_component *component) } static DECLARE_TLV_DB_SCALE(tas2770_digital_tlv, 1100, 50, 0); -static DECLARE_TLV_DB_SCALE(tas2770_playback_volume, -12750, 50, 0); +static DECLARE_TLV_DB_SCALE(tas2770_playback_volume, -10050, 50, 0); static const struct snd_kcontrol_new tas2770_snd_controls[] = { SOC_SINGLE_TLV("Speaker Playback Volume", TAS2770_PLAY_CFG_REG2, From patchwork Tue Feb 18 08:35:37 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979294 Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) (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 EBA7F22B8C1; Tue, 18 Feb 2025 08:36:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867782; cv=none; b=chuBB5pgwCwLvMXFmOXhmQRPBpHtLdsbr2lNDZlzJs2AlSpp7xvRydC+AhP4bd5RZOLT0/gSaSmdOKdXwo3lL4aQ3j1OhRTCoYRk64WgguAeqb5tFesYZ9anxS1uLaPBVrMpMGI4VNt2rABb993nLlyukRAXbEO2wG9ot9IyfZo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867782; c=relaxed/simple; bh=Qd5+REmZzMNSSCpYc+Dv909nqke9xxDIoWKydv7vufk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=axsW0U/dAvFSf0bSuZ+Rzttz0XpnAWdRR9w6RtAw7r6XGHXMrlE085qj5L8sOrbh66B508gLDfmAXjzC2d1RrZdwhVsAj3fCKEW7fh8igHj5ruGqlU/znFYkGsAJLELR2qWU8PC97x9IsYJ4YdwuRM2lOLVBMeOs8MHtx9C338k= 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=ZCzOHtc+; arc=none smtp.client-ip=209.85.214.170 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="ZCzOHtc+" Received: by mail-pl1-f170.google.com with SMTP id d9443c01a7336-219f8263ae0so92384155ad.0; Tue, 18 Feb 2025 00:36:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867780; x=1740472580; 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=liQ2eSlf/sYgGWDLjfHM7DvSlE0ifb5tq7MQhvxFJYw=; b=ZCzOHtc+49OzUZGzqNbobMo1VLzMvF4w9UGw+cGY89ZPBJEZY0mDynVaIE2/gqfeHR kSiJvd7w3ypt6CnQGRRW+xTM6XnyQTfTY/bS54IaAlBdkREpJO6yVBqjuvueM9bi4771 UOZjEiS7NxONPWhPPN7OTFMyUfMjq37aoVaFWCQTo5T48ZXzMZG7Gx7E+FusamO4315X LutT9SWON3J4d277kdo6x9YnXRSKJ/QxIhPNAjUB7lxuZLmkMkbvvJEaPIqXgfTMBrLL wN8Yg4sxLHnkBzPw89YX+xVpdoBsSavV9FqArJle1BYzXepz727MIHXaQcCtIuCMuVwE 3wog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867780; x=1740472580; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=liQ2eSlf/sYgGWDLjfHM7DvSlE0ifb5tq7MQhvxFJYw=; b=FSidgshSmfTpn95yc5QLkntCnqn5jqQUnQxTcAx3XpxB476Prn3efwNif2V9C4s8oa EHW7F8Culy44cVd1bWIpVmb1U0I4SMkpTmsCTGqCZ3M0IDmmtxgV2fUvyWHiFi6Y/1S0 8+3pkUvUCYHDxr/11KbTUGozQvSz3BrIMiPKs3Z+0pThDbDMBTPQykDpeNUOHXIyGKvN 9zU4pNNYZxtU5rH6EsQIJ/+9RzhHP3FhdTGfMOEM2ebK7Ie8EGZYl7OkvDUumn35kObn S8ldqUxWWViFu321b9qM9FcFvwJOnQPZ4a/qY3gAZmubUwKq1uxh4IolDYEA9cSTZj6f SkyA== X-Forwarded-Encrypted: i=1; AJvYcCUUF4hohWur1LqPUiALHN8xMlD+xVgc5wQDRBhi250/CY6eTC+SqP6KRs9bcH9uOaCkVM5WSsJQaETxaa0=@vger.kernel.org, AJvYcCVLO1skCghm52+te7jawdigpYeBcSjzynAszyzT6/whWK84iCD0YTiKLjmBKQBEYlgg4CBxLa+GkZgN@vger.kernel.org, AJvYcCW8bMLcBu4XTK3oLaUCaRSJnzQ8VRhgba72KO4pPnjahSPtsDqHFafYbHnOYCJiK+/4WFIVdbKV8MXex4o=@vger.kernel.org, AJvYcCXbeSzPYhYLRWPKZlitYR+9oWxBs8lxGz81/pLQ3Izv0eTfIwv1RDQcnDBeBi5qABOKiOAPvOZxnXCyStZ4@vger.kernel.org X-Gm-Message-State: AOJu0YwEFihg2qCiznNuSpNJ3/9Hpd6ZMkNiFRf9feYfjnK4vlSNqcZr A3sCoVFki4vY8ez9/lBTaIOzTMuXxV5X+ukvGly+zK1FaxlxXVc/UUOLK8VZ X-Gm-Gg: ASbGncvUxjNnxwCI70wqJXfQdj+NJt4C0P65US76qX+/9GNFxhbjUe425HX5IzsWqzZ jNPDrY9OlsNn/FJeZesm1tJ0E/N/IFM6kCzpXkKMsMGvZVDAc6fEqgTyz6sXyzWuyNjD+BDmEVi MFEWdIUiXwYgIxDpyX134SN1EFQ2VznBiEFSPBDHEJcLUKOKyfLd7nc0WqVbIVr9jutVepmzA1E 5d1YWlBP3JTgOIQkuvYkVU+oLKSzYHwMav2rDUG4KcG5O+MnCblTFWKiXT01TU8ZUt69Rv2cZnR udxTdjV7K7SvT01Y08cZW6Bet8Pv0D3MsQ5NBHfXprFkeVCOE/Jouu4nqHrQDzYhJi/kkx/p5Fb osEn52+Ih/A== X-Google-Smtp-Source: AGHT+IHWnUgRHRwrl5gE5LT/GoKS4HRMWbZ0qZHjBnMf0PPkuoDaV+YrF7kSYDZ2wpRZS0JquDIXog== X-Received: by 2002:a05:6a20:43a0:b0:1ee:69db:b0c5 with SMTP id adf61e73a8af0-1ee8cbd7f21mr24238616637.31.1739867778477; Tue, 18 Feb 2025 00:36:18 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.36.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:36:18 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:37 +1000 Subject: [PATCH v2 03/29] ASoC: dt-bindings: tas27xx: add compatible for SN012776 Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-3-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=952; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=Qd5+REmZzMNSSCpYc+Dv909nqke9xxDIoWKydv7vufk=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3OLTlmQZXTnQ5vDw7N32gzNZs15FC77svfFonXKxW uX2VHmFjlIWBjEuBlkxRZYNTUIes43YbvaLVO6FmcPKBDKEgYtTACYSz8LwP0lmZXu137Fz4afn bbdsnHTVIHPRZrVvTmuO5dk0fN6oaMLI8PVF7ML5964WTPx9dddr8aZNFnw74++tavXMurhr2vL iYGYA X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 The TI SN012776 is a variant of TAS2764 found in Apple Silicon Macs. It continues Apple's long-standing policy of getting vendors to spin out subtly incompatible and Apple-exclusive variants of their publicly available parts. Reviewed-by: Neal Gompa Signed-off-by: James Calligeros Acked-by: Rob Herring (Arm) --- .../bindings/sound/ti,tas27xx.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/sound/ti,tas27xx.yaml b/Documentation/devicetree/bindings/sound/ti,tas27xx.yaml index 5447482179c14ee78885e5bee02f4549428694a6..fcaae848e78a1137e4d44f98258207bba68772b9 100644 --- a/Documentation/devicetree/bindings/sound/ti,tas27xx.yaml +++ b/Documentation/devicetree/bindings/sound/ti,tas27xx.yaml @@ -24,6 +24,7 @@ properties: enum: - ti,tas2764 - ti,tas2780 + - ti,sn012776 # Apple variant of TAS2764 reg: maxItems: 1 From patchwork Tue Feb 18 08:35:38 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979295 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (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 3F87122D4CE; Tue, 18 Feb 2025 08:36:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867788; cv=none; b=FYX4uKZ6kcR1WshHJbXFuUEz2/NWlsZXGpwwlptbwWPCAdcNDx0TcXRQcmosJHGXLoF/mmRLK2cuReGEbj8Q/znILMM1Vrp4E6QNIEd0YkoVtLU/lxlor2Bm36fG2Yy5yCEOPlZ2hgqM1rYUEzyPEvfQZ7OvX98NpRYxblcIafw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867788; c=relaxed/simple; bh=oJ6cbXoYl9+xunmruMkgIaSkFKo0J5EOCYIf9ToUJeU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qpEXD4EdHAriHikl6wLOH9BRBKRnYnELhxS0R8N7fDYlnRfIsxCE37zDBOYAGhLcqQxSzUr7XBI9vCAjHwCD4/SL0pKlOLiOgoZS6iE+38HiyMSDoo58okt9E5SJI4YoCNofCFyAoO3oxX62RDdmRX3LM9DvFpPnlC24CXVSJLc= 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=kwokSjzo; arc=none smtp.client-ip=209.85.214.176 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="kwokSjzo" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-22113560c57so46574595ad.2; Tue, 18 Feb 2025 00:36:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867786; x=1740472586; 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=84WsiJ5ph/+RUwszy0qEmqgYeEni4YLdWQm6ihbjNcs=; b=kwokSjzoO2ZlEwpbfHpt9CEvBVPoVggh1LkJ19kcTGIPhGo4mqqYBQmy+0QbLPXlNP NOVHfOVjAsAGJAJ25YccT1wET5oT3nNyVNHZAKP9lDBMKwQSWlPY5EHcnB2Sq+FZmxSB 01rnfiquIyR1NORM7WApaITZFj7MJA7CpmPBy+YDYmCxZJkk3GY4rv7EBMVT4hbl4ZBo qHRFuhSfk2uz9nlLEK3Q2kB63GYrk7cLPWRQdyLkhZ2RvnllgKA6kiDFPZu0tOgEpqzz owxLHq6fM5xEA7IEKoDspZY5n2IRjEui3hMsN2qxDI87N/Jzf2jazo3gX8hJbrxZQKy9 kNaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867786; x=1740472586; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=84WsiJ5ph/+RUwszy0qEmqgYeEni4YLdWQm6ihbjNcs=; b=p5/xHE8ey8TOIPjty0r85QI5Ls7/WzZ0hFNN+/tVGBq4Yt49rjqU8kFJLVGA+H/RIE S6fysAfYHb/tJ8v/864DSU0GDKrKYDvnEdW1MwRuTEFegkPiLFqTvEGO/treB4FRiaYJ 7HTDo5ud2cixXMLOyg2Nq3jeNaiRpb+zl6rPrSVQGRmz5+clYe+GaB8pczz4pG0KxMze QDvgLGrgaF12YF1jmj8JIaQ0xTNVoLYp0a8wThInqf2GW1cUb52LAASlqg6vZfhabOJV FFuaGSmvutWVh6hrGL/vR9pptmxSFtnCSefoDuTlBXida8aNTy7hnB7TCpG4QyNHAAiO AG/Q== X-Forwarded-Encrypted: i=1; AJvYcCWFcDN2XaTobdLlAgC3LT97VCBGk+dhY9fjouUktLkus3jn+QaWvNjuc0BMNIs68lk6JSOPDD7moyN6LKpq@vger.kernel.org, AJvYcCWozOAddHLRrYQyDV5xBiCPj9bmNbcfWsK4L/AwpDLpCixU3E1MJC14Adza1JKqZFveJotYGIFKO2zH3EY=@vger.kernel.org, AJvYcCX3X/1Rb/p03ABVlNQNKZnUkODzcxAirkf2DxatKj+PpQ6mEN2twKV9dsdzvN1rA8riYgu1MwLwcieFA3c=@vger.kernel.org, AJvYcCXZKhGFHTa4fs1MTcTo6aW4mdpZqhO5+K+FG7JJkV0lmB6P1/6WrLYpUgHfFCfoOPzcN3AnQnLTRDCu@vger.kernel.org X-Gm-Message-State: AOJu0YxksFlaftCOmH1vJBzxwv3MwOrNYTRSmqJPkTu8kihlL2B9404m bzsxlQAp/jzRKfhvgr8zRl8BkXrpjG84qgyiLJebDvMjDNTkyn3L/TyBo0Eq X-Gm-Gg: ASbGnctJcei1F2e+eMhZrAy8uoI5OE8n/hSXQ/Kn10fgxyZHMyPBgmhu6crxXH6M/Vv 50SL68DfdjqsCs7JbFROwvP7RMIiNoAU0L5NaANvbib25rLYDDTOZF5YuKpShX704gX70OYG3/E zmlJWw76M6o305wSyaTtOza8Iv/EO3zPnLcEyoRtpupUIsezSY4vQNxBtCWoK0gG1+31TIfNzQN ALajoo2UKCA2yGiUMNYYhDfl+Imzh9omO/GS5267aQhcm4+suVlKfscMZ4eBHidjly7Jj7DkMLU rJfFq+PE+X8gCxueElfFQYFNTmSoSl/82ioVhP2lrsmwWkU+1Koi71MYCDGNvdg5tn9sNcUskVf +uHa8sXJHjg== X-Google-Smtp-Source: AGHT+IGLXFZbwDTW5xQcdsp+acfAsOzwEHRxRGOygcsKN3a2K5ubX6cgUllQPxBgV8283AinHTIRAA== X-Received: by 2002:a05:6a20:158a:b0:1ee:cb08:d0a3 with SMTP id adf61e73a8af0-1eecb08d345mr1969132637.21.1739867786295; Tue, 18 Feb 2025 00:36:26 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.36.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:36:26 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:38 +1000 Subject: [PATCH v2 04/29] ASoC: dt-bindings: tas2770: add compatible for TAS5770L Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-4-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=778; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=oJ6cbXoYl9+xunmruMkgIaSkFKo0J5EOCYIf9ToUJeU=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3OKTeATfLCqot53+MVCEJ/Mzj6aZjNEN59abEuavZ h3gXmvbUcrCIMbFICumyLKhSchjthHbzX6Ryr0wc1iZQIYwcHEKwEQ4Kxj+Svss8bjf7Sy05Vjt lu597kd2ZX0UE/q/dvWME5vYXcM3+TMyHEwV63Lm+hW0Z3bjDftNYkuUyvN+6R8oy5Itq1t2L6G NGwA= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 A variant of TAS2770 known as TAS5770L is found in Apple Silicon Macs. Reviewed-by: Neal Gompa Signed-off-by: James Calligeros Acked-by: Rob Herring (Arm) --- .../bindings/sound/ti,tas2770.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/sound/ti,tas2770.yaml b/Documentation/devicetree/bindings/sound/ti,tas2770.yaml index 5e7aea43acedc0f7d8c22e36debfe805c7ebe74f..8eab98a0f7a25a9c87d2c56fd0635ff8ecee17d0 100644 --- a/Documentation/devicetree/bindings/sound/ti,tas2770.yaml +++ b/Documentation/devicetree/bindings/sound/ti,tas2770.yaml @@ -23,6 +23,7 @@ properties: compatible: enum: - ti,tas2770 + - ti,tas5770l # Apple variant reg: maxItems: 1 From patchwork Tue Feb 18 08:35:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979296 Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) (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 F1CA722C322; Tue, 18 Feb 2025 08:36:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867796; cv=none; b=Ya3lE+Aeb3hKjsD7CUMjmJQIKWP4pudyeJrhobJT8gGd2KJzHbGSZcwBbXxvn+nornr9sjSlx4ppcTTOUgVePDh3+XMrxjBybiB510NvgEfWSqhtrKvKZ2RKUPqcZKW4DF3bYcgTGDop6QvXmXWRNZeTChwYBs2/CMw8a9cPZhs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867796; c=relaxed/simple; bh=ibUQWT0CBsGobzHnhQBolv7HNIIYAkN7Qt+Kz+xkT7c=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iUxZ+kl0+9N461k/iyp5D5aaap2cOk9gKnqhMKWbJ+o0idqyd4PLq0cDiY/ePvIo00olJvaqz9GtYaTUd9xg9ZjS+aSjkZWwmgJBdi4pEVYNYp7mwTASw2bEYWQw30mjzUeQEQroimCJB7OPLp7OERyI/YH6VTofNSrfkjlqgCc= 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=aCtzRc5r; arc=none smtp.client-ip=209.85.214.171 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="aCtzRc5r" Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-2212a930001so47178855ad.0; Tue, 18 Feb 2025 00:36:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867794; x=1740472594; 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=T/JJHVuhOmU2flaa9vpPAAtoFcuf4Ywj04vQWrR/12g=; b=aCtzRc5rw53yM6Bkz+Fvwu6oSVTj5stYCmHhEAd/sVKaDaKkY9vvuvG5js/x/t1T0w X+mmMNbNpg93b6CgyUTFmPPqbG5eVaIIpjE/3Y88oPSEGEzzWdMR3JdslnmkZOvHaz2d C3dRRvJjW/YvQFgVNIw58kUvjErQVxbCF+P1rR+pN4R1lk1cQ+Z78EprnDxj4IXAEW8/ NE92MiXG21nusrl3B9hSiHWORk1SKvftWXF6i+A8apfdx0+sQmZny0a/m6AmJxH55wtC NDC2DOnDrvPVVaOp8VUX8PNFaYK9XbpudEqO/msDigwR9BbAOTwxTtb28netOgDqzCbD 18Rg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867794; x=1740472594; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=T/JJHVuhOmU2flaa9vpPAAtoFcuf4Ywj04vQWrR/12g=; b=NyZ/E3N435B/81c3gJaN8+yMIaRIwCvHYMuxjfruASmFejhE90qesGFXH+T7DZuLwv ValLPsiQoMBRDPHOwCiF3zsIkan0TvQwqCVQAkWWlLjN2I176VBemAnCfAEynjH20z1d t/x/x83w+M6sAr6yIUCkjtJFeDq1Ia2ywy6m+hnrtacchVfTiMtcS5gGfIKqJE4Vg2H6 oGwoIlPYT7zZJvPgO5m9TDt0nxXdmd5n+4ruUy1oQm9jM7FV8yHrmkTpSrBJjigbudyc kPMq22F86Fk8DTDlp972uhx/3cxLOWiktoQDC1Vz1CE+GeeEtIUxMld6gpok3XinfxS8 uTZw== X-Forwarded-Encrypted: i=1; AJvYcCWmQEBCSSzqIw3j8Sd6cfwnmaCucXz50h1lC6u7Pg2R0PjwoIlY1xjuSVZy5eGVDbNe/GYyrRm6SAnv@vger.kernel.org, AJvYcCXSl/OjFhO4ppqtuMSIINf/2hPVooR7OoN734sZItBG3iqzTrgkntvyg/VJQWA+ZUwipFZhka7ezRM0pXw=@vger.kernel.org, AJvYcCXiqHFv2IQWLLL/E3zEPPIlz4wF7mKSNmeVyWprzp5P71NuUOvHyKQiTXkn9bMcRUXobBKX5qVsrduGjYC/@vger.kernel.org, AJvYcCXz0syOjEh0EdDwxpflvVs6G6FQSDWPgeeaTJMDZeGBPeMioXyKdc5Il207FsYiaJN9qxiKqK+ocepk7hs=@vger.kernel.org X-Gm-Message-State: AOJu0YxpM4fTGFkzgg0Idu634HMSo2Gxdt2RXWZZvGKNERWYctkuexkh DEI+YzF4BKjhsUYKVliW5gEiFVM7ZKTcL0ggTh6QasRA3r139ad7RnLfVap5 X-Gm-Gg: ASbGncuo2UMhMHcuMMyxdkW8jVWLi0zxmoCUG1zYoZCMHwhcammVLgfVrN+oTeDAOAz JIJzI6zyeBejUd5qKVHO42y9ulfgxz15dwc6ZIWj6LzTj1sAQNaEl8EWmBBPGknICOnTc1a7CrU 5c81AwJxOUjbPWS2C8U2GtXwJtHbfDBzDgH3uJV8cSNqTKtoYpebPdzOsuTl0/Hc95vkheib16l e6iLNRnvmwhWsQYuyT0bRJrxJ2pWMvmHy4VjBo9ME5ml9bh/qLaW+4c/fN67Auqnh4bcLLNqYRY aDwD9YqTZXCbTqHSQXEx1lT4Xp/JAnkBNQs9VgGz2z0dLHkgSzPHWouMMlrd/MtWzwVTk3JEgqJ nfWmE9RDXkQ== X-Google-Smtp-Source: AGHT+IHcWo5xUjZQAMy9H5EeCHYZu+Ch7Btpe9yzB7SSeoHfzR+37KEI17lVH6KxzdQAjB5O8rh2DQ== X-Received: by 2002:a05:6a21:898c:b0:1ee:aa06:1a47 with SMTP id adf61e73a8af0-1eeaa06a294mr12315448637.2.1739867794138; Tue, 18 Feb 2025 00:36:34 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.36.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:36:33 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:39 +1000 Subject: [PATCH v2 05/29] ASoC: tas2764: Extend driver to SN012776 Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-5-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3943; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=6sstN5QNTZo6/ITwAmCbNhHYlrr8szvxp01qrMCZpUw=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3OIdT87vvTGhNbqz/4jklsq+E6pLmNZbtD7/xZ/DY MH+9snkjlIWBjEuBlkxRZYNTUIes43YbvaLVO6FmcPKBDKEgYtTACYy4z0jw+Ka/Wf2FvV9LrTl rlg+zVepq2qCpF8i736J/3N108Qr+hgZ2tU9Nuit/Ctqz32982KiZ4jcW4NpWe/kP6nfuh3TsfQ KOwA= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Martin Povišer SN012776 is a speaker amp chip found in Apple's 2021 laptops. It appears similar and more-or-less compatible to TAS2764. Extend the TAS2764 driver with some SN012776 specifics and configure the chip assuming it's in one of the Apple machines. Reviewed-by: Neal Gompa Signed-off-by: Martin Povišer Signed-off-by: James Calligeros --- sound/soc/codecs/tas2764.c | 42 +++++++++++++++++++++++-- sound/soc/codecs/tas2764.h | 3 ++ 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/sound/soc/codecs/tas2764.c b/sound/soc/codecs/tas2764.c index d482cd194c08c5c443b82c665de7a6d96531ef2e..cda75b7f270377dd7af1b163d38fe2f28e1f7484 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -23,6 +24,11 @@ #include "tas2764.h" +enum tas2764_devid { + DEVID_TAS2764 = 0, + DEVID_SN012776 = 1 +}; + struct tas2764_priv { struct snd_soc_component *component; struct gpio_desc *reset_gpio; @@ -30,7 +36,8 @@ struct tas2764_priv { struct regmap *regmap; struct device *dev; int irq; - + enum tas2764_devid devid; + int v_sense_slot; int i_sense_slot; @@ -526,10 +533,16 @@ static struct snd_soc_dai_driver tas2764_dai_driver[] = { }, }; +static uint8_t sn012776_bop_presets[] = { + 0x01, 0x32, 0x02, 0x22, 0x83, 0x2d, 0x80, 0x02, 0x06, + 0x32, 0x46, 0x30, 0x02, 0x06, 0x38, 0x40, 0x30, 0x02, + 0x06, 0x3e, 0x37, 0x30, 0xff, 0xe6 +}; + static int tas2764_codec_probe(struct snd_soc_component *component) { struct tas2764_priv *tas2764 = snd_soc_component_get_drvdata(component); - int ret; + int ret, i; tas2764->component = component; @@ -578,6 +591,23 @@ static int tas2764_codec_probe(struct snd_soc_component *component) if (ret < 0) return ret; + if (tas2764->devid == DEVID_SN012776) { + ret = snd_soc_component_update_bits(component, TAS2764_PWR_CTRL, + TAS2764_PWR_CTRL_BOP_SRC, + TAS2764_PWR_CTRL_BOP_SRC); + if (ret < 0) + return ret; + + for (i = 0; i < ARRAY_SIZE(sn012776_bop_presets); i++) { + ret = snd_soc_component_write(component, + TAS2764_BOP_CFG0 + i, + sn012776_bop_presets[i]); + + if (ret < 0) + return ret; + } + } + return 0; } @@ -707,6 +737,11 @@ static int tas2764_i2c_probe(struct i2c_client *client) if (!tas2764) return -ENOMEM; + if (device_is_compatible(&client->dev, "ti,sn012776")) + tas2764->devid = DEVID_SN012776; + else + tas2764->devid = DEVID_TAS2764; + tas2764->dev = &client->dev; tas2764->irq = client->irq; i2c_set_clientdata(client, tas2764); @@ -743,7 +778,8 @@ MODULE_DEVICE_TABLE(i2c, tas2764_i2c_id); #if defined(CONFIG_OF) static const struct of_device_id tas2764_of_match[] = { - { .compatible = "ti,tas2764" }, + { .compatible = "ti,tas2764", }, + { .compatible = "ti,sn012776", }, {}, }; MODULE_DEVICE_TABLE(of, tas2764_of_match); diff --git a/sound/soc/codecs/tas2764.h b/sound/soc/codecs/tas2764.h index d13ecae9c9c2f57853db70bb1eef2380f6fec45c..fa2ac38de78b457263be2e72e02a9a3c47c2762f 100644 --- a/sound/soc/codecs/tas2764.h +++ b/sound/soc/codecs/tas2764.h @@ -29,6 +29,7 @@ #define TAS2764_PWR_CTRL_ACTIVE 0x0 #define TAS2764_PWR_CTRL_MUTE BIT(0) #define TAS2764_PWR_CTRL_SHUTDOWN BIT(1) +#define TAS2764_PWR_CTRL_BOP_SRC BIT(7) #define TAS2764_VSENSE_POWER_EN 3 #define TAS2764_ISENSE_POWER_EN 4 @@ -110,4 +111,6 @@ #define TAS2764_INT_CLK_CFG TAS2764_REG(0x0, 0x5c) #define TAS2764_INT_CLK_CFG_IRQZ_CLR BIT(2) +#define TAS2764_BOP_CFG0 TAS2764_REG(0X0, 0x1d) + #endif /* __TAS2764__ */ From patchwork Tue Feb 18 08:35:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979297 Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) (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 CCAF322B8D0; Tue, 18 Feb 2025 08:36:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867804; cv=none; b=CdoBLtzz+ryHCMOa957Rki4jEPeYLwKDQBzB89nz7O+p6XwAOd7b2v4ya3Gk5EnCpLQr9jhmwhE6HUQ0/GSOcu/IcCUB9KUR/zMkLjcjQpQfh6xlFmTKlUgZYT1kSD7tUAuQgJM81gE+gyOSuX69hJU1JqLX1yQTgl3WeAXAWx4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867804; c=relaxed/simple; bh=ZLfqHGEmmRxWDvQqbGo0nvLtr+jQRIPyVh/jCgvqHm8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DuxHuxX1tBlJv4EDvoGUiSniGxr7p4Lo8LWTRLgSPx4T0HmVliRsuZTVqlnpsOkw/J7jzAT1Dnvt+k3iu7Hg/7rKnReZAcjRLBNWg/49OVRTNMhKOK4cRmWK6sZeGWid5weZc8a6Ci9YeUxN5mIxku9AvSHV1MwFRBKr7nx+pj8= 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=Qjo775h0; arc=none smtp.client-ip=209.85.214.179 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="Qjo775h0" Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-220c8eb195aso106168815ad.0; Tue, 18 Feb 2025 00:36:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867802; x=1740472602; 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=ln6BBxQvoa3BwbYmzNm0cxjw8OAeHcLG9Mi/U3fzc+8=; b=Qjo775h0ubFpbQ+1ku+Iet6j4fo//wf6QJ2ki/wV6vYL63ojrbulFYM6Zyyj9azndp xDdQpPbxwVAkTkCerah4z+w5zyi0c8sC4MeMgWe6hNMODCPfNy3paVh4dG+8ntmdkyZD B8FcdLLRPkWIkRvzGL/iK7/ash4O/T/F19fBw34rvaYvFO5/EwOzMtFB+55DN5/9w3KI J0wjnu9kK2032PDCg5kEalQQl6gXvw4GZVGdo8PR2netmidmHaXRd0xj9nfNep0FnOTW auvrrG/4+bVo9m9FVO+KwGW3FGoDCdh2Hanjh5pHo8l17LHefAzvlhEy92yzWUklBQpL THgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867802; x=1740472602; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ln6BBxQvoa3BwbYmzNm0cxjw8OAeHcLG9Mi/U3fzc+8=; b=CV3aCjC+iZZqSdqlFSqaWTzdNA+gjIoaHHNTNKUWRqkfVfbrDMl3YIPg8C0f0xG7wj WIPrnlQalgBQd3xG3vJWQeESIzcTppTuTarf8hDh2qTBvebbg/MHay+sv2EROCP6FHfp lCzohsIkSWEpQ4fY2iTvriVdMVB5u82zUu4q9Xx5N524wMxkv4ESG12+mNeU8k+wv2Yb CC7fg5TGqRhVxm7xkA5N5J4j+JJQ0Jzc7PtuXqzkV9T0AvLeo5M36iKr4QPU5C5RuSFr Ba4EqU30L/ehcPZjirTISErZgg26B/sp38mg93jDkPonASESnvy230JQ0q3h7CTD8ko7 TYzA== X-Forwarded-Encrypted: i=1; AJvYcCUa3WDVYW/I96PcBLK7mrJt7hIj8nZIjue/POEaI2cNxQ1XvVXm9B3slUxdpN7zG0KFk/0gArutLgsz@vger.kernel.org, AJvYcCWiaIuLsV0t68uNZSGOID+mEcazgTC0uTdiQbdMog6BkDC3KkF5CSskNYO/5pxg+Y1XdYOv3n3LbnTOBGg=@vger.kernel.org, AJvYcCXOPNEymsY2Ss27s3wHlvPL8fQtCTaMg1Ojh7GVanmdWPI50T1otiL4/JWRxREsF6pZGjVhb6ML3fjYh8s=@vger.kernel.org, AJvYcCXdAJdTS/MTH1Rlc6AQw3RZUiU9kRRa9RtmXAdIT5Y82Cf8rLio2YmodpRk2dqhoi3mo21+5sskPn4eYC5a@vger.kernel.org X-Gm-Message-State: AOJu0YwPLbDZQXYB9Stx4Ol7OIezlu2DnGdJ73H88ImBy7Ll8zrpj148 3bvh2IxUqrRaWKG2Na1obFs3bnGsTYECusuGOECo5wIXXtzVuHb3F0MOZX2m X-Gm-Gg: ASbGnct2/P1V7Z7VEofs+Wgen3r1KnKYX36UyHCKlgjgSgvsLpdTRzRrwt3yNnZMze4 9REMCcC3V+jnm+2yN/Gid8Ws49qfkQZ6STedVqYVKvT7sw3IyumXWap2lHgq4XYTXnhGiQ1TBHB ic7jA9+Sz/JabqkZWTdef07USwVof34gaRSnu3NBGEIu3EhdiRszuUT0wyVLysudYGDJrOR/oZr xe1Cf7AbghfVBnZbA4VhF4EECI0R6Q8t5WIkFub1IU54vFwT9xOI13+wlmfXRvkJh9RgTyR66fM J98WDU7hgCFiA7vxeR0dsVzDfuPJOP7mjn1vZNExyXV3Aqi6BfRPA/UFAL6OI5JE0nz1PtkWZwh onl008m3B9g== X-Google-Smtp-Source: AGHT+IGMRtRZg0Gc9H3HwG54sh1h0dYs9F/qv3aNYDQGeqt+afKytli0IykEtcy4SHr1bGklOsV/0A== X-Received: by 2002:a05:6a00:198c:b0:732:1840:8382 with SMTP id d2e1a72fcca58-7326144b0b3mr21937466b3a.0.1739867801963; Tue, 18 Feb 2025 00:36:41 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.36.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:36:41 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:40 +1000 Subject: [PATCH v2 06/29] ASoC: tas2764: Add control concerning overcurrent events Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-6-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2014; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=x9ToLkkem0IkKdzxIQq2uXS0i2qLVjJ6tDhcGqRC18k=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3OLnPKg68/OoqOP7V1+6X9Y8OHyEf3ew30KduqsvL iecOz1vQkcpC4MYF4OsmCLLhiYhj9lGbDf7RSr3wsxhZQIZwsDFKQAT+T2f4Z9R4aEjDoLhqaym //J0nnj7xfSc2WhkczqhK3/ym0M3GCwZ/hfPDi7RZ9107PsspQkqGnfLJa9xasy6+Vubu/vwjKz UYm4A X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Martin Povišer Add control to expose the option of autoretry behavior on overcurrent events in the codec. Reviewed-by: Neal Gompa Signed-off-by: Martin Povišer Signed-off-by: James Calligeros --- sound/soc/codecs/tas2764.c | 9 +++++++++ sound/soc/codecs/tas2764.h | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/sound/soc/codecs/tas2764.c b/sound/soc/codecs/tas2764.c index cda75b7f270377dd7af1b163d38fe2f28e1f7484..05d025ffc567fac25110fbde2ca19337b8ee329d 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -623,12 +623,21 @@ static SOC_ENUM_SINGLE_DECL( tas2764_hpf_enum, TAS2764_DC_BLK0, TAS2764_DC_BLK0_HPF_FREQ_PB_SHIFT, tas2764_hpf_texts); +static const char * const tas2764_oce_texts[] = { + "Disable", "Retry", +}; + +static SOC_ENUM_SINGLE_DECL( + tas2764_oce_enum, TAS2764_MISC_CFG1, + TAS2764_MISC_CFG1_OCE_RETRY_SHIFT, tas2764_oce_texts); + static const struct snd_kcontrol_new tas2764_snd_controls[] = { SOC_SINGLE_TLV("Speaker Volume", TAS2764_DVC, 0, TAS2764_DVC_MAX, 1, tas2764_playback_volume), SOC_SINGLE_TLV("Amp Gain Volume", TAS2764_CHNL_0, 1, 0x14, 0, tas2764_digital_tlv), SOC_ENUM("HPF Corner Frequency", tas2764_hpf_enum), + SOC_ENUM("OCE Handling", tas2764_oce_enum), }; static const struct snd_soc_component_driver soc_component_driver_tas2764 = { diff --git a/sound/soc/codecs/tas2764.h b/sound/soc/codecs/tas2764.h index fa2ac38de78b457263be2e72e02a9a3c47c2762f..b814715b41ff6e9a714c30ae204e7792351428b6 100644 --- a/sound/soc/codecs/tas2764.h +++ b/sound/soc/codecs/tas2764.h @@ -44,6 +44,10 @@ #define TAS2764_CHNL_0 TAS2764_REG(0X0, 0x03) +/* Miscellaneous */ +#define TAS2764_MISC_CFG1 TAS2764_REG(0x0, 0x06) +#define TAS2764_MISC_CFG1_OCE_RETRY_SHIFT 5 + /* TDM Configuration Reg0 */ #define TAS2764_TDM_CFG0 TAS2764_REG(0X0, 0x08) #define TAS2764_TDM_CFG0_SMP_MASK BIT(5) From patchwork Tue Feb 18 08:35:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979298 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 B95A822D7BB; Tue, 18 Feb 2025 08:36:50 +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=1739867812; cv=none; b=Cy/BCq3O4oiOY4F/BxfPFWYcezpmIamMZfbTLzwOwhsXcl01wdteZyAFlOrkqpoKU7Bx0nk2rSqbEyeGEkmUY2hQdyrRmgs2MdA84xOm/Gb2MubBeHqKavVOQIzIe8Rjeh1PgBhSHiF4WdTbSTbdU6puqCHFBnFZEU34X4LRENI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867812; c=relaxed/simple; bh=y9R3gC4DcFYDFbAgeXOJCoKDJMqg1SlzEiGmhUycXwc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nGSVXkTENb47laiThAz8a/9SpbnBgxJY+R9VK1s/vX/abgMXEy7tg8N8SDBxVMTX9Q6teLGfD/eHEEH6XA7bfcp/0PNiAQG1pSSFALKsGfjVfrdq2p607t4n+6J4cNSP18KMoThxNRHQkem+0Vwf2FAa64waraDYSAnKZ4Fi9xM= 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=W/T3q/H/; 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="W/T3q/H/" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-220d39a5627so74768315ad.1; Tue, 18 Feb 2025 00:36:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867810; x=1740472610; 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=EeoXHbMNaZZnZxWSox36s26riivTYQEGCI8dhE09lK8=; b=W/T3q/H/iypc3iFzUXQoiI4C6i1e/epxDRFg5swK5Mmz5Tl8vg3/qmm3EIZ+teDbhb 1D2S2dfPDZcnwlVW2UbfuvDuue62yZltFVMokoRrejDnwEP9AwdPd2Aju+SaDl7qhCP2 KLXiAh13B8gFxf0/fzfe7xeZR2bHZEyr9YwxFmxNX/EpA19/lKISBXI78V1smoYa4K9R 6scFE6Ol98ScDhQWnP8UnSZ7RFZbFthDY+NivOcTVA7nLvqRjyrhj156IluqojBsb77I nd8zJo1ZMRFoUZANDy4t7ZOuV5FU3sOU8W8c5DNyyNqLryvz0S+xaaaTDPPxqZyH3fuA bUqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867810; x=1740472610; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EeoXHbMNaZZnZxWSox36s26riivTYQEGCI8dhE09lK8=; b=mSoPktFU39CnI1dvxzHhH7ou5ZNFK+FU9YLqIaeFpFr7cC490QDqnW7Bm5GyABuEtX 4lvK610X4WX91Y84E5EMXNgr3WvaniekoGu1qFHbYIGvoCNem/NFu9PR+z7a7zT9qgHx JJ21dmh6Se4z/4TYWV6NA6u3J/86boG6kHo2tIZppnrF8sMo06IPEgSJBvwCrCwO2WCa xkm9l5n1zNK3ecyJIoy2YJYBKG1fngIU1+6x0QFdeigzew3nrsQa26GTNfhm7o5sj+IV 7nc19Gci7Rrk+pmbnkHCzBEPxnc+qYBwuly+t3oDrQBeqW5FH8mGqq10hbfJCKgS2uI8 EMbw== X-Forwarded-Encrypted: i=1; AJvYcCW0TQ5IHF6kTgCTvHO6IgDAlWLo0velIQh7o5Wxv/JyNZlT1O1nnl4QahL+8oDaz6fERop4rKAnWKfPiuM7@vger.kernel.org, AJvYcCWG4BK4iEI8bgBRv3VCSVXqKh3kk4nmj+m3zjUJt+j7FBqTEOXRS82FUgReCS5Go1gGgvMcmisHHt3Ta9k=@vger.kernel.org, AJvYcCWU9XmtsruQDorw+7pa7WqemJtPQ5l+uXOPUKj7VhDJgtKrxYWJeK3CGlMwjRrmNH6pNV/VOzCj3qg5@vger.kernel.org, AJvYcCXIs6g5o7SvqO3OiO5lDyijaDenK9qd5ICt81Y59UcWUvPrAZbFSD6ng8rYUJkB7+jJG5lvEiNkEQ/kouY=@vger.kernel.org X-Gm-Message-State: AOJu0Yy0orjnXay5KdRHGHlZ8otlh2UWxk2hveR1eTcu2en+tb3pLPmh PRgXW1P+0Ggnxsf/Y5PuQIcffLhH1/0aTm+ASv1B1nMp+1uS2i+FgA8I3gVV X-Gm-Gg: ASbGncunE0YP6kEqr/f2ESInTicE8mgMhTLVrOSqP8L5H7358hWrRt7rCZDzzh584Bo Es2Dejx5iJ9DZrOugd5mKjWaf7DtMmK4YgqzM13Cj+ERFEi5+mpnD+swSqzKKhvjVj+mWB2BvLE i+RUFBvC8oKlwFrYAdB39KIBHQ3CqtTSNqYJh/67Nr6y6OpeNpO7i0JdG4halbL3aVCc3VE3waW skEjsjXTEf8sVKFJpM5a2HlGu7D20Q/zQO+jhjsbEbwbKo0/N7YPKsCZAzLXg9bvyDI4CJUesqE TGzR2oj3YNfOUdmcQQ8Ie40x3+O5oI/xLFwcY5+ho2J4npOIVPZf8ugcWlUeHvKjtSqdMy9IuLd nr+koU90SKA== X-Google-Smtp-Source: AGHT+IGPbLuqbipaBn28ukI985CLtVT8f1ut4Ayk1W47T5tA6vEIHMLymg1VfjkuDP7Cp+W7NPG/cg== X-Received: by 2002:a05:6a21:7a4c:b0:1ee:c8e7:203c with SMTP id adf61e73a8af0-1eec8e7219amr2930381637.24.1739867809711; Tue, 18 Feb 2025 00:36:49 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.36.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:36:49 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:41 +1000 Subject: [PATCH v2 07/29] ASoC: tas2770: Factor out set_ivsense_slots Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-7-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2333; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=2q7/AnA+S3zg5UY6950rlfHRPwEmvXdr4IHaVW0DiDY=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3BJqftW3cyx71y+yON1BqfuC5sJ1L3iiLn+6UlFmX eVVoOnVUcrCIMbFICumyLKhSchjthHbzX6Ryr0wc1iZQIYwcHEKwEQeHWT4K949b6/VTqVLzo+Y JSVPFcbNEjTnizrl0vqu6EvtZ6tbOxj++3Wl3axIK7fZe8hxsd3C50HXRBt2+WvMaS+dFVRmc3k OLwA= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Martin Povišer Add a new explicit function for the setting of I/V sense TDM slots. Reviewed-by: Neal Gompa Signed-off-by: Martin Povišer Signed-off-by: James Calligeros --- sound/soc/codecs/tas2770.c | 40 +++++++++++++++++-------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/sound/soc/codecs/tas2770.c b/sound/soc/codecs/tas2770.c index 863c3f672ba98dd74a5ba1b15d650a90f91176a1..4a86fcec0c1ecab45b9ebcdfc90c78f3290c6fa6 100644 --- a/sound/soc/codecs/tas2770.c +++ b/sound/soc/codecs/tas2770.c @@ -189,6 +189,31 @@ static int tas2770_mute(struct snd_soc_dai *dai, int mute, int direction) return tas2770_update_pwr_ctrl(tas2770); } +static int tas2770_set_ivsense_transmit(struct tas2770_priv *tas2770, + int i_slot, int v_slot) +{ + struct snd_soc_component *component = tas2770->component; + int ret; + + ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG5, + TAS2770_TDM_CFG_REG5_VSNS_MASK | + TAS2770_TDM_CFG_REG5_50_MASK, + TAS2770_TDM_CFG_REG5_VSNS_ENABLE | + v_slot); + if (ret < 0) + return ret; + + ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG6, + TAS2770_TDM_CFG_REG6_ISNS_MASK | + TAS2770_TDM_CFG_REG6_50_MASK, + TAS2770_TDM_CFG_REG6_ISNS_ENABLE | + i_slot); + if (ret < 0) + return ret; + + return 0; +} + static int tas2770_set_bitwidth(struct tas2770_priv *tas2770, int bitwidth) { int ret; @@ -221,19 +246,8 @@ static int tas2770_set_bitwidth(struct tas2770_priv *tas2770, int bitwidth) if (ret < 0) return ret; - ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG5, - TAS2770_TDM_CFG_REG5_VSNS_MASK | - TAS2770_TDM_CFG_REG5_50_MASK, - TAS2770_TDM_CFG_REG5_VSNS_ENABLE | - tas2770->v_sense_slot); - if (ret < 0) - return ret; - - ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG6, - TAS2770_TDM_CFG_REG6_ISNS_MASK | - TAS2770_TDM_CFG_REG6_50_MASK, - TAS2770_TDM_CFG_REG6_ISNS_ENABLE | - tas2770->i_sense_slot); + ret = tas2770_set_ivsense_transmit(tas2770, tas2770->i_sense_slot, + tas2770->v_sense_slot); if (ret < 0) return ret; From patchwork Tue Feb 18 08:35:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979299 Received: from mail-pj1-f47.google.com (mail-pj1-f47.google.com [209.85.216.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 6EF6322CBF3; Tue, 18 Feb 2025 08:36:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867820; cv=none; b=LeYEEFB+4twQwieI3WuOkszi12/UKvrZW1L9UfgDxs1cny+AJuxIuvR7qaE9B2jlDo4VBmELRZBuobN0kP+7bBnk4X7t0aF+8nC8Qjh8DOQF0Ca2LNepTPdzoN2gFRrl+TMjd1Vn73P963pRMz2OF5mZ+o9wb30oH1aIG9Gzkho= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867820; c=relaxed/simple; bh=kXVqm3Bcan36F2GLj/Gjs15SCdXWtkLPAjRDAFl/lgw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WuWSJYuuxBtAWOTvFlxj+QvtYy5zR3Uj38z1IwEEhkbpLIRNqr4TjRJG0pD7t7DCejf805Ez2HtqVFgjwgYbFfsNw6UhpxIg9SfRxLWd5taGOEddNenjjlLm9gQEiAFhqhX82CkXazvxIbY4XtU3vaG3jRFpl8Pbbm48nLT1J6s= 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=ATJYt9Xs; arc=none smtp.client-ip=209.85.216.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="ATJYt9Xs" Received: by mail-pj1-f47.google.com with SMTP id 98e67ed59e1d1-2f833af7a09so7519961a91.2; Tue, 18 Feb 2025 00:36:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867817; x=1740472617; 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=HAEDHeJBFJU8F7o0MW5ekN1Mf8cimeNpcsWtMaG5SxA=; b=ATJYt9Xs7dTg+6i9q7AebeZZKaNS4Im5CvSk7UhalL55aXiPSZDPoJ946Cs+w36YU/ 1i4mgkyQjk6x7neD+WzvYOAwffEz+2jtq3M4msdw6uRPJgfYt7XPDqy9go1T1ywQLyxE vrQORfzYzZTgeSuNO8ki8MnL7Sx3RSwVdRrDLajqHH/9NgUgDQZVb+hEfYCvqgxwxePX o2qhYGywvfTmVCtinpADuslOzXJMuXk5/n/XHsu6B6z0NKsRh1TwkcuQFuD5rLhnazQw m2Bs8GZ0VIQsGDyU0bIDNSX+m8AKYwcCASNSakiuqFfYLdqCNhyh2mVbXK9WtQLhaDEK nCeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867817; x=1740472617; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HAEDHeJBFJU8F7o0MW5ekN1Mf8cimeNpcsWtMaG5SxA=; b=gvs05xz2IBnAkjSj1Vc9u7M2Pdaa5453sCGZ+b7r6oUHvAJTSNFfYOUbAlOKQ2v1/E uXwJ/N88JmHJNn6wW08afE14F27fNwsK9M7Wiqsrr0lmq16TCQm8iGvCsT+eWLeMQhAm 5buMSEHyc9GYiJJklzmFV6w3uZkOiBnY9BGnZLH8MfDn7G121nCl1v6Gf8ETFaoBpDPx JzOfLklIsi8lN5E5raDPpV4sYOvVWmVuWPEOL5sJNAhEBIr2AOz4W77EP5WbfBRXS+bE eYB1kE0O4nVK4Qk1JFUeWGuCyvKQQziJLbry0NBEslYDjlMlaXFE/F1jsu/AIdSzzR3L ZMCA== X-Forwarded-Encrypted: i=1; AJvYcCUh0Bj5CmV/VGUkSXTGmGj11x4/UM6pbwLLa00A9tgsOhV09RqiKWd9/ecnxV0IKxE1UajpLkh7bIzyzLw=@vger.kernel.org, AJvYcCV5fciLKxVwmDFty+WrKjXWujliarozynhau9tc9GhP/c0gs/PBzNaykKWvV4Ez4aJUNKWqUUFLQB/C@vger.kernel.org, AJvYcCVFw8vI/Sa5eS8CRcCxRFL0PySb9Sou38lhs7uYR9rk2Clu9tfBrpHmwet27HjWCqiHOhQNP5fCpij9TQA=@vger.kernel.org, AJvYcCWNOvknPfFJeVV0z/GmZ+hVRipSgKPXQlDq1HYe8yfS4RoRzlXXP6URsobogDSfveuBivpkZrZa4dMOvWxr@vger.kernel.org X-Gm-Message-State: AOJu0YzXBG9cZGSkuuIAhI0Tp//5jznHc6BG4H76phfnJMZwodEERQrR pkr0+ShgAUPBn35Y1phtyto6DqvM7Mv4DIDyBk8O8RZzyTwqMkz6TojXoRG8 X-Gm-Gg: ASbGncudconx03YgSKX32zvPZZFnCHJsRSjGUlSx7rxi71JmJLAo080gyNHNi5IcHpq Ptzh3ay8ToHJ/8CvAsyUEzgwmOml743WGCvW/NxnxiO57n2ZwDXtOqgJaw6JEy4Vms4j3AvlVRp eqeTgnlQkP+y8+mPx/gxKg9KWJEdhOi0nDlOVOjplFIrk+gqExe7RJJTX6+Un+EoCu9cbb3i2K/ WWSCoPxUAnIgOoE4RyeHBL5SJiMNqC/DBlfgsQnjWFfbkBqwtWfuSorVcKEmyUBBnoU1XbQGZT/ bwVbNHgzvYhd+ZGFAmvAldewd0Hr7Ffn8xY6rVNKh3PlhWuuaQEfsKS4aRTlF01+ysEpEzgbrGK +om1DmpfAAQ== X-Google-Smtp-Source: AGHT+IEGVkr4uFnIT1ArBItTEiiwZqVM8VInmErOXWHBzyb4CQeDACNMc4MkmQE5a4/KLKMElV4UFw== X-Received: by 2002:a05:6a00:1a89:b0:725:cfa3:bc6b with SMTP id d2e1a72fcca58-732617757c7mr24590236b3a.3.1739867817472; Tue, 18 Feb 2025 00: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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.36.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:36:57 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:42 +1000 Subject: [PATCH v2 08/29] ASoC: tas2770: Fix and redo I/V sense TDM slot setting logic Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-8-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3887; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=9oD673IPZ5uFrCCPftVCE6wRdPUQVoC5LK9O/3Xdq78=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3BKyD/xhvqzM22Y/raN7a6vWtPybfjdPM9nHZge6n dpcyXCko5SFQYyLQVZMkWVDk5DHbCO2m/0ilXth5rAygQxh4OIUgImYuTMy/A94uYNJSbpPLObp zt4FkQlXapgEmi3s6vlF0vmObVjUzPDf88nuyCopddOulWEnvb0tnr2/fKNlnv0hE/+Dly54h/t zAQA= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Martin Povišer The former code sets the V slot from inside set_bitwidth according to the bitwidth of the PCM format. That's wrong, since: * It overrides the V slot parsed from DT binding. * The V slot is set shifted behind the I slot by the length of the PCM bitwidth, but the PCM bitwidth has no assured relation to the TDM slot width. Replace the former logic by setting up the I/V sense transmission only in case of both I/V slots being specified in devicetree, and never override those values. In case the slots are left unspecified, disable the transmission completely. There's an improbable case someone is relying on the old behavior, but if so, that's a setup that only works by accident, and cannot be sanely supported going forward. There's no indication anyone is consuming the I/V sense data up to today, so break the former behavior. Reviewed-by: Neal Gompa Signed-off-by: Martin Povišer Signed-off-by: James Calligeros --- sound/soc/codecs/tas2770.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/sound/soc/codecs/tas2770.c b/sound/soc/codecs/tas2770.c index 4a86fcec0c1ecab45b9ebcdfc90c78f3290c6fa6..7f219df8be7046912bf3ef452f75c17b5118bcf6 100644 --- a/sound/soc/codecs/tas2770.c +++ b/sound/soc/codecs/tas2770.c @@ -224,19 +224,16 @@ static int tas2770_set_bitwidth(struct tas2770_priv *tas2770, int bitwidth) ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG2, TAS2770_TDM_CFG_REG2_RXW_MASK, TAS2770_TDM_CFG_REG2_RXW_16BITS); - tas2770->v_sense_slot = tas2770->i_sense_slot + 2; break; case SNDRV_PCM_FORMAT_S24_LE: ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG2, TAS2770_TDM_CFG_REG2_RXW_MASK, TAS2770_TDM_CFG_REG2_RXW_24BITS); - tas2770->v_sense_slot = tas2770->i_sense_slot + 4; break; case SNDRV_PCM_FORMAT_S32_LE: ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG2, TAS2770_TDM_CFG_REG2_RXW_MASK, TAS2770_TDM_CFG_REG2_RXW_32BITS); - tas2770->v_sense_slot = tas2770->i_sense_slot + 4; break; default: @@ -246,11 +243,6 @@ static int tas2770_set_bitwidth(struct tas2770_priv *tas2770, int bitwidth) if (ret < 0) return ret; - ret = tas2770_set_ivsense_transmit(tas2770, tas2770->i_sense_slot, - tas2770->v_sense_slot); - if (ret < 0) - return ret; - return 0; } @@ -505,6 +497,7 @@ static int tas2770_codec_probe(struct snd_soc_component *component) { struct tas2770_priv *tas2770 = snd_soc_component_get_drvdata(component); + int ret; tas2770->component = component; @@ -516,6 +509,14 @@ static int tas2770_codec_probe(struct snd_soc_component *component) tas2770_reset(tas2770); regmap_reinit_cache(tas2770->regmap, &tas2770_i2c_regmap); + if (tas2770->i_sense_slot != -1 && tas2770->v_sense_slot != -1) { + ret = tas2770_set_ivsense_transmit(tas2770, tas2770->i_sense_slot, + tas2770->v_sense_slot); + + if (ret < 0) + return ret; + } + return 0; } @@ -643,7 +644,7 @@ static int tas2770_parse_dt(struct device *dev, struct tas2770_priv *tas2770) dev_info(tas2770->dev, "Property %s is missing setting default slot\n", "ti,imon-slot-no"); - tas2770->i_sense_slot = 0; + tas2770->i_sense_slot = -1; } rc = fwnode_property_read_u32(dev->fwnode, "ti,vmon-slot-no", @@ -652,7 +653,7 @@ static int tas2770_parse_dt(struct device *dev, struct tas2770_priv *tas2770) dev_info(tas2770->dev, "Property %s is missing setting default slot\n", "ti,vmon-slot-no"); - tas2770->v_sense_slot = 2; + tas2770->v_sense_slot = -1; } tas2770->sdz_gpio = devm_gpiod_get_optional(dev, "shutdown", GPIOD_OUT_HIGH); From patchwork Tue Feb 18 08:35:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979300 Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) (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 18E4122DF9A; Tue, 18 Feb 2025 08:37:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867827; cv=none; b=G3NrWbkE8V+KE62JbAduIsk1LVeHCI2Of4qBKAj91zHJVx1dmPlafyKnxWKXRemvGxptRS8ewC7z1L70jj9m1eI/XYR4bNUg4/Zd8qay9e6w03Vuwva0PUNkDSr0+Z4p+7/+ZmNb3scKtZLK2a8UCywV/9en3NmW3nLX8L6oXjk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867827; c=relaxed/simple; bh=zMDQYtcRpt+4jFNPlg46tVCzKTkoPkLv+Vy2wz6r23U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bT8bAPddTRWbd/Zal9o7PgMa7dQaTWUiQHN2IeRkINPsDTWuDZHca4igP0e2i0utzcHzF09Ecbg7DLYlKWmDhQ9UE1aut3KPAko5pSakhDJc4QvQyiNKOvIDA4O4aXZTddlrEi0S35blJpj88UvcEf/LHGTMmrChELhQ7taVF3o= 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=QOFaVg2c; arc=none smtp.client-ip=209.85.214.180 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="QOFaVg2c" Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-220e989edb6so100672765ad.1; Tue, 18 Feb 2025 00:37:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867825; x=1740472625; 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=z1gmUMyFrIcKimBewI6q24dJKcEuoHIJdBxmZAwxaaE=; b=QOFaVg2ciY8PWFcSxq6ndmnGtiVak32vYlPXegVhhtgoSlA8PwL6bgOm8Q0ebx5NZh +/ZcTdlAVGAMJArO/GmpQRgFVBt5YIkPicPF0BZT3ApBnwsRDqtVpIYzj4vcpcT/a+z2 m4ZpSPTnVgj8ROD+j3GeMItA8czOWXzONXl2cxw44hVQLlwIUBzOdx4o/nIf0SSKNuYZ fkNrYV6bq08FSUFIc2Q0jF+XM82e6VrSUXxnbar/PdaRwHSn2LgSGy2LpxS04mTC8MCZ VfxUXPOVuiRyjlUEZBANChHIy9uECVT2qTy3fPAtaD7iBX5pHpr6OZ4+hdudvlABmtsa Q/YA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867825; x=1740472625; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=z1gmUMyFrIcKimBewI6q24dJKcEuoHIJdBxmZAwxaaE=; b=Mzk0pJCdrFU+IWlPMJLzvXNALwH/WwEZvt77gSsqzoE7HYHadTR0tO5lJzp37s9lx/ f2buo8x2r4gR2Ek4H03UW6dDFa16DYYSbAMrZLuST2Eqawhqu/P14ZeI1SAZSVgyGj8Q YNIkz/zheGbdRoMjFWHrhk+BECzViz3XJ+/vkw7QD7WEP+V3xCAsg7tnkwjwJMrrMe68 NQWUpodm2YqoyCNtViWkxJ/NyZFMr2VVoJqMUHnnCUKfTHOHixJ5UGpYBuKtwsh7t5rb 4JHu2dyx3CmJa090phIbAiE1a/Qift5dOBZq60YHUYTE7IjRCWp00Jx9g8afJAJipj5b D4cw== X-Forwarded-Encrypted: i=1; AJvYcCW7W+LmiHd6j57x2g9xswaCybWp7ID7GM5B6CjBr/mes0dPrbqaQq/h5Numps9N8jN1aQ7dhFNzupsnBbAt@vger.kernel.org, AJvYcCWH0zLcdjzRKNzLFnG+mjQp6k5eTgPB3DMeL9CMXTNC6EN0iMMTrIVlvhUjMg+FpR/DBorYFJo1z2QpdOw=@vger.kernel.org, AJvYcCWb9tDCBSziJULodZSsq3Io6OG8IRKOnBtEIO+nzl1ROljVtkxfRXHkl0AJDbu9JYQEwG6UBwIQla6uK/A=@vger.kernel.org, AJvYcCXRVLCL9x3ZYCGUqlukQWiwnXB/IcVmUB60NKZ35Y6JbvpAkqoM8VormKbaNjcAfxu2gW6Rja54TC5Q@vger.kernel.org X-Gm-Message-State: AOJu0Yym23ON3gyUUvsqxfXWgwlTpfF0H99bA/thBAgZYqFtz9N9sAxu BaROMNxy4H6gMmQ8tFJ9OhrZ8/6Ldkp4HTHoDcmLC3HruT/ols1rSZv5HUIB X-Gm-Gg: ASbGncuQ1ypF5s8gKpVVbljzMkD70doqiE6WJtYcGZyz8JOpTvWugEB2enM/jly5zWM EdlGm78w6s+ben0u3m9sXZzJPBtnqueSo6ajibTGHcFzjfb4Xomt1N+KNeb3myB+IXCD3WSHzlL ICUSdpjFhkNERb6epBMZSYUrXFamSMoW/E8HH9YPyIVczeQBLgImS6ewhCvwWWza0N1wEH34bIh vYoUlffuoGA1K96y1QKvUeOmBoWFW0N0xYrrwaOaJ5L8ZGOZwtBKYG9YCwsEye/i03G2LHS3SSg AtTtOixU5AGgz4r5Jv4puoeCfeZ9DcCd1wLSX5EymTNyMkemB4w/uCTZ8AIVnvypRgBJRBIGJv2 TBotaMKwr6w== X-Google-Smtp-Source: AGHT+IFizoKmwjh9YN/ziweMuIVCIJzBsJIb0KmtkfpxkeL1KJmMlF3+L4OpNBzmyQWeoqE2IU22YA== X-Received: by 2002:a05:6a20:9148:b0:1ee:ceb7:2b54 with SMTP id adf61e73a8af0-1eeceb72d97mr344927637.5.1739867825207; Tue, 18 Feb 2025 00:37:05 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.36.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:37:04 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:43 +1000 Subject: [PATCH v2 09/29] ASoC: tas2764: Reinit cache on part reset Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-9-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1447; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=YUiXWU8Gf9wDtlFFZhIrrwCN5xdBOaHOAAxlNP/Sbtk=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3BJcV0qeUf8syhDg+XJ+6qn1lu+DXXdt+ZgvxK83r /DblMseHaUsDGJcDLJiiiwbmoQ8Zhux3ewXqdwLM4eVCWQIAxenAExkBgPD/2R1VsbLohz7d052 Xbxdb3V827QsvYKC2I/tLqf15suWejP8FfB97LYhcK/A2/VnprWuYP/Eb2VrbbRY98hO4dlfjre FcgEA X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Martin Povišer When the part is reset in component_probe, do not forget to reinit the regcache, otherwise the cache can get out of sync with the part's actual state. This fix is similar to commit 0a0342ede303 ("ASoC: tas2770: Reinit regcache on reset") which concerned the tas2770 driver. Fixes: 827ed8a0fa50 ("ASoC: tas2764: Add the driver for the TAS2764") Reviewed-by: Neal Gompa Signed-off-by: Martin Povišer Signed-off-by: James Calligeros --- sound/soc/codecs/tas2764.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sound/soc/codecs/tas2764.c b/sound/soc/codecs/tas2764.c index 05d025ffc567fac25110fbde2ca19337b8ee329d..e4003a724c8c09303882ee36fc11133cf5c78b57 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -539,6 +539,8 @@ static uint8_t sn012776_bop_presets[] = { 0x06, 0x3e, 0x37, 0x30, 0xff, 0xe6 }; +static const struct regmap_config tas2764_i2c_regmap; + static int tas2764_codec_probe(struct snd_soc_component *component) { struct tas2764_priv *tas2764 = snd_soc_component_get_drvdata(component); @@ -552,6 +554,7 @@ static int tas2764_codec_probe(struct snd_soc_component *component) } tas2764_reset(tas2764); + regmap_reinit_cache(tas2764->regmap, &tas2764_i2c_regmap); if (tas2764->irq) { ret = snd_soc_component_write(tas2764->component, TAS2764_INT_MASK0, 0xff); From patchwork Tue Feb 18 08:35:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979301 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (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 E639722B8CA; Tue, 18 Feb 2025 08:37:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867835; cv=none; b=ZalMXwuhplCAWHWswy4Pvf9goGfqqJKqfcP4rdNEdt8LB0is/89QgQd6KJ5TfCX/M9J2vL9ydD5Kp2xBjTJ7kAsmHG3ZMWzhWPkrVy2B4/A98OZuvwv0l5gWIGCKnCs9qtd/SQnrHNzaIT/VAzskYAWcUCsOSDiMSmaHa8nUCmk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867835; c=relaxed/simple; bh=b2j7CSiACw8SRnoO0dJf/ZnIOm1P9PRFDL2lbTQvzF4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RMRRd+GZJw+2Z54qYMQgW5pFwg6+qm3wCZhpTTMWhjGVh8U1lWucVvSffmmH4IpqXkWd5sVNqNbfNoH77bwTFRGdY5wox/yf38+yrDRr3IN0A8GoQPGPfACfAN/wfyPDIAukzlXQBjsT2tFZycUUNKrisY5XEix7xlUqR6tgYME= 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=CObM7REs; arc=none smtp.client-ip=209.85.214.176 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="CObM7REs" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-2211acda7f6so44041245ad.3; Tue, 18 Feb 2025 00:37:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867833; x=1740472633; 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=SZXOZtJRNcMxbwvAxDPYaBnHs3AWQQ3XLqmgpymYN0k=; b=CObM7REsaWu2wV3QVP6sehOa/vEUVcJSSGqZu+1XnPfa3IXPAiIOL6hwBRVaB64A31 i9PwzCttGy7ZKZTr5Kmo01wQ/Pbb6woxe26kNJiE9Fb14pZuvJCZ3ymdqdI+DXTEqsbN 48psAeLxg2P98h1EqPuBVOU92ERHfo5nfu513kRAra7BcFJ6BhTbpCJOT/1e+WNCeyD8 S6NN1tk9x9/YpBaXY41dx7uyS2B0z95cex0o2Y+l5+QeaDtE3Iye7ZmJ3+eF1NJuejDi 4DX6liCV/LpBgOQJyzoBQjhd3PAx+py084MvbplYsSzlI1xzxPUps4acOi1qVfihtLCG KCdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867833; x=1740472633; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SZXOZtJRNcMxbwvAxDPYaBnHs3AWQQ3XLqmgpymYN0k=; b=bQmd6V6NLQS0Xezo4QY8lVShK8STBUz9X4gnIxcWzbs4zbB2poIPqm6G2EyDxby7OZ DmSxOaZnxnshAtNz49+mifyhJvz8RGp2dXkuDll6jVV8AzTTMD89OQ+ElHgSU4uL2AfP Px6ZwO6jA+jVYvXoSZETIgsDhSLDOtZ6seH5hDovzk2xQ+SUfSy8AgpUpkHRHyUo7jlD BHQHDu2twizc+8JwslcZd1VXTq8NultWPKfyYB3r+mEQVEKqrP4IO/cu84DgNRb2PN9L 0gYpB5G9D/7lN7oUyvvRq0I2Ot6p53ag+iCzatsyAFTMWUaI0ST5VgMR4fTDNsaYXGef Kw8Q== X-Forwarded-Encrypted: i=1; AJvYcCU7Z5DRoExtTm966bJcCAcLGnMLVMv1AQDHpj+2yJYD9Nsi8oQPik+jdFRk6+cnj1sUFD7ZjmREtSsFjjlH@vger.kernel.org, AJvYcCUlFV4Lbq1hxvQzpKm+h563Aj+PJNmlNCYvAw0fEbFI+tIQubCcQMVTQuvg23PZ5n0A1FHQdj+UYIrK6VQ=@vger.kernel.org, AJvYcCVjompPJGrogZawAN3PCFSvIJMxk1vH9LPXiKCiccNoK1ZUMZ70VNEdjw/lhliZtsRGPN7AVx7rSB/f@vger.kernel.org, AJvYcCWbJgYUgznXnjwTuWFwNY7tHi4M0jA7bEcBaDNoEsD8Z0A8vZ262gxDOspbPqrUL4XgMSxhCh2DWOlVWo0=@vger.kernel.org X-Gm-Message-State: AOJu0YyS6yGKU/7pZqyjmfNFy0vDqRpVaXoPCtnjCPqofuuWSTVJ5wp3 TtCOetgx/v0nqBKo4ZLe63SaWbgybgFRRGkg3U8U1eHKbsQ/LXaGLoJV5ll4 X-Gm-Gg: ASbGnctG59i7n9D5UwVEJW9o9+iIr8p04TgZb5wmXoD9B/r5sDD0IrFOqxkMXYNSsxZ UbQg9CiwKIyL32yNPU9HKK0a3wp5j3wUZwFDcfK1mI7SBFo4kn18SQ92/+RXrSWj7oP59fhCqOp VCLO1DzCFO3BcULKA6/wsScvDnK3VwkvMdkwcx1Ds2QBR7sPPJIR51ogfxEPD6hiFOajgqdcYO8 dXuHuf9iKn2X3fbraa6Jyr7NZgEIIg0E1HagR7UOZlVVUZQRRWaRVBelEl4LrA6TIsIJ9W6QT6e 52oE0JyWB7xSjnNYueSg4x4l/LiiGEHxDy5Qgg3028u3RejQUxC5JAud7DofV59LuzlGYIomp0Z jeromRbKOIw== X-Google-Smtp-Source: AGHT+IHjc8Lzg5/Ok3MfsQ+QSDaYu/Z/31zh5KduSVebpMli7UVfvUjcknrjjiFtN5LTobyfTkKrww== X-Received: by 2002:a05:6a20:43a0:b0:1ee:7c7d:e66a with SMTP id adf61e73a8af0-1ee8cb7d7c6mr23485293637.23.1739867833047; Tue, 18 Feb 2025 00:37:13 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.37.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:37:12 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:44 +1000 Subject: [PATCH v2 10/29] ASoC: tas2764: Configure zeroing of SDOUT slots Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-10-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2906; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=PzSwXh+q2KiuxDXck4Zpp204WMC77HTyEOvTgAp6ZAQ=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3BIKOmbxRy58W+SSu6LwWrB+9NaDO16LSe9VfCQ8n WH6Kca3HaUsDGJcDLJiiiwbmoQ8Zhux3ewXqdwLM4eVCWQIAxenAEzk7hpGhtaezGnV7Uw23N9a P2scj79Zv2Wdy1+GU73796z9No3vqB4jw5JYp+W/+yzkFVIqfPhEDk1WOKPyMOircc9s/7bNDvk z2AE= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Martin Povišer The codec has an option to zero out certain TDM slots on its SDOUT output according to a preconfigured mask (otherwise the output is, for the duration of unused slots, in a Hi-Z state). Configure this feature based on a mask read from the devicetree. Reviewed-by: Neal Gompa Signed-off-by: Martin Povišer Signed-off-by: James Calligeros --- sound/soc/codecs/tas2764.c | 23 +++++++++++++++++++++++ sound/soc/codecs/tas2764.h | 11 +++++++++++ 2 files changed, 34 insertions(+) diff --git a/sound/soc/codecs/tas2764.c b/sound/soc/codecs/tas2764.c index e4003a724c8c09303882ee36fc11133cf5c78b57..a2b7d0352d4f636c2bf7185715c0f1143ba8150e 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -40,6 +40,7 @@ struct tas2764_priv { int v_sense_slot; int i_sense_slot; + u32 sdout_zero_mask; bool dac_powered; bool unmuted; @@ -594,6 +595,23 @@ static int tas2764_codec_probe(struct snd_soc_component *component) if (ret < 0) return ret; + if (tas2764->sdout_zero_mask) { + for (i = 0; i < 4; i++) { + ret = snd_soc_component_write(component, TAS2764_SDOUT_HIZ_1 + i, + (tas2764->sdout_zero_mask >> (i * 8)) & 0xff); + + if (ret < 0) + return ret; + } + + ret = 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; + } + if (tas2764->devid == DEVID_SN012776) { ret = snd_soc_component_update_bits(component, TAS2764_PWR_CTRL, TAS2764_PWR_CTRL_BOP_SRC, @@ -736,6 +754,11 @@ static int tas2764_parse_dt(struct device *dev, struct tas2764_priv *tas2764) if (ret) tas2764->v_sense_slot = 2; + ret = fwnode_property_read_u32(dev->fwnode, "ti,sdout-force-zero-mask", + &tas2764->sdout_zero_mask); + if (ret) + tas2764->sdout_zero_mask = 0; + return 0; } diff --git a/sound/soc/codecs/tas2764.h b/sound/soc/codecs/tas2764.h index b814715b41ff6e9a714c30ae204e7792351428b6..00296b8b1f7584e7520bd6ed749a09681f16ea09 100644 --- a/sound/soc/codecs/tas2764.h +++ b/sound/soc/codecs/tas2764.h @@ -117,4 +117,15 @@ #define TAS2764_BOP_CFG0 TAS2764_REG(0X0, 0x1d) +#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__ */ From patchwork Tue Feb 18 08:35:45 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979302 Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) (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 CCA7322D4EB; Tue, 18 Feb 2025 08:37:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867843; cv=none; b=nHlsALRfhPgbM+iHY+eE7Cyx+6jbvgsyjZHNcDmkJzsIIeljFMU1nV+ENt0zMvOTBSHo5tN7t4K0bwcRk2fCJElNbsTBs6ddkB3rVhJjX1bBf63OruoP0ZXJDa4qs86cua5p1pq9g5GCUvqpSY8o9y+QoqQZHOusqZiewm/ao0c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867843; c=relaxed/simple; bh=agT0ivrctI/KUajWkSiFEYIZGv7GNeGkv2rX360Jl/c=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NJNzbhk93gn3zUlYEQBSCgZfzus+HRlJZOLBTNI/vFG4FsSStquTs0w0oo+Eeve4hsGh0J4JHcqT3Ds2vql3+c6AAGfms4joWEu9y6pj6s8DjV/RdnQkvVkrDJFZDWBJ3eEkEDAcirFoEpb7GabB5dRHIfLlMZeUwEocNd/BdSE= 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=mDq3weTp; arc=none smtp.client-ip=209.85.214.173 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="mDq3weTp" Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-2211cd4463cso38302655ad.2; Tue, 18 Feb 2025 00:37:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867841; x=1740472641; 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=gnic9JbG3sWu6H8Aay2HkTXWHQGbZEX99jtJ6cXeuiU=; b=mDq3weTpicTLnySxCnMJ1GX6i2VEG9oyLb45rAkxh7XT4bSn+Z2hU4wwRr8sJ3UlAO LMtQ9D+xlGsho61GIw2P1BvmEEtCrUzZYARIsSBYfrhLikyHkKSY3KFLAm+/lvCpLvQA nnbLauzX9zbdmHj9NaGZ0zzO7VYy1EdoISnNRGBw2N2zsAXkSpd7Ye9Qq8qFQUSqKYxf s3nbTpJei43NShefZut+fS+Asvkcz6qUM7PMPPJPtKNi1mOskncaNIKfySp2BBB57RPJ eSQKJozTnAHJnAXQMEcNFOcqOCWlXgdWH8Era2FscVw9ThJMuEhuif42Kjmd+Spr3LFw zSZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867841; x=1740472641; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gnic9JbG3sWu6H8Aay2HkTXWHQGbZEX99jtJ6cXeuiU=; b=I3A5yQ5ovaw8UsHADT5MBLmTAtTHwP3QSFK3sW53pQXbaduUx4ZeBdKXMSz2u1yMPZ GRrzoigPZfsszT8n6aAbCbdN/qiotD7COmRpbFnarUaOV+FQxya2R1297dD4doPzH2Vt J+tFQ09GOPMn5nbY4dlTRsV3LVesZ7L8BQoxxddUdqMg03UDN64m9o8es2D7ZQjm9tXg P92hWBVf7TTu8FOoIcP1KRPjEKJqvcAVoAXFuZkG8uXj39BhiS/nacYvmXUyw50hRdcB Rx/8z0lgLs7n0R4T+xyh5PHlaUiHIin6NN4fRphqfle7V5IZHL3IkcotXUFWY3w4Ze5M mx3g== X-Forwarded-Encrypted: i=1; AJvYcCVM6gAU5Dx3KC7pwJVqNzR5cmf3P3g+KJNgm9J6hGKck26Q9FG7TMMV+5kGem/Ri8xBEA6qNYTUiymujK0E@vger.kernel.org, AJvYcCW04IhoS2QNKnHTnCIbmQG0XsP3rfb8xsEk8r5d8Kb+RvCGW0C930e9EACc8po59wUBX2+Q2I+PEmnm@vger.kernel.org, AJvYcCWom21yxcQJ5IYQAYmoSbAOyW0BxgmSom8HscEC5tPN/M+M6GoWMjjXifCASRb88XcGKEakZVaNTGzkPL0=@vger.kernel.org, AJvYcCXVinG8mY8GfKN/wsDQm8SJJKtzXklfbqo3BvriZJJrT/wlGVfJOumHIlqeY/jfc20ftrHTJ1aP5wkvkx8=@vger.kernel.org X-Gm-Message-State: AOJu0YxdjLSK0r8CJrV9V7lPh6a32pc0ugrRhoJj8syRaA9LbKqULsQC zlKI4ewHSWX+lCpH2sOt9Xv1v5kiB9MG5yfHENuX+xjWmILbO+b+AWQTaJ+u X-Gm-Gg: ASbGncvD26jFCHvcdqYx5ZfCqEguotBnaeI/rTsVRdQR+stGw5eGLt+bqjo8MUDwQTp i+6SOU8rJc9rVCTuvskOq+bNSdd9yd7Z0yuXEkJ3hwOKNv0wxoX4gUwgKOtgC93nfoH7vwAruGB P+M1MeNJ71QT7VpKZGd/Qk1Q3zjxwvGQyNgdPagxHYloI2psTBuSlIUPee8eUp615FiFd3uoTqb JpzYiNas/iTKOJ2GVcyvKJ6Lpop/UtGe+NP6BW58a3Vglem5WTCPKsCHq5m4cGrsuCFP50eXfMH e2FF9DoikITMXaAQJfl6s2h4vldwXRfszIE5cbGpCEpDqkJgaUt2c7RWGkpXuibAbsJPWMIngSl VOjPeIhgXUw== X-Google-Smtp-Source: AGHT+IG/Xuh35WlN+lgZ8IVJYVEsBTdwZXAhKEGZ6lCoVPM1Lx7f7i8b6ArOxPRK0N6oxyRbKyYn6Q== X-Received: by 2002:a05:6a21:790b:b0:1ee:a914:1d5a with SMTP id adf61e73a8af0-1eea9141fe2mr12252238637.2.1739867840812; Tue, 18 Feb 2025 00:37:20 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.37.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:37:20 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:45 +1000 Subject: [PATCH v2 11/29] ASoC: tas2764: Apply Apple quirks Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-11-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=8993; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=hTdkxszMjHs4mDQJvXhHqvdDjXwAQywhuJAeI6qSArg=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3BJClI4UOooXm3cxat2/mfM9yuJnYWN4fSRX8+615 0rffZ/WUcrCIMbFICumyLKhSchjthHbzX6Ryr0wc1iZQIYwcHEKwEQ0EhgZvl8q9Lf5c65zR+m+ qmWHW9OSZDtTgrmX/j/8I/G7h/WcpYwM/0IsGJpXLd97+cDL+pTCXWu4c1Sv3JooNnUpk0VJmO1 tJgA= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Martin Povišer Apple's SN012776 driver has some peculiar aspects to its behavior that are suspected to work around issues in the codec part. Add a module parameter for enabling individual quirks that should be imitated after the Apple driver. Setting some of these by default seems to be required. For example, setting 0xf fixes an issue with transient overcurrent errors which can crash the chip until the next system reboot. To be safe, let's enable all of them by default. Reviewed-by: Neal Gompa Co-developed-by: Hector Martin Signed-off-by: Hector Martin Signed-off-by: Martin Povišer Co-developed-by: James Calligeros Signed-off-by: James Calligeros --- sound/soc/codecs/tas2764-quirks.h | 180 +++++++++++++++++++++++++ sound/soc/codecs/tas2764.c | 38 ++++++ 2 files changed, 218 insertions(+) diff --git a/sound/soc/codecs/tas2764-quirks.h b/sound/soc/codecs/tas2764-quirks.h new file mode 100644 index 0000000000000000000000000000000000000000..7a62b3ba5b40b3f06fc1ebeb590d9c32b1b2c7d3 --- /dev/null +++ b/sound/soc/codecs/tas2764-quirks.h @@ -0,0 +1,180 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#ifndef __TAS2764_QUIRKS__ +#define __TAS2764_QUIRKS__ + +#include + +#include "tas2764.h" + +/* Bitmask of enabled Apple quirks */ +#define ENABLED_APPLE_QUIRKS 0x3f + +/* + * Disable noise gate and flip down reserved bit in NS_CFG0 + */ +#define TAS2764_NOISE_GATE_DISABLE BIT(0) + +static const struct reg_sequence tas2764_noise_gate_dis_seq[] = { + REG_SEQ0(TAS2764_REG(0x0, 0x35), 0xb0) +}; + +/* + * CONV_VBAT_PVDD_MODE=1 + */ +#define TAS2764_CONV_VBAT_PVDD_MODE BIT(1) + +static const struct reg_sequence tas2764_conv_vbat_pvdd_mode_seq[] = { + REG_SEQ0(TAS2764_REG(0x0, 0x6b), 0x41) +}; + +/* + * Reset of DAC modulator when DSP is OFF + */ +#define TAS2764_DMOD_RST BIT(2) + +static const struct reg_sequence tas2764_dmod_rst_seq[] = { + REG_SEQ0(TAS2764_REG(0x0, 0x76), 0x0) +}; + +/* + * Unknown 0x133/0x137 writes (maybe TDM related) + */ +#define TAS2764_UNK_SEQ0 BIT(3) + +static const struct reg_sequence tas2764_unk_seq0[] = { + REG_SEQ0(TAS2764_REG(0x1, 0x33), 0x80), + REG_SEQ0(TAS2764_REG(0x1, 0x37), 0x3a), +}; + +/* + * Unknown 0x614 - 0x61f writes + */ +#define TAS2764_APPLE_UNK_SEQ1 BIT(4) + +static const struct reg_sequence tas2764_unk_seq1[] = { + REG_SEQ0(TAS2764_REG(0x6, 0x14), 0x0), + REG_SEQ0(TAS2764_REG(0x6, 0x15), 0x13), + REG_SEQ0(TAS2764_REG(0x6, 0x16), 0x52), + REG_SEQ0(TAS2764_REG(0x6, 0x17), 0x0), + REG_SEQ0(TAS2764_REG(0x6, 0x18), 0xe4), + REG_SEQ0(TAS2764_REG(0x6, 0x19), 0xc), + REG_SEQ0(TAS2764_REG(0x6, 0x16), 0xaa), + REG_SEQ0(TAS2764_REG(0x6, 0x1b), 0x0), + REG_SEQ0(TAS2764_REG(0x6, 0x1c), 0x12), + REG_SEQ0(TAS2764_REG(0x6, 0x1d), 0xa0), + REG_SEQ0(TAS2764_REG(0x6, 0x1e), 0xd8), + REG_SEQ0(TAS2764_REG(0x6, 0x1f), 0x0), +}; + +/* + * Unknown writes in the 0xfd page (with secondary paging inside) + */ +#define TAS2764_APPLE_UNK_SEQ2 BIT(5) + +static const struct reg_sequence tas2764_unk_seq2[] = { + REG_SEQ0(TAS2764_REG(0xfd, 0x0d), 0xd), + REG_SEQ0(TAS2764_REG(0xfd, 0x6c), 0x2), + REG_SEQ0(TAS2764_REG(0xfd, 0x6d), 0xf), + REG_SEQ0(TAS2764_REG(0xfd, 0x0d), 0x0), +}; + +/* + * Disable 'Thermal Threshold 1' + */ +#define TAS2764_THERMAL_TH1_DISABLE BIT(6) + +static const struct reg_sequence tas2764_thermal_th1_dis_seq[] = { + REG_SEQ0(TAS2764_REG(0x1, 0x47), 0x2), +}; + +/* + * Imitate Apple's shutdown dance + */ +#define TAS2764_SHUTDOWN_DANCE BIT(7) + +static const struct reg_sequence tas2764_shutdown_dance_init_seq[] = { + /* + * SDZ_MODE=01 (immediate) + * + * We want the shutdown to happen under the influence of + * the magic writes in the 0xfdXX region, so make sure + * the shutdown is immediate and there's no grace period + * followed by the codec part. + */ + REG_SEQ0(TAS2764_REG(0x0, 0x7), 0x60), +}; + +static const struct reg_sequence tas2764_pre_shutdown_seq[] = { + REG_SEQ0(TAS2764_REG(0xfd, 0x0d), 0xd), /* switch hidden page */ + REG_SEQ0(TAS2764_REG(0xfd, 0x64), 0x4), /* do write (unknown semantics) */ + REG_SEQ0(TAS2764_REG(0xfd, 0x0d), 0x0), /* switch hidden page back */ +}; + +static const struct reg_sequence tas2764_post_shutdown_seq[] = { + REG_SEQ0(TAS2764_REG(0xfd, 0x0d), 0xd), + REG_SEQ0(TAS2764_REG(0xfd, 0x64), 0x0), /* revert write from pre sequence */ + REG_SEQ0(TAS2764_REG(0xfd, 0x0d), 0x0), +}; + +static int tas2764_do_quirky_pwr_ctrl_change(struct tas2764_priv *tas2764, + unsigned int target) +{ + unsigned int curr; + int ret; + + curr = snd_soc_component_read_field(tas2764->component, + TAS2764_PWR_CTRL, + TAS2764_PWR_CTRL_MASK); + + if (target == curr) + return 0; + + /* Handle power state transition to shutdown */ + if (target == TAS2764_PWR_CTRL_SHUTDOWN && + (curr == TAS2764_PWR_CTRL_MUTE || curr == TAS2764_PWR_CTRL_ACTIVE)) { + ret = regmap_multi_reg_write(tas2764->regmap, tas2764_pre_shutdown_seq, + ARRAY_SIZE(tas2764_pre_shutdown_seq)); + if (!ret) + ret = snd_soc_component_update_bits(tas2764->component, + TAS2764_PWR_CTRL, + TAS2764_PWR_CTRL_MASK, + TAS2764_PWR_CTRL_SHUTDOWN); + if (!ret) + ret = regmap_multi_reg_write(tas2764->regmap, + tas2764_post_shutdown_seq, + ARRAY_SIZE(tas2764_post_shutdown_seq)); + } + + ret = snd_soc_component_update_bits(tas2764->component, TAS2764_PWR_CTRL, + TAS2764_PWR_CTRL_MASK, target); + + return ret; +} + +/* + * Via devicetree (TODO): + * - switch from spread spectrum to class-D switching + * - disable edge control + * - set BOP settings (the BOP config bits *and* BOP_SRC) + */ + +/* + * Other setup TODOs: + * - DVC ramp rate + */ + +static const struct tas2764_quirk_init_sequence { + const struct reg_sequence *seq; + int len; +} tas2764_quirk_init_sequences[] = { + { tas2764_noise_gate_dis_seq, ARRAY_SIZE(tas2764_noise_gate_dis_seq) }, + { tas2764_dmod_rst_seq, ARRAY_SIZE(tas2764_dmod_rst_seq) }, + { tas2764_conv_vbat_pvdd_mode_seq, ARRAY_SIZE(tas2764_conv_vbat_pvdd_mode_seq) }, + { tas2764_unk_seq0, ARRAY_SIZE(tas2764_unk_seq0) }, + { tas2764_unk_seq1, ARRAY_SIZE(tas2764_unk_seq1) }, + { tas2764_unk_seq2, ARRAY_SIZE(tas2764_unk_seq2) }, + { tas2764_thermal_th1_dis_seq, ARRAY_SIZE(tas2764_thermal_th1_dis_seq) }, + { tas2764_shutdown_dance_init_seq, ARRAY_SIZE(tas2764_shutdown_dance_init_seq) }, +}; + +#endif /* __TAS2764_QUIRKS__ */ diff --git a/sound/soc/codecs/tas2764.c b/sound/soc/codecs/tas2764.c index a2b7d0352d4f636c2bf7185715c0f1143ba8150e..898a53f7e033c73b949cc2f6be188f4e32b4f19e 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -46,6 +46,8 @@ struct tas2764_priv { bool unmuted; }; +#include "tas2764-quirks.h" + static const char *tas2764_int_ltch0_msgs[8] = { "fault: over temperature", /* INT_LTCH0 & BIT(0) */ "fault: over current", @@ -123,6 +125,9 @@ static int tas2764_update_pwr_ctrl(struct tas2764_priv *tas2764) else val = TAS2764_PWR_CTRL_SHUTDOWN; + if (ENABLED_APPLE_QUIRKS & TAS2764_SHUTDOWN_DANCE) + return tas2764_do_quirky_pwr_ctrl_change(tas2764, val); + ret = snd_soc_component_update_bits(component, TAS2764_PWR_CTRL, TAS2764_PWR_CTRL_MASK, val); if (ret < 0) @@ -542,6 +547,30 @@ static uint8_t sn012776_bop_presets[] = { static const struct regmap_config tas2764_i2c_regmap; +static int tas2764_apply_init_quirks(struct tas2764_priv *tas2764) +{ + int ret, i; + + for (i = 0; i < ARRAY_SIZE(tas2764_quirk_init_sequences); i++) { + const struct tas2764_quirk_init_sequence *init_seq = + &tas2764_quirk_init_sequences[i]; + + if (!init_seq->seq) + continue; + + if (!(BIT(i) & ENABLED_APPLE_QUIRKS)) + continue; + + ret = regmap_multi_reg_write(tas2764->regmap, init_seq->seq, + init_seq->len); + + if (ret < 0) + return ret; + } + + return 0; +} + static int tas2764_codec_probe(struct snd_soc_component *component) { struct tas2764_priv *tas2764 = snd_soc_component_get_drvdata(component); @@ -627,6 +656,12 @@ static int tas2764_codec_probe(struct snd_soc_component *component) if (ret < 0) return ret; } + + /* Apply all enabled Apple quirks */ + ret = tas2764_apply_init_quirks(tas2764); + + if (ret < 0) + return ret; } return 0; @@ -706,6 +741,9 @@ static bool tas2764_volatile_register(struct device *dev, unsigned int reg) case TAS2764_INT_LTCH0 ... TAS2764_INT_LTCH4: case TAS2764_INT_CLK_CFG: return true; + case TAS2764_REG(0xf0, 0x0) ... TAS2764_REG(0xff, 0x0): + /* TI's undocumented registers for the application of quirks */ + return true; default: return false; } From patchwork Tue Feb 18 08:35:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979303 Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) (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 667C622B8B2; Tue, 18 Feb 2025 08:37:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867851; cv=none; b=DJ1O/IvEOQf+yI9Y3y1gmodHiSt67u2XFC0pJb2yVRhMcNqvhh9n+Z89QKsBSJe3Xf8eie58tv2XZujBP6PJOTzMshgYDcCnhMzjRFhjMicJDy4RLU1f5v0bHFbcHVjT6DHPvbjGYe2KZLao905O+kyRUAqArXo8wkvBmzyHqdI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867851; c=relaxed/simple; bh=rdgpo4XKxysxQco2x0SFtuaRS11Q5R7MQdDhUx4X5V4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=J23hVTfZq2VfAy5eKurxhL+Bicb87/ipwOwtOmTsl7SdljFLvr+nLduLwuoH2zFieOiUYGij6vGlR9OaOp8VPOdjPm/YogEoW/3n8XVss/PisOVhP0r3mabycLVSEJFF3XsCCdacpeNX+T8o4Too9XOF0dWRgeZ78RRGspbAdc0= 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=LCranDbh; arc=none smtp.client-ip=209.85.214.170 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="LCranDbh" Received: by mail-pl1-f170.google.com with SMTP id d9443c01a7336-2210d92292eso68947715ad.1; Tue, 18 Feb 2025 00:37:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867848; x=1740472648; 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=J4W1nmesNsVd9HtjqY1pKAoaSwbEZBLcLQfWZxRu3Wo=; b=LCranDbhsiKf+YXMuiZYK0+gOW6u5VttATuDT2hHg+yuW1M5l8TmBS6nFvaxDSLaYq T4Mf5EVSZapKM9rEBp2sH1wheAmR9sp9RxYFcwwjvUdEOLjCNBA92HK6k9qgx2ftzd86 w6KlFptTiHWxVdtXbzdGT5Gy5qYyv6j0oBdF0Pa76Z8kNhTtOV+JJOuunGxAv8yE5pX4 lnJvm0yRTIOww7AntKiz+AsKxMbMSvXEFACR/tT+bm20pUZow+sWqbL4Jpefo5Wmggsp Gg70Hx5z+2+yOQhHefy7Y0v3UEZ5iijCxr/K5EjfBDvL0jjyCTOgMKkWDqgrp+wIlz4l 8eDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867848; x=1740472648; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=J4W1nmesNsVd9HtjqY1pKAoaSwbEZBLcLQfWZxRu3Wo=; b=Yr+VTOPeCIz+c+J3Fe7wztiLmQxBHdIHSRdl1O2/8CEejFIXT+IEvnnGCZPVUFbQZ2 6TRyIigWedexB9XUzQ5JUbEkh+d/H0D/QMjXRwyiRa7mVg8E4rDiKHrWiAL/V6oQN2lS GN615WQfU3ltvNf9tY9T78VMYZFg+rOiUufpfHMrwsDxnr4yXal3F8uN1L97UNiyrn67 gSdD6nS1eBTvtOj3HTIRrjuJvgzxog0q1vhI1rNlm3cAO2jrYkSmN5BB23y+GwrU7wKH NeC5hwF+mQWZICohlE8ndE7myJ4zkw8L8u3ep1YuviG5u8UenLPcrlCRruAW5t0wMY7r HKmg== X-Forwarded-Encrypted: i=1; AJvYcCUEg3O/NQhZWahOMXuQVcv2KDdJZG8azHk5to8hBsHx1Lo1wnHa1Rz57EdOdyD6ed1Yn5sYSkzHr51t@vger.kernel.org, AJvYcCVRmvH2ngAWThiuQWBAoQytd3b2T4WqHo09azrhy6nzgTSlt6Xco/DJq+e5FxU+hiRUn/st/DaHq0Kpam0=@vger.kernel.org, AJvYcCWI3BfbEN1XZxVnDZKQhRFRkt7jifxfTZ7i05Q0Eos4A/+6L9FTNeT5V4zDqKLun6ndmZ2uLknKTQraWzE=@vger.kernel.org, AJvYcCXpSH0E847p3JNVXtnl4Nv3cjQ5VeoWGgZY+4Kgq4IQlV4N3KRK5R2bWxiaoaoyRleXZy5qcwJ47Byqcc9Z@vger.kernel.org X-Gm-Message-State: AOJu0YwnpY7CU5zJw3RYCk5JP3IywrdJkGYBs0pX6fUiCVxSQLBfOa3s DWBApEDmgdjKqgzw3DT7epglHg/aeTncqKd5RGM2IwW9ahZajovJPjuamzjW X-Gm-Gg: ASbGncsLP0C9PNUrS5zLsl5vjWb7t8+DiLjz9o2XNIdzdTYEHllwp++h+tTMXsZuA/Z 9RfACp0UvSvtvn8iR6D3WO8kUBkYzEXq3e8g2uvaH0gJ4HMfs78YSUM4wgABvFAvf1CgZvhU8C/ ZjQwYKdJUxFwdn8YYTjCjhw8/n+/7ARQNCLC8bcb8XKHqT9RVKjoBlf7giwUC4RFzcRTAhW85LR pzibM6xS2artAh4kMBi/JBPlAqryJtFJ+BUMVkTMHduE6cITGL4sjxJh1GKfXg4ovxoo1nprC+j ou2XA+CLuzT7bCvoQN7cVM9dv31l1pJqTfsDdMsGS9k5W+xIomODO24//b7ylA7wIyPt4kHw9o7 cnNcdl25sOA== X-Google-Smtp-Source: AGHT+IGxGIIJPewHLSEPggPPN3s8vsAiXTlTsakBOHSx/c9wnfXAS+iDlEn1PMfPO7KvvnaAb3yReg== X-Received: by 2002:a17:902:dac9:b0:216:48f4:4f3d with SMTP id d9443c01a7336-2210401a706mr166713985ad.13.1739867848565; Tue, 18 Feb 2025 00:37:28 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.37.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:37:28 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:46 +1000 Subject: [PATCH v2 12/29] ASoC: tas2764: Raise regmap range maximum Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-12-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1154; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=E3fgZXeyxHCmx5TkNj8oGEVwOZCR+iEFAFUx25XBj1E=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3BIkJHkvlWya/UReSkDm5PuHz9TKtm2b3G+yYcGc1 CO9u1UmdJSyMIhxMciKKbJsaBLymG3EdrNfpHIvzBxWJpAhDFycAjCR2V8Y/jupMuUuq7VWu5Tb ty/HT372HyFTDrv66NUN+ZNCT2zdnMLIsI494rNGNedruyz1nbdEpsisqu+6/zA3VuXYtvWfxKu L+AE= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Martin Povišer Reviewed-by: Neal Gompa Signed-off-by: Martin Povišer Signed-off-by: James Calligeros --- sound/soc/codecs/tas2764.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sound/soc/codecs/tas2764.c b/sound/soc/codecs/tas2764.c index 898a53f7e033c73b949cc2f6be188f4e32b4f19e..13c7ab7ee1f7a9e1224804de034466ef8bc1bf06 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -726,7 +726,7 @@ static const struct reg_default tas2764_reg_defaults[] = { static const struct regmap_range_cfg tas2764_regmap_ranges[] = { { .range_min = 0, - .range_max = 1 * 128, + .range_max = 0xffff, .selector_reg = TAS2764_PAGE, .selector_mask = 0xff, .selector_shift = 0, @@ -758,7 +758,7 @@ static const struct regmap_config tas2764_i2c_regmap = { .cache_type = REGCACHE_RBTREE, .ranges = tas2764_regmap_ranges, .num_ranges = ARRAY_SIZE(tas2764_regmap_ranges), - .max_register = 1 * 128, + .max_register = 0xffff, }; static int tas2764_parse_dt(struct device *dev, struct tas2764_priv *tas2764) From patchwork Tue Feb 18 08:35:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979304 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 4565C22CBC0; Tue, 18 Feb 2025 08:37:37 +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=1739867858; cv=none; b=UK6d7N0Hzhs7ZbIyky2mGRy1Tu1yW27H/X4ca29f9bnWUMDll+mAZherBiL4m7RlNemkh0YmHaMtTcRXOLV6FAd1ni6wZ0O2KCHEchVLAa6X8i3ra4WObGIS9p1/l2UVBUE3m3dWos/FUIYKdualshCLzHIHLDePV3eftm/fGSw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867858; c=relaxed/simple; bh=R5CGUebK2zAj6O9/HHLGD450zIPtVaFw1f+T6NWzFVo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fkw6/VWH4Y6rlgNX6GvcXpcIxieD/ytJs+3qx/sDDci2ub2RjpFN9knvPwV3ULqJNHQYPRxfK6ERs48snZ/yccwPzRNf/UvAggK7CIdjrqKJD6N4hVO4OIsauJ0A5+sw9aGbhkxybrNQdCQkl2ZXypw3T+Mon0T1kSNSLnbHeOs= 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=gppSJDx4; 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="gppSJDx4" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-220f048c038so63338595ad.2; Tue, 18 Feb 2025 00:37:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867856; x=1740472656; 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=BSGUP3m54FlOrzw+5tfDV1Rd46XpJOc9r57P1WtoieI=; b=gppSJDx4vyQtWa6Kxe3HwDdEl6jBdF5K5J8/xoya+a0muvM2XdYoIm6H2R+yJ2jnKZ ayohuTecRLcnRMYMCPBfjtYcslk0eoY1WfNBmqOn9mmNqTpWaeEOPdsaYtAPXCaLWsaU fNQYdtfdipE1cEkRSVYE6bRpKTdhQeWIrUY6nepL6q105qBJhYxWpP4GuG3A9VWnmSgQ wv8m90Yy4kVVQ8TU4saLFclK2+i/3PrFLV79fnX1bmIrpTWAkLDnJIp8G0iwKig7juIi NNs6DHaRIDCDYUkTX81mCoo/C6uUEvxvQP0N9CtFHboaNfJYHX9WzCxilUzUW2mXSTwH C8Dg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867856; x=1740472656; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BSGUP3m54FlOrzw+5tfDV1Rd46XpJOc9r57P1WtoieI=; b=CfFEw9jUlunR64CKjLTzkoXs0rdacDMVxGEPQAQnOYsujbSs39/CmtmOUeN+X1MIUz 29kSV7JrjTMY591yaFfY0eYDf3pKA69HZF8MZ3yZYinlpys8NkQj7X3bl4Lrv9kwKXof ZvdXoTFkfZYVcqAZ/CNTpamxYmE6QsCCWxh/VQF8hr5lW6E4Q1DxuVLcDZCpgy1JmR7I kSPmU5/q8vAmLaYKE67f3WtQMENqT6IUEj8+OKV49e+D8h/EKdtVy7xd4e3npDfs4qAz e73hAgpj4uGNNWCjhFhCWsDayHXPcNOmVY2oJuuJYf0kYs0rBtH+al1uMHYiDKtFSwAu oCUg== X-Forwarded-Encrypted: i=1; AJvYcCUPbBmLIl8OEg0w6+twoIihnNWW1rYVGtwznFEHcwtPrE5MKxHO3H29UqUMKfACFa82seJNCstRCynKtoY=@vger.kernel.org, AJvYcCVAy2nDur4HZg7kRfyzeW8OEG5filTW7TXLb04G4d0mbPFtaxQCyZZlPkyU55rM+4TBSmCOTYIOtegTlAo=@vger.kernel.org, AJvYcCVk9U/3JqqLBoSCl3TkvKmMVJGrDRlP7GWBj70SZ/nosHh6BXUJO6AjOIssIypLURSi1EeaASsl1OncD/uw@vger.kernel.org, AJvYcCWuG2TRyVqZijTeEVzRwnD9g9O899BqJvAXRuPBEAnyUZkiihDlm4yY4NH9mvxXIdnF9cTCUJuUcJnx@vger.kernel.org X-Gm-Message-State: AOJu0YxafVN91TNlYuVF6ZUouH4o/01KFqHdnAeYmONtEfH/cc1pnlt8 SOyjFeqkTWdL5zboaKIr2VWWUXxP23etKOsQOgEGnATE9FgNzqFTfZLShc20 X-Gm-Gg: ASbGncs+ee/1seGb0Ot+uxqXHzhZY6xrsj378sR7yrfulF4yMmAcofj0lyM+mrh8hup JessTDRfsFH7Npm26VXBqvFX7sDPznSsQIT66T3hKYL6rSX10BU2epKFv+YFvPTk42Gmltg1ORE CdYHEI9mTfRMGzE+98rBRorEcwIxz7ga8hZvHJrwtZ6jEDj7fYmkrOXZnhdXASb0Hzgm4d1XAY2 NID+bvMXo5HURBCJZNoh+SynBOPgBEiHT8Melx+M/ja6VIZTWNVgokY7DjrWHtTbrwaeq9HHnYG BuVX3uxuOxo7voIsB0M29IQfOvhPdNn0NP0f5fml7ECDz5Wr5SSgrlfwLzjWCuz7Dn82ZkhyKtL IlsrgpJRw2g== X-Google-Smtp-Source: AGHT+IHinlUcJdepADETZgWdF6xVxTtPe3RJzl3iDPZR0TLKLeGYJs4/jm5yYrUcmNhdKp0WMMDrJQ== X-Received: by 2002:a05:6a20:72a6:b0:1e1:9ba5:80d8 with SMTP id adf61e73a8af0-1ee8cc162e9mr20405530637.33.1739867856345; Tue, 18 Feb 2025 00:37:36 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.37.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:37:36 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:47 +1000 Subject: [PATCH v2 13/29] ASoC: tas2770: Export 'die_temp' to sysfs Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-13-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3106; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=lkuBo6XHksMD5HcdiK6pdh1/+6wNjBzUXd1OHHJ/WQM=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3BLn7Z+4VtPB4N2MnK1OF0NPLuWc+UvU9ssedktF5 9ZLWY49HaUsDGJcDLJiiiwbmoQ8Zhux3ewXqdwLM4eVCWQIAxenAExk7g1Ghve2jpuUrMUa408u Dp+ns168O37VVnkxv4eaWQnte5M0bBkZHn3e3WO+V+gM59xMkZfJD1qr57+P287hljx36Zsrd9g beAE= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Martin Povišer Export a file for the readout of die temperature measurements. As per the datasheet, the temperature can be calculated by dividing the register value by 16 and then subtracting 93. Reviewed-by: Neal Gompa Signed-off-by: Martin Povišer Signed-off-by: James Calligeros --- sound/soc/codecs/tas2770.c | 57 +++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/sound/soc/codecs/tas2770.c b/sound/soc/codecs/tas2770.c index 7f219df8be7046912bf3ef452f75c17b5118bcf6..84066884d36be8d41d83bca5680e9f683c420d78 100644 --- a/sound/soc/codecs/tas2770.c +++ b/sound/soc/codecs/tas2770.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -491,6 +492,51 @@ static struct snd_soc_dai_driver tas2770_dai_driver[] = { }, }; +static int tas2770_read_die_temp(struct tas2770_priv *tas2770, int *result) +{ + int ret, reading; + + ret = snd_soc_component_read(tas2770->component, TAS2770_TEMP_MSB); + if (ret < 0) + return ret; + reading = ret << 4; + + ret = snd_soc_component_read(tas2770->component, TAS2770_TEMP_LSB); + if (ret < 0) + return ret; + reading |= ret >> 4; + + /* + * As per datasheet: divide register by 16 and subtract 93. We don't + * want to divide just yet though. + */ + *result = reading - (93 * 16); + return 0; +} + +static ssize_t die_temp_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct tas2770_priv *tas2770 = i2c_get_clientdata(to_i2c_client(dev)); + int ret, temp; + + ret = tas2770_read_die_temp(tas2770, &temp); + + if (ret < 0) + return ret; + + return sysfs_emit(buf, "%d.%03d C\n", temp / 16, + (temp * 1000 / 16) % 1000); +} + +static DEVICE_ATTR_RO(die_temp); + +static struct attribute *tas2770_sysfs_attrs[] = { + &dev_attr_die_temp.attr, + NULL +}; +ATTRIBUTE_GROUPS(tas2770_sysfs); + static const struct regmap_config tas2770_i2c_regmap; static int tas2770_codec_probe(struct snd_soc_component *component) @@ -517,9 +563,19 @@ static int tas2770_codec_probe(struct snd_soc_component *component) return ret; } + ret = sysfs_create_groups(&component->dev->kobj, tas2770_sysfs_groups); + + if (ret < 0) + return ret; + return 0; } +static void tas2770_codec_remove(struct snd_soc_component *component) +{ + sysfs_remove_groups(&component->dev->kobj, tas2770_sysfs_groups); +} + static DECLARE_TLV_DB_SCALE(tas2770_digital_tlv, 1100, 50, 0); static DECLARE_TLV_DB_SCALE(tas2770_playback_volume, -10050, 50, 0); @@ -532,6 +588,7 @@ static const struct snd_kcontrol_new tas2770_snd_controls[] = { static const struct snd_soc_component_driver soc_component_driver_tas2770 = { .probe = tas2770_codec_probe, + .remove = tas2770_codec_remove, .suspend = tas2770_codec_suspend, .resume = tas2770_codec_resume, .controls = tas2770_snd_controls, From patchwork Tue Feb 18 08:35:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979305 Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) (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 AEF82233136; Tue, 18 Feb 2025 08:37:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867866; cv=none; b=hKcZ6+ELkT9mUYtZDkcydwX5/XDQO8TZSKzYtm64q++6pV/hI2rTT6i0TqaWgTcQu10TwGgOciVBn0hK7ljkEq3pnXHu8wM4k1qLrWU+5IeHJz9qv3/k5AzzGNlfw8XMeeOme9xk29/Agw8KaEGt3dJQQqq4lfHcBVeccP3b31Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867866; c=relaxed/simple; bh=C+X0x7uIf65/mbXTMCE86W3v0h9GaMeMdchW1VENrnc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Z/JXx7GF0MM5xKGmKs8WJd2VmRVhmz5DLL4WlrNNN1MnNBT0KNUDuCRWTDDqUIDlZN6btGPCmDJxfpHrY9EQQ+KvaTfZ3uoufflnF6aS2RRK91d3do5/1l/31DpW8rCHZrBMn+4API/mgEHEIPwGgsDlELjesXgMFuTe1kCl7fI= 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=LlwoYqIy; arc=none smtp.client-ip=209.85.214.170 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="LlwoYqIy" Received: by mail-pl1-f170.google.com with SMTP id d9443c01a7336-221057b6ac4so43958115ad.2; Tue, 18 Feb 2025 00:37:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867864; x=1740472664; 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=sZkZf98xzuFsPo9rZYpEWNft19Sn7WJ32Cdi1OtVNJs=; b=LlwoYqIyjh1GCrnfz46vMI6s9+faY5PD2PKxakkJTJD90zsFtpzx6wqugkPRryaoTd cE9hcJNHVxaF5NFxYUTuAMyAckCixWnALOoXmdRPaW7kA0i/suqOu2NEHlTZpv8k+sdG eIeNESiLibfWaxGFNQDaaYlqt/xm1iaOFkKckd8TezEyT9kGVmNxjm8tvsuXOwQRjLXF w7U+GJ7oLlqcBofKI+YBQhZTDBcTvd2XJL/Ptx1c0dSJWBuqJ+77dJc3M5M3ql7ISjEb gz7k46r8mAb8xiFFXU0OlZnyHLSAkGmY9r+ZhP7JC4lzOHcia47LLtwE7WTJvmz6E78j 5qug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867864; x=1740472664; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sZkZf98xzuFsPo9rZYpEWNft19Sn7WJ32Cdi1OtVNJs=; b=RwpjjOh3oPVPnU7g6b7buyMSJaWAUKGwZgl4jAChAe6IMIJN9lmKf+s5+nj0d5VgzD pE/sRwEuOwkndgTdl8s2PBbU2rxK+foCqsFbcl9dzEaFjSLxXBhxiANW1K1TkiUfG3lP f71FhEM1m8Od7Hw8Vh2ZpRsyF5x/NTw3/wAKVJuOiN734ux0xMSUpRZsKEeK+CpCQ71Z uEy51GrmZiK5mIGl6kdFVUJcn1KaZV3VjLMlEBTUdTW2so8B1j1eUWxhqyFFdHQ7oVWz 093iI4Qlb2f2oCONCvUYQTIgXIQGfqwX+DKeJH+bl0v8ClBFEJ0qo40UNpvdnquGHMwx mRlA== X-Forwarded-Encrypted: i=1; AJvYcCUwuMfmwc5s16zqWl1kvQKaj64aJfkp+84ZHplXLp2ElWP7aNq6VI/MHTp5KUV3vyTRQP682a7WQtRw6iU=@vger.kernel.org, AJvYcCWfc1TLYLgC46MrHM8+aX0elFMLtevCKnFfd40YSgnnhBI7SsrA6jl3T2QN9Un+rxT2uqTkz2VUUQYXsiM=@vger.kernel.org, AJvYcCXC5AQiHfHBacnqXwfhd1sekz7B2rB/RSgyz8OSFqbmNtSItlgcSV01frisr49U8RNFvSTe8hb36vYL@vger.kernel.org, AJvYcCXPjnuTIxbFpn0GHtFd72O6EiqUNf8Tl5HlIBoHhiWfte+rLKZ1B45yh7gWA7GekZod5J6GZxm0wlkNS5/v@vger.kernel.org X-Gm-Message-State: AOJu0YyNqZau/F+QTz9h9Rbi75wV37mHHXvfNIC8xl/7JqAnTjxayXUY W0zJ5hrekZdbBr1T+6LWWayDXrB/WuqcMU6vazknHf7ZZyAjknY8fJCZvlAy X-Gm-Gg: ASbGncvVb4X3HJhZ6bO7O/4MkHefu5uAWnejkT8bdTG2AfxqziEcaH0M2MWW2A3/vEE Tf61SuNEbZlvAjixFPzhvdmY+35hSRNqeBg3qCuK3ZHgX7uN2OA9qmB+QnEt7bmA+D1Ad6WVmCC clfAnCPqiB+Hg33es1EYVLg953rf3+Q5tcnChejVrK+FzoSYoHjmAamgjExGDp3R2KE39j0jGdW wBgCthp3/EzCa+RqV1jUzGb7jes0ZsXwyLwSxRHSVLPkP4eyXIZJJJBv1riWkrFKZjGudwNsIwT yuk3BDml2jNdB9Nxw5XXWt8Lf9Xv8AQGFh4uCzFh4tvPv/LNsjYhIB2KtQNrCMBS4WlhihCyO9D 9YpevzL9sow== X-Google-Smtp-Source: AGHT+IHnEmsdRs0QDQNqmFf6dAJT6iEkiGCVIADqflKn44jjikjLxu6ge9+xE6rbdfiUgc1uqiS8dg== X-Received: by 2002:a05:6a21:3287:b0:1ee:66ce:16f4 with SMTP id adf61e73a8af0-1ee8cbfe3f6mr23976267637.36.1739867863817; Tue, 18 Feb 2025 00:37:43 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.37.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:37:43 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:48 +1000 Subject: [PATCH v2 14/29] ASoC: tas2770: expose die temp to hwmon Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-14-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2665; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=C+X0x7uIf65/mbXTMCE86W3v0h9GaMeMdchW1VENrnc=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3BLPuG0q9yy6/fZmd3+EAu+GtU/Dbj682L5v0QV31 j+H4pfpdJSyMIhxMciKKbJsaBLymG3EdrNfpHIvzBxWJpAhDFycAjARYTOG/x7tj36wGtt9vjnr 6e8XtYfTOY4EnTacpTwnrt7+wgn/w7oMf+Xc35/MLVDkbjiW6Bx9z3pt3LuKlozZ57b71rBZvRK 7xAIA X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 Create and register a hwmon device to export the die temperature to the hwmon interface Signed-off-by: James Calligeros --- sound/soc/codecs/tas2770.c | 69 +++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/sound/soc/codecs/tas2770.c b/sound/soc/codecs/tas2770.c index 84066884d36be8d41d83bca5680e9f683c420d78..fee99db904a5885d740c1cfe8ce2645a963c6e1d 100644 --- a/sound/soc/codecs/tas2770.c +++ b/sound/soc/codecs/tas2770.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -537,6 +538,61 @@ static struct attribute *tas2770_sysfs_attrs[] = { }; ATTRIBUTE_GROUPS(tas2770_sysfs); +#if defined(CONFIG_HWMON) +static umode_t tas2770_hwmon_is_visible(const void *data, + enum hwmon_sensor_types type, u32 attr, + int channel) +{ + if (type != hwmon_temp) + return 0; + + switch (attr) { + case hwmon_temp_input: + return 0444; + default: + break; + } + + return 0; +} + +static int tas2770_hwmon_read(struct device *dev, + enum hwmon_sensor_types type, + u32 attr, int channel, long *val) +{ + struct tas2770_priv *tas2770 = i2c_get_clientdata(to_i2c_client(dev)); + int ret; + + switch (attr) { + case hwmon_temp_input: + ret = tas2770_read_die_temp(tas2770, (int *)val); + if (!ret) + *val *= 1000; + break; + default: + ret = -EOPNOTSUPP; + break; + } + + return ret; +} + +static const struct hwmon_channel_info *const tas2770_hwmon_info[] = { + HWMON_CHANNEL_INFO(temp, HWMON_T_INPUT), + NULL +}; + +static const struct hwmon_ops tas2770_hwmon_ops = { + .is_visible = tas2770_hwmon_is_visible, + .read = tas2770_hwmon_read, +}; + +static const struct hwmon_chip_info tas2770_hwmon_chip_info = { + .ops = &tas2770_hwmon_ops, + .info = tas2770_hwmon_info, +}; +#endif + static const struct regmap_config tas2770_i2c_regmap; static int tas2770_codec_probe(struct snd_soc_component *component) @@ -768,6 +824,19 @@ static int tas2770_i2c_probe(struct i2c_client *client) if (result) dev_err(tas2770->dev, "Register codec failed.\n"); + if (IS_REACHABLE(CONFIG_HWMON)) { + struct device *hwmon; + + hwmon = devm_hwmon_device_register_with_info(&client->dev, "tas2770", + tas2770, + &tas2770_hwmon_chip_info, + NULL); + if (IS_ERR(hwmon)) { + return dev_err_probe(&client->dev, PTR_ERR(hwmon), + "Failed to register temp sensor\n"); + } + } + return result; } From patchwork Tue Feb 18 08:35:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979306 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.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 8292C22D7BA; Tue, 18 Feb 2025 08:37:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867874; cv=none; b=gdXaUCZYOn/+mEEoYQE9YAk/bEDJs7Onig9hI9UkdsqIzVM2hKMFbg9CVo9pIScQvyIf0RJrzGIlRTP10oU8BW7deevT+VcHEAcXjFx6P/RG29YfjvPqTw3XMAwd6qjhMJ6EwZgArPfl9fA2vMZa/GGW+X7OjqhUyVVOfgIZNY4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867874; c=relaxed/simple; bh=lb1XCvL1II9op8X3CDkVqh/LUj9amQa4WogbY3MJQqU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sW8TWUrkrudskMJnWW8N+kJN5EAXb1Xeg7d5MAKpte4Dlh9fkQYcxvsb4Y6P0ksY1dX+LqFXjdwk9OguGzF0fZTyAe8nEshpwVykB3xkcNKmTEMbP50MftXPewKZ/2Md53cAzD4TTCAm6vVX6XHV95FKhBi5QlxsAUHHyu7bjJ8= 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=m9I9Gz3u; arc=none smtp.client-ip=209.85.214.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="m9I9Gz3u" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-22101839807so62788585ad.3; Tue, 18 Feb 2025 00:37:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867871; x=1740472671; 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=aTcnqKYb+/KLLREgvZ6qbT0Qq5VXrrbYGMFKxj4BUWE=; b=m9I9Gz3u1SVyS2hL5ALz2BEse7+3jhCtBLW8VMHhcnGV33F/ortmgtns0vUxqBFjlH rLhA0FxI+JU93zGODl4UR6xHl7TZkd9kYr58dJ8gH92Ii1ZvzMKdmADYnJBwtCHfXQTw xrOsLTKjZc1MFAYM+2EbWQ+1tSSoTZbeWRX3DsJqwJpA7GI9C6LbTt+/XM0JzzoTAzfz Y1M8xBw2+VI+63Xc7lStLddU1RtS4pUsEphS3KwtwOalPsOcan4WDBY+Z+/o76lsoVOf fPC/iHL9+z0tFZmbjohVP3eNVeDJ+wlL0RdC6hqBKFbwgq5aKTwCcL9PyX07Cm9NzrHd myYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867871; x=1740472671; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=aTcnqKYb+/KLLREgvZ6qbT0Qq5VXrrbYGMFKxj4BUWE=; b=FYWgulkNkef5bqMZD++45L7Lg6fhGk+FrrMXWB/x+3ovyypk/x8ABfLPfOBwfr+9PF 9mdLFVpcpDIlD38uW34rEgSU8nQmQv+7wZ1j5KEZJIC5/0oLiaCKeAGRfqGqUfzagGjB cwTcKtKfnmC2buwcUQDunFCkFWmLZ43Rk8zmUG3Hipoven6fdQ2SKDLY2v++49fcwQ1o HrqQy5hX+nDRXDJKLJZ9tyoNlg7yOezTG981aeb6PnKVW9CE4tyK2YivFJZ5pJEWgpVI rB+n9zrah/i4ZjkjDlj+9zRpuSjWih1bUoAnqWGnZGcsKYTFOZgOGdxbZDK+G6QKsgLR Hynw== X-Forwarded-Encrypted: i=1; AJvYcCUG56g1V6+DaD9fo6w6MGl5cZ8CQ7cLrhrY1OazFtzCj2nQVhDQ85gicrn/qPfbXCql50IiOVVDwFgxQHQ=@vger.kernel.org, AJvYcCUK5Rkx9tmFT1h4uLI4ddx3BqpTVK8583sHxrxvEBj0q9jE8SSaU7PT2fPwWDhUnd54nBVM0xha5Zg7@vger.kernel.org, AJvYcCV1CWML28+sFopnNPvGgtPoOfZyB1xg5XS76EPEixMRhPxhPFN5TEORbTEh+04p7CwBOzUVyWqPEQvaS/I=@vger.kernel.org, AJvYcCV2b/RcVz5GOMEt2kMPPSV2FMGEcooi0bzqhGEVviy+mNaH5TWpVNNEIuee/8rCD/6Y5JvIb9FsG/pBmcjF@vger.kernel.org X-Gm-Message-State: AOJu0Yw4UXk32iiiJzCVqjZkCAQN//qSw44a5BwAJ7iKAuwKHBDPTbEV Ejac55T+DmYBX4ivU3MRTiGpa4ogSGwQevFMfh+ehH4RbEtthmxhQVbF6Vmm X-Gm-Gg: ASbGncuh4H1QNrwSw3Kh54K+Sg+AQiq/A91HDf+sXQVXLHOmoYln5aXS/+CSEHsD8O+ GMch7InjfvsgIZFr0V+4dFvYLuz/XMXxw4lA3gYpezxt7w6vcwiAdcPjttvu56vasfotpAiSL7w 6obVxxbOYPupntJ1VEikgxpLDTTkTEZeoN/65cgiBene97y58qKp949Xv8GCg2Or+gOHAzi/ebD jvGJ5H4RUjKjcLt1ywSA8UtYccwiAN0kUE69lWi5pi7iSnHc3PzWsO3pRj5ReIRAEE3Wt0OJD7V yTfVimu3pFbjehGWoRDn2R1NInTIoEWK0by5RINJzs2F3BNB/1DEfIg/Y9N/SKM0m/mYSOF5wie 88oIo2LHE6A== X-Google-Smtp-Source: AGHT+IHjmO3cHoD38sSMb/Vhv6aXpCCEr0G3zge1hxQzZrVOQcXvkl7aoPZ8wdeNZpvL8gkd2Yc9Jg== X-Received: by 2002:a17:902:d483:b0:215:6e01:ad07 with SMTP id d9443c01a7336-22103efb5b1mr187971475ad.6.1739867871585; Tue, 18 Feb 2025 00:37:51 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.37.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:37:51 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:49 +1000 Subject: [PATCH v2 15/29] ASoC: tas2764: Export 'die_temp' to sysfs Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-15-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3446; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=0a0HOe+ABXU9bHydNnLXso1NNutXczT0PDufOAOyGk0=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3BKZ6i+4XXd6NP3wvjWxOwpXJwUt+aC/ar3yyptco psCDSTdO0pZGMS4GGTFFFk2NAl5zDZiu9kvUrkXZg4rE8gQBi5OAZgI3w5Ghm8e+xeuSdrCK2/m wtLw5VUKq2rAHRkv20XOvy8+4xE12cTwP8X914z2/zFHJzHeumMbsr21MrlG7LPMkZ4vU0Xmxmc zcwEA X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Martin Povišer Export a file for the readout of die temperature measurements. As per the datasheet, the temperature can be calculated by subtracting the value in the register by 93. Reviewed-by: Neal Gompa Signed-off-by: Martin Povišer Signed-off-by: James Calligeros --- sound/soc/codecs/tas2764.c | 45 +++++++++++++++++++++++++ sound/soc/codecs/tas2764.h | 3 ++ 2 files changed, 48 insertions(+) diff --git a/sound/soc/codecs/tas2764.c b/sound/soc/codecs/tas2764.c index 13c7ab7ee1f7a9e1224804de034466ef8bc1bf06..b0d016f85f7fd57bec36b33db5e8c2bd242b5b94 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -571,6 +572,39 @@ static int tas2764_apply_init_quirks(struct tas2764_priv *tas2764) return 0; } +static int tas2764_read_die_temp(struct tas2764_priv *tas2764, int *result) +{ + int ret; + + ret = snd_soc_component_read(tas2764->component, TAS2764_TEMP); + if (ret < 0) + return ret; + *result = ret - 93; + return 0; +} + +static ssize_t die_temp_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct tas2764_priv *tas2764 = i2c_get_clientdata(to_i2c_client(dev)); + int ret, temp; + + ret = tas2764_read_die_temp(tas2764, &temp); + + if (ret < 0) + return ret; + + return sysfs_emit(buf, "%d C\n", temp); +} + +static DEVICE_ATTR_RO(die_temp); + +static struct attribute *tas2764_sysfs_attrs[] = { + &dev_attr_die_temp.attr, + NULL +}; +ATTRIBUTE_GROUPS(tas2764_sysfs); + static int tas2764_codec_probe(struct snd_soc_component *component) { struct tas2764_priv *tas2764 = snd_soc_component_get_drvdata(component); @@ -664,9 +698,19 @@ static int tas2764_codec_probe(struct snd_soc_component *component) return ret; } + ret = sysfs_create_groups(&component->dev->kobj, tas2764_sysfs_groups); + + if (ret < 0) + return ret; + return 0; } +static void tas2764_codec_remove(struct snd_soc_component *component) +{ + sysfs_remove_groups(&component->dev->kobj, tas2764_sysfs_groups); +} + static DECLARE_TLV_DB_SCALE(tas2764_digital_tlv, 1100, 50, 0); static DECLARE_TLV_DB_SCALE(tas2764_playback_volume, -10050, 50, 1); @@ -698,6 +742,7 @@ static const struct snd_kcontrol_new tas2764_snd_controls[] = { static const struct snd_soc_component_driver soc_component_driver_tas2764 = { .probe = tas2764_codec_probe, + .remove = tas2764_codec_remove, .suspend = tas2764_codec_suspend, .resume = tas2764_codec_resume, .controls = tas2764_snd_controls, diff --git a/sound/soc/codecs/tas2764.h b/sound/soc/codecs/tas2764.h index 00296b8b1f7584e7520bd6ed749a09681f16ea09..786d81eb5b1e71bad094ef94e4b56e8f7c910285 100644 --- a/sound/soc/codecs/tas2764.h +++ b/sound/soc/codecs/tas2764.h @@ -111,6 +111,9 @@ #define TAS2764_INT_LTCH3 TAS2764_REG(0x0, 0x50) #define TAS2764_INT_LTCH4 TAS2764_REG(0x0, 0x51) +/* Readout Registers */ +#define TAS2764_TEMP TAS2764_REG(0x0, 0x56) + /* Clock/IRQ Settings */ #define TAS2764_INT_CLK_CFG TAS2764_REG(0x0, 0x5c) #define TAS2764_INT_CLK_CFG_IRQZ_CLR BIT(2) From patchwork Tue Feb 18 08:35:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979307 Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.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 042C322D7BA; Tue, 18 Feb 2025 08:37:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867881; cv=none; b=enK4T2tC493OqU2nE+F+9tiinE4YfEpPmdpTVbByOxDcMftZfaETop23ENECnTwbsCJzA6LAqgoBjk4XBnLjfC0IzYy/XkDmI/8rr+zRBmP2pgOjI/prKvHwihvSQK+DBGDBdXLIafN9YtD1iUzR7jMiwGAy8r+GOfObf1mQNHo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867881; c=relaxed/simple; bh=ELHe9Gx9zBA1ZoHYutyVq2BXEWZuUYmtVmXx2v/ql6o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VCGx3d/d8EoBcQaNRX2SftBhMJxDr7YmR5Ta4XVmPrIwkMSBDKQYyeySZ5NszOBURyEhUi4Qy4DrT1avDNglWgnQXOYZItfQveX23Cfg8rj7FnKt4+KY2+7h8qpqNsWcoy9sOZl5pkCcmWcuMyVXBGp3usQLOikHum7qitDC9qQ= 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=iyz3rC1H; arc=none smtp.client-ip=209.85.214.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="iyz3rC1H" Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-22113560c57so46601345ad.2; Tue, 18 Feb 2025 00:37:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867879; x=1740472679; 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=VsiNqfEcoONC0G46oo8Oc5GfM3qffuUL05c0mgTHX0Y=; b=iyz3rC1Hq10yFkNBtSxUJ3sO7DsaJj+5pTMDMZGvec6xEFODgXv5tsdZSsPxTDaoY+ Si9tl8VKpE6E3xVxAvi/vG0IELxQwJgqtoxbVXlghjnyULlfT+V2FDX1Bsv5Ct/62BZ1 7PnldJL2sXnZVZW5/RgfuYe+yD6VaBI3cTTOBpIFH9znH92J74THWKH7IDlsbrw2jk89 TyetBhaboBw+XsKwytbFo2fwiriaQpDJVmXiXOrewHlWbt0q1Qh18pp/UXr+IcEYpBim 2+BPlFDWNITBBcPbffuVBN4sUtebYtd4wH3qTh+lL7IC+/4cwlhwDaH9weUACD2vQ1AW 3H8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867879; x=1740472679; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VsiNqfEcoONC0G46oo8Oc5GfM3qffuUL05c0mgTHX0Y=; b=rK2VMZt5/ZkrJaNy0JDTIpU1/wycsCzKhmWw8tXZL6s9KqDVCXyUXT0GSm2MhafDSB 8VLnItfX8oEyRRkYxXoO/vKX6sfySIQCcRi/9EhfiwXD5MVd6ZQnMolH4o1XmJEoPNVW lFZdByV07gGHMtP1OjfH5F0k8Jwvm/WRcIuVeFK6CH5nXIW8I9+b4bfJmy+H4qtK+qQW qoPO4mWnO3MYX7BSCkvu874BE/lIZasdwSF8pyh8wrEn53TjWLTIZEwUMYYtRg0Dg6on HxblTkczJFXY0SNtdPKqoO5V9eOF/sf2FiyoqdsArj+RqN5RZBetzxSvqJHCLdqq4y22 aQyw== X-Forwarded-Encrypted: i=1; AJvYcCUnexmbwT19ZheAmLb8yZPgqqE0acjF93uGeU+rRPmt4yVkCnxTOhv5rZ9dpQd4nv4ry1kNYZyGV0h9eDa3@vger.kernel.org, AJvYcCWm6Mu+TDYNTRQGTKzjx6DIJV3ncSD4ZT14xmWWEeB0NrnTk1pkg2RRBTiM3v/6WKKR/iWLGs6mtqxL9C4=@vger.kernel.org, AJvYcCXE0+d1SLXmAv+AWqh1wCXZ9dc4G4YWt05qZPTenWowQGLWCb0Khb8o/owfm8qEfTeqyKvJVKwiMqEx@vger.kernel.org, AJvYcCXRN7ei7s+DKvCIaZms6tVzlnrv2cFSFu34SErN/vb5h2nkD9PMtFgvlR6tBfH4tI9eBi8JntfnwRY4pMI=@vger.kernel.org X-Gm-Message-State: AOJu0YxqbjocCJEQLvOdBdoq6i9YrzvdFxpY4LO7r3T/fqczLumoSUr3 vdxwg4ZyX6Ysu6e7M8ZAxNoXciVJno27OEcfHdvcJ0MuvbCg2zCpvWCXd1Ky X-Gm-Gg: ASbGncuRYroSoGLAG9LA/7R1Lrlib/E1LwLQLSeO2/56ipcyb7/sRtMv1qcnFXiOZzo Nltw1L073V7AaRqwsWIMNeIEyy7q5oCXyTTX9LzQEvkiXYC39vKoZVGSxRGASbeknjPiJ9kDTxV pCsVWDLmCaN8FO//SzHea3+iHNXsFZH1VGSYcHOV33O/NqohI3RD26fPyvFh9skMqBXOKMqV6ao B8ysomfaFi/erv/vHnhXbjlMn1wuqpBQp/iSPb/D5BFqknXtogC+Vmg8lppxSdVnF7d8WKsrwvt RUn2qLgNw77L5nJMEvx/crjEW1DVZzgTG5Uo4/jwfiMXzOT8BEp3i52elpMfK1jskZ3muvDI7++ 1Evvs4o4iiA== X-Google-Smtp-Source: AGHT+IEF+IZYeppWpFRiGDvRqgopdewlzuMHucHDa0g++fwr8JSYoodOUVLlL3ed58cPAPVhWKpGaw== X-Received: by 2002:a05:6300:6308:b0:1ee:c1b2:76d4 with SMTP id adf61e73a8af0-1eec1b2788fmr4186768637.40.1739867879084; Tue, 18 Feb 2025 00:37:59 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.37.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:37:58 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:50 +1000 Subject: [PATCH v2 16/29] ASoC: tas2764: expose die temp to hwmon Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-16-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2705; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=ELHe9Gx9zBA1ZoHYutyVq2BXEWZuUYmtVmXx2v/ql6o=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3BKrOA7EVb++Oa3vr/Ob7pau2ovsCzZrb83jUZmp2 +jx+OPijlIWBjEuBlkxRZYNTUIes43YbvaLVO6FmcPKBDKEgYtTACYiEsfwP6Nj//dVDSttff9F CZptM6xg2TC5/P5VqQNJ1//8L/539TbDf9+WDutNBTeKe7JfHRaaztz/x1RvX93KwiX6u87ELBW cyg4A X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 Expose the codec die temperature to the hwmon interface Signed-off-by: James Calligeros --- sound/soc/codecs/tas2764.c | 70 +++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/sound/soc/codecs/tas2764.c b/sound/soc/codecs/tas2764.c index b0d016f85f7fd57bec36b33db5e8c2bd242b5b94..670c59e57997a7988af837bd58da695ad773ae14 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -605,6 +606,61 @@ static struct attribute *tas2764_sysfs_attrs[] = { }; ATTRIBUTE_GROUPS(tas2764_sysfs); +#if defined(CONFIG_HWMON) +static umode_t tas2764_hwmon_is_visible(const void *data, + enum hwmon_sensor_types type, u32 attr, + int channel) +{ + if (type != hwmon_temp) + return 0; + + switch (attr) { + case hwmon_temp_input: + return 0444; + default: + break; + } + + return 0; +} + +static int tas2764_hwmon_read(struct device *dev, + enum hwmon_sensor_types type, + u32 attr, int channel, long *val) +{ + struct tas2764_priv *tas2764 = i2c_get_clientdata(to_i2c_client(dev)); + int ret; + + switch (attr) { + case hwmon_temp_input: + ret = tas2764_read_die_temp(tas2764, (int *)val); + if (!ret) + *val *= 1000; + break; + default: + ret = -EOPNOTSUPP; + break; + } + + return ret; +} + +static const struct hwmon_channel_info *const tas2764_hwmon_info[] = { + HWMON_CHANNEL_INFO(temp, HWMON_T_INPUT), + NULL +}; + +static const struct hwmon_ops tas2764_hwmon_ops = { + .is_visible = tas2764_hwmon_is_visible, + .read = tas2764_hwmon_read, +}; + +static const struct hwmon_chip_info tas2764_hwmon_chip_info = { + .ops = &tas2764_hwmon_ops, + .info = tas2764_hwmon_info, +}; +#endif + static int tas2764_codec_probe(struct snd_soc_component *component) { struct tas2764_priv *tas2764 = snd_soc_component_get_drvdata(component); @@ -882,6 +938,20 @@ static int tas2764_i2c_probe(struct i2c_client *client) } } + if (IS_REACHABLE(CONFIG_HWMON)) { + struct device *hwmon; + + hwmon = devm_hwmon_device_register_with_info(&client->dev, "tas2764", + tas2764, + &tas2764_hwmon_chip_info, + NULL); + if (IS_ERR(hwmon)) { + return dev_err_probe(&client->dev, PTR_ERR(hwmon), + "Failed to register temp sensor\n"); + } + } + + return devm_snd_soc_register_component(tas2764->dev, &soc_component_driver_tas2764, tas2764_dai_driver, From patchwork Tue Feb 18 08:35:51 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979308 Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.178]) (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 A4CFF22CBF4; Tue, 18 Feb 2025 08:38:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867890; cv=none; b=is3mnb1J+7lrKOxjw2ruC2gTS3zcaB32aa7+JXdDRBWVtdpTjSgyQHy8Qy9WPmjwqqjpesutnLpZGVHU6ruBtMrM63Rx4HA9IEGavzEyD9v8yc3ZQy2pvfTuFl5JiwhPWyP7o23bvGaglF9/EhXsvIDJl4Um3eFQF1PbeJVNLsc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867890; c=relaxed/simple; bh=bXgdrj/lgzgHfGKjw+d3UblqoDc9qGQB/+FFAVBHcXI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gB1AkF5Dby1wa0/GJQCkZkksUb7didC0D8r8jZDVP7DVY/wRpXJrcHumqIvdDTaeJgPh0MN9HyGka181gkehnwtjwcfcdEeFHCInEfkoCP9AvIU90R6fP3kqZjwsEcDgreDHpBSgiCp5HpG8t0oJ6GUD6YmlkMMH5oaqk6/HcCg= 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=SLCR26Kq; arc=none smtp.client-ip=209.85.214.178 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="SLCR26Kq" Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-22128b7d587so34296845ad.3; Tue, 18 Feb 2025 00:38:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867887; x=1740472687; 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=Nq/n56KCvsRvP7RYqZR5KNoKdAwdBSr5LyDPMrsCm94=; b=SLCR26KqbN1EeQqSlH6H3NQMtS+xkm1xTtFAcJWFERJBMSSiaKFZrK1P0s8/enaGha ZURtCAuEFEWksPBYd223gH3u/dcJcBVaTX/jGrOVcpAENpe6+cnMi54rP93kX9tUZf2c gdSGS6qIBKiKwXWq243CwThHUD2MGDCJ2sSh932Bpo6EAnoF2stVA5p3kWfsX2T8C5iz d3E3t5cw5we8pisFjxQuLVIrOEADYHHUCEqVq2vAho/ylsdJT0TXdxKRXFdVYQAeM120 NFBqPyvN4/9KS/RYal7oFLXHxLQ4ANK78Y4xjcjC05OuSDuUJ0XGgsOkE5R0q2qcGaSR UHPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867887; x=1740472687; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Nq/n56KCvsRvP7RYqZR5KNoKdAwdBSr5LyDPMrsCm94=; b=nwqQaPF/1R2Hri83NK29fQ8FSrdX+SlKvBDduW6B6fUL8cbEg3X9abhFtOwRBfvVLs PtDUhu2FN2N7g5OtCw9cD9MiOlV6Wq6KjQmxNgPslHR4gtHp121Qy/4D0n2AoSSmk/vR DgpBsMf5wA2gXvMNMwbc21vQx+Tv6O5JqX2VZC2MgRhUdzzC4Mx7R9FeMFb2MfSlRCjh CdTYbYukZnYaqP6oT/nxg4DqQP8Cv7w1rMeu8wWTLWWbg7BN2uvWj0S8Z3yVeYDdVseC fja0pbVItkwpGbgByEjFRN1JPvvj0UJO5KZ0ezZ/AXr0DowPSrPQIN73ZJXBlCVFMoYr 2sug== X-Forwarded-Encrypted: i=1; AJvYcCUK94RSqWmXBz7oARWEKrEuGAlxT5fFeXLjIoSQafncIO1EEfdqcF7Tpm0sU7eD0/XmogqIspghAdU/+s8=@vger.kernel.org, AJvYcCWj2z9EBvTQlITI3nqjfhVXtPno5D61SO7P+Vzkr3EvfradYk0oA6ixnLpiNXWSq7gxUrrL96qvPiFo/0Eh@vger.kernel.org, AJvYcCXQxrl7rQ42XjfhliL90yPKhT6Dc0o5p0Pr+wlexkcKd9/D7xWWxXl6pZBcf3K2AvbW+pwb9rcfKLel@vger.kernel.org, AJvYcCXv7rSzambHYiqELM0IUGwZDHrhIW8oPzuY8S3l++LiwbgQZsFxJPwHLkpgSci+ope14822wFIX/5MmSaU=@vger.kernel.org X-Gm-Message-State: AOJu0Yyc7NWe8sL9s0ByxLqa67VL4rUsGQBsG85/I6U639c787RUKZsw jzEcZid03ylHlRLF/aHvWq4yqeNctDU+Y4sy0SILFNfl2W19Rjzz7N2FDsUt X-Gm-Gg: ASbGnctO7IzZB0WaS0DX21l4uDxYE7nONYXEGkT0k81at3SUD41N5llEsbTb4agh2W2 EcA2vFJ58xGBv6v3ZlEdkys3fmt1lEGabvdboXhsP7ZZAiz85SAeO1rHUMqCbrlFBFVFJ9jiWqP qnnEDlufSd4GIqsAV+EOiDMLWx489+Bj3bEDMcaETR8u6kFlq281VYA/NMtoZNkzwPmeBY9Lv6D pFigUjEeRoCiZuyJXdpXfSUwosAjwRMHkz8mfRnx09FqLN0GperuRWvILMw3wqKPNtkcAxBBYPE 8PJW2hJQ1+Vyh6hYgDNDWiZ5lmZ5h+W7HWkjNiS0p3S/ZglDQVzPbsdLLDYydLXZbmrRnGfny4u HvAD08f7w/w== X-Google-Smtp-Source: AGHT+IHc+3+Y6pYMIhjesT1d2RpgN7fPqWm6UpDrcbTpkkzy2YO8Dtln+mC5fD/udDbNi12XN6/LOQ== X-Received: by 2002:a05:6a00:1707:b0:732:288b:c049 with SMTP id d2e1a72fcca58-73261784015mr19657706b3a.1.1739867886809; Tue, 18 Feb 2025 00:38:06 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.37.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:38:06 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:51 +1000 Subject: [PATCH v2 17/29] ASoC: tas2764: Crop SDOUT zero-out mask based on BCLK ratio Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-17-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2949; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=Or2McYkdE4gYAmum1CTJeeAbVQsNrcCt+ghAbMXAHKo=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3BJtmYJ3GsbebQ3zuHy06MvRpXsuHv52bd/799svi k5xKZOc0VHKwiDGxSArpsiyoUnIY7YR281+kcq9MHNYmUCGMHBxCsBE3vMx/A9u09ho+zg31Ls+ t/TEiekHilNu+rlsrxPrTdscKbKW9xQjwyHRzo+/3Z1+v5hnET01LNxue/ZWBfWF2m8+ivS7vjn fxQsA X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Martin Povišer Reviewed-by: Neal Gompa Signed-off-by: Martin Povišer Signed-off-by: James Calligeros --- sound/soc/codecs/tas2764.c | 56 +++++++++++++++++-------- 1 file changed, 39 insertions(+), 17 deletions(-) diff --git a/sound/soc/codecs/tas2764.c b/sound/soc/codecs/tas2764.c index 670c59e57997a7988af837bd58da695ad773ae14..39dc466bfbca35d50a5a93507260d59d30affab6 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -376,6 +376,44 @@ static int tas2764_hw_params(struct snd_pcm_substream *substream, return tas2764_set_samplerate(tas2764, params_rate(params)); } +static int tas2764_write_sdout_zero_mask(struct tas2764_priv *tas2764, int bclk_ratio) +{ + struct snd_soc_component *component = tas2764->component; + int nsense_slots = bclk_ratio / 8; + u32 cropped_mask; + int i, ret; + + if (!tas2764->sdout_zero_mask) + return 0; + + cropped_mask = tas2764->sdout_zero_mask & GENMASK(nsense_slots - 1, 0); + + for (i = 0; i < 4; i++) { + ret = snd_soc_component_write(component, TAS2764_SDOUT_HIZ_1 + i, + (cropped_mask >> (i * 8)) & 0xff); + + if (ret < 0) + return ret; + } + + ret = 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; + + return 0; +} + +static int tas2764_set_bclk_ratio(struct snd_soc_dai *dai, unsigned int ratio) +{ + struct snd_soc_component *component = dai->component; + struct tas2764_priv *tas2764 = snd_soc_component_get_drvdata(component); + + return tas2764_write_sdout_zero_mask(tas2764, ratio); +} + static int tas2764_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) { struct snd_soc_component *component = dai->component; @@ -507,6 +545,7 @@ static int tas2764_set_dai_tdm_slot(struct snd_soc_dai *dai, static const struct snd_soc_dai_ops tas2764_dai_ops = { .mute_stream = tas2764_mute, .hw_params = tas2764_hw_params, + .set_bclk_ratio = tas2764_set_bclk_ratio, .set_fmt = tas2764_set_fmt, .set_tdm_slot = tas2764_set_dai_tdm_slot, .no_capture_mute = 1, @@ -714,23 +753,6 @@ static int tas2764_codec_probe(struct snd_soc_component *component) if (ret < 0) return ret; - if (tas2764->sdout_zero_mask) { - for (i = 0; i < 4; i++) { - ret = snd_soc_component_write(component, TAS2764_SDOUT_HIZ_1 + i, - (tas2764->sdout_zero_mask >> (i * 8)) & 0xff); - - if (ret < 0) - return ret; - } - - ret = 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; - } - if (tas2764->devid == DEVID_SN012776) { ret = snd_soc_component_update_bits(component, TAS2764_PWR_CTRL, TAS2764_PWR_CTRL_BOP_SRC, From patchwork Tue Feb 18 08:35:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979309 Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.178]) (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 9E8F7234998; Tue, 18 Feb 2025 08:38:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867897; cv=none; b=CIoLIN1Aa3JyKe+oM31E5MEScEadZ8WZ0Ct4VLErWUyiVRDP/Ci5jQ3XfjDGiTht2mmNAT/iOJiVIJSBxVo8DSSFGNg0mu05oG4mccZkjqCo0vLUBHL6MUGjDxHNSWlAAoG355KCFOn0zHSijFFbl2+szeeIKt4BFXb0T+AH+7g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867897; c=relaxed/simple; bh=kn1APRcCA/v8AjoA1R9fU9HzEdKU9YfUWCYBmEG2UzA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sV5cngB53RxAPvcFXJ1ktm+Sx4sZz3HRZPSEz4jvv33mdtWYEco043U2QaWvJ6hhi7MCJox51RH0svYyI7+LccHT/ZrN8F2F7Xuxuo+wjLq4MOGBVoo/E1j3yCSBMwjRj6JpnUTAsjJr41RlTfYllIIeyCbcQVIamfEKB+WPVBo= 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=ED0XMRBE; arc=none smtp.client-ip=209.85.214.178 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="ED0XMRBE" Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-220f4dd756eso64616535ad.3; Tue, 18 Feb 2025 00:38:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867894; x=1740472694; 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=+vIiixkZLusvVLSOkYQ4pzXKIcBetiV0WHv/MyWa9HI=; b=ED0XMRBEkhn88iNQb+vs8ZLfxSnCxuDmjWvlGnZkUzx6TcuAa8OvtJGoNFXEyy9rwA 8wMKBw+ED4iswBZQrrYo283x21UnrRwdAgmxwnmxXqAAEIO5NnUyuZ+Lm/rX5JJTq7gn OKEZovZWq6ekdB7EsorsGBspdLkeUTKgR0x1Nj9E+uRgSp66YZzxoMSwZNXpRU5FBOGP Z7cSqO9rm0sL37r5DKqLcihLvWHtNWQR/PfDoKU9hA1J0Dv8kSkc8lBpxqM5rubgpS2J 2INTMcGV8zaqtHFVl41+1INuMzs10MPHdq48/t1XkUA8991sEbCknCJSfEgdF/ltN/1l 5mgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867894; x=1740472694; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+vIiixkZLusvVLSOkYQ4pzXKIcBetiV0WHv/MyWa9HI=; b=Dnt24e2b4dLHYu4ZFlAOngCHITjEwrPVDv1NkBz8Sebub6/8/4tAF3AfSSV6/waCWH phztY/+vbrogeaHOOiGrG86R+G9iiFoTN0trfuiyPa40s6O57nW++UX+y2X+WhRHifLl b+5pHsmffVhrMlk+y9xYz4+R1Wct7Ur9uURsvWHYoby529YpZ5C4ROgTBsScEellXot3 35QDOHsxbgx3JDuUcO89Y1xxmHv8dIkxCBO4ATr4bDN4rwH7u6ZtbzT9mWFnVi/LK2Ue LTL6WP2F7Dj9tDbPQzkxe+1DGGLIQQ9ejZNlldsK5Ea5BPOuRCpheqnGhNylePW++7M0 QlFg== X-Forwarded-Encrypted: i=1; AJvYcCVJiwjtr1CA7u0xWnKS3QBG0Dr8QuzbM4NPy+NxnGEhOeMf2h0JwnjsqG/9MBikQ0spzq6pxd+rsiWDe6s=@vger.kernel.org, AJvYcCVMZVQcXGqjGDVOMotPVMxSA35y8hSo9bEq1LbecCB7hLjW4/yyS2xHgzHOLhfnwf79mJ3qGePFdRqo33g=@vger.kernel.org, AJvYcCVziyLR2IUcIdwKmzwAM8hxIfU5UsnUU2nDb9rPDYPKrH/Ua4vg51/GQZ2QGCwvVDMa874QwE89oiHD@vger.kernel.org, AJvYcCX33qhuPBRevQmSjcnH+KgpsrETNhvt0Ok3FH+vc/zWGzWFIPi4CZu4moHNG+3FLahd8v83Wg1xPIKUx+2k@vger.kernel.org X-Gm-Message-State: AOJu0YxtDXNtxTvIB7ECwRRJCTSvHmlTfRPZnlZ6M+3CqbFLc3nncFmT fhUJYNPf78bIs41DF+O1/96JWo45lkwsvUTyf2Buta+PpfP0ZMZ4Ju+P9Qma X-Gm-Gg: ASbGncuXvNsipdATlxMRjny7pXSCkornRKOBOiPiKd5FplaprlIyprlQuu/4tK1mcDt /6i7stiIiTQSB8ACK+YPKYNCPelfIVP2PMA5aTb3HicoBVycNg4SuTQ/oll6lnQYacAv7X02Llp BPaj4HvtqLDhNLDKS0+CgykfN+ldRAph4KUBGTUCIWzez1K8349sYiCai6BSwEFHsCNpK2IwhKY HhVVQk8mRhy09+bFksYaRtNv472aeNu05rFh0cOCYazrQ7fMc/C0yXoVRK2P4suA3k+URvJwhyr 2Fsy61CwJgC4+u8blfRVKIpNEu06GwZmd+5xJtcg0KrDzI9I6giYXUGnSMQPo8+XNJB6iaJs2Qb Dt9yrwdI1jA== X-Google-Smtp-Source: AGHT+IE9l5ZWDLZ4Snb5g8buV7sgmajvA4jmUg5Vk/mBb8OxfNgwoLh3SgWN+mfYVulRQJ7/jQm3XA== X-Received: by 2002:a05:6a20:2591:b0:1ee:69db:b0b7 with SMTP id adf61e73a8af0-1ee8cbf9ce8mr26100366637.32.1739867894577; Tue, 18 Feb 2025 00:38:14 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.38.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:38:14 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:52 +1000 Subject: [PATCH v2 18/29] ASoC: tas2764: Enable main IRQs Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-18-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=865; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=nGf66/Eflq8MFfFqSEUJwOcDBRVpqoelx/A3yfhUSUo=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3BJlWO/riC+cb5nJmq4er8uSPmXn9V3ex+6aFS30n Vp/+2xYRykLgxgXg6yYIsuGJiGP2UZsN/tFKvfCzGFlAhnCwMUpABNxm87I0D4p+c0lef/m/VLs ktGSf0PfTWi7rvtD1Wim5DadWLtkO0aG77v9BafJvMh79Fk7bS7zk7jkJOF/+w8IhsTafHm5cFo BNwA= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Hector Martin Reviewed-by: Neal Gompa Signed-off-by: Hector Martin Signed-off-by: James Calligeros --- sound/soc/codecs/tas2764.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/codecs/tas2764.c b/sound/soc/codecs/tas2764.c index 39dc466bfbca35d50a5a93507260d59d30affab6..16df453190961b8ea6809cf4e6a9c588f41b5a82 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -716,7 +716,7 @@ static int tas2764_codec_probe(struct snd_soc_component *component) regmap_reinit_cache(tas2764->regmap, &tas2764_i2c_regmap); if (tas2764->irq) { - ret = snd_soc_component_write(tas2764->component, TAS2764_INT_MASK0, 0xff); + ret = snd_soc_component_write(tas2764->component, TAS2764_INT_MASK0, 0x00); if (ret < 0) return ret; From patchwork Tue Feb 18 08:35:53 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979310 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.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 3633822F3BE; Tue, 18 Feb 2025 08:38:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867904; cv=none; b=HePY4xylUCDrCinJUID+PmwxmzgcEu28SQJfGNBe/ymlCTTbDpHaYQ1xK5Z48BHZ1uZ9eCuqCthfPK+uzLG8ME/hsRLaLyW8TK2FffzBXbJ8i/Sn/IlQG3RGH9QIwDqZdmyTYyVYZy4U3zz4JeYIt9fOPXtzg78IBqOClnUG4rw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867904; c=relaxed/simple; bh=YMQbzuiyaL1Iaf8NDdQ1vVxMPoqlW0XTKmhgm4P53e4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Dooud3av/WFAmsToCDkZ1gc0/FHG3uzXHCDgF8uRNfbhSjz84OQwpR8nivwNakI57VOpdoabKuX90Gd+m6luNOv1QVuo+E4n+tn0Sqg05q4xHITp1DB+/EqT5oFRpnPnLMODDM1oR9WZBrYGR/kXcI1m8HgTY83OJhb5Wrq2BB0= 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=RD2kpMJt; arc=none smtp.client-ip=209.85.214.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="RD2kpMJt" Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-221057b6ac4so43967235ad.2; Tue, 18 Feb 2025 00:38:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867902; x=1740472702; 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=Hyqeyf27F6I7AKPqAgQeLe+BV+1ml+NgHZwH/Ryil30=; b=RD2kpMJtcSSWvJqlQ+l49i9jRpPjEMLhhpuDVcXo6qGXxF3Mk7OXOImhXeitd9n4Bf ffnRVBYvQEcPAvR6s+BTFG3+Sm/UXZPvaLfCJTf0fucV5uSKSHk0CY3CN9GGiNBH8Msk Jo9gHkaJhFNU+69oR8Kdv/lggmH4ELO4rQxBZxmXgvxUirAgbBWAr4PV43ARoHIRL836 1t+lp8nOdVgiotMK303hYNZLOFI+uKNWf3r05U5f8g8WTLiLvpV8fzaBbENlPG1KbeYV 40FPheFvquKjruUOmAXrKIHSSuBLv6jh2XCug2o9KTV3u+7MyRB7FikoUy45K6MmqsDb YXkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867902; x=1740472702; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Hyqeyf27F6I7AKPqAgQeLe+BV+1ml+NgHZwH/Ryil30=; b=j/NRq8VHKmFMrpK9udvm3H6SQ7UoWukJnQpVqq6qi0aPyGdeQSITTFPCmosdUenqwp 5nnymJE7Yycd9Ds7aP6ghk6sQTVuJP4qqvMppJQ17qc7R4t3BR7fuLW8H3lw0DzYYgwq ZV5n5enuf+z63GX8OjDvjKJ8XggW+Q+CwkRbiqEMZQ76k7GVkr5Yz79zNSlRFZFgraxZ ZZiFVSxd9W9NF9vDKT11s9E2wXJji3eEmpSt6dn3I6QBK0sIi3Df79JzWSDwS1/Yrayj iV5mTPKWr8PAkpsHXg3mPniCXSC3T1L2dR2pqz802Mq4esxEG17pbAeHIBBCni1BEzo6 Sfvg== X-Forwarded-Encrypted: i=1; AJvYcCVSN58/SiH8tvtNMdRQRhqRFaRS3hRO1HCmkMQLRnIh36ftYxZKB/C6+TJA1mZV164R9c70jfA2pmsLxp4=@vger.kernel.org, AJvYcCVojT2UxT8gfCi5cs9gyzs2aw3YEiKr6kFiH8NBd/aOezLgKDACEn03sOx39twKPmtlm0wDqPF8MBWCgvg=@vger.kernel.org, AJvYcCXBwkfSQPwSIUiNCfbLp+QEwY/jHRYFtvFCowPDvbgG6dUwLm42xfCEC2N7ztgQZf2HcYDummOoIUPb@vger.kernel.org, AJvYcCXU6a8AzDcAnes/3QxZwC214EMFMwkGdMhY3UNik3ZWX4WUtiNqzJUlnr4fu2howf5Huf52gIx4jca/yWHN@vger.kernel.org X-Gm-Message-State: AOJu0YwXwDxKjAhW0hUrdeH0WAVIES6wJQ0CqP9zrMPKFN9xBqnF7VrU JiISyPK3NJme74FgYXITlo3m0bRMn7MUtKEdYgjubN1wK7j1PfGvR+fwhsQ0 X-Gm-Gg: ASbGncvJIgPjUqs9WuXThPSPjFglDKoekxbbpbRyntSEqFHHeXKuveDMNhb1fVXWU4F qpMJor0hH+Lynqyp23f281uloFWEJOUHIP3PketGlXY5BCghkAQSyJA6pdG4ltLVm0TbygkuZBG IllgxaoWF7YfgcVFo2rRJCh4/iXZBBp7Bn1qezE9Nfoib3bHOomJO9gk4d6zd9Rcek0Cppp5mqN bXnCb5qMyBD5faDb623AAEjemMDUDk74Mi2HIdwXh/+JFLSflD8FJE02/uVZdclpyiZ60vdUb3h JM7p6eRr8o7NDJo7otc0/VZIWqf4GOAvrCDLgvYsbJQ8YG/QgfWUxZ516UhhR/q9jNNuP5SYjN6 hn5ZxnSzNbA== X-Google-Smtp-Source: AGHT+IGkUu7BmztVJnNnLd9/2arCGoguxbm/707mGBgU7NigUyCi+pzQzWsh6RXWD/XRKiCh/p9pUg== X-Received: by 2002:a05:6a21:4014:b0:1ee:833a:39a6 with SMTP id adf61e73a8af0-1ee8cac1610mr23081603637.4.1739867902350; Tue, 18 Feb 2025 00:38:22 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.38.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:38:22 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:53 +1000 Subject: [PATCH v2 19/29] ASoC: tas2764: Power up/down amp on mute ops Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-19-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3232; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=I5n7Dz3MYeIHjWigjiDeLt+4w349RXEkojMNn8Ex6EY=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3BJLdupmyrdKd3WzVj8UMrk4Ncv5wYadS6fMe/Iwb c7tjub0jlIWBjEuBlkxRZYNTUIes43YbvaLVO6FmcPKBDKEgYtTACayIYiRYbvlfuVX333nb13w y0hJrvhLe27cpyPMUprzj4mwM89bl8LwP67+9DHxxtWl7Fd5hGw8YouZT2odXu9/nf2FjV1Ymu5 5LgA= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Hector Martin The ASoC convention is that clocks are removed after codec mute, and power up/down is more about top level power management. For these chips, the "mute" state still expects a TDM clock, and yanking the clock in this state will trigger clock errors. So, do the full shutdown<->mute<->active transition on the mute operation, so the amp is in software shutdown by the time the clocks are removed. This fixes TDM clock errors when streams are stopped. Reviewed-by: Neal Gompa Signed-off-by: Hector Martin Signed-off-by: James Calligeros --- sound/soc/codecs/tas2764.c | 51 ++++++++++--------------- 1 file changed, 21 insertions(+), 30 deletions(-) diff --git a/sound/soc/codecs/tas2764.c b/sound/soc/codecs/tas2764.c index 16df453190961b8ea6809cf4e6a9c588f41b5a82..7b69ab94c4bbd5f074d57a42f71b32f5fd63d560 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -195,33 +195,6 @@ static SOC_ENUM_SINGLE_DECL( static const struct snd_kcontrol_new tas2764_asi1_mux = SOC_DAPM_ENUM("ASI1 Source", tas2764_ASI1_src_enum); -static int tas2764_dac_event(struct snd_soc_dapm_widget *w, - struct snd_kcontrol *kcontrol, int event) -{ - struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); - struct tas2764_priv *tas2764 = snd_soc_component_get_drvdata(component); - int ret; - - switch (event) { - case SND_SOC_DAPM_POST_PMU: - tas2764->dac_powered = true; - ret = tas2764_update_pwr_ctrl(tas2764); - break; - case SND_SOC_DAPM_PRE_PMD: - tas2764->dac_powered = false; - ret = tas2764_update_pwr_ctrl(tas2764); - break; - default: - dev_err(tas2764->dev, "Unsupported event\n"); - return -EINVAL; - } - - if (ret < 0) - return ret; - - return 0; -} - static const struct snd_kcontrol_new isense_switch = SOC_DAPM_SINGLE("Switch", TAS2764_PWR_CTRL, TAS2764_ISENSE_POWER_EN, 1, 1); static const struct snd_kcontrol_new vsense_switch = @@ -234,8 +207,7 @@ static const struct snd_soc_dapm_widget tas2764_dapm_widgets[] = { 1, &isense_switch), SND_SOC_DAPM_SWITCH("VSENSE", TAS2764_PWR_CTRL, TAS2764_VSENSE_POWER_EN, 1, &vsense_switch), - SND_SOC_DAPM_DAC_E("DAC", NULL, SND_SOC_NOPM, 0, 0, tas2764_dac_event, - SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), + SND_SOC_DAPM_DAC("DAC", NULL, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_OUTPUT("OUT"), SND_SOC_DAPM_SIGGEN("VMON"), SND_SOC_DAPM_SIGGEN("IMON") @@ -256,9 +228,28 @@ static int tas2764_mute(struct snd_soc_dai *dai, int mute, int direction) { struct tas2764_priv *tas2764 = snd_soc_component_get_drvdata(dai->component); + int ret; + + if (!mute) { + tas2764->dac_powered = true; + ret = tas2764_update_pwr_ctrl(tas2764); + if (ret) + return ret; + } tas2764->unmuted = !mute; - return tas2764_update_pwr_ctrl(tas2764); + ret = tas2764_update_pwr_ctrl(tas2764); + if (ret) + return ret; + + if (mute) { + tas2764->dac_powered = false; + ret = tas2764_update_pwr_ctrl(tas2764); + if (ret) + return ret; + } + + return 0; } static int tas2764_set_bitwidth(struct tas2764_priv *tas2764, int bitwidth) From patchwork Tue Feb 18 08:35:54 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979311 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.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 14F8222FAC3; Tue, 18 Feb 2025 08:38:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867912; cv=none; b=mz/JsqfmIrMp3RuDZcReEsP8RClg3WNt/YpTNtPMtfBcdjNdLr73Qj/cHRJLkKntPmisdNgFOPYoCYLR5btfGeJvDOWbywGbJaQQJpz/KqOhKrEhGE+fUkJRQzm21J+b7juAvT8+vXg99h4oF5I7Hyjj3NSnVHKUItBakgnm5Vs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867912; c=relaxed/simple; bh=A48sQENUp2ByJkXfl8NgeRBNfDPrK42u/ckclupyak0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eVKpSaO52fFPHwRk9yJfypYrWvKWNxx048iiZSvYnRSZ7vcxKb6lvXKtcNWu5ao0aCCgGNonnaQjH0g5sA/w1QsM8lvuUyX/nMZxmv779edxlRhathiLOoUjdeKg69jDs62lB8YKqHKStzVpFJrGTdFlpQnIPtv+i5wvZUBCCbs= 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=GwWSfVil; arc=none smtp.client-ip=209.85.214.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="GwWSfVil" Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-220ca204d04so69050105ad.0; Tue, 18 Feb 2025 00:38:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867910; x=1740472710; 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=IQtBu9vnY7YUuYtSr4xuzwpvCGHHh4MxAf44AyPw29Y=; b=GwWSfVil+4sAk5Vo77TQz0WQWuBK0nDOZDqHq5QP+xU4r4cx8rcg6BUjtnQQ9pE7cx hA+FYPEDjegfkwconG4u9GqO0vbrGSR4QR01c1Zzr5WuWGszFCC5qvQodeqb/vdYN4VU u4fVi+/I6zppryQqpszVg7ulzWNaHKa0LqMEzYax34q4BZAL9luxwljIUSU1wARm2tP+ 1E2BZRfP01pwJriwX9TxRMew5TI9+INhhgYrjtOBOqSR+BOgb922i5XlOVhOM+aoBijw ZTRfyZB1itbuXOKU6diMYCtWPw1rUrX/K80FIL5ncS1eycLqlxvBtViFn738C8tNACVA 717w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867910; x=1740472710; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=IQtBu9vnY7YUuYtSr4xuzwpvCGHHh4MxAf44AyPw29Y=; b=uj7a/NTyZDGUbHL/y0rYVaf7hiWMEJX2yiyegXVAB2RgvY7q/8XuPAzvTBfLAMR8Kc ClYGxSEhCAyZtAJvi5AwFuV5dMeEPNW70AdGtVkv+GOoLGkm3dJQ0GWiBp6rhqUB1vK/ jYho8//y2E3fuDfUOQDHxK2KEJNoIyCWMQG4CI7A4GKUaRU4Ch7ZUGU7NBor1CEXVPSi hE7Li58gNhYx8Yw4DTOAC53M5jcc6uc6AHHPHPA9Ml6ge1Vqb8vmYoZXmRlVv87yBGg+ BdNL5yFJTD/BNROX9XmsXszU19GS3o8+VwvhDnBF7bLojlhfIU5RsMWFw8fY69pUwbtt ++bA== X-Forwarded-Encrypted: i=1; AJvYcCUvPph9xrXB3h7AiLWh+0TJ8ZfHIMKblbtKggtoWJTLorh3dqled55Ny/0dig0b6Sg0b/G0r8IxQdAwiCco@vger.kernel.org, AJvYcCV7DXMYTGIc+c7oqq4ScgJFuWKcYRAorDLKJUVaCkZlV8yaZb6fXM0owE1atsDxpbYMzWXGaofbrbxb@vger.kernel.org, AJvYcCXkjINOwfw57ODzzb5Xae+CyM2jNxFxu5DI5tlLmMyMLjd+C862uZWn33aLNOQFN3BKpS8+ypgASu8skc4=@vger.kernel.org, AJvYcCXz7/qxaa+HjVuKzDxtuiJONAnAEGa/bkY6qkgGbqqbS2xTdzSk6UDy/FUZINLhWhzdcGsC/YKx2/wBPYE=@vger.kernel.org X-Gm-Message-State: AOJu0Ywha79+ZtQMWRcOAtM2n72ca+It42YlKcKyPyawkIxn7zx1tJIK D7kKY7OC9xZbMDqvpSYpSNBfgbggjtMezfhCmTfZj5repMU6Dqr0fquEm95s X-Gm-Gg: ASbGncsgIg99sGmorPmWG0uE9S38dK2ispKk9gOgZv+c0sBIOcUfwA1BFKiHybJfAVk kcMuo2OV2LAo+MgkvganT/RadxkbuUtp0dwBR8Zwr7tX9L4zvgBEko5X95GD+JJBsgfbt48pPm+ Bvxm7cbecC6rwINvESUz2aeXwQZxAXhpn/DxvCZKziy4435dTAfSNbBKAtDKrcYZm4mc1V7CAu6 sDNg7QOB6mJLOAb3X0y1Yj7T/eqZfexpW/Rqa4nGyL3ypmHCrP1bg4LQK5LfZjcJcfQfhsQQ09s yWpjPiGeDfAkNECr6UYysVSL5mDRlxNvZ0aIrlQ0gllrZ0v2Zf3it4pzNdlyjovqOD35i9nKw4C 7fQzPyt7ycQ== X-Google-Smtp-Source: AGHT+IH34vYLjX19UvXU10ZXbfhoEcvPc03iB/RyswRJADMdBeXClw2Dv9JqG783BId5B7H/v93pvQ== X-Received: by 2002:a05:6a20:6a22:b0:1ee:7f20:e44a with SMTP id adf61e73a8af0-1ee8cb15559mr20371390637.9.1739867910127; Tue, 18 Feb 2025 00:38:30 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.38.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:38:29 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:54 +1000 Subject: [PATCH v2 20/29] ASoC: tas2764: Add SDZ regulator Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-20-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4016; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=kp+o9JoudGtfB13mggEYl995BI1+wbuw/SRFF1jLny4=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3JK2KLDnVgs0yatOjOn87f5VYmPDzY7WjXszJ0W8/ hlmFmvbUcrCIMbFICumyLKhSchjthHbzX6Ryr0wc1iZQIYwcHEKwERyfBj+aVeGMjyKr9zEt9mF b1Kr/hL9r7V8rf2rl/E8e/r6V8/RJEaGc/+6gm+9OLzRKsZqXezcEsW99ioX9jvJf0lVVDZNe+3 FAAA= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Hector Martin Multiple amps can be connected to the same SDZ GPIO. Using raw GPIOs for this breaks, as there is no concept of refcounting/sharing. In order to model these platforms, introduce support for an SDZ "regulator". This allows us to represent the SDZ GPIO as a simple regulator-fixed, and then the regulator core takes care of refcounting so that all codecs are only powered down once all the driver instances are in the suspend state. Reviewed-by: Neal Gompa Signed-off-by: Hector Martin Signed-off-by: James Calligeros --- sound/soc/codecs/tas2764.c | 39 ++++++++++++++++++++----- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/sound/soc/codecs/tas2764.c b/sound/soc/codecs/tas2764.c index 7b69ab94c4bbd5f074d57a42f71b32f5fd63d560..5d89d47c1667c1067f88169575b7b76e9a25bda4 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -35,6 +35,7 @@ struct tas2764_priv { struct snd_soc_component *component; struct gpio_desc *reset_gpio; struct gpio_desc *sdz_gpio; + struct regulator *sdz_reg; struct regmap *regmap; struct device *dev; int irq; @@ -154,6 +155,8 @@ static int tas2764_codec_suspend(struct snd_soc_component *component) if (tas2764->sdz_gpio) gpiod_set_value_cansleep(tas2764->sdz_gpio, 0); + regulator_disable(tas2764->sdz_reg); + regcache_cache_only(tas2764->regmap, true); regcache_mark_dirty(tas2764->regmap); @@ -165,19 +168,26 @@ static int tas2764_codec_resume(struct snd_soc_component *component) struct tas2764_priv *tas2764 = snd_soc_component_get_drvdata(component); int ret; + ret = regulator_enable(tas2764->sdz_reg); + + if (ret) { + dev_err(tas2764->dev, "Failed to enable regulator\n"); + return ret; + } + if (tas2764->sdz_gpio) { gpiod_set_value_cansleep(tas2764->sdz_gpio, 1); - usleep_range(1000, 2000); } - ret = tas2764_update_pwr_ctrl(tas2764); + usleep_range(1000, 2000); + regcache_cache_only(tas2764->regmap, false); + + ret = regcache_sync(tas2764->regmap); if (ret < 0) return ret; - regcache_cache_only(tas2764->regmap, false); - - return regcache_sync(tas2764->regmap); + return tas2764_update_pwr_ctrl(tas2764); } #else #define tas2764_codec_suspend NULL @@ -210,7 +220,7 @@ static const struct snd_soc_dapm_widget tas2764_dapm_widgets[] = { SND_SOC_DAPM_DAC("DAC", NULL, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_OUTPUT("OUT"), SND_SOC_DAPM_SIGGEN("VMON"), - SND_SOC_DAPM_SIGGEN("IMON") + SND_SOC_DAPM_SIGGEN("IMON"), }; static const struct snd_soc_dapm_route tas2764_audio_map[] = { @@ -698,11 +708,18 @@ static int tas2764_codec_probe(struct snd_soc_component *component) tas2764->component = component; + ret = regulator_enable(tas2764->sdz_reg); + if (ret != 0) { + dev_err(tas2764->dev, "Failed to enable regulator: %d\n", ret); + return ret; + } + if (tas2764->sdz_gpio) { gpiod_set_value_cansleep(tas2764->sdz_gpio, 1); - usleep_range(1000, 2000); } + usleep_range(1000, 2000); + tas2764_reset(tas2764); regmap_reinit_cache(tas2764->regmap, &tas2764_i2c_regmap); @@ -777,6 +794,9 @@ static int tas2764_codec_probe(struct snd_soc_component *component) static void tas2764_codec_remove(struct snd_soc_component *component) { + struct tas2764_priv *tas2764 = snd_soc_component_get_drvdata(component); + + regulator_disable(tas2764->sdz_reg); sysfs_remove_groups(&component->dev->kobj, tas2764_sysfs_groups); } @@ -879,6 +899,11 @@ static int tas2764_parse_dt(struct device *dev, struct tas2764_priv *tas2764) { int ret = 0; + tas2764->sdz_reg = devm_regulator_get(dev, "SDZ"); + if (IS_ERR(tas2764->sdz_reg)) + return dev_err_probe(dev, PTR_ERR(tas2764->sdz_reg), + "Failed to get SDZ supply\n"); + tas2764->reset_gpio = devm_gpiod_get_optional(tas2764->dev, "reset", GPIOD_OUT_HIGH); if (IS_ERR(tas2764->reset_gpio)) { From patchwork Tue Feb 18 08:35:55 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979312 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) (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 D952422DFE5; Tue, 18 Feb 2025 08:38:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867920; cv=none; b=Mbm8BUNMGmwWT2OlzSqazzJu4OYMmITM5J8w06PxM8lhOT1xeiVxHo5Aqpeed+61PeN9wrw1MOoHbD4lMQpDcUrIj5aAvw1OuamdbqwUR0UqApEtN49SJqy7+Z7FabNAnLgxjMUQ5fbs1hxrlmjN8lna+LEEYU2YNgRWZfejuEs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867920; c=relaxed/simple; bh=kJTFUNaJvHb40kFLT4FXflK4GFWczcgIpzfS/OJgv8s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hztCOvReWVdX8zacwHlO6v5e/lDvtZgyPiSp2kQTre195qPQKJUb3QR5SE0Y8WwFXCPXDktao2a8xkFVN3f8jILN51Cl27In69IaZrznwRFQ7ICYn7Gh47BbTzSqySrIYZyYm1eoBTo0AOXRlx0WapcmQsQjZWU7L3kceNhqQc0= 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=iRfN2DMe; arc=none smtp.client-ip=209.85.214.182 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="iRfN2DMe" Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-220d39a5627so74789145ad.1; Tue, 18 Feb 2025 00:38:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867918; x=1740472718; 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=/0xnSZoULp+tJndSbsnTe4b8bjzfxIgtXuAx9KCZHhY=; b=iRfN2DMekoWzp7OOLenpb4XIm7+3CNIidlVN6E6dxW+5TNRffY0webmHCYn58KLREK /egcNnozgl9Kz0Vtn6l2qhME3KtFf13X8UMu4iWo+t1v1TLDj6Nwkt6aCPoOc/7BoEFX ZkaAvsIF/U5Ah470ygBoN012Je8s1hq3UOfrp0R1UM24+TQt+tpndTIeRnr1pCCAKxqo HWTQfvuAeTxSQIKrE0OhPX8WRceSrXnkP44RFFCOrRzq7FUKyxHVUfg0BDOCaRekMMLr SKIeD/4YYyxn98pEnYxuECoH+w2ONe98WBm5zj3brI96goZsnaiqKf8bnjZ4MnrKhOZv +Lmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867918; x=1740472718; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/0xnSZoULp+tJndSbsnTe4b8bjzfxIgtXuAx9KCZHhY=; b=DqQ+uJz5enUJ0XF9VGS963NFn2vnBy6gZiwRzX/Kw1qwReJJmDf1ULMPbfWPYFWxbd Kykiv6qvtnTH2DKMzkfU2xiu/w/S5VUyzgt4mWB3Gt1zahgJfg1gmD6RaA1sfMFtLriF g5fv9n6RUc8ga2Z+GQ9RSDvs8napsvjFCEWrMfFaziCR6id4xvLzRa7zOmGho2mM6AyD r5CdbxletjX8Wxa9PUSGCCdMjGMMMRiI3bJkQHmzOndZQn1u/8kVv8d5VkKjX1lSgZK5 nRxUmofnBwrCs/4Ip1uzgutT4S/nu5uy212WF/g+wtmD+cqPyHTA/b1qePaDmvZBpjRX YUjg== X-Forwarded-Encrypted: i=1; AJvYcCUojNmJPGiXc31lJLXqVYUX0SgKy/0bOQ9HMwIBWTcV1rgs5hIIDQ7kjAYLB2bobCjIN7NEHpuwpw6dv/0=@vger.kernel.org, AJvYcCVVHgfugMwFz8Iw8kcmzDNCd5po1A3Q+OKm1WEhuN1y8OfGcz60YCKGvPEDqcT4/QCIrbMvKlca6yOG649S@vger.kernel.org, AJvYcCVnKY1z8XIjEwLnV3WuubQ0xxgMCdsm+PZIg/SYPeKQCczmDdZkMHi9Wadzsr9H+LJXyqx0TF+8pIi6@vger.kernel.org, AJvYcCVvCz8o1CrYyKzjzWNeEsbyT7I5M17SARC2XQ0YWdJMAi+nYAJqNFzDXL8aBRD6smCk/EgBO9NqnqgGYCo=@vger.kernel.org X-Gm-Message-State: AOJu0YzwO276YXKNE6TMNGSsqiA3mHtfMt5Jkzeq9sgldlw3rVu4w8jW XW6OsmptszlA3Vc9qFhLK1hPn6/i8CvXHoCOVsjHdTLU++SNTPObEpR4BdK+ X-Gm-Gg: ASbGncvtHb+xaU7jIOx90zENPBZDRR3XLkKOmjCQbfw+9+fF6UcFfPdphroqK/D6HCD 4RqNjxCwsVyr5s22+scmZZGheSfXsGxOg++mQnVXLeIwXbq7h4pS/3DX06i9+tv5D96Emphf0Fv UJKOgZ4gnxAuJoOBOTd71O6KP4/EYelXkt0+zlb4FJvgXSgmyW0RJgB9Aq64LKB6sq9AsD5tyMW tMRdAeigZSBjDLDysGVxGJ/Sa/5M60cjk/3WOraBt6pKogvpKuU7v4DShpAHu7T34jzhEgZAPBy 0d1grgh//de7xt+saYbcs0C1TsqA6ZTev1pOaVWth1EbYTKgOXUPNerlnrc+BZ3NE2n3pBOUOcL Y5oL1+ZLCIA== X-Google-Smtp-Source: AGHT+IFDrRp31PJvU6mzhR2mwgz+DW/BV7o0dC65MC+BF3NgEj/m25LCivVIpTeTBYyEDntfFRI9SQ== X-Received: by 2002:a05:6a00:198c:b0:730:4598:ddb5 with SMTP id d2e1a72fcca58-7326177622emr22154290b3a.2.1739867917918; Tue, 18 Feb 2025 00:38:37 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.38.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:38:37 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:55 +1000 Subject: [PATCH v2 21/29] ASoC: tas2764: Add reg defaults for TAS2764_INT_CLK_CFG Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-21-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=757; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=Mbk5j67i1cV333wWEgS3bKTpMGxWCx//aUmM6Ej9rq8=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3JJMf8fq7cwz1nK6eUmu6VR7o5J77lqlVbWOdYWX5 j/WN+ruKGVhEONikBVTZNnQJOQx24jtZr9I5V6YOaxMIEMYuDgFYCKBtxj+SuuHbJB9sEzlnErE 1s+yf1ZyaWwQ2+4v9ORAyLGKtMRdNxgZfu3W89T30+pyeHA91F3+pMOs36kr2JuNZPOYT0aLqnB xAwA= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Hector Martin Reviewed-by: Neal Gompa Signed-off-by: Hector Martin Signed-off-by: James Calligeros --- sound/soc/codecs/tas2764.c | 1 + 1 file changed, 1 insertion(+) diff --git a/sound/soc/codecs/tas2764.c b/sound/soc/codecs/tas2764.c index 5d89d47c1667c1067f88169575b7b76e9a25bda4..d316a369c43002e6a8a8160b85384b8824667bb1 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -855,6 +855,7 @@ static const struct reg_default tas2764_reg_defaults[] = { { TAS2764_TDM_CFG2, 0x0a }, { TAS2764_TDM_CFG3, 0x10 }, { TAS2764_TDM_CFG5, 0x42 }, + { TAS2764_INT_CLK_CFG, 0x19 }, }; static const struct regmap_range_cfg tas2764_regmap_ranges[] = { From patchwork Tue Feb 18 08:35:56 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979313 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) (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 146E622E011; Tue, 18 Feb 2025 08:38:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867929; cv=none; b=EMU9qDJS1ruQ4B4+g+H5izJMXMhNuDeogbbWV0K+VpYtVipkbqDdUdh282qsgLGmM4+qhf+nCnRSk3siqHsAqqwRNyPDVWMoKsN4wjzh6zvyfA5sFPHDY4d4N/f8LjKl+pJSfX9gQuyU2iRAViuJsEL+kXMCQ1k6YDAAyITDGRk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867929; c=relaxed/simple; bh=tc7+YebJokOjioegbqEEyvkD73m77q1TkPf5QJVCYzE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BW8vhlYKN7hlzLjzqNRw3aFzVC63RGLVX823iVsgVbq7aDOZwSr3mhfombcw9pJWheibhcz8qO3uhnRBbH/m1IuHtWVXlPifpvyv8mX1zmvc1oGo2u/qKuOBy7buz0U9388I8qN2N2s93XOezp1B4yWB4OmyVjoUk2b0p2+n0MI= 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=a7zomEhl; arc=none smtp.client-ip=209.85.214.182 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="a7zomEhl" Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-22104c4de96so43790335ad.3; Tue, 18 Feb 2025 00:38:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867927; x=1740472727; 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=TiLOjjzQ00SZoyjfGDk34XDYKUpsi/uREEWpuvAfIUM=; b=a7zomEhlIez8rNJjwFxuCsJL0qqySbJusfb2+rhJYMV9usMpSIb/Bvo9xjaHg8jEvu LzCYDtC3V9U0SQJjpIHfLpVEPT2+6sprlHTJ61m1RiMfUUZiOhNV4NL3eIpOk/Rcsp8r 0X+0KNJZNqJly/A3brAbn8fFawC596Wf964V1V2p/VS9mZspauAX9TDVgS5RxtIp2DRO BVR/8kCu62fPG4jmHVv4uvL67Q7o6EyypXaRQbuunu7RMqeF2n/A+tc1k4+aoOkafq1t xO3Tm9UgB/MCHQthSF027+jM4XKpWzoazKwZmGYcCSsRz3ZCa+JJXdybdsjcKXx09N8c WKXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867927; x=1740472727; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TiLOjjzQ00SZoyjfGDk34XDYKUpsi/uREEWpuvAfIUM=; b=hqofygmAXOQVgFzm71NXBxswJBcHdYnteg+5pQbiti45I/EowDSkB7FZryrwK6U38t ZhupIdYPnEIKy97CC4OIeZvtsg0tCcXMOS92Qmhn/uRkFIBQn8LLNhuasBhKvV6Y05rR zAmlpX3aXneuI07E+ApXmZnu4XJlyk/iEwO/4lL5nDLZR1TvzlA2oVXQyLJx+eXAEN0K jZw9SPq4AlrM4G08bFNNIQaV42oU/VCi0ZpHXVPhp6GS0ZOyMMnb5/qdm55i01/nvPG9 GuGPvguk0KtqgB0jN1sshqIdNaH/2ymX1g6KTgL0HLxdot+PTdOe060oN7iiF+1+MLPM cCdg== X-Forwarded-Encrypted: i=1; AJvYcCUxgEouKbr1ionHz8RmGA3Edc1vEGfLnseizK6d2oHwvXGU93b6t/aEQ3OCGpYZa2FC5ccIdlxB01tdppU=@vger.kernel.org, AJvYcCVEz9cCA31wpKHTXphdcBHjVvZcUvdQCN+/nJHGFuowNXlOSTGSxSL65cb2JdLVNAvxYQ0eGeUcw55Y@vger.kernel.org, AJvYcCWIUek+o3TBnwW9CSf5th1Gt9mXaDtoTFH0UL552UNSmWfXBrU/MkF4fm4WxvarQZgshdRzpfRb1+ofbhT/@vger.kernel.org, AJvYcCWmvNmabmxCQS9vozJTwVerUjzs/Od1Gq58VpuTG719TxpIC6eaDYffrk39jnP85AnWTRyqZ3eU+VEntZE=@vger.kernel.org X-Gm-Message-State: AOJu0YwV4oY8BNxWFILawd+F3RCUaD4Hg/2NgpYec0GaQIdE1NQasWdq M01QZIR702jeVBydNCUzhJCUWhJfzH0fN6ht/GfFsgm7BIhqtuQOU1dqhTdw X-Gm-Gg: ASbGncsFuOStia5DOeTBfcfYyE9KjZ6GF2tAUPO5At28GnYjnMbr40M2KRwbw0TP1pI v3ht9RhzodfCKBIbkvztSnpXr2Giu1vixTa3iQmhsegKu2omdaBDuGkKTSx1r6MucQaCxLqUGe4 vPCP52JtEcgYw2+jTh8HhyzIKghdTUQRvawTTAuaMtruNryXttbP3222i8Tr1x3krSQTPD3i+zV hqXEfYASbN14UnYgR2Ci2tEyQ64nyE5fL1xIy2/pCWaTojtgq3SjocREnb/DFMgDcNO7i2oxssI VZ9VvCCQreMPmj22HT0T5yV3j7Vl+aGhqlHQwjaVuCwQQ76IDp7zVsjJ3j0MGtagOGSY0BiQEiU 10JXgx6OMhg== X-Google-Smtp-Source: AGHT+IGn7aILehQqPamgsv5OD4CsnwPVWdUowtXQ4D2uJxQ6nLUSk3lLQaRP5n8bye+Ha7GQaWZmlA== X-Received: by 2002:a05:6a00:1707:b0:72d:3b2e:fef9 with SMTP id d2e1a72fcca58-732618fff8fmr21627172b3a.20.1739867925781; Tue, 18 Feb 2025 00:38:45 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.38.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:38:45 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:56 +1000 Subject: [PATCH v2 22/29] ASoC: tas2764: Mark SW_RESET as volatile Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-22-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=815; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=JfeFMAA2K8mo5v0Zj4GGq5hrsXO4W6rdqXHcDI+Alb0=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3JJmaGmlZCwPvew3T7n94bzejCvs9e+OBjZMXv1l2 mazSWaGHaUsDGJcDLJiiiwbmoQ8Zhux3ewXqdwLM4eVCWQIAxenAEyk8hojw8KVuYsmrjruqich sKYj1+vItP3hInzSl9ZnLFvj/Ge1oSEjwwF3+4As+RUKqice3GsWXlyx53sPZ3TBzl7uUvZvm2Q e8AIA X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Hector Martin Since the bit is self-clearing. Reviewed-by: Neal Gompa Signed-off-by: Hector Martin Signed-off-by: James Calligeros --- sound/soc/codecs/tas2764.c | 1 + 1 file changed, 1 insertion(+) diff --git a/sound/soc/codecs/tas2764.c b/sound/soc/codecs/tas2764.c index d316a369c43002e6a8a8160b85384b8824667bb1..3c21810358881b6935a50807cf7c745291dee3e6 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -873,6 +873,7 @@ static const struct regmap_range_cfg tas2764_regmap_ranges[] = { static bool tas2764_volatile_register(struct device *dev, unsigned int reg) { switch (reg) { + case TAS2764_SW_RST: case TAS2764_INT_LTCH0 ... TAS2764_INT_LTCH4: case TAS2764_INT_CLK_CFG: return true; From patchwork Tue Feb 18 08:35:57 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979314 Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.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 31C7422D790; Tue, 18 Feb 2025 08:38:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867936; cv=none; b=tponoHgdAZqDH0l3kVVLkisjqar4rXz8i+1RCe1PPa0kESjfj67Hpa6tKgmo9RNc/KLCySxImmwCRj+ZhuZjj2nZmK4UdUUhs1GBTYTobcePtX0VQKGkLUinXVn+Urx2vKjjCnXo+dU+E/DR1DEsNHCRAlBzTbsktGyLwylw2Pg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867936; c=relaxed/simple; bh=ItwvcapWnX4No37sK5tr0C0YgHDBe9aBgKZAVcfytA0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=T20Pe1DDaNPYT+/a7woN7spAanD95+OPqNe55XvIGsSwBx+Oy8hOerBjfPuLl+l2OZdrUq6RhrVgYSEqcjqOZEtAgmOkwovgzH13p7Y5Zum2KDUNLbrbfwackix7rTy37njgL38vPX91esPlHx+wvblO//+oN8RcCqdjZ7c09Es= 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=ivHcepl+; arc=none smtp.client-ip=209.85.214.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="ivHcepl+" Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-22114b800f7so39842335ad.2; Tue, 18 Feb 2025 00:38:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867934; x=1740472734; 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=hBccVGgKneSXfzYBkD4Jpd1sZnDdntYCilZFqeP7S/g=; b=ivHcepl+fbe8VdsPz3Dp8eZoYEo64w+Njs6qTeB8hMwdmy2eyr3pAF/Brpv76KKWBd HaEgN8bkbEFuiC5VdFHNlHEB4u4KQcYTfHtgVxzqjmR7wL/7vOkeoE0JmvwPgPev98Qr njmPnoxJ4Qn1wh6MA4BrOubWvvgvXKHOjRGf+oNCz0+amM20k+4cde8cGMmTM8uZSHhI A0qOtVa12imulLe26xCH4u103IqGSMLYj/868cL/NqxS4VQf+2QPDgJcYN+zrRvcM/gX GvnWrQY3r8jK+8Uk6SS9gt3/+Uh8txO64HTqkeUqX0IES+ouJ76VgX6fJjdihkhRVH2Y Kqzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867934; x=1740472734; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hBccVGgKneSXfzYBkD4Jpd1sZnDdntYCilZFqeP7S/g=; b=bx34fy04rHPpkCaB5505KiOLbSKCOCIi0NZj8EjDWeCt171IX4EzDNBrAIQ2luqXnv r3FPZoW9IwUdmym2zN8zEuH6gESYCib6tFCGIiTdSQVMgGHOTxBDus3kXIqRhwI4Yw+U ml549ChJ/baE9ZR13h6MGJdje6OrTwtqm9YISc2HljGo9m1c4i/zzZq7SWhVpaKvoNLK t0O2fCGmilz9VJqIdMl068wa3MUpLBg/7M2ZctDgcHavEN/eeDIn1nu8bjuesXmWSoc6 Bd3E0zZCAh65mBDBXcq64AAJYIxAq3GeK8aOVl7+49TZ/iklk85/IbbXqSEXAYpW8Fo+ SBOw== X-Forwarded-Encrypted: i=1; AJvYcCUf0oH3M3kqmLC2zW7QvKbK185HDXNQ9iAVXpI6PIN7tYVaDAltwRULMmVyWTLufXOm5dbYl2pLXqwA5X0L@vger.kernel.org, AJvYcCV0yh9NsM1nqLRkdv4SzQ6SvDcnbVJV2IYK+9T1HrLTNZxWGHsmrELp9/hBj6HuLYmAf+NhtOKrOQ1tov8=@vger.kernel.org, AJvYcCWMxrFL0rxwKYfAMnASqFPkzCbeNe3iYRNhLAsnvjbTLvgAlsyEuoYAT6HnVn5+Y8DrIO7lBRtKH7sJ@vger.kernel.org, AJvYcCXRf5wmoURe3XjUbgU6Xv+JkmAyYQEqKHQXm4UI44YyaphsfRVv4wc4tyQIfnNHzSSSk5V3g5zNVWg63Ls=@vger.kernel.org X-Gm-Message-State: AOJu0YxxtOsHKr+gcvLA/Xr7t+Cj20ZzrBEXkY7lEENc+kNOy8ZRk7eF ntXsN5gJ+Zj/Ra3YNlBhDI/rl16pCCm4Bm34goMPK2q6ZUd4xe+fxoZfzWZb X-Gm-Gg: ASbGncuM8JbiAH9XHTVq2o3LHzocd8LRF6d7KpR5NFm4SorlMK+7e0+ZJd/Y8oxY9Go Jcs6WVDgnU6qMS3J77VmRngkODEoIZ5NQBsSWksv2IjRynL2SyV2kwlC+FG5Ct28mdY+hj2Iu1o u44rpYJ7O6rZY12XDJEBft6xh6GdRz+c8CVHW+iC0n14lJSIvX/TrcKQM5YkwkUtwlZAu6DS7Xj uxE3rpWuMKsRVSJilJ7hYUiHDNTGIQi5uFX9PCzT1/yZY3iNrbtbNp3M8xXcwn8bfCAFOuGyyfw 5dZ8NZooh6t1yGTmTPIHdhqRAQWOeqoyPUWuu1uSElk5jh/PwlF79USiQyWEYp/rCumkQUxEUBR ZJPU2lGsDTA== X-Google-Smtp-Source: AGHT+IF69YRAn5za8af2MFH/DZsCI2LxXwdYM/i7Z3apD02bSq4Txk+V6Fr0TuaTMacvAOBd9qFZJA== X-Received: by 2002:a05:6a00:3d55:b0:732:56cb:2f83 with SMTP id d2e1a72fcca58-732618c2987mr18713163b3a.15.1739867934222; Tue, 18 Feb 2025 00:38:54 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.38.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:38:53 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:57 +1000 Subject: [PATCH v2 23/29] ASoC: tas2764: Wait for ramp-down after shutdown Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-23-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1530; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=5/z1Q+2cE2bo3ZW7z9/rxpTJXWPoJfee+5Zu6oCiyVQ=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3JIErwqa11UlFG5t5lOLy3x2SvhxLK/nbob43Akd3 TfuSTB3lLIwiHExyIopsmxoEvKYbcR2s1+kci/MHFYmkCEMXJwCMJHeLIb/nqqWv5fMTt2h+OP5 CXdWiwtn2HexyS2r6l+nGbhwRWGRGiNDL3P3B9PKlDX6248vddVZdmZrUV0N+7JtrHKHWu5nH9R jAwA= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Hector Martin When we shut down the amp, we need to wait for the built-in ramp-down before we can remove the TDM clocks. There is no documented status regiter to poll, so the best we can do is a delay. Datasheet says 5.9ms for ramp-down and 1.5ms between shutdown and next startup, so let's do 6ms after mute and 2ms after shutdown. That gives us a cumulative 8ms for ramp-down and guaratees the required minimum shutdown time. Reviewed-by: Neal Gompa Signed-off-by: Hector Martin Signed-off-by: James Calligeros --- sound/soc/codecs/tas2764.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sound/soc/codecs/tas2764.c b/sound/soc/codecs/tas2764.c index 3c21810358881b6935a50807cf7c745291dee3e6..7d6cb29a749e234b325e253985eb0feac6f44934 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -160,6 +160,8 @@ static int tas2764_codec_suspend(struct snd_soc_component *component) regcache_cache_only(tas2764->regmap, true); regcache_mark_dirty(tas2764->regmap); + usleep_range(6000, 7000); + return 0; } @@ -253,10 +255,16 @@ static int tas2764_mute(struct snd_soc_dai *dai, int mute, int direction) return ret; if (mute) { + /* Wait for ramp-down */ + usleep_range(6000, 7000); + tas2764->dac_powered = false; ret = tas2764_update_pwr_ctrl(tas2764); if (ret) return ret; + + /* Wait a bit after shutdown */ + usleep_range(2000, 3000); } return 0; From patchwork Tue Feb 18 08:35:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979315 Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) (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 E13E222E00E; Tue, 18 Feb 2025 08:39:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867944; cv=none; b=BiO7Ed0O9oQwf/6rUoBUQe+MACncJTQsmVqbYDTX5EGXnNjpcQXCL/5Y8647Iq8k0R8WUvRGzTDPKwIGdFJZ/wi2PhjNrkKXeNgSppUdzpcoxkC2rBLHSBRReaEy9L4XYmU7k+YmMI8ZGtSiPE/yzKGXToJPihKLZ+UcDhz1mA8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867944; c=relaxed/simple; bh=rfSKe5mZ28D4d/wpG3708ppy30x1Dk7ewBzxd+E8h08=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hE5z327UZOWSCeeSzx56ZAgUVjCgztHyGnFZxrtBfS6N5Rh4/zpRZvA72t3g45aEEerlaym7E7f2pYR/cnj+olpMKtb/wh9UDroMkXM3oTmd/wvglvpjj0qLVqBR2j2vbHjbLAIVtiGPpjiejZs2cLcjFsH/gb40pWHDDRgZybM= 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=LqNs8yQj; arc=none smtp.client-ip=209.85.214.179 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="LqNs8yQj" Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-220d601886fso67205105ad.1; Tue, 18 Feb 2025 00:39:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867942; x=1740472742; 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=ogdzAXtsfl3vLsucowF8jbn32dNSIkJRvbsQxdRncfg=; b=LqNs8yQjGo1jyntgm+aPfsST3CHKHNZw2VEfE34c/kDPQvsK8aw7o8+QJxv+TvMbKq Wex41QFeGvhC1yos+UVAXqCTZu9TDuO/7Jvn5NACEmkg7EAa8tYN+vQW4nFS+NSApxYH 2Da1t7B+i++wIplj8ZqDSA1yehbtZbbiEd1kfuorawh5IgmwU8LrutSPBCvX0SbNPX3Y AmpTIQ/+aIpH7uZUICNx0qVv9CB4RGkucgYFqrdGpWo9HP/8yAU+xrK35VHU6AYdoB4q ATb6C/5vkh0z6UDAdzKH0Xb9VWKzasUorbvIifFiv4Vz50wZKnAtVuYHK14XWsI3UsxI GmYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867942; x=1740472742; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ogdzAXtsfl3vLsucowF8jbn32dNSIkJRvbsQxdRncfg=; b=u4lfyHF/Bfe1EpFi3ptdhHSFKpa1OG/83yaeAU7z/MTrnXbvH5IxFoiwy24VctufmZ XZR9u/9a8g+6/MkqPZpfWbe57FmPn9xgXCo8Uo5w7bLfRJB05qsZhR+3hh+A+s8rQKhM F0UbSDBRmffolz1/66tMq7rf1B0jt3JqF15BUC6V9t+vWAnlD1/VTPBa6kjXd+IaSIz8 4I1/4FW1fjIVWPPq0m4kvL2gOBgpgc6ga8RrENQOY0Xsi8UURvZvHssrn44ENm/zPnZx peWPSMxkjv7ucvAlU6bhoDQaFmVhYyoquMsiiWnxZpI1Ff9/f0XkS3yORdz+RfZDALZO X55Q== X-Forwarded-Encrypted: i=1; AJvYcCUHoLwTWR6Dy1jfwNpkoF1tcQynbV9A3JonypP+yuIK8zrU7EhEoens3rw/nFxsiU6s3HNq0fK0DHt2@vger.kernel.org, AJvYcCUa+TKFvO7AWu7UnifLZcWxUg+Ubm8pO/kc9ssBQtCBu3ShzsQpL6DQxMYwv6GpyOal7sfjiZuGyV776II=@vger.kernel.org, AJvYcCX/dWw4e1x5tTE9GIxi6mbyrpTzHhoAb9zJU2bPYGBHzOhcv2zefxk86O9/V3GNJES2ZvEfd5sBBpMLB3U=@vger.kernel.org, AJvYcCXdTzrM/LKDrUcxJWj2vzNwECRizMOw6Pq1wJb3OOYJwKn73LK8CPLTkbaSvdgQN+ezDv6fPIRowcMlLB3y@vger.kernel.org X-Gm-Message-State: AOJu0Yyu1TpExnilSv8bLJBzNRhnJ+dd7blpXrK1hvO64rhkyXXlGWMY PL5lGZ9zmm0jCwLbKRUjKSuh0eIbB9n4EUjtKQkzi7guO7VqzWxt/jYbyZ57 X-Gm-Gg: ASbGnctG9+vrP9BcmcD8oeWiQiBnG9y7iu4UEkvs41MdTNOC7x0jAjod9U+SnO0Si1V WRSXsfPmLu32TAtG9bV2q4e5uWjVn8xp0FQ93SjvEYMJ7gsdilurn//BmCAdESn0xjSQ/ldBmLt pvrPp95ACn5Rq4EJdm9NY/edq5UZCVO+hTs3HRNf9jy1OD0+lDvDeM0uboD3ldKSQeg5cJPcg47 0HsAhQ+XuH2QQSCCmOgDWfnSFz1UM7XhclkWOJYOkrtEw4wgROwF2qCH3u6HffaXK12wIBAfA4g SfQFJEbbvlH6Zf2qKFQX9+VplkxazxP0/v196AXnJmyU4gOwJqBc8RGYJLKlgS331hk4UxMRokH RxzGRHHRabQ== X-Google-Smtp-Source: AGHT+IHanfwIgxnK+GSgc9xAFapLO97DcmqVFwllMpPjle8zRchZcy+lMRf9zQdA+z6x8TwzFrX7Yw== X-Received: by 2002:a05:6a20:2591:b0:1ee:69db:b0b7 with SMTP id adf61e73a8af0-1ee8cbf9ce8mr26104509637.32.1739867942036; Tue, 18 Feb 2025 00:39:02 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.38.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:39:01 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:58 +1000 Subject: [PATCH v2 24/29] ASoC: tas2770: Add SDZ regulator Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-24-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4983; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=31ZxtlNvaMyuUtkGM3THLQ+tO/J0r+H3zZSixDq9Hh4=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3JKkpP6pnemN/XBnZoi34AEN12eJp/f084b7d2X/3 M+Re/lPRykLgxgXg6yYIsuGJiGP2UZsN/tFKvfCzGFlAhnCwMUpABPZacPwz8jdcMEsjpWLwh5E bFacM2/P7hP9wVvqd8y88eV9+8z03V0M/7Pmz8h3WFz58OdD1zkTRZ03606d4W/19K/cdff17h4 NQmwA X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Hector Martin Multiple amps can be connected to the same SDZ GPIO. Using raw GPIOs for this breaks, as there is no concept of refcounting/sharing. In order to model these platforms, introduce support for an SDZ "regulator". This allows us to represent the SDZ GPIO as a simple regulator-fixed, and then the regulator core takes care of refcounting so that all codecs are only powered down once all the driver instances are in the suspend state. This also reworks the sleep/resume logic to copy what tas2764 does, which makes more sense. Reviewed-by: Neal Gompa Signed-off-by: Hector Martin Signed-off-by: James Calligeros --- sound/soc/codecs/tas2770.c | 67 ++++++++++++++++--------- sound/soc/codecs/tas2770.h | 1 + 2 files changed, 45 insertions(+), 23 deletions(-) diff --git a/sound/soc/codecs/tas2770.c b/sound/soc/codecs/tas2770.c index fee99db904a5885d740c1cfe8ce2645a963c6e1d..6f9e56f02f7ca95d7878c68465d7016213ae417a 100644 --- a/sound/soc/codecs/tas2770.c +++ b/sound/soc/codecs/tas2770.c @@ -72,23 +72,21 @@ static int tas2770_codec_suspend(struct snd_soc_component *component) struct tas2770_priv *tas2770 = snd_soc_component_get_drvdata(component); int ret = 0; - regcache_cache_only(tas2770->regmap, true); - regcache_mark_dirty(tas2770->regmap); + ret = snd_soc_component_update_bits(component, TAS2770_PWR_CTRL, + TAS2770_PWR_CTRL_MASK, + TAS2770_PWR_CTRL_SHUTDOWN); + if (ret < 0) + return ret; - if (tas2770->sdz_gpio) { + if (tas2770->sdz_gpio) gpiod_set_value_cansleep(tas2770->sdz_gpio, 0); - } else { - ret = snd_soc_component_update_bits(component, TAS2770_PWR_CTRL, - TAS2770_PWR_CTRL_MASK, - TAS2770_PWR_CTRL_SHUTDOWN); - if (ret < 0) { - regcache_cache_only(tas2770->regmap, false); - regcache_sync(tas2770->regmap); - return ret; - } - ret = 0; - } + regulator_disable(tas2770->sdz_reg); + + regcache_cache_only(tas2770->regmap, true); + regcache_mark_dirty(tas2770->regmap); + + usleep_range(6000, 7000); return ret; } @@ -98,18 +96,26 @@ static int tas2770_codec_resume(struct snd_soc_component *component) struct tas2770_priv *tas2770 = snd_soc_component_get_drvdata(component); int ret; - if (tas2770->sdz_gpio) { - gpiod_set_value_cansleep(tas2770->sdz_gpio, 1); - usleep_range(1000, 2000); - } else { - ret = tas2770_update_pwr_ctrl(tas2770); - if (ret < 0) - return ret; + ret = regulator_enable(tas2770->sdz_reg); + + if (ret) { + dev_err(tas2770->dev, "Failed to enable regulator\n"); + return ret; } + if (tas2770->sdz_gpio) + gpiod_set_value_cansleep(tas2770->sdz_gpio, 1); + + + usleep_range(1000, 2000); + regcache_cache_only(tas2770->regmap, false); - return regcache_sync(tas2770->regmap); + ret = regcache_sync(tas2770->regmap); + if (ret < 0) + return ret; + + return tas2770_update_pwr_ctrl(tas2770); } #else #define tas2770_codec_suspend NULL @@ -603,11 +609,18 @@ static int tas2770_codec_probe(struct snd_soc_component *component) tas2770->component = component; + ret = regulator_enable(tas2770->sdz_reg); + if (ret != 0) { + dev_err(tas2770->dev, "Failed to enable regulator: %d\n", ret); + return ret; + } + if (tas2770->sdz_gpio) { gpiod_set_value_cansleep(tas2770->sdz_gpio, 1); - usleep_range(1000, 2000); } + usleep_range(1000, 2000); + tas2770_reset(tas2770); regmap_reinit_cache(tas2770->regmap, &tas2770_i2c_regmap); @@ -629,7 +642,10 @@ static int tas2770_codec_probe(struct snd_soc_component *component) static void tas2770_codec_remove(struct snd_soc_component *component) { + struct tas2770_priv *tas2770 = snd_soc_component_get_drvdata(component); + sysfs_remove_groups(&component->dev->kobj, tas2770_sysfs_groups); + regulator_disable(tas2770->sdz_reg); } static DECLARE_TLV_DB_SCALE(tas2770_digital_tlv, 1100, 50, 0); @@ -769,6 +785,11 @@ static int tas2770_parse_dt(struct device *dev, struct tas2770_priv *tas2770) tas2770->v_sense_slot = -1; } + tas2770->sdz_reg = devm_regulator_get(dev, "SDZ"); + if (IS_ERR(tas2770->sdz_reg)) + return dev_err_probe(dev, PTR_ERR(tas2770->sdz_reg), + "Failed to get SDZ supply\n"); + tas2770->sdz_gpio = devm_gpiod_get_optional(dev, "shutdown", GPIOD_OUT_HIGH); if (IS_ERR(tas2770->sdz_gpio)) { if (PTR_ERR(tas2770->sdz_gpio) == -EPROBE_DEFER) diff --git a/sound/soc/codecs/tas2770.h b/sound/soc/codecs/tas2770.h index f75f40781ab136cccbe1c272f7129ddd3e4a22a3..f75baf23caf3a194a040474a7484a3d44f673435 100644 --- a/sound/soc/codecs/tas2770.h +++ b/sound/soc/codecs/tas2770.h @@ -134,6 +134,7 @@ struct tas2770_priv { struct snd_soc_component *component; struct gpio_desc *reset_gpio; struct gpio_desc *sdz_gpio; + struct regulator *sdz_reg; struct regmap *regmap; struct device *dev; int v_sense_slot; From patchwork Tue Feb 18 08:35:59 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979316 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (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 C764422E3EC; Tue, 18 Feb 2025 08:39:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867952; cv=none; b=eoqLk/aPb9TXlzjehoVQx6Q2uFSVIiOgY354PFC90RUsNU81Qxt9NYq6ohtg9ljOJOWeWte+s2qmn5OTl9yEWqCnwga21khAEZCVc4ldyN3pH9acF2Zx9lMZ3D0h6kQ7BxGbc8g/kZEAOBnUfjWOuSVd2e5x0ZE155bOxMNCNn0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867952; c=relaxed/simple; bh=X2NC1nq9Jr2CWV2sHejLqmJzvcXpyv7PewGMJfaLDGk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZjOn9oARzE3U5IONnv2i9WA/Pt97M+nYgecxl+Q3ebEPqcVooMvaC27aS5R/Veis8GNrcpidlguuBZA2j8hUsA8ZiZG87eCw6oN8O0mZVX7VMpXnQn5SUtcQSssHOmlU/Xu9A9qQ9dejy4IMcgcZqz4eDoB9PJMZ/c0l90v2AOA= 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=SISPzGcA; arc=none smtp.client-ip=209.85.214.176 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="SISPzGcA" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-220bff984a0so91919775ad.3; Tue, 18 Feb 2025 00:39:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867950; x=1740472750; 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=H3klWhPvV5GUbiPplkmf5p0VOnIAHNQHeW5yF0WhLQg=; b=SISPzGcAIk7q0R95+aK4npXAb4RaucwBcn/zz4p/7h/sEh6saADKd7Pg5GGvmg5dgu c2R1Rgd7UyOh5Xusy890cdhTq9Npxp8qRkJs0Ik33MY0NX6frcCseTAZk6DSfhcvyEGz gZKFe5KdXkfqZAmWtfRpKCEsVobI0FXLjsfipWZ4DJo7SNHQhs+dI/fovev47VJaCei2 11MEwB4LjLp00B79OWCkycKRpqx0c8spA0AwKPfbJoJiBIgb2ZvygPH+gWBEGlMufBNw icn+IveIObWFXP2hgnjWVQQC17FA13yQhcka5fNq/ckvcxdvWNbw7rT9OwT8hIifUobj ne/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867950; x=1740472750; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=H3klWhPvV5GUbiPplkmf5p0VOnIAHNQHeW5yF0WhLQg=; b=U5bDLu5+VBwM0kwdA98LjgPHFVjIRtp9K7K2TNkAdgLS4kr7ikiQCCzA3xdfUJsDSj hrBgtoKtt2idOtEEq6ii8vEe0HGfse+A0t9DEPwi5GyKdHCHgva43ZbYMdY4y0VdkCon nqnTJBE26HnVlZbQvYusJ2bX7ok7dVM/q4vz8SDPgGRcHgzfrtaorMBdHl/BJ7McYLDu 4aIZXYEVW0XqAz+WiEi8AXUhgQLWpzrV6+/4tCPBaSVC2ktZ91EK+fYRHjv73GYkmrDd IQFRWeHAZgqdHY6NiQTTI1/33KHdea/cv4FRSEXeEvDAVMJ6sY6xS+EBirSsbgFeh8Ba tM0w== X-Forwarded-Encrypted: i=1; AJvYcCUqAqNjZObuSqEHeoJpf8UiDigQfXn2+dwYwDC7COQoait7AGw0uwBIIZEg3s+scenen0tlBhzF9IXjzqw=@vger.kernel.org, AJvYcCUqmogjk4l6hK404RbijG+EyvuFK9CSXvVizw4vyeVF4/ZtaCG7sgXk3ZVqG/XyKrcw8pE9hOzgWdo97EX3@vger.kernel.org, AJvYcCUrE77UtTTIjOeEpbbG8QQjvmLPXakktptCUGGxlMirdyX5ZWkNpDZuFdxxteVbhUQbgBlGPCw8L6mO@vger.kernel.org, AJvYcCVAn6vtUIvCynE0VA5drzjue5CofsLZCxikNFV5axsiQdYgCwFmKRqXj2BUNpvhRBuW5D/eUg0XRFdzGyk=@vger.kernel.org X-Gm-Message-State: AOJu0YzfgeFdzDcGuqrA+9MzVv2h7wiPDRgawygto/22g/haqdSPkXlA bgd7KHYE8IxzT3yoYlEv/QaHZdTU4VZ6sFhxgoFheJCocYnc/7tE72Bnf6OJ X-Gm-Gg: ASbGnculSJI5JoCITzeasGQL/UACsmIyBp93BfARTu+BZNAudfu0tejN0RPwIQf8DP2 ZBtcXbkCV7uOHH70/i2bjRUqYPSccT85BDXEyEZ4RGnwHYPjb/n6HzZ746AlKmZTElLIX0uqjk7 Ymsqxl3WoZPaRYfQ4GQar/Xz10lSy0LtIVYTNbqlGPtiPFiWm8q/qDo2cAZNyxrCkgf2Y5segMR DUS7ZwW/zQffzmK6ZlVFFkJkTPQvphuwoxzs44rBfoIFn3eNDhMvgd7XxrfIcRFu0VmNRxxxLZV NfP+mOeolFHjwTwhPVD8V6IBpRN8Ztrnnar4Ci6VfYwfRjTvf3YEPDAOtuaZLkZlApWKXYRvXT8 uXOa0cpiuFw== X-Google-Smtp-Source: AGHT+IFGVhxYw93mip/VYB42/aQk71fmFVbzVmISkib3+MSZgbWbsjSbcqRc1ID658YZQTeUw9eENg== X-Received: by 2002:a05:6a20:9148:b0:1ee:ceb7:2b54 with SMTP id adf61e73a8af0-1eeceb72d97mr352523637.5.1739867949793; Tue, 18 Feb 2025 00:39:09 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.39.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:39:09 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:35:59 +1000 Subject: [PATCH v2 25/29] ASoC: tas2770: Power cycle amp on ISENSE/VSENSE change Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-25-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2687; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=5FscgszU7aN109tj/tiH9/gQFD8FoCu58ZEIeFBUt+s=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3JImyZ/O2FuqYWVtp3bLpUH8lsjbErWA4+f+vc3Pn a+mbZHSUcrCIMbFICumyLKhSchjthHbzX6Ryr0wc1iZQIYwcHEKwETWOzL8FbvbPkNtcu9f8dv5 T6p/ODoHfgjY4BqRav/+oM5Ms3Ps8xgZJu1c/LOy3CH7n5zD9loXWw7Pk59+P1pqmWSivJw991E iHwA= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Hector Martin The ISENSE/VSENSE blocks are only powered up when the amplifier transitions from shutdown to active. This means that if those controls are flipped on while the amplifier is already playing back audio, they will have no effect. Fix this by forcing a power cycle around transitions in those controls. Reviewed-by: Neal Gompa Signed-off-by: Hector Martin Signed-off-by: James Calligeros --- sound/soc/codecs/tas2770.c | 30 +++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/sound/soc/codecs/tas2770.c b/sound/soc/codecs/tas2770.c index 6f9e56f02f7ca95d7878c68465d7016213ae417a..cf038f55453737b2173b986d90fd57d4cc14acfb 100644 --- a/sound/soc/codecs/tas2770.c +++ b/sound/soc/codecs/tas2770.c @@ -164,11 +164,37 @@ static const struct snd_kcontrol_new isense_switch = static const struct snd_kcontrol_new vsense_switch = SOC_DAPM_SINGLE("Switch", TAS2770_PWR_CTRL, 2, 1, 1); +static int sense_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, int event) +{ + struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); + struct tas2770_priv *tas2770 = snd_soc_component_get_drvdata(component); + + /* + * Powering up ISENSE/VSENSE requires a trip through the shutdown state. + * Do that here to ensure that our changes are applied properly, otherwise + * we might end up with non-functional IVSENSE if playback started earlier, + * which would break software speaker protection. + */ + switch (event) { + case SND_SOC_DAPM_PRE_REG: + return snd_soc_component_update_bits(component, TAS2770_PWR_CTRL, + TAS2770_PWR_CTRL_MASK, + TAS2770_PWR_CTRL_SHUTDOWN); + case SND_SOC_DAPM_POST_REG: + return tas2770_update_pwr_ctrl(tas2770); + default: + return 0; + } +} + static const struct snd_soc_dapm_widget tas2770_dapm_widgets[] = { SND_SOC_DAPM_AIF_IN("ASI1", "ASI1 Playback", 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_MUX("ASI1 Sel", SND_SOC_NOPM, 0, 0, &tas2770_asi1_mux), - SND_SOC_DAPM_SWITCH("ISENSE", TAS2770_PWR_CTRL, 3, 1, &isense_switch), - SND_SOC_DAPM_SWITCH("VSENSE", TAS2770_PWR_CTRL, 2, 1, &vsense_switch), + SND_SOC_DAPM_SWITCH_E("ISENSE", TAS2770_PWR_CTRL, 3, 1, &isense_switch, + sense_event, SND_SOC_DAPM_PRE_REG | SND_SOC_DAPM_POST_REG), + SND_SOC_DAPM_SWITCH_E("VSENSE", TAS2770_PWR_CTRL, 2, 1, &vsense_switch, + sense_event, SND_SOC_DAPM_PRE_REG | SND_SOC_DAPM_POST_REG), SND_SOC_DAPM_DAC_E("DAC", NULL, SND_SOC_NOPM, 0, 0, tas2770_dac_event, SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), SND_SOC_DAPM_OUTPUT("OUT"), From patchwork Tue Feb 18 08:36:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979317 Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) (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 511D8231CAE; Tue, 18 Feb 2025 08:39:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867959; cv=none; b=eUJhJqjw4PFWV9yIR8ANb3cqe0eVPKZdbloKHNcuyoMdSAWki3QtrqpZrF3zZ1HPIUaFWXpF3RoAgMslkW//MOMBlu7+aCayUtw2gG8lb3+2NUk2fXTb3I9ozlxzTTjpHM6fPejvrYoMrG5MtYvMjpU9hnauztEL7OIHSebVSJs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867959; c=relaxed/simple; bh=FRmqZgxJ5fAc3Cm+w+LnIyLQL7cEbyhXHFskiXDwZyc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Js46jyh55lwM63DcL9l8lPE26oZS55gdA1HTgBoRTRiQHzK7F0HRbK0R9fE8+Pk0iSgbAFtE3aFlybU83XWhCJAJjXC34WCGxI0cKD1dgRXZ6tOmJhz2ovMAc6Na8ZBOKQVGwtTvW7KduLekuKUSzATdDDAf0CPNhjaDFT+bJNM= 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=Yl8VmAUS; arc=none smtp.client-ip=209.85.214.179 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="Yl8VmAUS" Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-220c2a87378so71374485ad.1; Tue, 18 Feb 2025 00:39:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867957; x=1740472757; 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=vnhHBqDYfM29DR4A9Y36olzUaVFoyVCJoh1FrWQKz+A=; b=Yl8VmAUSgI/2EeRqqKsggIk7LTatGmlq/EkhpNBweH67T2acjncsuREp0XWcLtVGE3 pYdeOO5vhQAynEMVEgKOoaVoRCtH4l/BPNdjATEEaXhWmM2JGg/WMJ4gx8yOsW3vIwmj PG7LqiPOz+a76IKrIxy6GkrzByw3aBmpaSsh2X9XaW1YpYC3IXD/dDfOmto3YsdKkb8o YxjsKY8pEvUTYhZ+/6Tk4t52qYFn5Guya5qwhnnWvLbC86xNpXtXfhJh5mIA2CDYmO78 udbCysfBMD6dHLCqd+uX3f9jDI0/6Ng6zlzW+Q0Hq1/E6bdiXwOKG7XebNDxmn0kuMIX ekHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867957; x=1740472757; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vnhHBqDYfM29DR4A9Y36olzUaVFoyVCJoh1FrWQKz+A=; b=buZxQbT/WBf9q1Hvpycmsr0PwxAEOu7GkN8Z6guqxwcWoq2g3w1Qu5OoBcbezXb+vI au9Mg1xbfyjW8FTPkiRHB48OCN8lSwqm2wgLVEbb5e3kttBxFBPNjqjnHmVJ9UB1v1ez LDv0FxQFgImrlb0xBIvq/3k0xioGfa7BO9mLiM9ciJFevawspflMz37vBHD5UmKpdzcY OTvwPcdTgvWBozYs02MvA9iiXQ/sS+p0FtbXsh3aFgykDOPGv4hZnP8/rg+zSCV02Dn2 bfbJxUVW79Qq1ayqQ4JA10yWY0R9//KUAcS2t+IDNcoJjWxmvlSK4vYC0ZZQAVqtMJv5 m1yg== X-Forwarded-Encrypted: i=1; AJvYcCVNgDB6X4H9DgidCoQO4CTinfuPpYvtJ3fY6Ak46MKC+xUPlmrBYUrYc3qUnphbtQhIuC+nILzQwpEu+EU=@vger.kernel.org, AJvYcCWCqGgXbrgp0HIS7kq7TSloxuPBR3ae47YPvUp+blZaHPmiX3TheYEPa69l7SAaUIJBEq0c7AOm0ZpmFovI@vger.kernel.org, AJvYcCWiRw0kHVTATZYE2K+tpanNn55jgdZa8pZONrPTSavB3McWuw4b3CvWV7iug4SvUzWlxFhMDO6eXVDA@vger.kernel.org, AJvYcCX9CYBKAAIXb3dwtoI/bknezsv1HHjaBYLqacQZWtX+9LuQ5g2DBe9vWTgkOX1QEgzvyvX7zbDKcryIwh8=@vger.kernel.org X-Gm-Message-State: AOJu0YyysAVddtjrfns8qHUCcqh4DqHqqIuYYRXsoJZ6F2aihCyrhn+t hdk4i7xTtNYZKFvMmVTD1eFXs7UPaXV2i/msvMKNC4G53V+1kQlcyUhTb4kv X-Gm-Gg: ASbGncvC6qIczz4cmu8qpEqyT9+7YUACQkwifb67GP63BsBM4zOjWIQKUagjQ3jTxEO s/Ykd64mfUnqQhLCTB7h2NYjPM4Vfpff3yQORxljup/bTOVJgbDEojqocwQCM791KuyIDga8amP ZlZNq5T+/QBwgruUlm0Ep9QPbkND+n3tdS/GtjPf4GgBg3/qTu1iHNQNuMJ7UEXQ4QjCUVQu6IS LastjlT1KHgYTFRzm6XlqrqHu2HJK17oh0O7lJIuGka8k3j3d2sx/a5YgXINSODJyag1xd2Gcsi QeENQHGB9FZVRFET6nnxwYpBXTe3FqVkYDC1bJ3624ZqKWbESLWzw2MinsGrejZnaGZZ8dgNXVc G09NMwB7vcg== X-Google-Smtp-Source: AGHT+IELYTLd2skSlDsq/uOPlRk4gwUbTWIP2xtKNcTTkHgMU1k9D3jX3InT5jzcVokA0Tqon4JbEQ== X-Received: by 2002:a05:6a21:33a5:b0:1ee:83b6:ead7 with SMTP id adf61e73a8af0-1ee8cbff1c7mr22488538637.37.1739867957327; Tue, 18 Feb 2025 00:39:17 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.39.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:39:17 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:36:00 +1000 Subject: [PATCH v2 26/29] ASoC: tas2770: Add zero-fill and pull-down controls Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-26-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3549; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=6aMXEmnAcNUnXD8SSdAOx+V4XbDKiAfeaQsAiw9WWGk=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3JKYNJU0THcriP9wbdf7Mj1YYl7BnhzXubLXgjXqC 9eGX2zuKGVhEONikBVTZNnQJOQx24jtZr9I5V6YOaxMIEMYuDgFYCJfOhh+s97wL5fzVL9dwvD1 gb9Z+lczCfe+f2fUf9/UVH3b/o5XhuF/7kKufSX113av7bepun/g7lXuhTV1phl8Ntf3B/2aIW/ DAAA= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Hector Martin Expose the bits that control the behavior of the SDOUT pin when not actively transmitting slot data. Zero-fill is useful when there is a single amp on the SDOUT bus (e.g. Apple machines with mono speakers or a single stereo pair, where L/R are on separate buses). Pull-down is useful, though not perfect, when multiple amps share a bus. It typically takes around 2 bits for the line to transition from high to low after going Hi-Z, with the pull-down. Reviewed-by: Neal Gompa Signed-off-by: Hector Martin --- sound/soc/codecs/tas2770.c | 17 +++++++++++++++++ sound/soc/codecs/tas2770.h | 13 +++++++++++++ 2 files changed, 30 insertions(+) diff --git a/sound/soc/codecs/tas2770.c b/sound/soc/codecs/tas2770.c index cf038f55453737b2173b986d90fd57d4cc14acfb..8adb558f9e89988e0decc344502da8226f8ff517 100644 --- a/sound/soc/codecs/tas2770.c +++ b/sound/soc/codecs/tas2770.c @@ -658,6 +658,20 @@ static int tas2770_codec_probe(struct snd_soc_component *component) return ret; } + ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG4, + TAS2770_TDM_CFG_REG4_TX_FILL, + tas2770->sdout_zfill ? 0 : + TAS2770_TDM_CFG_REG4_TX_FILL); + if (ret < 0) + return ret; + + ret = snd_soc_component_update_bits(component, TAS2770_DIN_PD, + TAS2770_DIN_PD_SDOUT, + tas2770->sdout_pd ? + TAS2770_DIN_PD_SDOUT : 0); + if (ret < 0) + return ret; + ret = sysfs_create_groups(&component->dev->kobj, tas2770_sysfs_groups); if (ret < 0) @@ -811,6 +825,9 @@ static int tas2770_parse_dt(struct device *dev, struct tas2770_priv *tas2770) tas2770->v_sense_slot = -1; } + tas2770->sdout_pd = fwnode_property_read_bool(dev->fwnode, "ti,sdout-pull-down"); + tas2770->sdout_zfill = fwnode_property_read_bool(dev->fwnode, "ti,sdout-zero-fill"); + tas2770->sdz_reg = devm_regulator_get(dev, "SDZ"); if (IS_ERR(tas2770->sdz_reg)) return dev_err_probe(dev, PTR_ERR(tas2770->sdz_reg), diff --git a/sound/soc/codecs/tas2770.h b/sound/soc/codecs/tas2770.h index f75baf23caf3a194a040474a7484a3d44f673435..2c2cd777f4bcba8ca91f79ccdfd9f159df5d3a97 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) @@ -110,6 +118,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 */ @@ -139,6 +150,8 @@ struct tas2770_priv { struct device *dev; int v_sense_slot; int i_sense_slot; + bool sdout_pd; + bool sdout_zfill; bool dac_powered; bool unmuted; }; From patchwork Tue Feb 18 08:36:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979318 Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) (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 2D08A23C8D3; Tue, 18 Feb 2025 08:39:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867967; cv=none; b=rbnv3EEvvo5jTwOjeh7vlCttzwCKhS7nRUOjMzwL/WXI6yUcxv60TJzAj4RxEWVS2gyPHdlIefZ1QypfGEqyB+/9Ld0hJdWs1/nbGOqgqH+k0KQsNSj8gUR2j7Hf5+13M4H/VRa3h+i7oiKStZ28fZmGDuTk84kFI2YKh0bKQeY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867967; c=relaxed/simple; bh=8ff1GLFJSH1XFuJHxqTqo2n8oq9C1G7biNgZMRb+Sko=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OEHP0uyXbflQ7SUIAbPZQ3fYGAhWkkck2H5GuqDbdsrJqtfoSXpuzmvB+vsrETPqe6Yd4Ma407c65XR6a3cFU1u7CSr6lQ7uh908iQ8GAImMYZWOTOuDAAQQDKwOdQ0O6Z5FPPubUQHLItSXgDkj1tzp02b1uRBFs6HZKj2IQ0U= 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=Yg+rPWum; arc=none smtp.client-ip=209.85.214.170 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="Yg+rPWum" Received: by mail-pl1-f170.google.com with SMTP id d9443c01a7336-220d132f16dso74006595ad.0; Tue, 18 Feb 2025 00:39:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867965; x=1740472765; 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=43Tky4Akx6Ximp7XJZMHWPUNscdFFs1EIfbFGCX/210=; b=Yg+rPWum1OwSMc8QMncI2YqWfD6LAVbJ4Qvn48Pi7+AklvvjZacpw/snD6dTjN7V2z 3JpEoRtF3/nDxeJKGOC1tziXpNZaS6FJiJZOACNloGferQN46nqFbOHaRzbaseXzpjVx Tj+NYp1jnLL5YyGoeao/8Gx9GHDs/GaFudNJ/jwxkYHjJvxQ+78AEP4VXHYntwv64nZ8 ZFOMC77libNOw8dDRaQ1Esc6nlrh1VZHtZNSqzJ28sIZUe7swQHDgNwJ9qP7uPhSbDQG hGvj2bxSDqbRRakleToDLF6lcJSHXtV/9aMqfimPhlWlcR0gnHICl0q2oRGX+ZzrsDYN UJwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867965; x=1740472765; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=43Tky4Akx6Ximp7XJZMHWPUNscdFFs1EIfbFGCX/210=; b=d78DArJckSzbJGxWWaVrDTCz7Z6icOzT3b7lm2Qw37jteaKaLidKaFdDy3iyyHAEv3 VR43t9i38yAXYCHuuusl0t4JdFgGwE2sRjIwOha/i5WGoBDS2PxwWZ0hR41JaQbkZC+3 hwb8ZaOzC6zIB7XW8ldJHfegYwerz3ImlQCR3x6N4wlpsslmCj7du6msb6efEbcHS+bz td2fwZrM9IibT2YLGlnh1cWRrHhRIpMR9RgiGgTPkp+viI4FGs+Asw/Q9mdAOjiIWoPF LrDjX8gDThWk9zrkJsFJbXhbSPvFlbdjsQ6tzV60RJksnWMUKSmdyYhxDoZBJ3D/b9ey /ppg== X-Forwarded-Encrypted: i=1; AJvYcCUXbTUH1s9yRjKBxiP0j9VrCFYCQgKWIXJVd5CpthR00L82k/YHHAvBZPoXes+YjsgDfT+IeGNC2r77Dm0T@vger.kernel.org, AJvYcCUwqZMcjoDv1MdFTAwfXg7uTU8SKLmwsCx6VMirl9H4+D4iBUjKmlbg6QbDHNsltvBRMrq6DroCpDgMZL4=@vger.kernel.org, AJvYcCWaAlNBg/tIp4wHvmXpAEz4Cp1UFkHGhjpkTQ7nezqGZZ5Crh6cj5/7ikwWibe1jpG+9Q8SP3OPkowlBAU=@vger.kernel.org, AJvYcCXxiiUX1/hjD9yFqJKPJ3RH+m116yBq7cdqVCsd972m1vSMeAQF2FabClft3jBrPkPcIhZHRQt4v45m@vger.kernel.org X-Gm-Message-State: AOJu0YyKRoEbOfGcY9iLjMMgaJjz+MEIDE1EKDLxonkMVypyi6lLvHXZ nGpIUJoc2ShYNhPVEblmBGcbSfg7cafZE1T5Emhjb/I/eQIfCPcIeHG+x9Ye X-Gm-Gg: ASbGncvqN+o7OEITN3k+BFlPcVGcwfmuUhZG1xKQZXkEg38nDKcRg7PC/TQ7UQuDiE3 /zDubBAxAVD2ckkvq4L0hQMpuofYKM9Sos8PH48RTlnOaE9I9j9FHa/+31oDf+i2vcconSXOF19 i1/sI/uUZktK9uXYUMmO3a3hJsIjq5wbqFX3MB/11PDS4mh5ldSRyeqQ1UL+L5oxFRWgOa/AMCw DIXnqpK6m2sv0BH4tPhm5/fCOCFJ5FFoBLDxzUGZJ4qPgYk/Vm2M8Vf5BZlc2HCtvkMngC4pIx7 8ZOHbyLWjNYffun8XF+f8+OKk/ynHlB7zmTF0U6SJXmniN6HYA2Gh1hFfO/swx49PAWKaPyOoRR FpVR0cJITAg== X-Google-Smtp-Source: AGHT+IHNa++DvBF93IL8ikGwt+GXKPzSaW/MueognJN9Crhshcs/9PQZmE3fXkv/R0Z7oKx/w8ecXQ== X-Received: by 2002:a05:6a00:198c:b0:730:7885:d902 with SMTP id d2e1a72fcca58-7326144b262mr22648246b3a.0.1739867965144; Tue, 18 Feb 2025 00:39:25 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.39.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:39:24 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:36:01 +1000 Subject: [PATCH v2 27/29] ASoC: tas2770: Support setting the PDM TX slot Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-27-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5050; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=Ud6taGhvuu8nz8or2ySRZQRi+fer0UI7LxTM7YQKGiA=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3JL9mU7wr1ue+/liBP+BWV4d7359C8+fcOORTs3L5 H9PJ1ww7yhlYRDjYpAVU2TZ0CTkMduI7Wa/SOVemDmsTCBDGLg4BWAimuyMDFPuxL0SfZmQeoHP pvZjtDdjZKHQs7YrSe2rVtuf+fKlYBrD/3r5WRLhf0+uufpcxo9nXchcJU3nhRz2fYkfrLsPe53 Q5wIA X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Hector Martin We don't actually support configuring the PDM input right now. Rather, this is useful as a hack. On Apple Silicon machines, amps are split between two I2S buses which are logically ANDed internally at the SoC. Odd and even slot groups are driven by amps on either bus respectively. Since the signals are ANDed, unused slot groups must be driven as zero to avoid corrupting the data from the other side. On most recent machines (TAS2764-based), this is accomplished using the "SDOUT zero mask" feature of that chip. Unfortunately, TAS2770 does not support this. It does support zeroing out *all* unused slots, which works well for machines with a single amp per I2S bus. That is all, except one. The 13" M1 MacBook Pro is the only machine using TAS2770 and two amps per I2S bus: L Bus: SPK0I SPK0V Hi-Z Hi-Z SPK2I SPK2V Hi-Z Hi-Z R Bus: Hi-Z Hi-Z SPK1I SPK2V Hi-Z Hi-Z SPK3I SPK3V To ensure uncorrupted data, we need to force all the Hi-Z periods to zero. We cannot use the "force all zero" feature, as that would cause a bus conflict between both amps. We can use the pull-down feature, but that leaves a few bits of garbage on the trailing edge of the speaker data, since the pull-down is weak. This is where the PDM transmit feature comes in. With PDM grounded and disabled (the default state), the PDM slot is transmitted as all zeroes. We can use that to force a zero 16-bit slot after the voltage data for each speaker, cleaning it up. Then the pull-down ensures the line stays low for the subsequent slot: L Bus: SPK0I SPK0V PDM0 PulDn SPK2I SPK2V PDM0 PulDn R Bus: PDM0 PulDn SPK1I SPK2V PDM0 PulDn SPK3I SPK3V Yes, this is a horrible hack, but it beats adding dummy slots that would be visible to the userspace capture side. There may be some other way to fix the logical AND behavior on the MCA side... that would make this unnecessary. ("How does Apple deal with this"? - they don't, macOS does not use IVSENSE on TAS2770 machines even though it's physically wired up, but we want to do so on Linux.) Reviewed-by: Neal Gompa Signed-off-by: Hector Martin Signed-off-by: James Calligeros --- sound/soc/codecs/tas2770.c | 25 +++++++++++++++++++++++++ sound/soc/codecs/tas2770.h | 6 ++++++ 2 files changed, 31 insertions(+) diff --git a/sound/soc/codecs/tas2770.c b/sound/soc/codecs/tas2770.c index 8adb558f9e89988e0decc344502da8226f8ff517..c4a5f4d1ce09a8e68759dd75d532d06d2a7f2d39 100644 --- a/sound/soc/codecs/tas2770.c +++ b/sound/soc/codecs/tas2770.c @@ -248,6 +248,19 @@ static int tas2770_set_ivsense_transmit(struct tas2770_priv *tas2770, return 0; } +static int tas2770_set_pdm_transmit(struct tas2770_priv *tas2770, int slot) +{ + struct snd_soc_component *component = tas2770->component; + int ret; + + ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG7, + TAS2770_TDM_CFG_REG7_PDM_MASK | + TAS2770_TDM_CFG_REG7_50_MASK, + TAS2770_TDM_CFG_REG7_PDM_ENABLE | + slot); + return ret; +} + static int tas2770_set_bitwidth(struct tas2770_priv *tas2770, int bitwidth) { int ret; @@ -658,6 +671,13 @@ static int tas2770_codec_probe(struct snd_soc_component *component) return ret; } + if (tas2770->pdm_slot != -1) { + ret = tas2770_set_pdm_transmit(tas2770, tas2770->pdm_slot); + + if (ret < 0) + return ret; + } + ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG4, TAS2770_TDM_CFG_REG4_TX_FILL, tas2770->sdout_zfill ? 0 : @@ -825,6 +845,11 @@ static int tas2770_parse_dt(struct device *dev, struct tas2770_priv *tas2770) tas2770->v_sense_slot = -1; } + rc = fwnode_property_read_u32(dev->fwnode, "ti,pdm-slot-no", + &tas2770->pdm_slot); + if (rc) + tas2770->pdm_slot = -1; + tas2770->sdout_pd = fwnode_property_read_bool(dev->fwnode, "ti,sdout-pull-down"); tas2770->sdout_zfill = fwnode_property_read_bool(dev->fwnode, "ti,sdout-zero-fill"); diff --git a/sound/soc/codecs/tas2770.h b/sound/soc/codecs/tas2770.h index 2c2cd777f4bcba8ca91f79ccdfd9f159df5d3a97..b309d19c58e1daff980025fbced506a1a744559a 100644 --- a/sound/soc/codecs/tas2770.h +++ b/sound/soc/codecs/tas2770.h @@ -85,6 +85,11 @@ #define TAS2770_TDM_CFG_REG6_ISNS_MASK BIT(6) #define TAS2770_TDM_CFG_REG6_ISNS_ENABLE BIT(6) #define TAS2770_TDM_CFG_REG6_50_MASK GENMASK(5, 0) + /* TDM Configuration Reg10 */ +#define TAS2770_TDM_CFG_REG7 TAS2770_REG(0X0, 0x11) +#define TAS2770_TDM_CFG_REG7_PDM_MASK BIT(6) +#define TAS2770_TDM_CFG_REG7_PDM_ENABLE BIT(6) +#define TAS2770_TDM_CFG_REG7_50_MASK GENMASK(5, 0) /* Brown Out Prevention Reg0 */ #define TAS2770_BO_PRV_REG0 TAS2770_REG(0X0, 0x1B) /* Interrupt MASK Reg0 */ @@ -150,6 +155,7 @@ struct tas2770_priv { struct device *dev; int v_sense_slot; int i_sense_slot; + int pdm_slot; bool sdout_pd; bool sdout_zfill; bool dac_powered; From patchwork Tue Feb 18 08:36:02 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979319 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (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 D8FA2233155; Tue, 18 Feb 2025 08:39:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867975; cv=none; b=ddDOPq5rMYfN4Fa0tV7fc47nuNSlEuYXqT5F46YQGNzy0JmJrq84WzrbJYh6+7izzGC5/67soL7h28cY4B+1vJXucFpJcfjzU0f2sSx2bw7kdTYa/7/QE/zKT1CfTknO9bqmQ+2IHzJtQygrZaFdH5CU5mw2a8MaEMyXe0d6VAM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867975; c=relaxed/simple; bh=xL4Wq1MztELkfR32srCSOzemACum2SwmdSt0xzOdiwI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cnLx0lbPqsIGglTqhlp47gjYLJrAKN8mFEC8sLkz12p0UmEGcjHOEbgln56Lo1zHtKDR26ZEm6MmOPTL8C3Bhtk/Yl7EFjJwsa2+HVMeyoZ8E5R42HeV5hD6QOTbtsRb+TT0zIXZ2QEIAS8d9C9osYDai1wdfrk2GnjETKbiDPk= 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=F6wEtX8G; arc=none smtp.client-ip=209.85.214.176 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="F6wEtX8G" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-21f61b01630so95447285ad.1; Tue, 18 Feb 2025 00:39:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867973; x=1740472773; 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=Q97oAOdthGO/p0Zom664cpZtrfzDgfle1urqDzqfUqc=; b=F6wEtX8GWpebFe+aXNLysPLXicg8KiqOeYmVj/Mg/XoFmrH7mmsczYUwWj+Ub/DsiR pl7N25iPJS5UIogG3xC8BH3RiaSqlYvQ76UhSCXZJN1/8AHM9FJnD91qhlX68bBFIRap I2IiXKV7PrVl03zyVnu7bK2jULajV1G8XHH0nL6xOxmbhEeIgtoxQHKS1m+1Kbcx43e4 pCzrO7gbsbrtB0pkPYT49kyNF0N42rUuW/oJ4PTbKB30RmrDTtdSKmPAHQs93X2mkjRW ecmXXKdlJMd//Pw+MRJZjTOUYfkfUvmGgZdb8deG9+uRrL1fnhg40vvS9xOOq0d9RqDK vpPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867973; x=1740472773; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Q97oAOdthGO/p0Zom664cpZtrfzDgfle1urqDzqfUqc=; b=ablXDqKsJ8mVElHbXy82uxz5QDF7Xb3anPmLB4VOGHBOc/e3tJqBNhLF9LWVDrXA4z V/4p27TbTnxhsyrQnhxFNIokWVJweOwYZxwdO5/xrwZG2uWFZyAcU/ieccuJdvdUJaBG 3VnObilwGwjUkFZeb3SVmkqi60lbGjEnkT3AV9LrsZduwmg39jpq56giEx7FagZJj3Fp HJfQ7gWecw+BxxX/RmaVTr7831FGXqDf3kg2Q2KYE4vsjKITwWKhFGjonzCK0xjWXj5G M3Uy1RcWFm2PRjN87SIb0++40BTK35KpEMedqyCF4XrkDFggb8awoq6/tqFPAZFJhucq CgSw== X-Forwarded-Encrypted: i=1; AJvYcCUV/D0g6txra3A+/BP3i6kRXmgXl+yivfY9KElqYcT8ExyvvveV/1YKx5OrQ/EBXkYd8aJM1RHxHoJTeoej@vger.kernel.org, AJvYcCUwI9GT+pNztyl7Gi3f3cbIyjZxxeo8V+34H9uEfTqLMeCH5GpY22WWalN2xSvPdwCGcHLjrrfdhXo0xhM=@vger.kernel.org, AJvYcCV5CHQUC7BmfUHUVnVr3TrDJ471Nm6j56FvxYif3o0dw7tm2h//FNGqj/RSMVuHiZNEQr8pzvf/KqfUSEs=@vger.kernel.org, AJvYcCVdLT+iF40XWxfomIDXQqPL/WGrN2vH5WJJwleuMQ4FkjiuVGFX8j9+2P+tH7f1n4a6QoBWlWy1iwcp@vger.kernel.org X-Gm-Message-State: AOJu0YyQhQ5Kc2Q9bpMOxY+1W5zIhXcECjyboXNW150ZR4uDmmzwxHGH x5tqgEYpAvD9K+mWxaZuvwaTyJYaXdZADEA5I64dyWTH/qjhd1R6fPiwErLG X-Gm-Gg: ASbGnctECebpNoprOp16u9qIe5dq57FF/XXCoLzsdYoV6hZih7zcxvPSGCbKM42sSyW 0eHFAYQblKd5yg16YKqTIzzTNk94GOVDP+RRDK2tiK1wq9sYSp+z7F0ucuaWDpq1UHJjXdKrzzm +/KlDyLpk1PZSHvneZRti/vDI71taoOzGp+phxwObPkCGt2sb5x6XCarACR7gjij4GTwY6EGB/J 2HGXYV2sNb3NNX6YGq3rfKpyOfN2kX0N188SHNBWejGrzxHvvRIwfUqCH/LmsrfkA5vb+ADXeAh Nt28gd/+uZUdss98PhQXocYPdKtGLSrl1ISTAq2WlRM0lVuch+dmzS6tJgLDhmJ2bWjRlUpeZZG M8TV3SVLmdw== X-Google-Smtp-Source: AGHT+IHnISboFrM7dhx6z6/HdMGgdO43ZJyjRqDtP0gC2IfA0XVKBKQpFUuOgCSuA4rTU2RzRpg0Kw== X-Received: by 2002:a05:6a21:3288:b0:1ee:395c:18b4 with SMTP id adf61e73a8af0-1ee6c639006mr30555104637.10.1739867972988; Tue, 18 Feb 2025 00:39:32 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.39.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:39:32 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:36:02 +1000 Subject: [PATCH v2 28/29] ASoC: tas2764: Set the SDOUT polarity correctly Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-28-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2647; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=nP8CBSYu6p+IA9UVl0Kv9ceqcGVIhoP8fVpl5EAKgJ4=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3JJ1P51XMJ4ZuyP8xZmHik9UPoduFJsV0CWwK7DpV +cNO4HwjlIWBjEuBlkxRZYNTUIes43YbvaLVO6FmcPKBDKEgYtTACZSPIfhf73qF8YExlTv6Qv9 ju7dJxwq8Gj+4fl7Gn+4L3qXP4F7ihDDXynWE8vqbyxIaL2oysL069jDEMuDPz7cUN78MP7dovU S7YwA X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Hector Martin TX launch polarity needs to be the opposite of RX capture polarity, to generate the right bit slot alignment. Reviewed-by: Neal Gompa Signed-off-by: Hector Martin Signed-off-by: James Calligeros --- sound/soc/codecs/tas2764.c | 10 +++++++++- sound/soc/codecs/tas2764.h | 6 ++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/tas2764.c b/sound/soc/codecs/tas2764.c index 7d6cb29a749e234b325e253985eb0feac6f44934..e559724c84a34c5ee2eb08f60ada4f8acd131226 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -427,7 +427,7 @@ static int tas2764_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) { struct snd_soc_component *component = dai->component; struct tas2764_priv *tas2764 = snd_soc_component_get_drvdata(component); - u8 tdm_rx_start_slot = 0, asi_cfg_0 = 0, asi_cfg_1 = 0; + u8 tdm_rx_start_slot = 0, asi_cfg_0 = 0, asi_cfg_1 = 0, asi_cfg_4 = 0; int ret; switch (fmt & SND_SOC_DAIFMT_INV_MASK) { @@ -436,12 +436,14 @@ static int tas2764_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) fallthrough; case SND_SOC_DAIFMT_NB_NF: asi_cfg_1 = TAS2764_TDM_CFG1_RX_RISING; + asi_cfg_4 = TAS2764_TDM_CFG4_TX_FALLING; break; case SND_SOC_DAIFMT_IB_IF: asi_cfg_0 ^= TAS2764_TDM_CFG0_FRAME_START; fallthrough; case SND_SOC_DAIFMT_IB_NF: asi_cfg_1 = TAS2764_TDM_CFG1_RX_FALLING; + asi_cfg_4 = TAS2764_TDM_CFG4_TX_RISING; break; } @@ -451,6 +453,12 @@ static int tas2764_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) if (ret < 0) return ret; + ret = snd_soc_component_update_bits(component, TAS2764_TDM_CFG4, + TAS2764_TDM_CFG4_TX_MASK, + asi_cfg_4); + if (ret < 0) + return ret; + switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { case SND_SOC_DAIFMT_I2S: asi_cfg_0 ^= TAS2764_TDM_CFG0_FRAME_START; diff --git a/sound/soc/codecs/tas2764.h b/sound/soc/codecs/tas2764.h index 786d81eb5b1e71bad094ef94e4b56e8f7c910285..4a419c11d4b08eebb915762db00af5c06ff3dd42 100644 --- a/sound/soc/codecs/tas2764.h +++ b/sound/soc/codecs/tas2764.h @@ -84,6 +84,12 @@ #define TAS2764_TDM_CFG3_RXS_SHIFT 0x4 #define TAS2764_TDM_CFG3_MASK GENMASK(3, 0) +/* TDM Configuration Reg4 */ +#define TAS2764_TDM_CFG4 TAS2764_REG(0X0, 0x0d) +#define TAS2764_TDM_CFG4_TX_MASK BIT(0) +#define TAS2764_TDM_CFG4_TX_RISING 0x0 +#define TAS2764_TDM_CFG4_TX_FALLING BIT(0) + /* TDM Configuration Reg5 */ #define TAS2764_TDM_CFG5 TAS2764_REG(0X0, 0x0e) #define TAS2764_TDM_CFG5_VSNS_MASK BIT(6) From patchwork Tue Feb 18 08:36:03 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13979320 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.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 8B96122E40E; Tue, 18 Feb 2025 08:39:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867983; cv=none; b=WJekuKphq5DBkjTo+pcWwBi55xgwuxmOMHbThq+AH+ywe1tesgg6ExsKhXWSnp2oDKYGLn7HlCOinOBJBGoF4PWQdw96eM3ftxU4xiBCy+lHsevWPWlIaJAGcwmseDhSTNPu/ZHtfxh0pbfatjZzXdaEWXDKU2k7MV8ICE5pRj8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739867983; c=relaxed/simple; bh=cnRZPokli+PfTbq6PV97MiDRn1Pju3ic7oVd9IoPL0g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LqSTBRAsw9m6ImIYXY83qp/BIXy9LFa9IYo8QNKD4MDUUM+4J5SVw/2YWy/AdpfQ3IiyIt4yWOnC5CvPC0jBri3cb6O5hH1Igm4i3AL3qa1xy5wPkc1yurmEVkfp0eKcXL2MgiJA6HbTqnwXNGR8JblNIudEjvnRPpWiD4FykxY= 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=XuNeABBR; arc=none smtp.client-ip=209.85.214.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="XuNeABBR" Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-2210d92292eso68992815ad.1; Tue, 18 Feb 2025 00:39:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739867981; x=1740472781; 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=sgDiTLXgcA1eRcm2kMK/ECehpkZvEq1aeeBEe2lQUg0=; b=XuNeABBRZZOJQU7qwqisFimUtVRU3gA6y0HEVcMD55k+TlhTEpUz9dIZcHjgBI9JFe awYcMLTMJHfxNI1HRCdf/tjzWOClf6aSa814uTEujo+9XzjZCgyxrwSxZ3xAGmO+uD2U pvKR9YMAK4++NL/eVzOffsRLxfqax3e+L0WfkBUxEpFE19t5k/zIYkwwme3GCTVjmsPr t7c7V2TxCIKGlnVw9TxOb1T+ijGnXtCpiEhNr44HB/Ij3U0cbcvGRy0YOHB8ULu4co1u pm02TEC9Upm/a5bD9FjRvsua4Uk8GjR79YhD991dqb24v5kn+7HivjrmCWbMU4GrPtpc C3EQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739867981; x=1740472781; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sgDiTLXgcA1eRcm2kMK/ECehpkZvEq1aeeBEe2lQUg0=; b=HqgItqBZ7DnPkU4v8rkzZaJHgeQBQMDWOzMdcRosZk5F7zA8pzPda4Be5URtpb35yK 6rXvJ6RXhVZyaUJx9Z4V1eob91G2q/ip0lEqE4kyeFSlgqHTtoAc26S2OIFy4dQQsQ29 vSDe5Ha+uRdb9C1pAfNFMfCS3myZrr5AkS4sHteYzs7HW5aTyo9yQHxllfLDoICjrVhg qmTVcnwgYDocbmGerMbfwQfjwn9Zge11cHT/s2o3jaz6aWCVPSAGCsOzQDupdTxZZ5qa wqds0ZnHjwArbSiS9z73hOQMpTqXlsVaonfcqxY1xV1FqwD8pZyVcYULDIDBzL7RolYa HQJg== X-Forwarded-Encrypted: i=1; AJvYcCWHdnqcL5CYt+cP44LMnGF468Ti5VLwihXtedGv/vpWsjALkkpBu39IsX6igthfwcWpbOVBZfRHH24z5P1o@vger.kernel.org, AJvYcCWys6SCM1bDCFcUNJ6lfWLztkKgiWlbNeHdmd1o1EwruUXA13CG3gxQ8LnCH1GwZT04pHV4N8PNZeDtazs=@vger.kernel.org, AJvYcCX3rrcdwEyTEGK//hm0gdxBFiElYTYVcT71l/TIS9QfvDaFQO9BcbZ7NqPom6vzlk53bRgGhI8gr5/j8dg=@vger.kernel.org, AJvYcCXWo+qAMJwcBf68XErVNTCMrTDjOspVf0vR20Y7w7rfmwvZQk96YhRGHqqc2I3NtKdG9uDyk3fdQWsc@vger.kernel.org X-Gm-Message-State: AOJu0YzB/lD4d38PNuhOd7HgijtPvNT/IpNMZSpMJMrU5kVRVjJxVNJV Wq1FkumWMt4Iti39ay6mXAkyuORN/qq4fGBsdblaJljYlOZikJ6sEKYuLEpU X-Gm-Gg: ASbGnctwXdHQlMCeXVlqMpBmEL0qMRbXYA7l02iGEDJFHgLZWeduTMRHezqaddE9e4w CW5+M64kNwKckfsnYHWFljQwSmb69Xxk1UYacyXXJuJ3c7KPb6U5ZCQAvVPJn1bGfFXHfe9ItsB SGQVPzLvmRc84sWfGIfsgxRNmlw8kKaQpJ6Ebgs63Ej5PfZxkMwHMvzm+TNhNFFB7CQnB4VY9C3 cVAXh/immHkjla63mOKzx4gyeqj8MGclxtIGfjvrW5Uf7sVopheOCAnOK7ioXmruMrlw+/32V3K 9pvMLKgGtjOA9yiHjpQiGmr7q0rguIMv7kTdtZibmBERrbVkJo2nnkBOtVLtB9zg4RAy4hFh/wh 3EfcOwR+F9g== X-Google-Smtp-Source: AGHT+IH88g4GyXoeH30GTgM2lLwIX651E60KGhXaM8FdRzJc/IPiDl+2MnrPc+ajkNhWejLD6XKKcQ== X-Received: by 2002:a05:6a20:4323:b0:1ee:66bc:9138 with SMTP id adf61e73a8af0-1ee8cb1b450mr24059373637.24.1739867980777; Tue, 18 Feb 2025 00:39:40 -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 41be03b00d2f7-ae1ee4febb2sm787325a12.51.2025.02.18.00.39.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 00:39:40 -0800 (PST) From: James Calligeros Date: Tue, 18 Feb 2025 18:36:03 +1000 Subject: [PATCH v2 29/29] ASoC: tas2770: Set the SDOUT polarity correctly Precedence: bulk X-Mailing-List: linux-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250218-apple-codec-changes-v2-29-932760fd7e07@gmail.com> References: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> In-Reply-To: <20250218-apple-codec-changes-v2-0-932760fd7e07@gmail.com> To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shenghao Ding , Kevin Lu , Baojun Xu , Dan Murphy , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shi Fu , Jean Delvare , Guenter Roeck Cc: Alyssa Rosenzweig , =?utf-8?q?Martin_Povi=C5=A1er?= , Hector Martin , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, asahi@lists.linux.dev, linux-hwmon@vger.kernel.org, Neal Gompa , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1794; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=6r055cv5h6bTewX3So8WzRWOgNxg0HoosgfY3TM6nG0=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOlb3JLN59Z1FAtLLExNURauyt7+fUo7O5dxoEbjVL5fq sePmT/tKGVhEONikBVTZNnQJOQx24jtZr9I5V6YOaxMIEMYuDgFYCJmmxj+B1/SPbNs4bGixENP Pv31EMpe9vrtxG93JA3O/3tWzFfs+YCR4foUW/PZ+7rUks+vnWH2Pe2xlyiDO8NCn8x7VlEB9Sd 6mQE= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Hector Martin TX launch polarity needs to be the opposite of RX capture polarity, to generate the right bit slot alignment. Reviewed-by: Neal Gompa Signed-off-by: Hector Martin Signed-off-by: James Calligeros --- sound/soc/codecs/tas2770.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/tas2770.c b/sound/soc/codecs/tas2770.c index c4a5f4d1ce09a8e68759dd75d532d06d2a7f2d39..98b53557c0937c150d6c21ece8ede8f94afcd9f9 100644 --- a/sound/soc/codecs/tas2770.c +++ b/sound/soc/codecs/tas2770.c @@ -359,7 +359,7 @@ static int tas2770_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) struct snd_soc_component *component = dai->component; struct tas2770_priv *tas2770 = snd_soc_component_get_drvdata(component); - u8 tdm_rx_start_slot = 0, invert_fpol = 0, fpol_preinv = 0, asi_cfg_1 = 0; + u8 tdm_rx_start_slot = 0, invert_fpol = 0, fpol_preinv = 0, asi_cfg_1 = 0, asi_cfg_4 = 0; int ret; switch (fmt & SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK) { @@ -376,6 +376,7 @@ static int tas2770_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) fallthrough; case SND_SOC_DAIFMT_NB_NF: asi_cfg_1 |= TAS2770_TDM_CFG_REG1_RX_RSING; + asi_cfg_4 |= TAS2770_TDM_CFG_REG4_TX_EDGE_FALLING; break; case SND_SOC_DAIFMT_IB_IF: invert_fpol = 1; @@ -394,6 +395,12 @@ static int tas2770_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) if (ret < 0) return ret; + ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG4, + TAS2770_TDM_CFG_REG4_TX_EDGE_FALLING, + asi_cfg_4); + if (ret < 0) + return ret; + switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { case SND_SOC_DAIFMT_I2S: tdm_rx_start_slot = 1;