From patchwork Sat Feb 15 00:02:34 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13975731 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 F072B7BAEC; Sat, 15 Feb 2025 00:03:19 +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=1739577801; cv=none; b=ptcsjZfv7K8z7CyuvMXOleZfaD/gzETqwJr+DGYrwFoUIyr449MvijIYqoCMRZ1dftWFylR0jodfhS41QKQJY1a16h2/QVcNOCrzOylZBBCW/LUeVc+aUJc+DvFCGmwCDbSgiwkPjcD0K2qCKPfQSMFz4Uo8osbRJmOCvRaE04E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577801; c=relaxed/simple; bh=CIEabKLwQYFi5rWVG64RsxgpPhddtq04bXOdegmdaRY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=srpZBo8ytrwKM+2pHmbel2jWeJMonkmXO7wJYngls8BvuUcad+nUXnuhyd0YEHdzAxWi+AjKbmprEyVshxMNJSQfUGf+H89LqymSd6Tatq3v6YYe2AeDOkh8duhqjTw0S5QRbqjJVeFtMMsBD6KqQEwfrNP7uDaKWCzFtDZGcJ4= 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=P6QiBMAB; 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="P6QiBMAB" Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-21f3c119fe6so62662265ad.0; Fri, 14 Feb 2025 16:03:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577799; x=1740182599; 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=Ycy+7wK55n2BwKAQm8/kS9AwdfvEsdhnbKKp04wJVgI=; b=P6QiBMABJaDpGsI/hQxH3F+l/Ao/4ZSydbZoP8SsTM4OcY1AM/lbo52Q6CB5aPoaXW 59wACGjl7sxP//VZ1ddA/xIgeE7CG6UUoyG+IaoPg3A9AioCMr0pHVtqkGJ/Ivmfc8hl /JPX5wylMsTkz909eGvwFDWymPuJmZLS6xKeRrzW72FpqQchrXkwWUMdf33/laoO277P bUEzPxGOlNTFoG4Gzpnwlpi5/92tohG6VzWi1Lwtn9DbYit+jxL0T28GXwdDOyBjNNg8 +HGtQJ158FbYBiJxiIwb+Iy6IhrF7GfteEh4e+m85avzOzvEYGM03iwPyH0KMCaLXYJL kC5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577799; x=1740182599; 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=Ycy+7wK55n2BwKAQm8/kS9AwdfvEsdhnbKKp04wJVgI=; b=fE1nw95XH5ivMqXaEiHZmlK6ecNWFJKeMD3nEG0rGzMeN8/fP1KX1MOvd5ZFTqxwJJ tKxzl+rjiQLFcjN2qqJoVGWhanJrYv5lEaWL1ysXSPA2yyEH9unHHuhraYBk38OY65nP /eQ4AApUjgd71ufXDTf9/iBAV/e9Wy1+LQdsnOhpmGcnqwemHGc5Kwvbzxd8TUtLdT2t D0XEqJ3umRIGLQAuIdUa3RU6yw15v8aMUWmObyu5TDBWt7li8C/CW/6rJ8C2Z9o9k8ZE MaPeaDFM+1mG27PvxDGgNCdoBejcvJoHQDMl3p6/cH85y5c2G6ic9XhPs4ySYNAuUiO2 ZtCQ== X-Forwarded-Encrypted: i=1; AJvYcCVHK0NlL9XygHjvlBFPpp7JkZLhdHHPl7yE/MmT3f+dQsLIV6Op3moiPV28v18iN4eiBcZjrAN0Y0q0@vger.kernel.org, AJvYcCWB67RLtw7mM9xgBmDeme+fCb4PjsaZfMfcs0R8355EUJdEti25smLmnpcajUdD5mGpP3KPJufBHyuwF5c=@vger.kernel.org, AJvYcCXAHqpQ/IbmXmvJPylkHbLEZbKvXdeyBRLO2Rbn9uAdER/sqKjrdTDKifxid7k4+t3YOPmvgzW2o4ZX1sdH@vger.kernel.org X-Gm-Message-State: AOJu0YwJaRAfvgqu8SkUf8goQDluIMGWhwrbVeCCxcnqnN2f6lWr0QWl lET11Go54NM/gVMWnQx80/VaLwiqIciA8fks8aF1BoCl24Q6rh50 X-Gm-Gg: ASbGncs0BGy4BolUcFhI32GZGkyoBen9XNp74aHfwpVX+3NCPQQUx4n6CVVb4+up0a8 MagF9vjUNtKWaCXmd2AUnLlKU609kvtxuSUKSbX+Pr5/e2fu9ric5XOPSrR+K+OubXZlsFfKf16 dmoyDQaHdzj4oYTnuiD428n2g8SnKncHkT6SlZ4q+uvneoKGG0+BZVD3CDgGh4gC/1KF0tb1IsS u0ol0a7cuyN7xBaETx2qxVcEf1l51GsvqMwfNb1nV4HQm/7okx7TBz3tAM182m25LElYU8c3tD3 MYsgRtxP/utQWJbJj7PageVi0+XJGxJhVP8elYB/+u0i6hMIxk65suVFuW97c18q9QnA2xbdfyD W5fH4C1MgAw== X-Google-Smtp-Source: AGHT+IEQm7tez2sFvaRnjwzh7kSHWcuD4/AClFoJ/jh+RwdHvWH7dcB1tkblv6tQ6+TIuQ9PaI+aIQ== X-Received: by 2002:a17:903:2341:b0:21a:8d8c:450d with SMTP id d9443c01a7336-221040d11e4mr18863625ad.53.1739577799290; Fri, 14 Feb 2025 16:03:19 -0800 (PST) Received: from [192.168.2.3] (2403-580a-80ed-0-4835-5a07-49e7-f115.ip6.aussiebb.net. [2403:580a:80ed:0:4835:5a07:49e7:f115]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.03.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:03:18 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:34 +1000 Subject: [PATCH 01/27] ASoC: dt-bindings: tas27xx: add compatible for SN012776 Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-1-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=910; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=CIEabKLwQYFi5rWVG64RsxgpPhddtq04bXOdegmdaRY=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb24xXsK/dc2f4GcLfycVX/oQqmQ3y39WUYHQ91+98 9+6apUpdpSyMIhxMciKKbJsaBLymG3EdrNfpHIvzBxWJpAhDFycAjCRG54M/5MXt1c+rym55Xun fIk7m3dq2X/RBTtLWKSKNlqWv/p0s4OR4dqbFAPZrcvu8m3bxNDsIFPcbRdRbPvmwNNXixs93xZ mcAAA 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. Signed-off-by: James Calligeros --- .../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 Sat Feb 15 00:02: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: 13975732 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 C72B1A945; Sat, 15 Feb 2025 00:03:26 +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=1739577808; cv=none; b=S/9UTbEEbg0rPJhbbiBZ1GDoYYfZcoEo38A9JRtTi7SnoDZIQzFYP11dR1qvnmkXQxz6ohkwZh7PvZJbS3nWYqlaLkEH6vn88k1xm/PqE+FyWmaxkCbHOmXHlDhLv0B8yGGafz8NH08hp/EbX1aL6BVDTsYyrxfb5iWpcsjCyDc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577808; c=relaxed/simple; bh=FjWbE1IyJWiBoXxC1LiNt46y4bEDaFe1rHhJ8Z+mnXQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OU95a1dqnEMSWRrZvDMo4RYiAaEhhSrR+dXcFMMn4xNCurx+CvM1QeHJpnaQ+iCVxxnLiblVhvv6gcBtGvfgRLdvHAFjrqiJiw8MEuPUwYV0Z5Wpt+NMGjuOLklUTfphP1eN2dCK1wjRpDn+xNKBgVWQCPETohKnxIkNXUxQEUE= 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=XBitMgDj; 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="XBitMgDj" Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-21c2f1b610dso64158455ad.0; Fri, 14 Feb 2025 16:03:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577806; x=1740182606; 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=Xn/Q2lqhDKgzbaB/ZxoHF8BZNbugJdXImWKll5J9PmI=; b=XBitMgDjvOK+506fT+JaNe5zKTW+0SUi4qcck9miqERpTQGtUBQd29K8ui4ogHSz7J rqofsMa6p7iUNKmz4VzNXqIoOvBwYRxWd11spfo2TgQc3SRs8SicTiBqTogTkJu7DtiU JQPHRCqmrdw1V+mKuUL3f/rlQjErfIloGjECSn1nk/l1IVNMc2EXet/odg8MBuJl8WRA 3Nc1pPOtt9caEGVZA55w2zK0HTTUP2NfogmrZjOm42KORexKZrG05AT8N5njVMIepQ4Y afCpZOz0JaEmO3P6QqANHOSYYgCucx7ePwrnPoAkR/vSrehR0Ba+l/x27N3C0JcdQdRN oRiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577806; x=1740182606; 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=Xn/Q2lqhDKgzbaB/ZxoHF8BZNbugJdXImWKll5J9PmI=; b=PSWji7DhlCJoxZHJebelNDImlvmynaczhTZpJSGlZqV+MqWaZvNjYF4f5rLCUD9EmS UGRdjwzKABzXxLzEQq/U4iilMF3r5p0E+ypWNysMJXTN7jAVobak6lzTKppLG6EX5g6k 5R4c4Py9oq5Bo5OnWZWBHLMVjZXhNjQQNvvo4hC46DHFgtfwMyHTkX/rIOAtdPuz1dwb aS7H0k8HZt9oIKVoyF3QSWFVtM7qhjPa4VJM+7WjkaZ3XSefQqVtN3zrSywo80+TxQuq U4oOnGzYpXJx5T500UelL4wsmxJzO8LwEscYG/uFKKfdWuA6gEG5VS2di81aEpdRTG6T gc1Q== X-Forwarded-Encrypted: i=1; AJvYcCU4xh6fSKHwuhN0J18jhlTVo31zWchChEObDxik8sIiar+8yDfB7X9swbuZ/UBpeLCK4KH2Jo4d1477@vger.kernel.org, AJvYcCXBFFmbQCLNe4/qmQVoQCyO4/AzrhqIEdPIAyG0udFar6g26oXFi5j3YOsMGky1kp0kFMGnaDZVgl5rhnm9@vger.kernel.org, AJvYcCXRV9W+8p+aRRCrs6ebj1lWE/88B8IbXS5d2zdj3U8s02D+R4GpTGyCO4gNODnEbs7KUg1Zs9nuRBjqew8=@vger.kernel.org X-Gm-Message-State: AOJu0YzBZBS/zFyrMHVP0zNurLRrgXsDehTAs7nRR8tPmCLgtXylH6xR G7zBEDYoWsBqOxAkYuZlHtzphJadHt9GaUCst/QahPq+HDCluSjj X-Gm-Gg: ASbGnct733Fgix2nEku7op+CdpxLbW9puWBVsUvOSixxMTOYAvUfpVEeDMI0NolLOj8 t6e0h9gefNITHdHTCL9Ii5a0AXjgKGjtTxwUlFkxdUgwp17mN2h0Vawi1hM0xq2q1Q7wZED5Svj iTT3AZmZvtUKjHnaklL9Im2zCQkmEolsBtWTi2impUa2e4GkEDeP0nQVldH1EzM3FM7AIwZdUdj rzs/AJPNQ+4FV2aejtOrrRFc46PKoyX1/6mFAxfOu9xKU8gt8e2qT8KDHNdECXgKOCqPibu65XP mZQDC7rdNj7CfSzb1sYN3K2CAkw/focBBUFKua56YnBG5VYLapt7xm02esFv52Iv84y10shwVv6 AN1MnspY1Pg== X-Google-Smtp-Source: AGHT+IEkI7hAIl1/LT5bR+p2wRPhjrdUdQ9wBURhs9JdkCPWqEzufYRgQeE+ueEqyVaIvunbeiOQJA== X-Received: by 2002:a17:903:2f8c:b0:216:2bd7:1c4a with SMTP id d9443c01a7336-22104062be3mr18807575ad.26.1739577806066; Fri, 14 Feb 2025 16:03: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 d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.03.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:03:25 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:35 +1000 Subject: [PATCH 02/27] ASoC: dt-bindings: tas2770: add compatible for TAS5770L Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-2-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=736; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=FjWbE1IyJWiBoXxC1LiNt46y4bEDaFe1rHhJ8Z+mnXQ=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb25p4rOT1lxXpLQqq//RgdLpdU8Ml0XvlFmu0lJ4s 09l6vOdHaUsDGJcDLJiiiwbmoQ8Zhux3ewXqdwLM4eVCWQIAxenAEykchnD/7S0NUcdaoLr50V9 q7o2gf9clPc/98Vmaq7cvdtmVBRy+jEydOtMcH3SEF90ttXP9MKb89n3xfXTji09It+bwP3bVJu LDwA= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 A variant of TAS2770 known as TAS5770L is found in Apple Silicon Macs. Signed-off-by: James Calligeros --- .../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 Sat Feb 15 00:02:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13975733 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 EE843EAD7; Sat, 15 Feb 2025 00:03:33 +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=1739577816; cv=none; b=Hgrv3Cl2CwDcrQOa9jKeDdYCFa+wT/kOZ8LaPGwpnm5EkB8juz/ODmasEoEbT0mvf+FQxtruEN6/faaNmskpmOKDmK/ql0FnByinJaaBM6oTB24+QLNCLupVpoIe47LN9hkP/IXXOUF/IkYRnlNxiI1ULBMYa5VXJntGXxOKP2o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577816; c=relaxed/simple; bh=K5tVfDxVIZEsRyez0hm061s+077WRMgNNPD4C9/JBi0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=K3qmudm8WhKiynBhb3aYOj1WJ43W+ZZdb2W604gyjGSgwiFdxrBsB/xqw+Nka5RqWhZWvP3CFsktMytRLs4/Axibfqw87gnBtxd9xdAofMJe7Qy8nk2WA8BsOvDMBZ2Yfv4jubiFs0gcvPrYvfBR8QWaA2Zf1psiZ4CEmsfoY0A= 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=dq58apOj; 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="dq58apOj" Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-22104c4de96so3975465ad.3; Fri, 14 Feb 2025 16:03:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577813; x=1740182613; 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=+jv85ReZ7VjYl5+JfhrnCtl56IWTOSHkcPrZORl5Q+4=; b=dq58apOjls6oB6HyT5d6pJ4MbjjB5TqCPrDqrMqw76ahBFlleySWcQdCkOgNj0jTpg TKdb8iFLapZkwIcFbQZa2FTAsFSwI7hM9H8h9d5QVHYfL9sTj64cz/1rlszWpLJ5+QD1 b+uNg9AiIFkFl+q6GvfsemmeSyLT70/K0As5TTyM/vdOZ7bhynmMVpXLBM50eYNVs3IP 5l0zhfxbzeqGsoHOJbzmhbLf5ccJkwIsAY0wkbIZTgZYW0/LwgGKllFa2giAwNNXNiMf YCm4webWpBanXA5I28ORXm7MwMdoC2yI4hP/otxRg/+lcfu/hKukeLO2D/a1zM7JcMC3 LLVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577813; x=1740182613; 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=+jv85ReZ7VjYl5+JfhrnCtl56IWTOSHkcPrZORl5Q+4=; b=D+FI1SbD2CerChQJo/3ryRRaB/L09bde53bsqZQsZuAPdk2nDwm+AZwC9CgSeGgAhj OBqdeG9MW6DCQKZT/2a/wl/QLteJKb2q9//jUS52XZrKPTUdamdwxp/w4/ARSGjo9TOx 7I+6R+PwPRno3ikW94Zq1aB8bnU9zHT489Sc4949tggAxSpOhZcPKqIIkEbtAQRmOV8V cwJBBhnFXlrKm+RJOP4AEVigcgNliPdJ65rpNHrwclke7RQYquHckEdlRJ53APashb1M kNxzTMqlXOQ8YdI/cyjSxXbIAYduarv7N2UL1t+mz4rEww2ZcrD1Lmbf6hy5V+OYd5rJ 0aRw== X-Forwarded-Encrypted: i=1; AJvYcCWQMh8UK4DXDqZT2Evk9q+HWK2sQhmrFjgyZiAa732VScaeRE2RoAv6/5M0oqiYL9yXP5f5FsyYgwXX7X4S@vger.kernel.org, AJvYcCWnboGv8GRXRZAjQHxoA0ep3PtQQYst7nFjxwJ9emvvYNaxGauIWIU+hWOy0/hB3YiqFPqBQ+M0nAGZ@vger.kernel.org, AJvYcCX5BnPFXfoclzMnBDq7OUfuYRC0NwkVg1W9yNIXFRfub6E7gLJETt+WXCFlqHlvuE1B4fFvbJq65jPaZK8=@vger.kernel.org X-Gm-Message-State: AOJu0Yz+m7xs799RzSZ0+asHI4EmkQW6Jm5IDmXYEpxBVlVC7H/vnQHx /CoiUWoJ/jcIanUQ0oNAYNtKb0B5zDXsgRu4joZievnrJm7S9iMt X-Gm-Gg: ASbGncsRGzb1deoKtnsVup/hgwyiS7GjP/lh42+2WPF7BHBU9lM1BC+0sxDRyjuqJj0 9VNKwJKVAz1qAiK2AyLjwvR6ht7UBTSJqeicvIhhQLw/dgIaPTv7K6hBRQ3D4ErhyEbsarofoGU u+UfH1xfFcCSIoVVSevJQMaKgGPVJZYhqnKiZ2HeFp3OtLxrJWd+3ciLGUNJvfOMzSDpfLjwkiL Yy4q0/OVtaA40KaXdw6Ol8XDF1KWoH7fa+QPU50o5HjShi0Po8nSJHqpn6UYYe+/Nxohsl3kflA iIfV9uCU14q95KKE9lV6DMRdAr73mY5BZe+/oTcqkE3hD0y35s6EBREHBlDpQybMmRG9H0asBZg 8ewXv0f+1Ew== X-Google-Smtp-Source: AGHT+IFEDhAwa/6OACwmvv4+D+XKr4lDvPeWnQl1dQoZOOfH/ICfi2cO98uHa/GiWM7IDA2ZKpq2rg== X-Received: by 2002:a17:903:2308:b0:215:b473:1dc9 with SMTP id d9443c01a7336-221040cf336mr15734255ad.46.1739577813127; Fri, 14 Feb 2025 16:03:33 -0800 (PST) Received: from [192.168.2.3] (2403-580a-80ed-0-4835-5a07-49e7-f115.ip6.aussiebb.net. [2403:580a:80ed:0:4835:5a07:49e7:f115]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.03.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:03:32 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:36 +1000 Subject: [PATCH 03/27] ASoC: tas2764: Extend driver to SN012776 Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-3-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4941; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=xd2PMfcuPk6XeGMGGgZ6wl2yZJIUxJkQH+xla5YAsnM=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb26N5m53SDm3cMacS6ssNts39gitijf9173E4+DK1 e9SdGQ1O0pZGMS4GGTFFFk2NAl5zDZiu9kvUrkXZg4rE8gQBi5OAZjI0kuMDB9Cvt7fpbV819bu RSfCnH5KXskNqj21oIbp1ss3h9rcaqcy/GZh38vvcstMtv3JnW3fCva/PjRjTl/N/IKne/0sW2y blrICAA== 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. This driver already partially depended on CONFIG_OF/Devicetree, so drop the pretence that it doesn't, too. Signed-off-by: Martin Povišer Signed-off-by: James Calligeros --- sound/soc/codecs/Kconfig | 1 + sound/soc/codecs/tas2764.c | 46 ++++++++++++++++++++++--- sound/soc/codecs/tas2764.h | 3 ++ 3 files changed, 45 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig index ee35f3aa55216534037257b45f405a2af06c4872..0636b1f7a178a9ed8050e1567c18b94d446ac564 100644 --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig @@ -1965,6 +1965,7 @@ config SND_SOC_TAS2562 config SND_SOC_TAS2764 tristate "Texas Instruments TAS2764 Mono Audio amplifier" depends on I2C + depends on OF config SND_SOC_TAS2770 tristate "Texas Instruments TAS2770 speaker amplifier" diff --git a/sound/soc/codecs/tas2764.c b/sound/soc/codecs/tas2764.c index d482cd194c08c5c443b82c665de7a6d96531ef2e..e04b8ecab819402b8c3d2b81a2a447730802e968 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; } @@ -697,6 +727,8 @@ static int tas2764_parse_dt(struct device *dev, struct tas2764_priv *tas2764) return 0; } +static const struct of_device_id tas2764_of_match[]; + static int tas2764_i2c_probe(struct i2c_client *client) { struct tas2764_priv *tas2764; @@ -707,6 +739,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); @@ -741,13 +778,12 @@ static const struct i2c_device_id tas2764_i2c_id[] = { }; 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); -#endif static struct i2c_driver tas2764_i2c_driver = { .driver = { diff --git a/sound/soc/codecs/tas2764.h b/sound/soc/codecs/tas2764.h index 168af772a898ffd1c5e96c50df77ff6225f704cd..0a40166040e7e877ca5d23db6cb65531af12c40b 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 Sat Feb 15 00:02:37 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13975734 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 3D3CB70818; Sat, 15 Feb 2025 00:03:40 +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=1739577824; cv=none; b=V2nelX1GuJd5GNa/48Mf0iZYJdp5aJU1+EyNyKTrNtJ2SGu34GBZFGLp5+txZWdfw350hNdKA+i8ejoIrRQ68XpJAK+ku1Ya3M9clYfvFJZfLryyVNjiwkHyx3wDS57YK3iWvWyOBgi4aR8sdxQaptCAcBMd0P8lhGPLi+0DTTA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577824; c=relaxed/simple; bh=l4QavxH/AnxLsGFPgX4G1Nwz/B0QgpuehWgSTj26p0s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EQuRxM9OCJvheOorPwtE5vC4tvQnuHknUakGQEfJ3ERLhtifasxPHk1bj56ugbxYjN2DGPRIR3qCY36t2SMbxoWs4SmZp4mJJkXwFYCpSTOQvh/s1YPAygQYVlbUovvSP3+I0LU4PF3cHridOJ9XwfUj67zeSgk/T9Ds6rvRkt4= 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=cRjCKbjZ; 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="cRjCKbjZ" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-220f4dd756eso20776675ad.3; Fri, 14 Feb 2025 16:03:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577820; x=1740182620; 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=YNJt0vNuEkV51zynYZo+HyYzdHqqBPC2Q3Ik+52LuJI=; b=cRjCKbjZib3ZQyXyFRxO2X7LogcZTWrF9yMVtp7gCYoBJ7wszpCkTtoAPc148jOL3D n91OWH3o7G9ueiC5vjfa9R4StEY2B25rnfYXtlk6YbBvY6dIoOZAPNzweUcq8sDSLCbZ ZdGmJyv3vi6k4yrPiSJEhVwrb1FCmAZ8apakItK/bSeAVkd2oEQHf3TkhJnvbagHaQUC ptxQOLjSTUvo0Ez4Q1XGWV4Tm397vstg2curNB3h8RHH879WlsYmYbgsHwY1uSbjUcFd D1eDIvElImysf7BWTbZmaYbtzyxGHW5YKGdSndKoEfolNfQgVWWOME6IFeqzHlJ790xx b8wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577820; x=1740182620; 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=YNJt0vNuEkV51zynYZo+HyYzdHqqBPC2Q3Ik+52LuJI=; b=ox873KE2ZhPrbvVjSZTBU4TW5RISdcN181DYzY/u7lLRYzkjiJkoDmRazpfFk6OJRv voYvaQcg/ncrmYHfpphb3qeEi6/1e8JYOX9Murdd/BLjf1gFoIa31D55Sm4PbQz41C0i jtUIfUVPlS6DeETs8ML6j7h9upPl0sXfDvtbY+udrm1TKS/Nsh5yqo7B3KDTrJ3WLV4V jxlBQ9mqii2fGy5k9sQTjDhH5POxMkPesP+F9p5n8KCOVHzEffdbVcJOoDkfJHHLNZaP eC8dA3dXgBCDLLIoqELgbKAL5bqbNKgqMycicKsxI8lQCDFCWoLUcmIyo5He0DksmaD1 XwDg== X-Forwarded-Encrypted: i=1; AJvYcCV/whA/uQhDZdP6ZTf22SzJ886qCO+l1byXfAFHKK0eZi0opy6kYtlO3M66Rt3/xE/IvDvBqh8w7pVhuq3C@vger.kernel.org, AJvYcCWHuyR5RHw5lG+FUl2rQQsDDACXNRXgasFVY5Zs09TOvXzPb/MtkU1vW7WeM9VmILXeNszf483aedEY/64=@vger.kernel.org, AJvYcCWYOU8o6Ta7PJSp2hjuaqP6aU04eQyHs9WY91Vdbs0mfLMXHBtCzpSrZat6ae4Z/aSLhK7FMwBkLZ0b@vger.kernel.org X-Gm-Message-State: AOJu0YyletE60gknsIWYrggpHgN3W52aqNGsRKl6ByyJ/OGDOHgAcRKo 8quxszAoc4AbmV8Pa8+ByyPKeR/qn3lsBZEy41xuvYJkBQgNCOcI X-Gm-Gg: ASbGncuI27xh1fkY9nXNpGacGvEb4g1Jx+PEOLnPD9l3Ui4ZPuvagmKIWOfKDsZcZY4 6pZY5OgsyeLFExQVtSBLPaUSpdtnd6M6NZrD3dZ+f2HxR0/MeXD1F+00lVW6zPHcFW7qAdvo15c G2t3+WGDGRmxlGkDSKj6hHCXZ0IHx5U9G2kVf2fYh3vSVNCjDsgsCwGm3Q+6SIAnbWqho63kOW7 6McXxRT07WxqkMFLDcLrc7Vy7kiIcjR41mUZoyA5B2CdPt2ZFJj27Whnhww8muatMjh4lsxuKbV XvOXC3Dpv1LS7owoop49MZrlcNc9pXhNgpf/atN6hMRk4w8DcuDjwBuLHnlX4wlWQ3SGeQ22eUx 1sFVHW51Jhw== X-Google-Smtp-Source: AGHT+IH196Eueol1g8kBTIGWU560rg+TCAzrZwEk5wy2aAGIGo8oIpQrrLzEAnIzsvQ0XO1c52riFQ== X-Received: by 2002:a17:903:2f8f:b0:21f:515:d61 with SMTP id d9443c01a7336-22104028a15mr18838735ad.21.1739577820409; Fri, 14 Feb 2025 16:03: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 d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.03.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:03:39 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:37 +1000 Subject: [PATCH 04/27] ASoC: tas2764: Add control concerning overcurrent events Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-4-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, =?utf-8?q?Martin_Povi=C5=A1er?= , James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1972; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=ckryqoK6F5gfX0Q2xqupCAjDXnKZm8KUzcE+xjgsqAY=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb25VNolcz/Z/ncYlix/vdrAXh15b7H7oRerMeXxHn qXu+vXDu6OUhUGMi0FWTJFlQ5OQx2wjtpv9IpV7YeawMoEMYeDiFICJaEUxMjz6z3zjUZDswisH 9kxKOa2ymJnrWaTnmuYDa3tff8qYZ3aUkeEO755O/s1B26Ir82QXR+6wP1IVYJW2pd46kcVj9+G SPBYA 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. 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 e04b8ecab819402b8c3d2b81a2a447730802e968..503bb7f8b729d3760194a6f6f6996ff6469c580f 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 0a40166040e7e877ca5d23db6cb65531af12c40b..20628e51bf94f047e3dc7cac73ac01519ada1852 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 Sat Feb 15 00:02:38 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13975735 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 2661A14A617; Sat, 15 Feb 2025 00:03: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=1739577829; cv=none; b=SDc8ZqxtIhBZDcyONs+SnqxAZlHGikp6GeO8W+tZJhZbNr5Z1jqTlZpC2/WlrinYbLWBG855qcbPGrTFMVNHXouuBsK/irLIsrGOX8ors9k/WIGXDm/b+Ly6RnXzDrR2tWZ6/vq8cjkuN+7KKHDsBuo8E3VKVoU/BpzBhBoVuco= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577829; c=relaxed/simple; bh=HdOUzZNF2Pmnypg58HHdjSM5E49x+d0F3QxO9cXe+GA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FkG0f9kOmcvOSHkJ5v/6QfnVJKHkeQCwvGR2+wuDDCXlpQD6K8fDJqWbVogREX7JuteD+HNOVofjkCfaivBLOojfRBcD+uvo5m/PJstVVPaIccF6LDiEpi2KkxJWuXlG/vo+mAkJY0sKA+nEyJm9fDXgxuM6LNtAfqOCb8iC3u4= 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=DCCwJ3kY; 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="DCCwJ3kY" Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-219f8263ae0so46542085ad.0; Fri, 14 Feb 2025 16:03:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577827; x=1740182627; 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=YSfO+VowtOqUTrjFAcOWpa8HkJSqbuMrDyG+/l9mYPw=; b=DCCwJ3kYnZxCWrJykKetduES26BKLkqJfrox1RuH0cS+cjip5TAkoPpGx8Lghb74E1 kYSl/8SXfNm/4JKL47RaOPrgP0rLSqcdrFgqs4nN/RfZctkV/qXMZGxVi9JDdTYv+ZSh jSxWEaf0ofEDeagGgaHr5RaWllPvybpca9rMpeoFfIcHnFGWhzujp2J4FSBOBbD6WfVF +huf9U6rwkMQSYALnF66bvD8PiF1BB5Hjy98msIyb9QGyPX4xn48Xc/Z4kX9gtC2QdAk CHvYzYBXpYyzygp1svqughyOcC77Le4OnAXWWKPpASuqjTWcWggOABbjc2Bf4XUox5a4 1Ojg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577827; x=1740182627; 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=YSfO+VowtOqUTrjFAcOWpa8HkJSqbuMrDyG+/l9mYPw=; b=RkmO2Z7QTyeT9ttP+3O+VGObulBSwDFBWGXWjNj+Mqaq1y2WQnSBt7p8E182ptELYI YkffSCTXDvblW/OZvfC2QxxSYDJvyrir4FoAiBgzwczHahwDlz+1ieRaL4LsCQb+Mxwb ch0v9aDcvXgLFQ/H/exTGvs5y3saDtLQ06yl0VBaQO67iSN9hV+FFhStpPl1dOoOX+cO 3UhOnoN12q0v4s05hDvKQjlNnpq8+VvvGcMAiW8u6iSKxHT4LWhZaJb/vEwoJv4On8vO tB2cnbUhSA4Kou0cz6orQqb1KyWvs+uAPqoyib9oZU5qbPk2p/miRK9y70kYKSh4k2+W Yddg== X-Forwarded-Encrypted: i=1; AJvYcCV5OIGa7RkzZSgymwlUliwRAmKlSdt8mf/iPwdEST55sriDfAyOKwvIz5VH3CNBG8RWPjLYCWVkNBT8@vger.kernel.org, AJvYcCXOR34gMvRiKy4TXkvsLw6VN8Hs2XpmTZAZLgc2EPvH24HuEWlx7vSCJanyQIalbGnJznULpkDpwIndwTE=@vger.kernel.org, AJvYcCXPia760xTpv9OjAoVdcbGauBnBF/NHKRaEG9+eiBcDzLoowLb34AV50JlLTjyBuw1aqQiYAqX/JEtvOZem@vger.kernel.org X-Gm-Message-State: AOJu0YxGdscRUQCHLQ2iUCekZBjLVLdM76/yHr6aG0dd43HU2VLvFm4v vjVsCFGEkYWhcZAh/20DkRWHhxTM2rdgcP/SkbOIxfXjxoL5cSgh X-Gm-Gg: ASbGnctWCaIxtyOhHCgqOhklF/hvKGEGq+j84CqTIhKs8JXKOZSNmYzuEqRSLpCGQv5 Bwpcab2JpFy3rqkhnfz8ZLBsXdvruPFbwCLQTAEmGxH93NiHBo8oXlTGFINBkm0a8txDWGyKDa0 tRVj0mXfyIMWKTZqGWv/F7H6I543xgWyqRS0Vdtna3tTluPJJlqFfdXHC3VQq/Vp9LtgqHxXrFP WpLAs8GmjmgCH/vBL/eOfoqjFUX/3nZfwjir1YGVPXkEOzqLH+E2nwaG2/Ty76txu9CCePYXDwo rVMCVD4EBKpuf4bjIgWgdQswfqiLznd3w16HInzUUvf7EHdhJwplpEK//AtjwP0jZlNqRVcmyR1 Ty2hbJURSNg== X-Google-Smtp-Source: AGHT+IEVEmQ40FmDn+CfAUaadDKXT3q/Mz8plbwvQ9yvvlPi5yOo06GC2jozTAovzEvNDFO2homiqA== X-Received: by 2002:a17:902:ea04:b0:21f:4c8b:c511 with SMTP id d9443c01a7336-221040bd73cmr17269215ad.33.1739577827311; Fri, 14 Feb 2025 16:03:47 -0800 (PST) Received: from [192.168.2.3] (2403-580a-80ed-0-4835-5a07-49e7-f115.ip6.aussiebb.net. [2403:580a:80ed:0:4835:5a07:49e7:f115]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.03.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:03:46 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:38 +1000 Subject: [PATCH 05/27] ASoC: tas2770: Factor out set_ivsense_slots Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-5-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2291; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=f/J3i7KMIWxmruabP9W+++oGD5wdnj1RJnl1ABfMP9s=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb26d4LKSQ4BVccp6zeu1+dY741bmPVMX/C3TKqofE LKwMt2no5SFQYyLQVZMkWVDk5DHbCO2m/0ilXth5rAygQxh4OIUgIlsU2X4KzafQzNpwfLf2493 3y9r31Xe133DQv3F97cn7s44+1/lYTzD/8TQnVdYc15tXOZRECCnbVP8hEeE/eHJ2YkR7A2MAhV 6PAA= 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. 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 9f93b230652a5dd05f325eb506220b17f5a4b91d..0c8a02ac2c0db10c449a68d9365e79576e24abba 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 Sat Feb 15 00:02: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: 13975736 Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) (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 020A7151998; Sat, 15 Feb 2025 00:03:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577836; cv=none; b=fMbtD6LO7YMddexHvSizj9wOI3J9ye+dKWGcRUbkJ4aR0XeXinLtyyAwrqEFv/bcmBba5mE/MQDwbS6SBzdKsglfHqauTnyGZqo8tDY5xTyHiCx855fwnUBVzCPckpbVMob6i0IF+W3TEAaarLSr+huZROEuNs2O/ZEoFEeHpDg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577836; c=relaxed/simple; bh=fAf1KAgaeIrxwZbwk9BO115UKgXcSqW2DO+wbz9KRpw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uikJHECrZEHOYlv3C359pZUGIfOh/w/MgJYk/tJKD06l7QWy+91T2bJ4h22wTeONPLRzE9+MYLi4LTZh/OPuoRMgLNQYoaoeMuLe7tvmhxwxTD0jfFTj+A88O4Y/gVrW3/WOu4Gclo1Jgg/W7/3IRuxx9LsZPhNJ9IfCLIDxLYE= 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=eP4rb3VH; arc=none smtp.client-ip=209.85.216.41 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="eP4rb3VH" Received: by mail-pj1-f41.google.com with SMTP id 98e67ed59e1d1-2fc11834404so3513045a91.0; Fri, 14 Feb 2025 16:03:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577834; x=1740182634; 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=XjN69dWvX0hG9h4EhLNZtQys+yGsXU0w3VyGLhW1vec=; b=eP4rb3VHiGS442c+U/Gm7iIaN8SmkUDA5XWKasqhWYffc+koVYUKTfz+nnUvbHbM7U IQOiZ+S4n0SE8eyNQdPvsolIuvCAsOIy2GvAl5/aVnH5dJs396RrvayrzB+iOe6V4h/R F4x0N1iZ6cv+sxWH/S37FDNRh7bQSBOAs3KUYb8n/AuzyaRifEcfcY0UTT4QDcJP0bQm tL+wOmfgYzww+/Fej6nF7Rl0hwoPZ/Q67z1nbg2ay4pzPmLWfAGnrPrToGEIONpi/Wtt 89GtlkopnK+hiPClZHx8VMG7ZtlitezdlysnKJHw3edN9unJ6nsv2AuX7u8ae6W1Ago8 98FA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577834; x=1740182634; 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=XjN69dWvX0hG9h4EhLNZtQys+yGsXU0w3VyGLhW1vec=; b=q7ftWb4be+u+r/pzgWfJJlzK35TOLCbd98149zNeMHCzLSpdZtXpJRGRq5qOUwERZE lKyrQNOR7NL1hnaJKXcju24S0TmPzhcbH3Z0CVyHhgvB0kJPWyGb5rcZRLoxJqByICpF CYiGq5TgmQ78sGKU1E8iEvhG/KKJqZLmKyp1dTLEaKZe+/Cm2OOjoVdu1UW5aHaDireW K7FoEF6gSVSUiHPDKlwh1L4FqjHoLK3gbIMnJ0mYUhL/WOLEsxDbGR+ggsiPY5yTiRyP EmzXavTjV5q3s4h67l6S1EVyuk5oYmOdocP0OzVn8ZrKK5DSppWrdL2u/1olQxMba3MS iy6A== X-Forwarded-Encrypted: i=1; AJvYcCUSkI7+kgFC1A6QPUku8Er30OC/1EmscemXMriblBlq8M73EwQbfN4CjfUD7oA6SwgIwD10WAjAH9GorDw=@vger.kernel.org, AJvYcCW2OAXDhYpQ4LilqDCKflQzL+DT38xZ//RNecnqBuAjTfUfQEfOpTPBRhAX7Wbs8/CxbaSaLN6utNGK@vger.kernel.org, AJvYcCWcQYz6z0J7gz1EkdJqoRAmUZt8APEjfa2qGkylWv29gZEGTsZKFaYae7qRloVmfekqtFxFA6zKsI2hM527@vger.kernel.org X-Gm-Message-State: AOJu0YxFmV2WASGnwnuyZI3Nc7fdzWdhbqvkGwXYugSYO4ON1FdeseOC /Ve7ag170a2sZaPinWvNPDPvYe+KPJIAG/SeAB49DBFBTUuOR7GC X-Gm-Gg: ASbGncswPPzRHjmHuy43Hn5/mcnDoKadfsBH9xKHc1j3Fe+mg9DMBuwWIHkMWMVw/Vz FHcGMG3jZhSlGl0fxaixCZYW87SuTh/1udbbHYQ+ap7F5KsmRJpujEBslfBq9FK4hEvQFfOXfB9 VpRvTYIGvYaAHYlS6zQ6zJkqTAgb3aP57dj4us9z8iCdAhmOZP4qr4o/QBR+PYRj9xtvJ64bjqV dA36kpXYlQcgQp3IL4cnjakt/335j9SHA6+U60BPS+HvwqsR1sTayCE1shpPfTEVB+LRDtycXMS vP+lEvi1IfVBCfSDnMZg3IYoAM/GlOGNyzUY8b7NMzn+s6vrffKIUo4k1/ASQMU1OOpqJ3MIQCB llMY8/5aLjg== X-Google-Smtp-Source: AGHT+IG8Y9dfFDg7fAsxSa/d9/xijgthnbv4dNrpx0e5/T2PydIYpo7CujjfmoaoePIUicpcVlYA3g== X-Received: by 2002:a17:90b:17c1:b0:2f5:88bb:118 with SMTP id 98e67ed59e1d1-2fc41044ffemr1257114a91.22.1739577834169; Fri, 14 Feb 2025 16:03: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 d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.03.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:03:53 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:39 +1000 Subject: [PATCH 06/27] ASoC: tas2770: Fix and redo I/V sense TDM slot setting logic Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-6-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3845; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=Zkv+pd4IC2a5+XRrYg3ceXkPLMS+eYmm7VHJxks2gAY=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb26N0Tec2n3GOWibmdL8lYv+X5dL1HTK/lBX7D11g q/IezWBjlIWBjEuBlkxRZYNTUIes43YbvaLVO6FmcPKBDKEgYtTACaicJ3hr+SiZRvdDolImi2c Nmdx5BKJN9d2MTcKuR1JVS0vZjdNbGL4nzXz407uk2VeP7mlGsveedtPjv7zjjN1lczHvrlqzXO 82AA= 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. 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 0c8a02ac2c0db10c449a68d9365e79576e24abba..35a4d5a4a3e0cf4f71f81fd59f44f075c59cdbc1 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 Sat Feb 15 00:02: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: 13975737 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 AE6731096F; Sat, 15 Feb 2025 00:04:01 +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=1739577843; cv=none; b=gQWhl/M7xS9Opk0MRND+0Sqjkb+0W55n0eaEpgUul0jpVe/rfpbVtLkhLf0yAca3A9SFZV/VpuFOFrlTCIZ/e4HjRWGuaMwGzXutjbnsKHqcWTIBE0Whj8S9jQxsc86Vv8lzqWWAchRzVZ0S7mw7WUI0eN160OQnhEWS397VnDk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577843; c=relaxed/simple; bh=Q0SPl5JH9LaHvgfDJ96M2NZKrxwY3FINQN2Up2ZYVLw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=af6x08IR1+jWY+sb2oAsAjbA7vThzPsPSYE8fWsxv62BUy2TD9O/S/JxwrBf8qm/unIMXqm0h31wh/UCVoX/6OK37sIs/CrQtkzivUVi3phnzHc0m9RgizR/Bfe0cVM+PgFYM70IcH4L2o9nY6aQpE0eL8qBk15+0CXcN55GDJo= 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=DpwAE7XS; 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="DpwAE7XS" Received: by mail-pl1-f170.google.com with SMTP id d9443c01a7336-220bff984a0so46093215ad.3; Fri, 14 Feb 2025 16:04:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577841; x=1740182641; 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=03VCERuRQd3sonLjwX2xR3AgSfd5Oyw98QEf0M2noT4=; b=DpwAE7XSovHCQVrdlrDttQygRCqCnextqHu1/V5LNrRpzss3BVoqqXs4xuRic1+gYe sjLPEA/TA4MTYbrn2FTTXA+qCBjg9L3VNQ5wnBerFtoNCxWqmZ4qYnJu42w7G0LD7ku0 GPjNnoFjw7bicksT70QifcAj42JjeOGJAfPGdwPGao07QSNEJIVrWxsFsh4uk+sDOnDe 0LAhuzrqNhdOZGHiurqQcBG6U6HkmpHPy7HbTUZhDWi3LdwyhUSbD2mVTnhGbM4JrFBL kV7G1ZIEMPCeMd2vv2rg6yMHzsppUJg8LCdHdS7JxKHOcY8zvefHWHGqRFjjYN3rTiyI khQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577841; x=1740182641; 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=03VCERuRQd3sonLjwX2xR3AgSfd5Oyw98QEf0M2noT4=; b=bbi95uyBFXi4WnSQSK2iUyprA1cmRh6LZrvu4A0UDeLql7xp83vXJJp9mcqaLNJZr+ fsvb5rTZjX25oBF2UoDkF7z0ewMcGhIH6+3KKH/XQK+xA4nn7ekHS8IGh0btTX7i2xeY Ayxf4wlFDTnLalP+CUjSPHqX83pP0uyYnZduJTaRVXXvY97ftYKhzwKb0YgWrJcesfFA EutPpLf7uU7SioTl0emVG9RsdRsfjI/fvNWyFPSLl7nZkgF2CF8tm65AmDBuv2tY1ZuW +nuvrN1f2wk3s4TCiINFQr0Aq/0ky1iIXwXGIy/w7C3A5acmQxjDPqb8TUTZtNtcFDsw 3rDw== X-Forwarded-Encrypted: i=1; AJvYcCVc4tjFwpvDnyURxFCtTTFEmK/0RQt8sPSUidlLY2nxDRFGir3pX8Z86kglXtars+jUGDiLRPLuUGdiAW0=@vger.kernel.org, AJvYcCWb2WesPKUDCLr5VgxQnRZX1PNRcsWQiVkJAnyHO6NNPbHz3kZTRg7fiX4q9bsnsBy8aN+ZG61IqyCOhhp0@vger.kernel.org, AJvYcCWcHw65E/umVDRQKMRO21Y8p1eUPr54NiYIxHvuvrCxAOR64m8GoIQwW5scWnBr5lDXCU1Rkop+qxre@vger.kernel.org X-Gm-Message-State: AOJu0YxV2axzxGSo/QUM+0cvcJBxzdyjB8MZaIOrHLsZhifWhdat5/q+ fCGhZMx5anZxsTzgQyDsCzWMRpB0EXPI0aocneHngiYGeM4jAVgK X-Gm-Gg: ASbGncuAVO7T5OW3FZOvO/ooyCTSTmYhreVOxtZTb4mPLLSZf1gpSvUqvYkDvUbTfi3 0DQgLmi1qQyBo015ccQ2sUsCbGKFGVNRbPjsXXFrvQWeNkjYdqwaYvj8oGKhMKmcFostvYlo1Vi Tqa/DlDAb55KleqQU+33BYlSnzl1LsE6Q4Ahj9M39xjg5KdQLXlxhy2PnFZHoONH/Ez+QlPceKT AvMZXzLP1IOP5iT3eQZXlRIcljqnCmpHCvyTFLCjTW7dnANB8dJLyy5D3h66Oq3NAR16taapZXF Z0udT+ESv6O1pOyTCEbgU5kjWdt0NbV3kVsQSnFMpBcZ4JFxJ1vis/Z6foW8AWC9jpMEXs4+8iC P16XEOgFXDQ== X-Google-Smtp-Source: AGHT+IFEbbW3BAtsBgFCB9kBQKiM4ABgJn5ph4HV9zVEO0mqabKPwQqEDNW4omoAqNlYhJuWy8T6ng== X-Received: by 2002:a17:902:ce06:b0:21d:3bee:990c with SMTP id d9443c01a7336-221040a99cemr16511975ad.42.1739577840941; Fri, 14 Feb 2025 16:04:00 -0800 (PST) Received: from [192.168.2.3] (2403-580a-80ed-0-4835-5a07-49e7-f115.ip6.aussiebb.net. [2403:580a:80ed:0:4835:5a07:49e7:f115]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.03.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:04:00 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:40 +1000 Subject: [PATCH 07/27] ASoC: tas2764: Reinit cache on part reset Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-7-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1362; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=B1Sb5itjHDK3h5ZHbLewODahZLkXBqkrwz4IxIkfeXw=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb261Fz3vOn+1fEP22nlTIuzP/Ap23/14z4oJmSFOV TqJQllaHaUsDGJcDLJiiiwbmoQ8Zhux3ewXqdwLM4eVCWQIAxenAExkhgMjw+1vHUck4v6af+r5 PD/iU+ua4Aszgt5nLLVSb8/RuWHXXM3I8PBZfitrjEPuMWNe3TlbP1uxrk570vRle1GfcMibrHg zFgA= 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 which concerned the tas2770 driver.) Fixes: 827ed8a0fa50 ("ASoC: tas2764: Add the driver for the TAS2764") 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 503bb7f8b729d3760194a6f6f6996ff6469c580f..6e91ad9229cad62860adc1f446fffc8872d32ca0 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 Sat Feb 15 00:02: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: 13975738 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 4A3D21096F; Sat, 15 Feb 2025 00:04:09 +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=1739577850; cv=none; b=rZQC6coBl01NDXJTU9WQEFvODQst7m5MGYJFUQj9XHw408JZCeBQK4EGCgPFksRYOt4xEWOJ0LlTbqf5+7xXq7FCE8cTFbAUbW9rWd640Z6XojSAxmxB7MqVhPTuNfhd1a4+lgMNKc23uq5J3tZyJ39t2pAkWTltmf+ugcpsx0M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577850; c=relaxed/simple; bh=x3X/J7jRRdV3oXpM/nwKMeoCk1MEJMElH9Do++utVEI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=d2YKM8rrjXe4jb+Yc7Zea/gzLx/jsva3JdV2RCG0WSD/nvqLhSQN6ET7cXQ7lIJnm5eZngVAMmHpk+yiQmHww3HodYwaDH1hU7E66gV9R9YBB+nHNZMGk7qC74hZ+FmLH9qoAfaq/kNGSY1OfGz9cmZpYaAJ0WQWToDHbpwiNjU= 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=Y3BGyzSd; 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="Y3BGyzSd" Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-220bff984a0so46094405ad.3; Fri, 14 Feb 2025 16:04:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577848; x=1740182648; 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=ZlnAUEumL1snBEGJ4Y34sXZ9QMbvLdlHubepbtqR47I=; b=Y3BGyzSdnz1P1ZqKztQopVZTqPN/ACu6qmRYdn93OK807LvlEAxpWdgIZa67dd6uaO gKOGWPq7A7ke3TPyrnK6P9BREMK1O9gCFvmv+oqZqW0t//MH59W2aiX2xBCw7U2/mpQH rHMp9ZRYJ6vFi7EzOL/ogI4VrqjKrTzAZk+mBpFpzKoMbT4A0pOs8dKGz53EChFoW2xM gRSgaBwxZnjXYpHBoKOFFiBV0wh1W5gmyxaFyVcggJ3Efeg+t8iQiqFkk/wPIqaiBE3n WvUusUFWBZi/QIEZbyR9arLJc59gsPo6tR8kJW+cJYyX25fSS+czv/XPpEQZB0knLadA SsRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577848; x=1740182648; 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=ZlnAUEumL1snBEGJ4Y34sXZ9QMbvLdlHubepbtqR47I=; b=Extla1rroP67E+qXd5mIk/F6I6StCk7IR9fXRu7N3iqolxCtJbvcksM2Gnk5gWTjIO 3buSE2OspYDGhLLtsoXcieZk8jMCVxU6x8GsYcWQllPgiWaps367CHNIWNcqU/xSB1jW 8LQb2mIXHGom0CKOeOYf57i5dxz1lFjaJ5bFwipCP2z8Fa6yOZQ0pjYUzynO82lH2LtM 3RgwVrAi2Cd6RwKDHgPLwqHSe6vpmyFwIxcRiPxCpgQq3Kr/QxgE133dYdnLCRNVCzN3 1anOCerLAwtvKjm3UPxoGaChNrAzFhb652P7SFBeF5FjQyLGAhrp2/XENdBEfXDsF2Kl ixwQ== X-Forwarded-Encrypted: i=1; AJvYcCUBTQJoWsMeI94MPZVxh7aopXjHzM/O4DQb1aVIge1ZZF2t8gTm1ucpd+EDfwAbfX5qwbnPRAzMg/GdFnU=@vger.kernel.org, AJvYcCUvnJJ1trCHXmvByWtHP73jyDPFB6X4JgNmLiKIjvJ6a+mEl39ZpxtCZ7sE0mA4Nyiqx37yrt4xeEex@vger.kernel.org, AJvYcCWyIGtMvkchpZ2HipKhQebv93Y1bzNZckEut6KmHkhDP3m2J9Kjo9izAdLvqVI2PWon0XuxZOpcSa4I6ljq@vger.kernel.org X-Gm-Message-State: AOJu0Yz3otUsP4pNftlux9vDlKRH/9BS/Bh44Np7lT25SD6qOoGvLcct +K9aOp2SRUBmZFkYPYwrmXMSUb27aPk/o5N6h6fICIWeIlc9Ux5L X-Gm-Gg: ASbGnct8tl8GeEClIN3ttadywxRxhGJuVjCOUSTSUICrLUGyQpFgwr4FYSeHovXpXjG iK0E/GtZrpXhN5FRdY2frdA5UmOxkrAzddjFb3Otsi7iDU5cUYZ9BCtEXcFBBL9Ak03pi00YPrj Orvoh/FtRB+K5izkE1BvJVJa6oSdbJHSzPOfD8TQSc6WAgyQippJB9w9YM6NKsh0xJzj5KUOswB XEGsTmt9WQFgCEf9lK1sRC1D5Su/DsDj+5RUrgGcZq38qHzJXtVhdeHVm8jyV3UYYPAlYdjoFp5 M8rWT8s2EumBg0cNkYWRkfBojEKQQ8L2/5XpZ7EY13g2t+80MJ4a3Cg0PeQsXcx11ai5lBCZMxh s+0mwVxC5dw== X-Google-Smtp-Source: AGHT+IGMbVf+oIvKO42Y/8NEStakQJ1l6kBwVqtO/ZePkg1SGRKsak1GKPDunnaaDh6kBSNw0x7W/Q== X-Received: by 2002:a17:903:41c3:b0:21f:baa:80c1 with SMTP id d9443c01a7336-221040d74e3mr19468095ad.53.1739577848518; Fri, 14 Feb 2025 16:04:08 -0800 (PST) Received: from [192.168.2.3] (2403-580a-80ed-0-4835-5a07-49e7-f115.ip6.aussiebb.net. [2403:580a:80ed:0:4835:5a07:49e7:f115]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.04.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:04:07 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:41 +1000 Subject: [PATCH 08/27] ASoC: tas2764: Configure zeroing of SDOUT slots Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-8-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2864; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=ZrV0a5IsC1OB9lfc0Tl9W5OcpAjXMhwf4kd0SmKIBwI=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb24tqq/efntJ1w/hZmUFr+w76sufdd6XT9SwLVRIM V94csffjlIWBjEuBlkxRZYNTUIes43YbvaLVO6FmcPKBDKEgYtTACYyq5rhf4SFZrHOKUn/CQd8 YrPlhL8c/Pyxc2KJerWNcLlP1P+/eYwMd0uNT0Qv4VrqubLuNvdW2y2fN0y+N884vrQ0aF+Oos8 fRgA= 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. 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 6e91ad9229cad62860adc1f446fffc8872d32ca0..811f4f54cc26bee05d717552c360fa50e7d6c7fe 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 20628e51bf94f047e3dc7cac73ac01519ada1852..10ef7d4a490e1dec3ba9c824479a6d35ac57f33e 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 Sat Feb 15 00:02: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: 13975739 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 57FB02EB02; Sat, 15 Feb 2025 00:04:16 +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=1739577860; cv=none; b=cJ5WwzI6+sXNCttWAzy/jNLONZ2GlvRPYCMpkYu9CraKJUbyH/LLTTIXv4cqtvoP2I06bli70vT9I+B0PhhmC/nW3pmykLA9o1kIVuw2bCre5+23fbqypf9QZd3wo1cogTn9n0KngTVtYJKa5DKN08ekvknepj0yUrGAPbbCDPs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577860; c=relaxed/simple; bh=LmTUnuF1BVyvYSlC7WbCUOq251HymFCUszPflNwhIvo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bzG5p+MnwMOv2t+Yx/uJcW4vP3eZmW7oSFcv8byAOCQe2z4cV9iPP8AxtNSnI5fJHOiCub8SOWPzHR8K2vyCh5DctcZi74fsQhCbqAHvBIEL6PZxRONxOgIMx+7mVXC2E/2zxbVpFCBK8dlOKXi4lNS/c9oa74ntdLE7xUmOWfE= 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=DhV1OXYL; 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="DhV1OXYL" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-220ca204d04so35674575ad.0; Fri, 14 Feb 2025 16:04:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577856; x=1740182656; 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=MLd4owwHtmjtkchcUHupv5g7LO644YkhE0gZDfJP39Y=; b=DhV1OXYLe8AeMnGXlvnBHjAUmLgSPHrRlw6bCxNGM48MtRsN6VbGzots/949GT6pRJ xH++JRH06JdEak5hJrAw2zcvgfXHtvmBWUrRoehvZ28SXGZmNY2Zy0OPhYTl6veP09CK xdNwjH+OzYEYQrs6640P+y/OiFh9ic14vr0n7WfU56mKmrZwWjJfoOhFFDuDHppMT8ev 5efioSNyMaq2WXzZffJarbDpYBMm6H1CUeksn8aepOjsLCZmjoOQNwdgq96OP8k/7MTx 4HbS2nhBrXRsmhjHQky0vK79AcHxz3tfkIApwiU2waRrx/zgDmXq2/o2vsB5jtBzBD3o +uaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577856; x=1740182656; 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=MLd4owwHtmjtkchcUHupv5g7LO644YkhE0gZDfJP39Y=; b=k5bhLlm+8N023M1towoDpy3zHyMdbVXjPkB00QZhBfbWpjBPH4AFpibStki8cds36u jc+ASWWS3BDAMasHEP4TQBDZzaCxgQq2paRnqMOP+o0mivOdxr7BOLCkK2xFRQL+jS7K 2qqXYxnXgOOS+qnE1Dypj1K7r8693FHJj/DtHg52mPOvZ2j/ppuNqJf2UkQVcTykB9yw ngqaNBSgb8p36IGjSc8qAzEulxtK7Xg75b9Rd6HJTmBXxEgjC747Ci204zdZQbhOoSnY DzgQBMOiY/yb/kXHrJSwZaZEdq86MkgbduhxBPmNWQhOgsPVSHCa4Rehuz42RcFD804B kTWQ== X-Forwarded-Encrypted: i=1; AJvYcCU5O9MPGP845wrPZYFFZjpYl9FnnfMujBePIqbuJ/L9Rl+rlHC16LgE2B+J0KjlLsESJz6sBCJkafMq@vger.kernel.org, AJvYcCUYg33Rqv2omDSUAJYaJ3vesd2lxD9B/YhYKysZvOdksRBUikIDV755OJX3dCqjonGVr89wmpGZY0alHvM=@vger.kernel.org, AJvYcCX3tKVQ64admYN9i7dd9u8FpdPJYwTqvrd9zAfBWcz4V5futZguid7QJueT1MRS80HFTaKj/4n74XneyScY@vger.kernel.org X-Gm-Message-State: AOJu0YwhDl+epEY8nGFKdd6e9rzi43QBG5ke2aamIhCLYoWlYMN5go60 n3penr1SRrr4Pb+k6IQXeDpbf6cxJR4eQmSXk7xC5E2jin/ZM2Um X-Gm-Gg: ASbGnctrYdOo4PDoZB9GLHQRQAD/2kNGdjNidcnPUYAN54PlkoRk9gG1h6lnromBGjO VK7vdS5u8aJ3ToYKOls6VxUU3CsVI08usuSKxMB8oYLgAnvJn2SUWhfs/BgGl7Pn8KROrKH7EAi zpQyAZuOgqdRvndx17y37yERo9OWEPMckCs0Ki3VOyMKqrtW7Ug9jL4bVi7OqS396lZ7E71Givc OMtCopVEqdH50aygA3iF5IZyGW+mUWgEqDqCHhEmxmFTmdKjAN3z/F/s6CCCnlb50//xskcQsl5 2znZ6QZwPNY2w7uOExSEOxNJO7MpdZVAC/2SOwYtHh935H4z3FQkAmfDz/GJLQx9Ua4EjyteqpE rCFg38lRZtw== X-Google-Smtp-Source: AGHT+IED/onOHft2rPHj7P/YvFsG8POQPnZu5xLN77kWhDsTJIu+v6bIMkaKWALZpKtFgQACyFVUfw== X-Received: by 2002:a17:902:ef49:b0:220:c813:dfda with SMTP id d9443c01a7336-2210408f2cbmr20099825ad.41.1739577855604; Fri, 14 Feb 2025 16:04:15 -0800 (PST) Received: from [192.168.2.3] (2403-580a-80ed-0-4835-5a07-49e7-f115.ip6.aussiebb.net. [2403:580a:80ed:0:4835:5a07:49e7:f115]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.04.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:04:15 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:42 +1000 Subject: [PATCH 09/27] ASoC: tas2764: Apply Apple quirks Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-9-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=9131; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=nm0Fos7Ax5eQhqWRF4wek/2VBG2oWla/EzD0tetdZ6k=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb24N32LSrbHhcN0Wj6gbmxRLTI6kPjifyXmurWtLy i3tdMkNHaUsDGJcDLJiiiwbmoQ8Zhux3ewXqdwLM4eVCWQIAxenAEyksJvhr7B/qdWEae9lXZJt 3r37ubM4dPKz710H1366lOfH4np2RTHDP22l4MMLw/uPZKf4hGR2ZS2uVFLWL9YyavuV91ZB6VM pBwA= 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. 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 | 188 +++++++++++++++++++++++++ sound/soc/codecs/tas2764.c | 38 +++++ 2 files changed, 226 insertions(+) diff --git a/sound/soc/codecs/tas2764-quirks.h b/sound/soc/codecs/tas2764-quirks.h new file mode 100644 index 0000000000000000000000000000000000000000..67cdae90b766a9180dac375478060223f6c4e6b4 --- /dev/null +++ b/sound/soc/codecs/tas2764-quirks.h @@ -0,0 +1,188 @@ +/* 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; + +#define TRANSITION(new, old) ((new) << 8 | (old)) + switch (TRANSITION(target, curr)) { + case TRANSITION(TAS2764_PWR_CTRL_SHUTDOWN, TAS2764_PWR_CTRL_MUTE): + case TRANSITION(TAS2764_PWR_CTRL_SHUTDOWN, TAS2764_PWR_CTRL_ACTIVE): + ret = regmap_multi_reg_write(tas2764->regmap, tas2764_pre_shutdown_seq, + ARRAY_SIZE(tas2764_pre_shutdown_seq)); + if (ret < 0) + break; + + ret = snd_soc_component_update_bits(tas2764->component, + TAS2764_PWR_CTRL, + TAS2764_PWR_CTRL_MASK, + TAS2764_PWR_CTRL_SHUTDOWN); + if (ret > 0) + break; + + ret = regmap_multi_reg_write(tas2764->regmap, tas2764_post_shutdown_seq, + ARRAY_SIZE(tas2764_post_shutdown_seq)); + fallthrough; + default: + ret = snd_soc_component_update_bits(tas2764->component, TAS2764_PWR_CTRL, + TAS2764_PWR_CTRL_MASK, target); + } +#undef TRANSITION + + if (ret < 0) + return ret; + return 0; +} + +/* + * 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 811f4f54cc26bee05d717552c360fa50e7d6c7fe..4923291e7a62bd33f0f8a934599c527033feb971 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 Sat Feb 15 00:02: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: 13975740 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 1612D15EFA1; Sat, 15 Feb 2025 00:04:22 +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=1739577864; cv=none; b=KhoA7gGMNHoA/A8KD/320HypH/qg1CDveYaAuEIiTLEn6WNEQR8QHEIxBhbl3w08Ocl5E5NZNtf1+SJf3owiXc5o7MJ5THsXeRSEafzrIpoZkL4cuVzPUZss+rc1Lo+02En8z4OgiOxPvg+Wtbr4E3CS59lOonsJRPiE5cghfT0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577864; c=relaxed/simple; bh=BrsmtKrvFG4a0pRLC8ZE/X1V1inlAR3fYFVsN8V+8RM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kX05ZshfYexlr3/yXQnPBud3Sm9Bi9WvnJ3gp7QZtoGOkPVrBmOuT32YjR/LCKMBvR5GDCDCoOzacShsT6BnTWKkd/e+FBRMIZQKqvzE1mbvqO355ffoBXB1zd5YxVixw29CPm1JiQYaFP45S85rixKBLxF6tXJlO3ZDfikOZhU= 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=QjnhQWxz; 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="QjnhQWxz" Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-21f7f1e1194so66199275ad.2; Fri, 14 Feb 2025 16:04:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577862; x=1740182662; 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=ixZjGdAO8Dk62zg9tQbDbxW3/Bv3xplkaBFLbZEw6So=; b=QjnhQWxzK27+rKj8UwsTPAypCcTY3vYtk9sXYmNTB/+v40XtefYEP7sCjOpvRGxzk4 04j5PCw5nFbw0XjQUgGpze/sFOkzjWt2qYl3y5QXWKAmOZYpy77yow1ijdKwi/GQTfDO oqzG0g7B+Nf0GqpfG2w4f7g+ILhQxFtnYLKgqH7xe25+hfPVTM9rWAqQTMnWeWbRHjjY P+IGAzua+fPvwFHnVqkci9a9w+0Qz79KP0BKFWeelJrZrBZavsU27ZgqLOI4eEwi0OAC q+xXB3C80GppSB4C1kR9RkXitbcedj5iUjqk3Th4rdF7foc/Acdib6WWBQXE9HgXqvk0 RoDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577862; x=1740182662; 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=ixZjGdAO8Dk62zg9tQbDbxW3/Bv3xplkaBFLbZEw6So=; b=jLx+QDPLnOnRmM8DdNsRI3rnZE+QegXGqVK0JpQtbIjKcJijJVKupxIkeRz2qlXm+A bCnedzb5pqITXjvFR7nj75e0g/GliIH00Za86fBaDMEoIJBvpCadQkbpc/nytGMJL9E+ HtOtdrc1qOPUJisousdY59JMT95dXHlFEzVts7fwRFZs/b2Aj0pRf99xCikV89i8MURI j4by00c8pEyeHd+KwriMQwXOFPAAX425YEl70Zc7sZMagv0DJTTFoJ7Pl4MyTMVzv00o +iyVW1u0m+DiSeiyKnHFczabSGkKqvu5o4lJk41myyNgpdB+osjPJIVeSSODoNuUACeH 6ZOQ== X-Forwarded-Encrypted: i=1; AJvYcCVAACW8Xh1ocGcj5i4rbD5JlnR391K/QiKCcwF290nY7rsG1c/PnTvlhhw3XGQp96jOdXzYI3RT+MZxcx8=@vger.kernel.org, AJvYcCWd2BMZBTa3rWk9dT+8BFpsyVAM2BQIPNiIgmudzwYrQ4z6LkduYeP8mD/7dUtxCPMH5TpyG2myYC0M@vger.kernel.org, AJvYcCXf0rlJaUARNvwsP1RPXbpi/L5AI3UCcWU5+i05mDWrvTlwk4szfj6Fe460+YGUSUPCoHybGnnO5A2lYcjR@vger.kernel.org X-Gm-Message-State: AOJu0YxPQKiurJ+TtU1W5TTjbe5rSpZqRIkv02xAfmlNLj7/Duqs1ten 5QjkkUDrYi8WrKkV3LYS/+fPUbOePEnezIiZz2jz7IE3x/S9eqoF X-Gm-Gg: ASbGncvjifGuVm8Tmhi5ocXpITxD7ffJjxkAmAhY1u+BqOZpd64wzBzSc4wL7Pan0/b 5vUbH2tM6tOCTQkzhbUmABoqL3pubz+dfkX7ivxMHmzsZ+VsItWPbweEh7fzyaP2NtXqIl6Nkuy QqK4r4ma++Ny66j/oEUYzfhF0b6CZBgrcLAxpEvGSx7jOP74guutjjdwXK5l09CTK1NqwM7Q788 dZpNq/rNVJ1q/cboQWApZwLpkXH4xkvuBsyxP4oJxIzVhK+Ll6RxondiwITkDwjj1qEOxKY0LF6 oo/9S0tug612+DNDsRtA32q/R0PJ6YejnYn9nx/Xj2gq/LSTJcIwJ5hiS0kvzrH1ARKihUSsowj RmY45ocMssA== X-Google-Smtp-Source: AGHT+IFp1yZKld9F0Cpx76Y3+E+3whJ29wQruICe7YSErFWEjmY7MpEWjhpNNumZxM14egj0CnHZwQ== X-Received: by 2002:a17:903:18b:b0:220:f1db:d96b with SMTP id d9443c01a7336-221040b134dmr17009285ad.41.1739577862428; Fri, 14 Feb 2025 16:04: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 d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.04.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:04:22 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:43 +1000 Subject: [PATCH 10/27] ASoC: tas2764: Raise regmap range maximum Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-10-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1112; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=Qdi6b++lP5KdcPGK1hbEg+oAmtT+Af+O6mSzIrCVfDE=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb24r4Res13B/l37UuWpxS+cuA25v79taiw2ubD4yR dhAePGUjlIWBjEuBlkxRZYNTUIes43YbvaLVO6FmcPKBDKEgYtTACZyZR3D/7CaisebP+xSVVz0 p/7X5inzD647WJKY9CBP5EnWcqkMDzdGhi8mH45PyXvbqv7h/KOFZ1ReWH98nfvozZ2Kh3vO7nk U85cZAA== X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Martin Povišer 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 4923291e7a62bd33f0f8a934599c527033feb971..e32ac441cf3cfc8fd8c6a1839c68e84ac9347150 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 Sat Feb 15 00:02: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: 13975741 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 B5DF63C14; Sat, 15 Feb 2025 00:04:29 +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=1739577871; cv=none; b=sWQMTQ0f59TDT+xp7cJgsB4Y9CQiNeELsd6E+siBBrhp7gXc9jkREaJZkw77N2h0Ldxp7cuF7XLUSFS8Vlze+WyEeWc8ndJ/wGWjCUkFEuPE/IRA1NTj6swAI0ojdGHllNGZmYPQhQEQQ9WCQJ/bpfm4Ebvn6n51AkkGS0EVH0w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577871; c=relaxed/simple; bh=pIT8fa7AikE5hQoNF7uQQTf0quqyppsCvMu4hB34kEc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LGx76S7UQehVx8jA5j27Rx+i2+9C5n5bDON3qMrd3s2JIJIuqjDhiUEB2L/oKsLaVQBPVvdI5KlxP0XdJb+ymyDjp5Av1Igm1hw/g0jMJPny5VNWD4u9hC+uon21M8IEJCKVTvEzCV7ekHAlrUuaoYR9rdDDIh8rJ2/4LCMKnmw= 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=lIdz2gSB; 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="lIdz2gSB" Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-220f048c038so21035605ad.2; Fri, 14 Feb 2025 16:04:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577869; x=1740182669; 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=MCWqE63NtboLaDF6y6v1iT2JtwVZeKCpz8kd6RHpgE8=; b=lIdz2gSBZZjpukafVHD+RZxBx+nengMzR8VAUiR2jR4+dSWRdxSiJjmUGpnJZuVphf COkq973InQjf55omG3T8HdpgtK/aNCq9OMwa0yF6o0SIiq9jkbBYrqET58n10dGnEqjI pi2e34PB1g8+80Eul+dFiHe/5pfzB39D8nuOEqp2Kq/KOK4xxvsgWdWrTGbs5Q//HF/Z Uaq1Z01kRxi36J3JbWLCJugHdJG8qwqG3fqZGQahZR4OtBH+Q2lbZlK/is9EjbBffhZ1 H/r5q7uN2gsmWsqbN0A+qIS5HM20mNtElvYa6NeLEIFyd0uCOxCL1nngKJwhdNGEnciE bVsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577869; x=1740182669; 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=MCWqE63NtboLaDF6y6v1iT2JtwVZeKCpz8kd6RHpgE8=; b=X3D28vIuKnH9kmgkjwRBQ16CHtRvh6CZZivfPekXbfFPjvpQELhY7WNxgMi8/QJ4rB 4mZtrxpvsqmCDP+KZuPCzF8klVKGgxzu0fc+PFn73q5gHEWiglI7G+ccCWIDN4ku2Yfc hFWf5iSX12Lg4ys9RpeO38pOALVgQ/aq8zDa3FzqO9jkPQKQ1rmB8y/iLpnULRQBjVWY DxVMORikMQ4g4q2iXd+IuwzfNbIf7Yij2NVPP19ff56dOCC+6OjCiC0ZVP3EbWeuyNTq lhcZNX9U9EkMduwLxmyBU7/dz3qFPa67ir89ZSFVcfM6QD7Uzk9w1orgLIToRAkRuPbO DN5Q== X-Forwarded-Encrypted: i=1; AJvYcCUPUDyawNj8Sf8P8nu9mgVJ1X8sXoq6PvjBC2+E/z1X06TeHrEXbUUxlbaqHfhSW154U03YjkxicJX4@vger.kernel.org, AJvYcCUYwpaB3uEZUDLjjDfm6CW7+nbK62KLBZs/YxRdFRDC8FhqR6RLnYtz9ZlsdbiV0LvBAuDfjZBg+CMehVE2@vger.kernel.org, AJvYcCX2swYCcuIkVW2jJTZa1JwcXnS9MQ/kK78+F4jzm8vuyarMgftUPcKsoKM3CCXrQ4KrIiSo3XOCs10brrs=@vger.kernel.org X-Gm-Message-State: AOJu0YwnoEWTybTz5FVAynqCWF7klriLNmnwJIuvd5LMz4+Fskk30RVS Wehtm+ja5ltYIP4mfOiyiyUkLy5JX6NBTeV/ONk/ncFUpfVRlKJF X-Gm-Gg: ASbGncu4oAPKYVFv2hQ8y4AEN0CBHvSMY2Zh81b4Q8EOcFX0ltt593G63R8Bb5HLy7L Dn4NRNGKTli2qC/hdrMhXMxFH5WrIMQSLIxL9kozfNSkbnnP8W8I3z5Gq4sTTF+gRx+7eg8YxxK q2ErT+TwEW0B4HAo6FeBeimwvMLFAV1hcV+VHh6MMsIemoqvvffZbcqSqB9jf+VQhSPom/8xPMG IeFcVIkJuR/TiyGd2pxz+sbeuHD7eFx3bZiSHJqa9jHP3NUZ+kzweVezIptA3jjyLiBXj2YXPDi vRyDtI3iCVWb8urmmh1DlVBC1YkUU0fklkMV7cXnL1q/xs492iLHLqu9so3AVVRabH/P3H7iIie zoKle+AGWlg== X-Google-Smtp-Source: AGHT+IFzYjLPU53Ebp4mx4orGbzMQ0X4WS3WUntmgSSj9qzkpka8VWRb3IebUhrznWCYrQjGNWVL5g== X-Received: by 2002:a17:902:ecc6:b0:21f:617a:f1b2 with SMTP id d9443c01a7336-221040bf7e5mr16193365ad.46.1739577869208; Fri, 14 Feb 2025 16:04:29 -0800 (PST) Received: from [192.168.2.3] (2403-580a-80ed-0-4835-5a07-49e7-f115.ip6.aussiebb.net. [2403:580a:80ed:0:4835:5a07:49e7:f115]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.04.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:04:28 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:44 +1000 Subject: [PATCH 11/27] ASoC: tas2770: Export 'die_temp' to sysfs Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-11-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3064; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=fru2c8FvUJxKC1tULT0SmQ2VuwwPHfRZtkjpK3J6OcE=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb25TL/T4fO240YGOXIeakAqmtyxG52YdWzNF+IOs5 EKzrJ7EjlIWBjEuBlkxRZYNTUIes43YbvaLVO6FmcPKBDKEgYtTACYSrsDw32en6bkDQfkXdl1W uMa6QPe0w04jR965F74daG7by+DxIo6R4Sfjm+mG0kKHNuQ2LZ1YFnIjMPz/vUOpSWd/CCTPXXX OkhEA 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. 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 35a4d5a4a3e0cf4f71f81fd59f44f075c59cdbc1..9f3588ec117bb8ed0a6f2bbe5d7dc422862f052b 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, -12750, 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 Sat Feb 15 00:02: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: 13975742 Received: from mail-pl1-f174.google.com (mail-pl1-f174.google.com [209.85.214.174]) (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 AAECB4430; Sat, 15 Feb 2025 00:04:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577878; cv=none; b=j7/WvcdiA3i6Mj/Z7gbJKzc/OprPk0MVn3Sbobs+SI/anULA6oMQ6Pcb1Dqdyv8RDgk8MNUdZ9YBB9yPp4eJsdwdqi4iTQQyHJzrbbr7/TOB9l9lM+fLbPrnrPYhUwmIhK4rmRNzb81Du/NcBvrZWuHohbjkd1Ym+g2nD1okODY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577878; c=relaxed/simple; bh=Zuc1I8TT4ZyUSdQ6djt01chHpoOe1TMWUTTGeSumqHI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dHbz6M5n1+coln8qSvw25fcq9Lx5o0R0GtXQQW3Hh2Ed3A2pLvDZfS139xktixuOaSj22qkMsOQs6EJ0z0WcUg7tdbxCcGiK4PPc/lNA6zDcqnRTtE+ZB4ckTvm+w9F3hb9ajM3iChUqSvt1NH4xuSav+2vNaLwbx9QEgXvirm4= 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=ZfVPgSNi; arc=none smtp.client-ip=209.85.214.174 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="ZfVPgSNi" Received: by mail-pl1-f174.google.com with SMTP id d9443c01a7336-220c8f38febso48962395ad.2; Fri, 14 Feb 2025 16:04:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577876; x=1740182676; 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=u1uOScahEEFhtiWZmGcmum0wyFSflQxWR2mBa6Jo9Q0=; b=ZfVPgSNiPPd6vAwBS7Fn8n8Dz0IgIQwcGKt2RCkiot9vk2AX3Sha+HwAxnHRfPQqyP c/RC7P5J8E/5beEeYan3TRktXSdDuijBC3ycYBsEP4WbIEoMzxffW6YWtDxrcCsL6VeZ hcfOm1Q5udiNHPRXy5S8ly9eIOZH4Oz083XzL98kHZ6L8V1YGPBoJ+QGgrGNHoICLzuN ydLme6Uv2halJ34A60FHzSYeEWskDwdzQ8kVRp+Xz9tOhQkgmss+sThtNLORy/aTNDkO 4C0Dyhu9FjS98PWBwnqMnHZttFIOyhIRjH1qXQNZa6fl2of74JsW1tn4pEM10fsl3ovF Nk0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577876; x=1740182676; 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=u1uOScahEEFhtiWZmGcmum0wyFSflQxWR2mBa6Jo9Q0=; b=IZvRgCjC8dv8F1Az4fiuqo4Y/aGENVkR8fiMu1BX7kJ9O1iQH8zlLeRV2Ur8a8LoA3 2kr6M+mDELL5AqoyH13l/VI5R+Jvn6bzdLp4tnii6BJbbX3k27BZj7HxLe0ChDZcJkDk nk+4Ck6uBBOfCwV3dZSkhZY/lBrVWbYHBa2rcj/SQUySLf+rvQPIME5+sADY48UvjSBE fEhBfFmycGEbaJz8f78xcTwGIPoGMipROuX2RnmHNy0fs8V5MbaujLDWyHwk9cFY9WCm ZcUj+CdsTNVVPg7+E+R9qaP0mrurBsLaLZ3b1IBUBgEus9Aef65wDvMzDjySfgYrEAcp U6aA== X-Forwarded-Encrypted: i=1; AJvYcCW17laguxHozu8Jg3q+u0O8p9ilMFMmgx2K2mJHJQyfJhYhUpB1eZFB3nArOJHT2jbNkFYAjFjHkqAa6tAE@vger.kernel.org, AJvYcCWQBhLEwOan1W4aADR9SlhQeDuh1uEZ70hagz0W8Ych0s1kfuzQk9sqB21rn5YLWKWklS4vUugJ48NB4co=@vger.kernel.org, AJvYcCXbgtaXhmKzF/I8f1qJS1MJZcFsmeT6Z5bLu8gjf+rtU7mw4ml1x7hy+P3yyEkF0XSyKyNb1+NO3Iga@vger.kernel.org X-Gm-Message-State: AOJu0YwLfUI2/d1r3xol/sXNCPLjdjnbwLL69zk7LOtBAkvkBIc9WBeH 22g88yWJfL3Bv+MQ9BrMXpRxWGYhG3LZpNXCekulH4BHjOFYrnes X-Gm-Gg: ASbGncvTTuyS51UayRgiqc0lMWLN56qs9NmE4ph007I0H/3WfSVCcbcOyHSbqwGoCIr hT9FOv4bVTGluax0CSsbywN8x236vhVNJ8ay9SxHVIxHLyyHtl9N0gDbGjcw0dduWZdJKWyEUhH TECljuAIoo6Wsj80txes0UiTg/C2KSrZ/xUWAHybryenlk0WOE/s3sKmPq6iED89AV5wbEHKR8U 6PgiO3/mQvoCAnB1e3cfR5CIGcz7VNQrmaSuqrW4jq2fkyzY6xnsWnRP0hH4rLN1HGiKJEFBxJS ToIELgQ1aOSwyLvGMY0yKB+OZ5BOoxekWRrUvsZ3DpvQnOGaQgwb1FC2ppX0LgfVl3ZlxxW79MR ZQmUzQKF8gQ== X-Google-Smtp-Source: AGHT+IFM0dkXeXbf5JFHi/pDT6Wk/MrMpvxLc0SbbjSaYemzUXIi1yvFx1pgJhmq4OzzUyfVzhNe/w== X-Received: by 2002:a17:902:e848:b0:216:31aa:12eb with SMTP id d9443c01a7336-22104064cd6mr18187655ad.31.1739577876009; Fri, 14 Feb 2025 16:04: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 d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.04.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:04:35 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:45 +1000 Subject: [PATCH 12/27] ASoC: tas2764: Export 'die_temp' to sysfs Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-12-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3404; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=Y3N6Dh3kVHE96LUsCuZ6vzwsDaQ59NOokhGRMET8DmQ=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb2479WdKn0LDY5GCu9u6tsuFrLDhvjjX6snKhxLCp 8XeP/sq01HKwiDGxSArpsiyoUnIY7YR281+kcq9MHNYmUCGMHBxCsBE1qcxMqxaI3fLcNu3sOyj nuxXUr/I5q4/dXm/6f/EJxP2iP6Zt3gmI8NUH6fex2d/GTXFuls8Tgxj+fU08bS1fseDDS/W/pC 2jecGAA== 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. 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 e32ac441cf3cfc8fd8c6a1839c68e84ac9347150..25238d3721a21d5af8434490acfdb7ba53de9ce0 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 10ef7d4a490e1dec3ba9c824479a6d35ac57f33e..dbe3f7fa90187919b017eb2d59a67cfffc222735 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 Sat Feb 15 00:02: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: 13975743 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 BA2F94C8E; Sat, 15 Feb 2025 00:04:43 +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=1739577885; cv=none; b=QCRt7oC1Y/M2W/w/ndwT+QaomEJ7l//u/Fupzn4j83oaBd3mwqzt9Y1JvlWq/dC3WwYKxHksJ0GNYvm5mEzur/mT0LcWn5aljGDYJJLtc0IwPkzZ/Bgynrsgde5hVFSV+W2nJ/vJzq4Djn/CjQIdDOnRmWVT7/mQbhZz+uofs44= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577885; c=relaxed/simple; bh=avQn/VhlgQeahgG8tI1AA4uleObwB3TDgNlHt81617Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gKGTZG0+WACMlIvXH4SLAmV9OtVAlN0qYEQWFR9iKET4XgO0TMI+9AyJlEwm7HkUkCmRpy9BDwnknLmI4Cn++/UKzuf3qyjcvecLPx1nbAay4j3MQntcxd+8OkCSRyS+n8B5wIHvQhCnNR35ly1fcqQgzvqqICIM3m9adM2hzyM= 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=e783JxQZ; 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="e783JxQZ" Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-220e989edb6so41409845ad.1; Fri, 14 Feb 2025 16:04:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577883; x=1740182683; 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=5+dZdn5+oQsOB5+cSz2r2GMKgGUJjwVauG7gsEGMQik=; b=e783JxQZUGxEkj1xBK/G4+uiFWJCpFyn5rcBqHJyI5BJ3IiirXLGm+5Gu9EIQiVMIS D/N+ER+yCM0FEmtAz3sO26peVZ6j+hCDFLJbUqG23kkXGvZckleqcIYQAQEpu4NliVJk 6sYx4p0cZEABkuwQGQIC24ku7pvcsI8aGOxYKCNKCH1nQykg1BW7+RcnPVjMaKnPJyZC WyuxJJ0HbAu3jvRtKF+81ag/h68Lgenhk7x2e9Wt9qhepvPEFQ8hvGNPSGCWJmCzqabJ pDjeHvAkP1IYGcVPWqjq/kIzQUXaZuDtll7DZC/ssjKeDetfj40TJrFBqIEa4JW1wM1K /jzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577883; x=1740182683; 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=5+dZdn5+oQsOB5+cSz2r2GMKgGUJjwVauG7gsEGMQik=; b=UmgbP5tGxbfmisKFqYSS7QXlFIaA8aiYuF6+a6mxArQJBKQQwjY9G+QJyQTzFsAeS4 D9ZOiWEc9E04JHLBJxLKdcQT1QMdcH4UCWgsaZk1dlXjnZMzcPphh/3DW661kAdxEvl0 jkUIqFKR97RdtrXRdLOmblrRIYvnBZ9utehdw3zBZdD0D8ntNs19ifHtZmJL9Bj2P5yU X9T9ZwgdUf4UUTpplQaIEtbke0yIvg5bYV/WD4EssCUsroF629q8tE6klpded+JLd64m IYi093Oiq7rls4bjkAbip+A9o4q4p2AZPrBcoBchxxA24c6mjwYyDf1TJiwaZDksnh9+ j8qw== X-Forwarded-Encrypted: i=1; AJvYcCWWH8yMs+RYL43JO9r2+sEFlAWChu+1IqRTq1loa3BscaJezAEaDAg4gTKergV2eX0PssutaX7FzOtj@vger.kernel.org, AJvYcCX1zDgnYVuOchEghO/4xrnsJCtAuOM6phocKKAGeKJNb/WMS3kk1LoyqvfT0t/m0RwdyOXpCRoUmZEST2QJ@vger.kernel.org, AJvYcCXnf6PbKryXdyb5hM7A4sVQcBAss+K6v0AsHCry7pGQZXCOLePG7ARoNa2wSEL42OXR+8FwLMEhQdwsXiE=@vger.kernel.org X-Gm-Message-State: AOJu0YxX07bxVkcXZOgSDPBDCMivhWb6eP+JlojUcdsrhVwGsq2/+FM7 b8/F35aTXwaaWtfuBddrns4CehziAiDNcEAJW1t4pqU4UPLGMTk+leSK84HA X-Gm-Gg: ASbGncvNdhruIyblxTDzDDNYa8CD5VxNBvwTFRL/zm2icQDzaj8xpO2xdwYV80zRh/o OT28SN62Meo8XdujcBEQiHLJIVsYOxxZed8MgCCR5vnevfEtCTbPprXL2DVNMIKDDaWZ+d9axaR KuBkzkCMsylovXf5LAU9aHUrwBt3H8/yhbC+IKYzuPZTiTjVB4ntWtWLlLtXKMkWb754Zfs5PwC Oc8jhoKIsIpNe2+eThooVkUNgjaKl0TBTaM/TI7jF9prkDx9zEAA0Xvh1DRH70GC7/mWkPxONeT r+81CxKDytadul5JcU9CmihpUtYQyOObHjLwnz1Yd4T4Oqmy8Dl0PLZJOtWqZxvscTIzDKmbBVO w2wob8fFFjQ== X-Google-Smtp-Source: AGHT+IF0A/O3P2fni+IwGOThsKRu0xADtqt5QnMWSAbBMMUtl0QHjLZWjq0YyFA1Fr4p+LAcC80Rag== X-Received: by 2002:a17:902:e803:b0:216:1543:196c with SMTP id d9443c01a7336-221040620b2mr18492975ad.27.1739577883025; Fri, 14 Feb 2025 16:04: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 d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.04.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:04:42 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:46 +1000 Subject: [PATCH 13/27] ASoC: tas2764: Crop SDOUT zero-out mask based on BCLK ratio Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-13-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2907; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=crv8gDizT2HlKiCBN8WV4dDNDnFJ9336ZzKsSQapktU=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb24rTr8gdvthP0NvMDdj9ukdFzSjei9pp93kKtkhv tG9Qa2xo5SFQYyLQVZMkWVDk5DHbCO2m/0ilXth5rAygQxh4OIUgIncsWdkOPu/rHDBfesYn+WP mWLf7+Li/T/h4IoK3Yuvps9YV7p90n2Gf9YKm6+sWnc8KuJoQ3RrbYm+UAbbr/zVt5stzJPfn/Z uYQMA X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Martin Povišer 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 25238d3721a21d5af8434490acfdb7ba53de9ce0..439e5bbd372cd467966ac9cac1c92e3e300fed54 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -375,6 +375,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; @@ -506,6 +544,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, @@ -658,23 +697,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 Sat Feb 15 00:02:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13975744 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 8212D8624B; Sat, 15 Feb 2025 00:04:50 +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=1739577892; cv=none; b=lZ18LJD+mRz9mKvt1vZm7KldjT3407Z3YhH6F7ZxYD9E9gKdxRlJqkibA34SmkNyD8lz/9S/4Pe0meat49I/B2WSsjtF1RzKq4Nm2E7dQVknC09m0HAgVidzMvdQT5odTu212RPkDmH80K+ECP4a8+zvuPAYdVxUhUcQD99YJhI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577892; c=relaxed/simple; bh=GEjShVsU6DYYV8fd1pZBUBYtNvYtHElztF/5Q8Jkp2Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jQryAXAYH1Qe7UInMOWi7Rq8rwWJhRQk87OGUkufVYK+n7JDCDAAiFHiXbwAADs6UUCfnSZuhJfUCVnCP1ITerhmr0+agxhjoTJFRt61HHSWcJy53gFJuJlJg3LpdlcjXtJ9SrA33rVpf9RghUrEXpHy/e9MnvaS9ejnnj4vVWA= 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=c7vxy+0M; 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="c7vxy+0M" Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-22100006bc8so12068155ad.0; Fri, 14 Feb 2025 16:04:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577890; x=1740182690; 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=UzvCcM8dqvEuWNOieqFdaI3hJmC0KYxoNPBN84yDZV8=; b=c7vxy+0MF+6wVUoReryJKiM3B/PfhwG9IEdZFlBDelWojvmKuvVnt5XzqhfyyfGdtq yNS1Mieoi66Md07PlvEnioAlY5Bky6YK8RP3C+d96NWafqUvkOpdyn5rRjOrMfyxePN5 E5kaMdmTDgkXxkBnLNdMyVI9oE6Gw+xjFKdXnckZfIfXjotr4H2WqCND0lIUqtslmpAE 5ds9FdB8BXLPHN0zykDSAzxMQxaJEnya4q4O77JBNNHV5DUdAu0/o3ATokl8Oa9Z/i0V 3Qv7CbhsZxti0kci2ekUPth0DjPWWhADJYH9AnBmIK17RzDMB+eX83W+SzrdE60j7ktD rwpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577890; x=1740182690; 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=UzvCcM8dqvEuWNOieqFdaI3hJmC0KYxoNPBN84yDZV8=; b=DSbyI2NhoEDR8phmJlMtORRR4KmzcR4Q9KDwKFJ+jYgdPcrGYPVuj2ZSlSeLneTSfI H2+vRVBuWNtDGnAYhzhBqBHhLPm1Ved+3F6cnVIgbxA2hQl4IYRnUY6SC37TZi/RaBEw wAaytQ9ZQIV+lKLl/eGReYqTSttLkCzm+z3sns/Ao8uG7zHnVLMOtOT57KqxqQetNBtW OQgWDduuJlrraWW+FRXhgst//OwdsJb5hBrRjJsQa0axZrKIjyzyLjUJCU8IIqG7+VZ9 o1OYq8u3l7qqe1g+luQe2GULwAfawDRbdDL/6Sn7SJC4x/FtJ9i5V10pKW3u8t0G0SXb g+3g== X-Forwarded-Encrypted: i=1; AJvYcCWd3DwlcuLvDQgOmxc7XnbPrK/+M6XPAd2AnWwx6VNmijsvF9eTn4goa9X+n501gptqh6Y0bUlDyXJRxiR+@vger.kernel.org, AJvYcCX++YE1UnmG4pvaLQolScyZO3e0cTGUcqexkQ8BcyIVkaxcLSOEMlblqJsonrjRLbjnYzWkyeczcaqW@vger.kernel.org, AJvYcCX5YlDit6YJd0QEknwprJ5FJ6MpPeiiUZOnRShtq1TzB87H4+efwViFSpSH7wrEwVaRDf0eCBpbBl6ZT0E=@vger.kernel.org X-Gm-Message-State: AOJu0YwbaBZZZ9csBEadC5k2PDOkLBGLdToPm4ggSS0GsUfxMVx2pJv5 PiAmpP4jlrmKg5kN8prj8JhWpYEaoe+VA5+CbXtthz5HfxirsZxx X-Gm-Gg: ASbGncuHqqoU2yE1/vmuuM4b2pdTrzdw3MY0MRg6cWMjI8afCnNmhZJfI2A8166gSQn wKp+rRW8DSDQnUfrra1AYCtMt1AXch/0esGjOTX9xvX3B6DXnFKXrv0DtvH42unmcWKQF5eh5mb H9+AfnreVaOv3Nhh8roDJ6/a1a/sO9N6D8kHca022jfjmRlfK1V01kUq3CVd5hldLjf+Hli8bHp +DG5DPVwJhpZSsVBiXPDI14YtY3cNTA7aDBvoNSgYU6lSNfYAWOPHarlvkls9TGIdKDx2hCy4lT hzNoOgDFVGyix34c+nhige0eYWa5ygVOEJkI6KP8R8xzCLRZWl27v8HsJQMHlZdjMg/trm2fPJ9 UkOSSJbH09w== X-Google-Smtp-Source: AGHT+IHO3Y92kWYCbxnw51YFmW4Ac9MQWalph3Phy48CYG6q0zWxXYVjG3+VpTBbvTYtaNs+Fi0OFw== X-Received: by 2002:a17:902:e886:b0:21f:9c48:254b with SMTP id d9443c01a7336-22104063669mr21120125ad.24.1739577889867; Fri, 14 Feb 2025 16:04: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 d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.04.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:04:49 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:47 +1000 Subject: [PATCH 14/27] ASoC: tas2764: Enable main IRQs Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-14-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=823; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=Yxab0QgYOU8S1cSF0st1NOwChnBkX/tdCsvBiQAenu0=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb26T0BZ6dqI0pElib/Fx+diFRetU4zz+L5rLmtdnv +ZUP49PRykLgxgXg6yYIsuGJiGP2UZsN/tFKvfCzGFlAhnCwMUpABO5c5fhD+eCYHX92F+2yhsr Ndv2Z94UF74aepB9rWGghVFzjK1BE8P/5LRA7v3bN/W3HAr315lRt0Rau2O2osxd+WVSBS/PqsS zAQA= X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Hector Martin 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 439e5bbd372cd467966ac9cac1c92e3e300fed54..75e49c85861b1eb6b312e8a455dadbbc7f54c836 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -660,7 +660,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 Sat Feb 15 00:02: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: 13975745 Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) (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 837FD136988; Sat, 15 Feb 2025 00:04:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577899; cv=none; b=CDHigrOREpCZuSnrF0cG1jYtEMpJ3dV6uZp3eh85uZqOKEra/uSyhn/qw3mNrExCStI3oUkGvs6j7Z2IqMuxx6hQz7gMt/4q2/A13/6b1ypqMa8Qk0AZty1qAuVzWQcSiRpD5O8u472OkOAzkTPLcqa6KOsprJ43gOK7kyYV2Yw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577899; c=relaxed/simple; bh=IgH2xciWZKB7uuHZHmdSRmIt01jSMO/zP2Qto0UovNo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PsB7RY6tC9BNoUtHWwW+k9g3hj+9mNy2ckZRg5/sqJhCk0MQfnbUcxITBLtmmn+Am3t5X3uWAsXgqRN4dXGd5Z77NxztZSadKTOPMomKoFUXhmg1vh/Ab8ztb1WGGIjFtFubEcC6Q8rxzgQ1AKE+KBCNAvyyKYjNtEKfmouRUu4= 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=jSFamHWF; arc=none smtp.client-ip=209.85.216.42 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="jSFamHWF" Received: by mail-pj1-f42.google.com with SMTP id 98e67ed59e1d1-2fa8ac56891so3856901a91.2; Fri, 14 Feb 2025 16:04:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577897; x=1740182697; 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=A2wYfo1Mtqu24Y79iekxONgnP5d7J5U5KCGS7O65vnE=; b=jSFamHWFmQRpWyzovC2+z5ndF9wb/qamLV/BaSgxM/SAlEKCpJMSCBLzhOzHKsdRxs iIVBSVrTSSM3m+FQcc3g8j82ZjcAjeEasfPricgMjKy3rR1DgxtHobUr048K1SD8IQg4 Gol+JSc6Ms+OWGsVp8asMiC2Q/vNyBbP5Q3/sbkvc+a8d/MtXb9ogxmc8L8zfGIZ8utU mbp1fWOC6HzBrju3esjH1m8PTcndsj5InOnB5lFOyo4OQSaVU8EuiUxmF15wRojn5BJ1 I+AM76JzbDxPfn8KzNHuFS0lBdJS5SDTKJOZPq2rJOakHwpDk7H86R3WGGtto7vznn5d 2f3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577897; x=1740182697; 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=A2wYfo1Mtqu24Y79iekxONgnP5d7J5U5KCGS7O65vnE=; b=ogr6fDhPvYH0md0MiVdU2tAPI3VNc00kOShls1yuakMGCkHXVwD1ZAKij6d2aXKNAJ uGxpA+MIySAT5Xh4QiyKBIgK+gfH2ZsKiFILUr5o0V0ibVfGtTimo3R8PI58wxETvITS Xv+69VvLlBahD/rjwxCH0zrDD4FiT0PCyn/fKOCGb6VUndAO7mqjHxAv9rYjWzLf0y8E 35PnYQ5wEf9moHnEn+WVXOkuK1bsiD6x5ZQ+4UlmlwsYqqCGRQkdFO88iv4tDB9U45mg 2xUXAiOzNCkZ29dnSoy8KlZbzcMVlfFmEL/o3ew8gQcTWfiK9dCQTknE2mKk1a/wRmiS yd3Q== X-Forwarded-Encrypted: i=1; AJvYcCUV8ZX4Sb4YEt7eM5nUoPqYxS/lk2T4mdp6Dfqok080WEuH+2DRAxP8OYh89PMEPZBLFJuPi3ErwDLb@vger.kernel.org, AJvYcCVwqiUyseJzy1h4SPuJaXZJW3Qpp4jU041Gq6xiJFlapQ7xgN1UGniBEewzuWiv5ZFRKHDvRxdGhp7FSiRV@vger.kernel.org, AJvYcCX9OH1xO269RuAh4krrNPGfVUwXit8uVz46XR+hl8c0WtpbIge9JyRIXYE9MlL7+ni/qr9jMaZEbEcRxCQ=@vger.kernel.org X-Gm-Message-State: AOJu0Ywq9xS1xUDAck4fnEv4NaFpvxPKnOj+9GSa8BxpIlVRLTPDknZd 4yS5mAfQcyNTb8PvP4P8YzFeDlhOy67yRgB9zTIot4H3LLZoa3Bg X-Gm-Gg: ASbGncsu0HyqzftO3ern4odmsR3qIVlzLLKbJcNYbm2/BSkHLoQ1lO0+nO45ahh46Fh W7SWlwyuU1pvzkdXdpVLjb5Qek1PChv3b3kLF0a1csKn9mBB9xuFAiMnzGr8kwdqwTGyA5WNWi3 xexovrV6ZfnMVf0R3D5gdIEC399wfhEMSG6ZPHC0bebEtuhJ7KO7LJ9WnVYKERdqGS7mOvL92HH QcUnrvRKIKonKOunSUQ++BiDGF9txOX8bmCQVfeiZISlALdBz+hzhdQGMpDC5Ev7kabJjfflAvX 0IINiAky4Y6WAFxwcdjsllc0aRGSlVTZ43J1Sp8e/LplADrKyO4RZzDLyDRorxnbzR05vzrjVmn mtFILxQdI0w== X-Google-Smtp-Source: AGHT+IGHKLIIACivpmlg0oNUyAsiJUK8vKEeoxPu4+S7wNX7g5x99bBs0VbS7loNNK94SJ5cXy8Qtg== X-Received: by 2002:a17:90b:3842:b0:2fa:ba3:5455 with SMTP id 98e67ed59e1d1-2fc40d13e1dmr1806453a91.7.1739577896696; Fri, 14 Feb 2025 16:04:56 -0800 (PST) Received: from [192.168.2.3] (2403-580a-80ed-0-4835-5a07-49e7-f115.ip6.aussiebb.net. [2403:580a:80ed:0:4835:5a07:49e7:f115]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.04.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:04:56 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:48 +1000 Subject: [PATCH 15/27] ASoC: tas2764: Power up/down amp on mute ops Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-15-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3190; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=RUoG4wMIIwA+IrEHWzmf6WOptdb8et5Kz7rzipJV6QI=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb26b6scZ/oSVZVFSwONU9jzJL05L1tnaZHlnhgnxx zs8OsPXUcrCIMbFICumyLKhSchjthHbzX6Ryr0wc1iZQIYwcHEKwESSWBkZHv92kldZum6lynWz pMC1jXx9a+UmPz10R3CpaXS8oo8FDyPD88a50UccZ4kZ6p56lLV4YdQhyVh2/fTjqQdFXDmfprt yAgA= 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. 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 75e49c85861b1eb6b312e8a455dadbbc7f54c836..2baa7fbb5fdeaf50cfb76a7eddf752cae2511329 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -194,33 +194,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 = @@ -233,8 +206,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") @@ -255,9 +227,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 Sat Feb 15 00:02:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13975746 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 5D5E713AD1C; Sat, 15 Feb 2025 00:05:04 +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=1739577905; cv=none; b=Uu0kJJrsTM+1nTLTkxGaWjkfLQDMrq6CC+56J8sygtlZL0ruihQQoVYvrwyckIwJvvCGhhoD7qFz+qi+XdrHyvcxAXl9xqYQW+KUPWyXXbbbVHTn5J7zTRAodR171/SGmPfWzXSzEesYTyLeEQ/2rqsm3TYRSMjawR5OOz5yaCk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577905; c=relaxed/simple; bh=uQHhZisqTXPTDYjiny+MKsSknzKa4qowB3Z1YfED8wI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EfP+4i+qF52XWWJts/xJPfISHAbN+Sk1B4lZxbkqAdCApe8eQUiveHD/XfHVfugkWJDM3ir8Y/FaDXfhy4iFy5sbGlXPTvYz/4j6GJm5phg9+h/imKbJ8QWcxWMHHTgmYu+2s5s9g4TGgckUwIF2/ta5e7843epwgQNve9lNXH0= 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=Qqa/pozB; 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="Qqa/pozB" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-22100006bc8so12069675ad.0; Fri, 14 Feb 2025 16:05:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577903; x=1740182703; 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=Yev+hy6AL0bBW7Eh6XqRgJcnN9d72JJJp00p8GxRNLQ=; b=Qqa/pozBzYip7TaLLm8Sad2dFdj9BDx2Lj56TkH7wj0GRlR9h0VR9u3XbJxlGFCexJ 2fz/KHvYcw4HRQcnfRwiWLG9eNmv45Km8C7noFZV0C1NGnSihyJHFJ29oFzjb4W6IVYp 69eKl2R+cyiXDlrswkahLiSgT7bcjqSGDeQXy3Wd9fZoYRYKzsY0/iOkQty+0QQnx3F3 0SLU7QvnvZ0kPS+313HVtmCglOdHvbQCJAty9sldrCVX21mRUanFtXlxJXPm79M05HFt jMzyrKkVtp4m33Kji+S6hNrJMGssjOoV7sCFjg4Ul+c3z6RihJRnH82MkzfFI5/H5hfR Z1Zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577903; x=1740182703; 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=Yev+hy6AL0bBW7Eh6XqRgJcnN9d72JJJp00p8GxRNLQ=; b=oIh8xI7Gpfj6IVZpY6QC+57CbrgvY8AzdPEdKoruRj3toFLRWqegiwykfLWp4zockf Gd3U0FUx5XG+VsMCnpTKmM/jnLZkTYU3ZQv4+NUMcBY/5zJmnaGttjscV+3afNWJ+o0J J5krjiLCMxKwBZUpZabuGp5QORj4NzoLscwddKQDs9IYI5M9c58NiaTvjKVd82adgv4U +0r3xud0R8yVoe4VwbSlmnlNhosr0f4L6nWhVFqWbavlSQhnR21q4p77DFerbLXJRRKD LbipAnq/Eu38K+HWlt8FfRY3ZD7zjgSdsYSyyhivSQmqJtgDWxnrnFRydx9I2oYzzIac ijoA== X-Forwarded-Encrypted: i=1; AJvYcCUgC6QPVHnQUgRrn5pbZtMs+SiRN+hxrrLsSWO90/h/2kB1KznMyUFLOL5/a9uOFxUpYh423XqUKtJJ@vger.kernel.org, AJvYcCVzbMO+VtP1gY3a7YkPPaPKMWak8KmTFi0tBCCrOTzFNAoQMyaAqA006L3Nitw15li9kbxQihBuPwtxv8XO@vger.kernel.org, AJvYcCXuFDk4xRGJ9Anq26tzV8oCLGTZeQT3YXovqiI830EZ5WPqgMG1dolDkGYfpWsmnHwm1OJ0O1Gj7+y7EMA=@vger.kernel.org X-Gm-Message-State: AOJu0YyfSDVUofeMJVWH0FoPukgHlOgB4cCQ5ii6Fsh1emBKOaygGMVU necheJbxEw7A6/Z/hecRFWiLAkGHrqfGV1+g/m7+523otwvSu+i2 X-Gm-Gg: ASbGnctpxlu45/iphbhSPrV2iKTYAnAeYdA/JknEtjlM245wmXlrQUvSHMULlm/XyLG 5buXGzOtRiGXPgF0rvZWYS6bCas7whNTOx21jJIqd2IdlKNrU/SPHT2fTalJqoXyJXRX0L5OQCn dpLPcfOhqojxuzPwKSgCZSZVYJteCr+oLD0g+R8uFt879GqzdyZUNdvxemMYL+unvVG25PDCa5r YKfH2n8eywWENqtGJ/XVN6Uin/X7g+hl3lHl4Fb4vfoomIR+3qAQdt3ClS6DgbnYIZb6cYiRD2j /HKxlUiRioofLietNUQUUSzRsCTgE/3I/UMbVGkHHoqsTR6ifgZ1m+3hFbxrgIjoEFAp9yyBxlN 2HpzwWIDQvQ== X-Google-Smtp-Source: AGHT+IH04yKNMACJp2CHH5fEcKIXFrsOEi1FLLdSN1hohfKFEr4W+plxgLqIoCm9+mjgHicsvBlNfw== X-Received: by 2002:a17:903:1c5:b0:21f:8099:72e4 with SMTP id d9443c01a7336-2210406aee5mr19980685ad.28.1739577903590; Fri, 14 Feb 2025 16:05:03 -0800 (PST) Received: from [192.168.2.3] (2403-580a-80ed-0-4835-5a07-49e7-f115.ip6.aussiebb.net. [2403:580a:80ed:0:4835:5a07:49e7:f115]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.04.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:05:03 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:49 +1000 Subject: [PATCH 16/27] ASoC: tas2764: Add SDZ regulator Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-16-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3974; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=GrvBw3IK7E/2W1Oos8TsyVPe07NNuzWsVHth6J13x2s=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb24/ya363ezjfsXizVeVAub/jqlJjvSs8Otcwvt9x g/RLWYbO0pZGMS4GGTFFFk2NAl5zDZiu9kvUrkXZg4rE8gQBi5OAZiIiBzDX3kZFkHHx8VTwlkv 8qV/EE+r2KVmvDs9cfKTHL6UN2xidxgZHjwUYa0KEr763H/JCw6JtJqXG66KPeLIDFm5/cJet/r pjAA= 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. 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 2baa7fbb5fdeaf50cfb76a7eddf752cae2511329..d1eb8ee30415e335adf8e14d14aaa207c949ddcb 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -34,6 +34,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; @@ -153,6 +154,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); @@ -164,19 +167,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 @@ -209,7 +219,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[] = { @@ -642,11 +652,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); @@ -721,6 +738,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); } @@ -823,6 +843,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 Sat Feb 15 00:02: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: 13975747 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 2F40013CA9C; Sat, 15 Feb 2025 00:05:11 +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=1739577912; cv=none; b=RCtoiZQsE8OsibRZqUf/2PFm8R3Rk4ZObnKbTyohejOMqf7BSD+l+29nUwHpdkngm4TpWSBlk0PM0UNuDcUkHo+SFE9ASJWeUNzJk4EKMhKftNLS5vkgAIV0TQ4Wo028k9gdLfOytlvLnLXLeNGru9XvtqOovtR8XgOg+ri0KTU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577912; c=relaxed/simple; bh=qrdHDdumFDDqJ0SZZmbMmJtJOOOmuZKYoWQGrKWzy8Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qdW32wFqpYJminMkOFHl2BaKFixgEFYE1VZeP103aAHB5EfK+Q/wChCJmEvYyZVQmRJ6jU6ULxwdSkky6II6iQwK3UGC98vsoD0fyrht+GBG3DQPG4eXZTyTK12OP9lo5sOpc6Rml3fDRAh9iZVM151kjIdJcb2uQmu4xycCaMM= 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=hAMjiDjj; 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="hAMjiDjj" Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-220ca204d04so35680965ad.0; Fri, 14 Feb 2025 16:05:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577910; x=1740182710; 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=zg/yh1Q3W91JaRTRaWlghJ3PTeHHtFr4YAjiGtG2cm0=; b=hAMjiDjj7xmECx6hrb95zofe2VfcjnktUsu9aVaTqxqvndJ5X/s/7IUaues2nh9OJu VYvr6MiswlT/8WQ6yJ/J9iL8b+yNVD2/D8Qp/jW55P/QSIg7CI943VGqg1Jc0qk1JP0z 7Ep/m7ZdZhDCepzrp3q0n61ASRLJbjdsX/U58jn4AtFqzKJNVQOpbM+6bWZpnGT9DJdH cVYPAfi4Su+VH1fst1sPSE7gEY84g48Bti/zSLbjTRsFg2L2/gM06O5i+yl2t75P2zAa yA/lC/3DrSoPqOu4vytaigOmHIrw6QJz7vkowowlTg6/sc35i2SbSKZEuFZIsfOEvdrl BAzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577910; x=1740182710; 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=zg/yh1Q3W91JaRTRaWlghJ3PTeHHtFr4YAjiGtG2cm0=; b=wBMqHOsABkUQ2KQ/nt2UYnKBsOkA16roVa/kP3bv0H/dAKyHkkylF8wN3XasnBt5sx xKcVGkrQs/LKvsJlAciaYGyaoK7m/8bEfD9PHaT5xmYPSjUJT79PC34JRAOnF6f/uilx RIJp/zseYzRi73RyqMndBcmodyZGZ525YwTN31fhSbBA7VBlKcdCXyRANmVKNvlwCjdh iDV7rubnUYADM3iBr96CTL0eBjhD/1M4x6JXwARZQd5OfW6Jp0GnrRW15epCPFj4UHR5 K3IOpz7AFnTwHZ+ES8hwIO85kZTTcWZPhQDGV+LK/Oq3dYwdUMps0cmsG3bFaVwMaow9 j04Q== X-Forwarded-Encrypted: i=1; AJvYcCUOvonG5tNAVBoMazEO3PdC0pVkCcfqmmUyGX0LJ0dMK476Q/x31JyBJ3TsEfCJPKFKj8/2ltyP1DP5wcI=@vger.kernel.org, AJvYcCWoRdI9z7wLuRC5JflvYz07RcjqxEg70BL5/A5aM0hk5ucEuy3QRdlp6ZsLFUi/+BJ4f7s0YAbdBiOJ7KXS@vger.kernel.org, AJvYcCXMKUSOK4I0hUOmsmZsfWCBY0CQ9U5Z7Pk97lKuuakRl1rvUHeFf5Z2N9yb4Lk5CYeziT1aFYn2zeCY@vger.kernel.org X-Gm-Message-State: AOJu0YxEkTMLsxIfmIn3XezghiWkQud/akzXj75IQOibGeIkTyUaJ8s8 wVGVKWugWKFKU/6zUHAiyj/FO//0w9s/OwJgWzrFwl4Dfh3lQM5g X-Gm-Gg: ASbGnctiW+FoPlyf6jaA24f4AE6R3ZgEh0+K28PRFxAGZ9WpxeKTYRxVIY6gxsuZqp2 pOy5jrOMm5rBAo+PisQEjrPnWyhdjxJtkypW17VKHJEBEYegkxWHeCGWTztPgNYHBTGUeWbtoHi /YWTc9Xa+SVhkxezXl1/hZtATby1FQa/lhktzM7DdI1S7D0/wB0m23y5QXKoKzzsCDzFx6cdocv McAd//pBABAN9JYWkxh1OaCWVkkzWtnRWqioz/bq8eSKPmZfzlxFAk4uUTLBaZ2rL7zZI1xSamK necMVSr5dFxZ+qwlpEfDw761K530KL7gw2XQ51u+2RyLeANA3ThKROBhSX1msq/zYeGMaJMXU2F RiQNuP0KUEQ== X-Google-Smtp-Source: AGHT+IHrsigKT7LpWl1KQKXia7FZvx3q49hOJoUjF+arH5gfvsW87Gu5wSgR1gXBYRimubCS+5z4yA== X-Received: by 2002:a17:903:28f:b0:21f:85af:4bbf with SMTP id d9443c01a7336-22103f0d484mr15162445ad.20.1739577910471; Fri, 14 Feb 2025 16:05: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 d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.05.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:05:09 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:50 +1000 Subject: [PATCH 17/27] ASoC: tas2764: Add reg defaults for TAS2764_INT_CLK_CFG Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-17-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=715; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=z8NB5K9sZ3BbykPadxZ0GdwwAkJwiu32NmFXGmJTVY4=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb27nchNijTT658Qhkvibd2pFhji7Y8Ck1RHf/xf/T s3S5fnYUcrCIMbFICumyLKhSchjthHbzX6Ryr0wc1iZQIYwcHEKwEQeSDAyNDoKHd//OXi91b17 d3dc5e5SK9bhFVY2kNKLPe9m7lD2neF/QdSpwuuetwLv5HlNNZVqdYxsbb7c8viwmdKbZM0F3D+ 4AQ== X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Hector Martin 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 d1eb8ee30415e335adf8e14d14aaa207c949ddcb..f8cf64c1777ad34fa7a42ca5316ffb980c63be29 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -799,6 +799,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 Sat Feb 15 00:02:51 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Calligeros X-Patchwork-Id: 13975748 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 D6ECD2A8D0; Sat, 15 Feb 2025 00:05:17 +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=1739577919; cv=none; b=LkofittmVDC4M5YP2jZCdDm9oeu3QAd8G6/FA5/6pw2w1zoZE71m9lp3mE1AegeAp0YLE6LuzrJLJdQIKvMrIhojeSsCwFoCyOoi5qLAcaJuQ9NFrJ+SVFWLVSIxKm1cKLFRlUngjrwlLNJP9vPCpa0/PlAo4nHOHC6Oix4844A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577919; c=relaxed/simple; bh=tlnUo/drZpD4RYOQifGyN+9OXzAuy3Y1DCfVThMu564=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ac5BmLTdQq+0YHJDJi21TOfOoNqesVM0NdUAa+7/Tmb9gk/ecb7SqI2LkrfEDEVMBjaeBi3Q+gnBU7wX7sdbKPzP9LxOKV03I9jCaO03n7kXpeBcepllxFUv9DLe0K3hhjOw7UVpadCtewQ7HzRArHuAn0Mx6prMYh3nGqFWi0E= 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=DNimmc1U; 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="DNimmc1U" Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-220e83d65e5so35554235ad.1; Fri, 14 Feb 2025 16:05:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577917; x=1740182717; 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=a+lScSJ9LmSRe7+AuGkyAbW9KCT1yWsEyguU2zwFGC4=; b=DNimmc1U3g0CGxUna0ugolLL1vpqCU4+d1YSD0P+KYYFKqx7A2+jLnAGQTVJz/ZzRR iDi7K0GjrtRnTolhfwkxPbO22A5zm3vQ6ExCYxNa0LkZZL8sUdg6PeyBR5e7xsAx9MSx +RK0PMq/sX0Mt3MSCtmtTd5m1WhLY5XlANh+obBrNMefdSJCfBPFCQQqBV1KzdkCWOo7 hlKDrIHnQGX/BxPbnTjCf5CliKuh7PI+PACq4+aKOw9NLVaQb3BErppJCUNTgUQf9VDU mRYILydA1zSo56rBALd81jf0w9TinS3aNEF8yKyRJ0+rR2xDOQJKLGoRT7z+54pbfs6f v/vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577917; x=1740182717; 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=a+lScSJ9LmSRe7+AuGkyAbW9KCT1yWsEyguU2zwFGC4=; b=o2cQtj/cSZOBbrpGcnJlLvVXw2/mxVjCSZhmIM7bv/z0G6cmY1rejbVbsm39wwfwHE lbg9Hv8/RS6PfMJr0nR+rrTrkSNLBv9Y+Krsm9dr5b50/hG2zfrOqBldQp5TqVKVcbOe 2x826iOdswW+oqiyYlKbd41WyvKWrW6LdV57nLg0g+KQDyZf82wuiOxTXEbnGMScMyH6 SjIxW1rTcsmPMcGVVIikVjn1vXu57Jj9RDxzOJY/zTww4azzQoLjK73R+rORNuSTIpIl eizabxfLBsMlgKVG5N+JtLXa4D66FXfAol/QB3BYjuCZ1IzT8r55AdFtEtBo8+vBVzzi IU5Q== X-Forwarded-Encrypted: i=1; AJvYcCUFe9BnXZwZ2R5HHwmvTjsPbJSsimOG36zIfIqTEe6DaK2KVO8CyJ4EYgdWXrRxgvjQgafN95VFCA+Da/I8@vger.kernel.org, AJvYcCUImJFwsi/fOG4aODmTplUZYxHGU9q1oYiqZslN7zrwkGIXcSSe20zaz74+YYs7YvCDTgLMH9nUMi5+@vger.kernel.org, AJvYcCV6lmL/xBQ36mekYCInpicT571hwLri5HUfNtb6WcyySrRgms8hOQzOZIlk5o4RawIJ2sLD580w52iTPVA=@vger.kernel.org X-Gm-Message-State: AOJu0YwMNNxie6Fp2+Ps9PXM/IEt3/psRRzw5T1KALj4kEQ2LqoTy9iA j0H2Os/VIwb1LM4Z7ar8y62bymAde/iQ3rC0wG6/7w2TiBRnfDqq X-Gm-Gg: ASbGncs98Yx7h4Y9rxFeo5jcsFwNl9YyPmeGYyjXbMIcRDfAJMNss1qvxK8bshuwM3v IYbMrloYIfcoFNCdPa/VeX2d1t1TpQMCUZtv6+cJFQqh/NNlLZ2yv+rtjfGC9FjoQjuBaG39ZVZ dq5mdbzj1TqPLoFp4MOn9oLgDEANODR3PH20ffNbhs1WQx9sF2BKwGzAQiJxXox0ipUF9uXRlHT +FyUWeJeeJ7bW4AwHO14aYWrSSuMOJacsfsYktU5yctVaIpwxTci+NFswgoawTuezKsM114O94u Lf8TP2ZarNw+bL+dFc/g4ywnuOoI5bn6cEp04HdEHVSG0vWL5pxq7qOicrqeUY4GR/i5dN4ijII ufyKe5uVVzA== X-Google-Smtp-Source: AGHT+IEPIjvw4cmYTL9Hx6XsuDxSllH8Sdas9RtipG9OjZroTgCKr+EB27/N3ZXZNUXN3FaxP4oW+A== X-Received: by 2002:a17:902:fc86:b0:220:f140:f7be with SMTP id d9443c01a7336-221040ac2eemr17296095ad.41.1739577917217; Fri, 14 Feb 2025 16:05: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 d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.05.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:05:16 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:51 +1000 Subject: [PATCH 18/27] ASoC: tas2764: Mark SW_RESET as volatile Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-18-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=773; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=qo6yyujNAiynPY1OTmsJRYpCReZVUv81PffdNrMKl0A=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb24/07OueJ6nTubXp1OsLdxDM42N/Bn1eY5dE12v/ PZgbXBGRykLgxgXg6yYIsuGJiGP2UZsN/tFKvfCzGFlAhnCwMUpABNhO8DwvyZQv3DHAbveo37r dlVNn5GxZcOvRQxb9XnZDpj+c+jmbWP4Z6l543L85KlzMprOrv2s9o5v48+1gjvmPcqcuTKEfef sB5wA X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Hector Martin Since the bit is self-clearing. 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 f8cf64c1777ad34fa7a42ca5316ffb980c63be29..409c54b41dda41d33e8501fff9de421c98f2541f 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -817,6 +817,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 Sat Feb 15 00:02: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: 13975755 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 9F0D851C4A; Sat, 15 Feb 2025 00:05:24 +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=1739577926; cv=none; b=VT62eWGlobvNLA1e3l7vu/ItURTDB+pte9Znmg2FCm/nYuermxVmW5rGTvIvS4JvGx3FdnYfjbxXPIYQI7XlWWulhzqE6CsEhAM2ALAt3SYhxl24tSuB0JEUjeQ0CaI7NmY6eHUeizuW1Lyf92xIBneloe8JbJ2N2EMnU9Ifnew= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577926; c=relaxed/simple; bh=PgPFLwwP8g98bJUED+moaf3Y8c9mYSFzQVbyN/AZze4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EMpvBLnhlooNK3WXWIkQznsexoKdY6XW5o1NgXU3GEbB2N+IBK+savGXs7krt18zZGkKbxdPwphJ95Vqe7E2vAmVe7iTTMRF+G0UfBA2byKuIdWUJ4/lePcUAMTRMLMR0Ihv+mn1cOkzqa25rkTYsjMTcZwPviy9wc1leP6Ji00= 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=P5ddtGoO; 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="P5ddtGoO" Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-220bff984a0so46107035ad.3; Fri, 14 Feb 2025 16:05:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577924; x=1740182724; 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=GPAvKhgJ+unXUmEQvWMbvYBDHLwzjFI865XBH7Bpkw0=; b=P5ddtGoOzHRjhcpaGTxQDV/mYne72/Lma2tE/p8aaXNZisVncm+Jo5d4dNM8sxQdE8 K0PC+izPJ+IffXVYwOgCMT7wPK2hLvw3Oa3GClDHjd5UGVQT1ynWhjvtsO+qG7oG34P3 rMQPYnCzWUzy2HzW1TpKrRgwTN63f2behS2Cy4rDEnS9+bD1g8XSVbg2xlfDO3SXKeoX YqX0gyEcSyiTkggHqikcz/fefncItKkSMIgGyU4zu4MVh/5OiRE92kiHHvSKameDdXb/ 0ruHK8YLrv3Y1IiXYcgDR3+cYmcyVzUX1E6YhY+5G1v+TxtrL0UQ7D+owtARB+4Q0qiM RLtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577924; x=1740182724; 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=GPAvKhgJ+unXUmEQvWMbvYBDHLwzjFI865XBH7Bpkw0=; b=PBEOzEImGIpvjU40zssX5JNPEEF8TOejdCDiut5AoDjdLphIcq/KIFQxYlC8HjCxQ2 OqzSpjPcHkw4kF1gZdmPB1lZKi+ekmgbPU34iUjdGQYo6xgQOu/Dj9qJ9OjizbCR4M9z GBVqkGUJHfEr7DBSEDv6OyNmiDwCRUZeeZxQZxVeUmCg9+8d7Zp1r9m8mHFuwJcGPfQt Py737oD/LKhBeZN240iFnj28UF8PrmZYto0p00gOG2lnBIjxwmgdBRkAoKQGyqiRhOVY askxvV9X0VwTt9z8jGgcV9CyG8uiLB3IEDgF4w1vsLcICsbn8chk+kQg0KyR6XvbQ4hc Hfvg== X-Forwarded-Encrypted: i=1; AJvYcCUSreZ6mrvIDZ7/iDKMgWmW644LYKnT4EzgdiznfXdO5i97dWGQ2tDoCONtoxG/wJnGHMwNUkmnjiX6kZ4=@vger.kernel.org, AJvYcCVKh1bH/ZiwRfhgE/YRS5IAnIxYmsPwjmgpynwcffmuUky01a5UwkMkHo6FvaOpKHZgSmQo4ZKj7QVa4LGl@vger.kernel.org, AJvYcCVme8UqkBwQ8pb5+3IGZWzwqerf/EKTP9fPYn4sWqcah3WrRP1n9d7bOU0YGSoTaIqFegVSfMMie4eE@vger.kernel.org X-Gm-Message-State: AOJu0YznNK+XQDcUhmBmZojf+G3EtcC6/Um9XVjLK8TzQDSzfZEsRIiA C9JGeMDN42A3xL7TGQD4fO6dsVIES4XklLYTQe/Bi1ScrYFpdAdf X-Gm-Gg: ASbGnctJVryXGOMB9tvfTUpOauJ7b1jvH2dICkzX1Q53GNeflsVJfAedhvWhcbr3QH6 yqNS4cD/StMcTBFLmanxfmjG3RW0tHyZdibAvLplyTC0QATozJlM5JEv80vJVj4RqT3xn/YmAAp tfyN47uPrGkXXPNgZVq/LLRqJRVfvI7KxxlVdXTerd5HTJiC3i8KLhhCfXh96O4Pc27GqDELkIB hrRk9H8F+5E89ZwyFxxrCJBDShMFP9cwdm8uvDovaW2BmzadCatXO4N296vNp3aVmLuBmRv9+aD nCzF/EPKYH18UpZY1Mm0pSY3/lTOVA4l8ESjoy61VeQ3DayXB3lyzgJb+nGIPNe5FgbLPlcA8g4 rdSUD4TLxmg== X-Google-Smtp-Source: AGHT+IE2U5MfC5cyLipBN6ucmrk0jb7ckRvkKlZt2Xu8sC+b1Rf5rhMYgR2LfKt6UQ8SB3C9VHTyMw== X-Received: by 2002:a17:903:230f:b0:220:efc8:60b1 with SMTP id d9443c01a7336-221040a9a41mr17749045ad.39.1739577924131; Fri, 14 Feb 2025 16:05:24 -0800 (PST) Received: from [192.168.2.3] (2403-580a-80ed-0-4835-5a07-49e7-f115.ip6.aussiebb.net. [2403:580a:80ed:0:4835:5a07:49e7:f115]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.05.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:05:23 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:52 +1000 Subject: [PATCH 19/27] ASoC: tas2764: Fix power control mask Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-19-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=760; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=D+chifTYrDMRWra/nhQ1ySkrrKfrOuvxSuOgUrZtH+M=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb26/M7t88aVFTBWv8u7+E7/A6S+z6XzCUuvUTR8tt 65lYr+m3FHKwiDGxSArpsiyoUnIY7YR281+kcq9MHNYmUCGMHBxCsBECg0Y/lntnvflUwy72oGD 57dILDv8SWG2pMq6o8vZmOJXsv5Z8SuF4a/ExblF+tKJV2TiP31lq6i/NeVbps257ik73786vc1 37TwmAA== X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Hector Martin 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 dbe3f7fa90187919b017eb2d59a67cfffc222735..786d81eb5b1e71bad094ef94e4b56e8f7c910285 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 Sat Feb 15 00:02: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: 13975756 Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) (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 990EF13D52B; Sat, 15 Feb 2025 00:05:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577934; cv=none; b=mAXh3ZUK6+xOWyAlWHVdkoKFHzpq4djE+fNclpy8Eep3yDhsqdmOpvnBT8DXdyfmezSdfL9H/gqFg05M5STk4VbS9CL36OLWvKqijMLTWmze305dX7/9XwUFA1/CAfCvnJ21Nljq1dXKThqmXdhflYC2UCpcP58NeWvrMtbVsko= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577934; c=relaxed/simple; bh=mhjYn8hCW2F2c4h2yo8pS7w11bq/v5wUZPBY7cvt+H0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=N9bX6hgIqleANXiTwOWA2vr5ssP2d2k8EivtzSHLIGvs4o01PHfLtSF65GZqcXU3S44RESfeIX91FGJY1s7VsEfet5sGICeBTPtKrljLsbYs19T5uuLWiEnWYsfLSaLfiYaITvBtR6Yb86kQmt5b09s7Frqz721pEsX64lB/7zU= 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=m82248Px; arc=none smtp.client-ip=209.85.214.181 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="m82248Px" Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-220c92c857aso42456225ad.0; Fri, 14 Feb 2025 16:05:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577931; x=1740182731; 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=JRvw5w+5NxuvIevv4OWKoiATV4ce1E+DcjU2wneQoIk=; b=m82248PxKMrvk1J6PYsaruasge5fY2LyDVQdH42nCia/OKxG3DDkUvCoteb3bDPSF5 bUQ2Jatj98noqjZRp/2J8Q0lc373sUoP/5DJLARs1sTWwLwSCxVymnTLyal0ikNvZV7d dHKAzLMGBqtJz4YT94wW7s7anWtLk9D3nr2L1mOJ9Cb4igWpFJ+asPorG1g3yCy/SYb0 JF9JS9oY3/5kAE3YVY/8DW5ucuwdXoXqcPNcVoQPs6uoal4OsS52b8h844OrPLDC2Vnw uFTCGRD8LuJGcZOniQjmEj34XyCHoTJRxDuXikzMCSJRXPiSFyXKRUimHiTf3uJwhYoy /yFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577931; x=1740182731; 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=JRvw5w+5NxuvIevv4OWKoiATV4ce1E+DcjU2wneQoIk=; b=vBHXX5abqhiJbJ5j6zLWfYsZ2gC+SiwhmSflUjL51lVdR4h8zL9GJDWWyEKjWCZHRe 7MPdjm08NV50C5GKhyIGrhVHBv3geFe2wsJLVNytZH1IOsd7f5gdcxueT3aZH7uWI+cJ 5EeAxFnBdF7cn6hJaePk41oQDGhu4fknZMoQ2Fqqd37AX9/J25rdrkWX1+z2V+krfqev VfBceRijk3pgzXK4T6n3Q3b2AMv7IQtrNaKv62eNuB/5ESVWERmtJT6ret8cE7wpDfIA PoSaXffonXxx8oDjaFTpYhuIDEgY44gFMjqmOwvpuM/BcKY9VZ33qGt3TMrSKCERdUWb pXsg== X-Forwarded-Encrypted: i=1; AJvYcCUpNMIeLXF7YM0NnAOS7xwKeUQ5dq7/cWa1iZXY2WbYkoIz3aw1Pik48Mc2VLHmBWRyPPGFycZEhsU0HgM=@vger.kernel.org, AJvYcCWDR52DtBTWMiVbtQOJvCqmLkRxAS+ar0+rXmdXJ1fdYHur8nNMJLtOwWziUqKCsuhI4qWxQn7w0hx4PoPO@vger.kernel.org, AJvYcCWUqt1CfLrxKEe0P2BGj4Mki53ahkqrW7tlAPhyPeEg5GHpATUrA8CB+ROTktV1iDLAo/D4PUUwIjBu@vger.kernel.org X-Gm-Message-State: AOJu0YzBQx5x8+RGkShv/QlXJ5Y0CwkmNxjWP2+XZFmo5e/sYIKWCgyq h3HPs4YAoEJO7zEpSzXwIJahgwZfKBhC+FxIhSOj3GOf9+7jobN+ X-Gm-Gg: ASbGncsSCK0p12W/UtRxOUAXa5J5XNp4LA+JuSnLFk5JVujeP7BLDhYa6XJSlnRWP7G QK/DPJyFqMVkrCbxuywbrXl1BOxh7Dd4hqIYuGH6gpneVZBkUtlXjLc9JgusIox3gFaXnny1eVm pHD3yJvRz88JdOkHtLFv6sDyqi7UpAy92uaov7E2s2G1asnqd8r+hFA+hlL0rStRZi8Zw02lIPk G46VAXkFwEllorFyMo+Iv2MwkUtg9DP+X/w9yEh74RR3gkUvGihVeik1JMy3cKTWctBpUahsJwz NvRsX0lcE25SfAXNCNQn3Ri3RdZlVCmtRNSLBH8tDbKjMWJi2SVxR0bpEf2/tUyneB81bQP2Oxa w30sFMWfbfg== X-Google-Smtp-Source: AGHT+IFAlt37KrLp3aaCLabAYdTxN0gQLkRnHn3SeV4YCP7JDSRDr0QDjrDCqOwzEb4fOtQ9UuqhVA== X-Received: by 2002:a17:902:ccd1:b0:21f:97c3:f885 with SMTP id d9443c01a7336-220d357a8d2mr155643235ad.18.1739577930896; Fri, 14 Feb 2025 16:05: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 d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.05.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:05:30 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:53 +1000 Subject: [PATCH 20/27] ASoC: tas2764: Wait for ramp-down after shutdown Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-20-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1488; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=7QEQPTza50FPvZwaOcwfVBkqbL5W80ScXX3sqRtjBJw=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb26vdXX9/4Zh5cdt/XWz+fy1pSa/nbFPTk138aWMK 5eMtn992lHKwiDGxSArpsiyoUnIY7YR281+kcq9MHNYmUCGMHBxCsBEnuYw/E/J197F+mq9bHkt 4979U69ZKwQzdi2bqWcpvXk9Z4DMf1+Gf+avdIX+Vj0IkpE4dmfGhE+LGPr77vLafnRf3bps5pr Dm9gB 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. 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 409c54b41dda41d33e8501fff9de421c98f2541f..bdbc210ea8306ecebf704fe33fbe41083867e1ca 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -159,6 +159,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; } @@ -252,10 +254,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 Sat Feb 15 00:02: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: 13975757 Received: from mail-pl1-f174.google.com (mail-pl1-f174.google.com [209.85.214.174]) (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 B2E5213D52B; Sat, 15 Feb 2025 00:05:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577940; cv=none; b=Uy2tNUP/2xaAc3JFxtoHDfig4va045FcfCmlZnqZ+9N6BAc8t1n2zmcJ7XROllx45r0bNfvL6MBdN6V6czh8ne37l2f7C2nHt6nOOILjAFrxlys0KnvrQ53L6NE/SJtIhUI1U5S87jNVuJbW2dsxG300+q7Wtx2CXWpwiMRNsAI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577940; c=relaxed/simple; bh=ra+yRi92IePI/Co7cFytb4QJJLwiNwAxoyCJc2NnbsI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gx0uYF6IHcgt9p5GFBBPNDKAwfbu5wUTWklknHz66OiyqbFFiIDEqeZDULAeEBnDMN+9UHKy0YXtcv8ABBje5H09OM+ZR/04n/umHzo0fCRxadutgWuA3tvLtqFs5k+ov9WHmJMFzKS3y4M8vfRwD0ny9C4wg+kkKruOE3GEeHk= 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=QxKYjHoH; arc=none smtp.client-ip=209.85.214.174 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="QxKYjHoH" Received: by mail-pl1-f174.google.com with SMTP id d9443c01a7336-220d39a5627so39212225ad.1; Fri, 14 Feb 2025 16:05:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577938; x=1740182738; 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=Agp2EtTn6ff85lerjx80Fv21qzF7rNE7VnNI5iOBCcU=; b=QxKYjHoH8XjA4EoGQyJMx8bMLBmPjJrYfEu9T8FSAmd0ZCwpyHygM08xMapHQSNP3V 6g5SdV6+tjh4SqP8yjeejnWBpJiDba3oc/jqTdIy/oj6D19f4YUfovycD8FoEet4eQKA 1FSbWh5krNOwgoF2KAgY3I0RvBwstE+GaLz3GCnznuDAtn9lvK7CPZiqlAAc5mBmY8VT RSciuq+3IrCHGKtrOeEbRPPVapByaXU4LvxuxlAxzILsOy+ybhs4GIW+BNnGlOSC99Jp XNfywQHimyEk1geHYnas9xGACZsppgqBF6SVQYkS9VeIg0FmLiARel64LayxpigLUjTa JI3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577938; x=1740182738; 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=Agp2EtTn6ff85lerjx80Fv21qzF7rNE7VnNI5iOBCcU=; b=BjPR3QgTKlOMkXhM87mTtrpCLKq+JCL30bs0TDgG/JmtoNDDXicpbNtq0roMtnpLQD to3aqrvXX3wjIrSDonvHeM0vi2nV3uIu+z9Bumuw1ppjXpvun/jJvRVwem/ICbfKt7Dk jk37msMH5O60JyjrDUTHZ9mNGiRleSGgLGI24OQYRnE7wBhwyNvMb7z5H3fR0cpP8GJj 2hWw3RYiZTlg7Ni8BCoJyeulhMvwg1dKWxSP0j8EXf84sQk01Erc7qLy6ALZHUNjAGQJ EPWuiL29OG8yKdw/BYBLDBbqEDc0zYcBHMuGwxQLgbkdzEJ4Wbtzlq+ml7VHjnmLeqnA dVjw== X-Forwarded-Encrypted: i=1; AJvYcCUUdlt9WRo5kISEBRIoNV4tgQ/Smu/qh+N6qsz1+YCy2Y5vAD4hUsff07rphl3mAkiQSPi/9wPSrrojfDE=@vger.kernel.org, AJvYcCW6903nbXrflobb27EMI+Fbz2mTDs8Ta1WAg7Wl+pPu6c+E330jVn81uWrTgBt8bBkaPW9vJ0MiSfbeVd09@vger.kernel.org, AJvYcCWrwIdWVgFxv+LDktYhHOIlQCd+CCIfsPxslwFhjZQol5VrpmkH5yfrZ1TIlFk5CuneobFGBKjkZXWx@vger.kernel.org X-Gm-Message-State: AOJu0YxVey9LeLTXlMrWqgTUOPHZTd6WhMPD3ewVHdvnB2rT6zeSE1/f 8pDig3vIvZ814ba6EjxlC4DXJCf76pmfZ0wcElEbw0xACeRfWPPw X-Gm-Gg: ASbGncvmkZ3cGbm9BTdYpf2hKk1vmST5sr9rjDcf/fQRP+YG4Yv/WWtoCvgpBzXAvXw lR1ARZUMLD/XjpkX2MWYqpU/9xGkKaxIOSQ5KYcMDLv7wixfOcFDvhgcAXM2KW5DUUs1HIbr3gy 5ru7ruhWv5hdsWZf1ChbsVuPfpFYZTddF8i1CRYWP547qHUvZiOgAh/I41qTdWo+WOcyHBeyKcM fLxVXl67A0f5lPknD3zO5O7nlZHTtCRi86HGm+NynBMU8tEXWr/zSFGhA9pChC0815SmK3oZpCd 4T31bcfd6G49adO5YCEvCZ9JAZQ3boaT0H6oRq1jXpnnklt4eVdtk8d6437e5slEwwg9sFzMVEK N205nLxE6ZA== X-Google-Smtp-Source: AGHT+IFc7GBCDsQtxaldyI9+KDsg/DqlWwwQyee+WxEsGp2jKMl8iXnqVhm0eYx3/G8tkcRqznaeoA== X-Received: by 2002:a17:902:ea11:b0:21f:136a:a374 with SMTP id d9443c01a7336-221040bc267mr20011645ad.43.1739577937988; Fri, 14 Feb 2025 16:05: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 d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.05.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:05:37 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:54 +1000 Subject: [PATCH 21/27] ASoC: tas2770: Add SDZ regulator Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-21-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4941; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=9OK8DI1H0t75YODJO3v563NkJyHzxTPlas8P1GZeEE0=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb24/sHXKoiKHlat/Pjp5p/vIu3nV1ac0Tu65/qhId +a8JbftznaUsjCIcTHIiimybGgS8phtxHazX6RyL8wcViaQIQxcnAIwkY1MjAwfeZjKOFkuT+C5 fvFnV8rWS2/FH111lCk7FnnkYazAgymRjAy3+mPXRUYLs77rvfgs5Lj3q6VWm7zUjB7eLXylufx RjRk3AA== 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. 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 9f3588ec117bb8ed0a6f2bbe5d7dc422862f052b..bac34e1237ce2a5e25face47e0597617308f1343 100644 --- a/sound/soc/codecs/tas2770.c +++ b/sound/soc/codecs/tas2770.c @@ -71,23 +71,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; } @@ -97,18 +95,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 @@ -547,11 +553,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); @@ -573,7 +586,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); @@ -713,6 +729,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 Sat Feb 15 00:02: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: 13975758 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 AE45E13D52B; Sat, 15 Feb 2025 00:05:45 +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=1739577947; cv=none; b=XciDFuuk28fLVdcH9V/HxcCnzoW2uXgL7pP+F4wAnBEsruHA5V8xUSPjsFQPY5B22Cnn3P2QMi5IIPo1WKGF/m4pAatmltV/9h1AmMvNBOXBFkdz2dZpSpzRtX0Eu33AziyTpNWJKcRgLPl6nCBn9S4U6I9siyYOATkH/OwmShc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577947; c=relaxed/simple; bh=h3JxMDwKaAS4Ilp8m+BiV4LRBVi3038MrI86Ypea7zs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YJA/33EUmv1a4FFe504xjqLK7Pm+pgnohbV+++mnizfMRCV3AznGB5UMaMs9VLf0zlQWLtNllgxfAdK6NUCzNc8RbQAtoBU/qHK5MqazI2l4SVTYWFP8oebJ83tS78gvDLaTt8bVuLLEjkaFqGQfSQKmgzPyVrad94C2ZnTUPGI= 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=FTATMNFR; 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="FTATMNFR" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-21f818a980cso42715375ad.3; Fri, 14 Feb 2025 16:05:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577945; x=1740182745; 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=IPkSjeZOPc9/OJBNbtlEa91pxyRki+1Mxp+ipEW3Y64=; b=FTATMNFReQ4Fqk08DpgiJmSTwAoc9Mt9DdIBCj/oB3BWUsFnq/8EENQaOGYJyu7N6D hDYnfV3Imyv5n5r3nZQD5wrzSvY5PN6rt5ulY91kaBueVe5lu4fN2g5tgHd+iMKELOuB Ixj5hSvQk/zCxWbw5i/dqA/wivdbMOVFfTNs+x2PdpvO+KXM1WhSAOHRdMmEaydn8/W9 0ieKD6WXZspr5ayfxU+NQKOb+Sqiy1axbelfKU++VH87r4CKCqbgMhycDayn4ooO8qqO J0ULkRslR/hutTJ8XnrrmCpQj5feSXOdIEd236SwY5yH66yf3txEbf0qsws5HkUZlkHE XrKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577945; x=1740182745; 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=IPkSjeZOPc9/OJBNbtlEa91pxyRki+1Mxp+ipEW3Y64=; b=AwWNPL5TrsN9wCk8xptzjG4uodQs9nZj6AYyg+n86x5qZn0aeMRKm2vJcgqZhZdIjs NN5xf9FzhtLz7XId0IM9Xxg2aMm3yPZoDM7w3WEPwSH63UvQK+glYHMBKEHQGFrKMlTu 3PZ0zw2u/eYqDK4z79vMeO0qn+qfC0a7fEVmBQFoxK12GgElP8ZNRAxxsByLRxmgrOcI NzURHqlVFNeFftyF2TvmDwD7jVB8SlCXTmktuDeZsIbd7s+XZwiFJn4kBUBAoDMzrA7G 06AKXArWib1Hmj8ojxiIvog77QvYJkPAbqf9Luk9Azt9xar4mZ9Y92nD+bOAruX+t/E2 u59A== X-Forwarded-Encrypted: i=1; AJvYcCV8Hc/Zrj8pYBr1BpO+CTKKIGaPTz8+c1gOynD1ygyszhb4dvOIx/aNst0M7SXHKMTmHhtsgX0TO5LmhmmL@vger.kernel.org, AJvYcCVjQ2U2N+6paLz2HTNNS6O3IG/J9UDSGdMycyVj2chN6fLLiPYKFJJTC+wIKjQYEadNQivxSIdSYXxY@vger.kernel.org, AJvYcCXyeo3V+BqAroiPf7IVLJ22fTDgT6N2B+L0w3C+ejU1y/pWYuk9nbwA4JOUmkuKmR49fTr/FRMx+vZgGQo=@vger.kernel.org X-Gm-Message-State: AOJu0YxTFZkvs9ZnOviZKIN1EH4o8DlsnacOPfsTv20n9vUi9X/Vu44m Fi4W0rYAm19RMtry78nD8QC/YRiEFvF2U84ajtJbn6K/It6cbtLk X-Gm-Gg: ASbGncsHAoYQhin2GIvaOVDS0YYVLdoCgvVObKcIOX+jt3s+UL4HJVodzAeCiUKNRQA 41h5te/ZuAMSmUxODTm4qaeb7kEiLp+RrnFMc2jHhWdt/J4qEfffcOycBAqFJSnrPAfRdSbAO70 tjZbymN0XUXtEDmBXvi5TD1tAnL25B696je17GDDoqXbd1T26Osmgz0H7GvosgPgb60FGPngBCX Le7bkW/KpbhucIzjUbbWfYfoJXClqDtDG1cUG4sgcfV7Oz9SRSWXYC63Hg0Ek9Nvim5HnlWtuKi be3moscA0aWqzMpuutGCjhD/H2jlzkspJSv/oGCrqvDm67hK3bakrXg9SRMMohwzAy+k0m6hNMj OsoH7Z3pnLQ== X-Google-Smtp-Source: AGHT+IG6+3nLmsHdx1RmFdm91Qjq9AU8nruLrezbvXoGg+uGvb2vJNqsgjTQtxQnEV74jVfqHyDnEA== X-Received: by 2002:a17:903:1d1:b0:216:760c:3879 with SMTP id d9443c01a7336-22104099423mr15221945ad.46.1739577944909; Fri, 14 Feb 2025 16:05:44 -0800 (PST) Received: from [192.168.2.3] (2403-580a-80ed-0-4835-5a07-49e7-f115.ip6.aussiebb.net. [2403:580a:80ed:0:4835:5a07:49e7:f115]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.05.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:05:44 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:55 +1000 Subject: [PATCH 22/27] ASoC: tas2770: Power cycle amp on ISENSE/VSENSE change Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-22-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2645; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=tUylZZQOHhwL6PpQLa/BzEAlJvmGxPEni0WVBgk7TPA=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb25/vOKWxd/zZp+mdkt/aohS+pETnb7rfsopdeN9o V3/JuYe7yhlYRDjYpAVU2TZ0CTkMduI7Wa/SOVemDmsTCBDGLg4BWAiGhKMDOvX5uzT1zIqEFA5 651kJlJqtStuU0Q0058qsdgQi4Z/PQz/jGsfHnQ0mLKLUd5qyt1vFznD3ztxTtm5S9HkM/uL6bX neAA= 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. 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 bac34e1237ce2a5e25face47e0597617308f1343..d74bbe12dea49da376fc577dd144912468fe163a 100644 --- a/sound/soc/codecs/tas2770.c +++ b/sound/soc/codecs/tas2770.c @@ -163,11 +163,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 Sat Feb 15 00:02: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: 13975759 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 318F14C92; Sat, 15 Feb 2025 00:05:52 +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=1739577954; cv=none; b=JdInRsxL7jzru4pKL6Try3LN82Fpltwn51AfMhwlZhyXJekcR/NY1bdB6804fOkEJAUOdAKAKg+YDG1lbfVqr9YGH9xNwTRPCZtJu/fvwrjyya6hfL4TpWVO4o8J9CQ6Nq0MHzB5vLh+NJxZaTkdyJvMq3aLV+dEF9dLbokXVL0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577954; c=relaxed/simple; bh=RDix+/+TMA7k1w8c7iWmcESPa40MeUHuuJ6OGsToqP0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iOI/BuKbPWKCKIam+imZszjHJs+ctFx5S18yyI//LzM7D44rI5X9589nAcj75LNF717gVkSecfO7RpoTYQWeDvkBLp/7LKY4wH2ff/xxyeb9E9yHRywppAsQ2YEfhSAhQZwlrD6pnZXbxrQsRzp+wsXvmQcy4Z2Dh3xpjOvMXsA= 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=j+9NGsWH; 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="j+9NGsWH" Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-22104c4de96so3990585ad.3; Fri, 14 Feb 2025 16:05:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577951; x=1740182751; 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=PnuXwhPKY7wDxI4Vb0cLFSGpo9M4uNmayGUNt+K5nXQ=; b=j+9NGsWHOJ6FSIpJvnvtX/L7KjoGvswrfCXAj6F8zmveCOi68ZWcHH0pQQcWxVemcO yZjYlyGBrsg/3tCS4kjhQFi2QgllNQvQ2cmrgki86eShdLqN0d4Pl6cwS/lELXA05Bvg DrFL1hC+eETCS3PKXxwuaHm2Z5WOTLqYrDfdYHUyaw7TBYBx9qoy3nSNo5u8CTZDDHUt 90cwACrKY9pOb12uImHw7RB6VrYqyVOgJa1h4GWF0LhTH1Bvrubqhk55YuPxq23U6qw/ C7QYymCly5gWnPm0Mmplp8pBNj5iJY4wxNSdNuum4tRLzNZ4t2hzjCPLBsTX9GSxHZjE sHZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577951; x=1740182751; 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=PnuXwhPKY7wDxI4Vb0cLFSGpo9M4uNmayGUNt+K5nXQ=; b=oG6z56HyprB79PDH3vyF8XUaxzYmk6kpSrKZ7eATfTWxzZNcEaB9p3AmhanGnKThfD pqGulL81zi7EXy0f6AFtxq5I0BMMhSxoD5fuXbdNwfMYV+7kDjL7xhucS2b+tmSdcr+Y 9FKfl/FHNZAEtw4a10ZdWlXMdneo3wk3u/pOLj62b6PGH+MiTCNQ41+Sxg0vuit8Hc// Qg6Gr3FEaYtBJNF00y/1PtL6gpsegiu8LZfUUiDbS4VnDDoa8rGYoVKK4YpAklboNsGc 8b+SX79kbZOZvsFXkD7byTVD5rE6j2clbSPypC2bgKRFdYOKnwQP6418DgVFV61qHWhz erYw== X-Forwarded-Encrypted: i=1; AJvYcCUSXKg5XiyJvSiRoqN4655wNrzqqFCBCnevSnLuql/RAMa+chFTJc9VOjOiQVUBhjeSKzPUmQBbGaTU+ZN/@vger.kernel.org, AJvYcCUSk1opwty/nKzlpUFfv1OIfZ9zw4ub+2HVc0I+sQJL5uJVUhtAFfdXdLiKNi16CSngDyqjwDTjyqFp@vger.kernel.org, AJvYcCXXUalHJraLF9ynXI17JqdC6A5ptwHK7lzxcddcZo606Yi3n1Z086DEv2tR/j7c0+ID0Ozk8v9j5xwMrqQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyDecR2KtvfhIQ6N5Q7j6E6nkICB7mMej2hv1fMsuBX180EIa0U DCxwW60/JdYOx9oGKo385AU17yeBpVOuylbqkrSN7FyKQENq02Dz X-Gm-Gg: ASbGncu9MmRVW25cQtCY5szswvKv+384F8IUTOpcD+HidiKcW6QvRiMQAdoszyLHVGm 53VZwhcGZDlpfyiEPewr3vXaBuaps11UavzZ9do0f9bvKBtvdF06ov4r8XX8rthOk79u5lVwirV 9MiB1DwIsJqGVMZJx5nXu0pXv+sv85vELiqqxc14VIHQ4BNS6F1BUbPq6Qg+71xGZvC6NEF6jTt XlrMWCYDDu+XZJ2jfkQVUtD39jdsKv82mXAa8IhMwyDbX5qiZo+qRyy4zEi/SvnU4i0nirpUe6L 0KCR/rDMZv+ej4nLxg6QXZ37EZyWsvLwXPEZM/fvc+R/CBsouQKvQjsnV9AU+r26nwwB/ddBnxg Uk+wpQgKhbQ== X-Google-Smtp-Source: AGHT+IGgY/dXJYnyF1dgWE0cS4WNHAlQm+hrMjO3hWUb5GNVVYJFHljlLirn42zG8WRNXX+yoHYx0g== X-Received: by 2002:a17:903:32c8:b0:215:8809:b3b7 with SMTP id d9443c01a7336-221040135c0mr15618835ad.7.1739577951530; Fri, 14 Feb 2025 16:05: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 d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.05.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:05:51 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:56 +1000 Subject: [PATCH 23/27] ASoC: tas2770: Add zero-fill and pull-down controls Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-23-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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 X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3507; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=+sGEqJnDHCIhxzVYE3pEiGOszPBCfBGomCpq/eBBdGo=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb+4w0NpSw3tm4vbQVjmPZyfkrlv1fmT8YdmyO/xKZ faq87XnO0pZGMS4GGTFFFk2NAl5zDZiu9kvUrkXZg4rE8gQBi5OAZgIszUjw0wGozkTXE/uq9O/ sOf+2WNf3kjyb04/NqNB10FV/xF7/0xGhp98H2XqhaaH981LYEpvTTr03GpKL/cEHuF1Mdvy5xi V8AAA 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. 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 d74bbe12dea49da376fc577dd144912468fe163a..7ac7ccb32b4db2050a8543b950a9872b7551845b 100644 --- a/sound/soc/codecs/tas2770.c +++ b/sound/soc/codecs/tas2770.c @@ -602,6 +602,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) @@ -755,6 +769,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 Sat Feb 15 00:02: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: 13975760 Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) (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 D634B1A316D; Sat, 15 Feb 2025 00:05:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577960; cv=none; b=KYPxj86p8f06A74roQ3KrP5fRijiaRmnZhZP5IX3fNmMrf4Gkjd2hV61YYJnfJNG07HWjHiIBGUPy4KarD74afb/cVffUJsHfhe2l/Kr2/DAuL85zb+XYGC32i9pQSsaJN4B5rkJB4nPXHv/AoRswi1g4VB0bpylEnpzViJxahI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577960; c=relaxed/simple; bh=yRGOaXntFcAUP7G8Ig5QNnIqk9YZXl0nfFSHyW0Mwt8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=svWCw4ysgc/8p/ZAMLn5gG2s5VonW4nFJdWZ2Vu4LPwfE2fadFtzhNTOEi5MDpgOOrIlmD358gmfp40mJLRPjuQhXhdxxGF2k78IR4m3JSindb8PxMM+V7eCqBV0RjDchi04ddcqa8QAdORdE1Czzh/I069zv/PT+T8bO7p6RXk= 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=ZNFZoo+X; arc=none smtp.client-ip=209.85.214.181 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="ZNFZoo+X" Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-220e83d65e5so35559005ad.1; Fri, 14 Feb 2025 16:05:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577958; x=1740182758; 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=EvcPqQygxLwJKAjZAsvRvzstw7HN+nfaJbAbMMQ2hVQ=; b=ZNFZoo+XJe9DtMsuohok1RkldXCjv2B7UKVir655soDC0+AvxFXvwOS9BffUvefCHf 6PFUwGcIg7ILSN4hVVXalmfKQ0uYCBa5E4MgG5ULez5LxqSfZB5ulEyUvUXMueyhB/f1 SyFaBHH8/5yfIwrSqvjx+R1g8mBBGFGGCLCHoSml3iu3azHveBGTQFyb0Ilj9v+kmdGK BlGhb/8C470rpZq02V6ntOfOCBAUwCR9EDhHDtWjFwf1o2XINXigpZ2TXVMbmxK+iyF5 S+XE4HzKEGWIERwgzhpl+ZAxD6Q5u0Gi3lZDEtQtk+Ry3zEL7wa7HjLycjbAT+IB7G8D pNwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577958; x=1740182758; 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=EvcPqQygxLwJKAjZAsvRvzstw7HN+nfaJbAbMMQ2hVQ=; b=OquDC0+BGvzeGm79s4Ac2/f3jkuIT8QE69jTSHil6M6xbaAwwOcWk4ewRjJmMPhINh 64P7JsA3WiqZw6Gq7tvbi2Klm6V7Z0A9f6YYe/3P+HkdnqYFPMNA8zMxDpqJH4btypXq A8Lm7TR1U/Y9CE7CaeQk+/nMHrxhIH0eERnHP1+p/rIPmGuHflZdwFjoPmClWZPSxzRH 6CSxDx8wAmH6PrIRj3UZzlzaQvx1xxFpIZ4gDccqk+qVf8rcHSoV7HFGJ7OeFUvVntgZ 0YMXHABk662ga7v3n5z4bvPJwAis2uE9kchTNMGACSwSmPav35SeNwxrS0notTRQJpqx qB/w== X-Forwarded-Encrypted: i=1; AJvYcCWb+zr6dA8A9aOUio2Xn1aQCeQtucygv+qjLC8CtWknwTYVeXKO+t7jlJitQoftaa2fdSLkRPZIP2Lz@vger.kernel.org, AJvYcCX9jR8feTu+omBqxNXGz/KjymFVvmaWK78nHipAlCP/1hIO3cfJpIgpZfjy8Nj+1gU/Px588K6qvEG8qBW2@vger.kernel.org, AJvYcCXviND1Tsf1cgG9i0PmCnRjKB867WqDpcBX0Jmq2wOs7QHJyfgyDKKN8FOPfp5p5I7zapBJydrE9+uE6TE=@vger.kernel.org X-Gm-Message-State: AOJu0YzecU6w/V6FeBXj3sIUZbiziFQ4wuGVzSGh+rsqzdtkBGmR5iPY t/q/DmGRd5S/U8J4JrdeCkxMSUnVLEHuM/VGu9ykIj8lBsmCkB04 X-Gm-Gg: ASbGncvm6wS3YgQA6dyKv8wRy8Hnuj1uZvdBiqUA1iONEsJRfzgPLjK+564mpTvnb7e Nbsj1MtD0KaVcuvpXrrqbsVq9VvkC50zIFDSOIit+miAZXEHlBUyAKHss+UfDC/jAYWniRs+zfb KNg/u4zDku0u2m/SyfC80M9/rG90H0XiqdAqE49zKvBclS5Ch5yhBudPDov7bYXstaoyzBJIMwe GJnizvAFcIaUQpX4yaUJqxrB6WElh2UGGGTdtqisnffemkdX2FnSlAeAJEwM/N+gC0/VEnxuLU1 KrWinigsrmdxlIPm+i3zs6DWlizt7CdkthGoNmIhHVL+t6llCPzybSbNxVG/GAznod7oON8m4C0 GEjJlYgwuvg== X-Google-Smtp-Source: AGHT+IFRv69gAw2fRJoZG3kyG7EwNhQXkCZqOctEOFul9MREID8wtj+8ZoKObs4bUkkFVHzmedsfJw== X-Received: by 2002:a17:903:22d2:b0:220:f7a6:a02b with SMTP id d9443c01a7336-2210406aac0mr17325665ad.30.1739577958269; Fri, 14 Feb 2025 16:05:58 -0800 (PST) Received: from [192.168.2.3] (2403-580a-80ed-0-4835-5a07-49e7-f115.ip6.aussiebb.net. [2403:580a:80ed:0:4835:5a07:49e7:f115]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.05.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:05:57 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:57 +1000 Subject: [PATCH 24/27] ASoC: tas2770: Support setting the PDM TX slot Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-24-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5008; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=7Dfog4ukmvCbrAJFblLGt8FQ60ffyBvdFlYgVThiPWM=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb+7o3vA5pUraouFG4qtz9YIaGl+X+krMl+eYpPwm5 ON9++jbHaUsDGJcDLJiiiwbmoQ8Zhux3ewXqdwLM4eVCWQIAxenAExkXSIjw7GJstcfpPeua/9i 9rBcTYOpY8a9nsA98tcXhiqGS7MJFzMy/DXiOfJe7LDhN5/WKybSQh57YnMvcub9nKU8pT+FbZ8 iIwA= 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.) 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 7ac7ccb32b4db2050a8543b950a9872b7551845b..555642d5c53533d9959314f0384c4dfe91ca799b 100644 --- a/sound/soc/codecs/tas2770.c +++ b/sound/soc/codecs/tas2770.c @@ -247,6 +247,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; @@ -602,6 +615,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 : @@ -769,6 +789,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 Sat Feb 15 00:02: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: 13975761 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 4921324B29; Sat, 15 Feb 2025 00:06:06 +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=1739577968; cv=none; b=fDH+q1ekJ2vSjAcHcO4yG0m3OMvM2rvIi4PwaMRVRqDVbXHT9iH41w1W1QrzUgHa1wqww75ur9R9yXvgfYD5YURzf9RhMM3ModGy/+mULriQ9nEKagmqxuVYfYLx9WbFTMR9BluVUeq5xEfx92p9qgFVWFbX4rXy5d8uJWsCu+s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577968; c=relaxed/simple; bh=exy/ez26Hxfwd1ehJydaC5MQznjyT2T6KkrUovtbO0A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=h5dk7DVKzdLxI+fCQXJYDHNzmsmEpHFJYFj0ttJTwu5JsJuhHVVz0bJq8c8hlPOP79LCTGXJbQlG58PxTsK7nqxgJ0kw+Otn2nQwQAiigTY+336ed4zLpsAgLBKgsvSAtfojtwT5NtQM1ny+zyenQabuoYMNTVGIc+/ACB/JNd4= 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=IrvP4l6a; 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="IrvP4l6a" Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-220c92c857aso42461125ad.0; Fri, 14 Feb 2025 16:06:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577965; x=1740182765; 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=SMOl5DWfSarAr8NfczAc5bcb6e3mt57YM/YFQ8kMkDk=; b=IrvP4l6a8yUZO+DKzZSYhAtD5XyqvO/WDeCrF6CpHVLr0BaFc8YTuSFw8Wum/g6ZU8 aMG4tc7Ai3c5NaWoQs6QSZYGjGjXojvec5Dp2S6c1G6SgS8dBJmOn7mkqBu6og7oNwYT QA3Lx6IpDFjrtGbshLO7x8YkYuYVj4z2kss9LELTW11wDng9ZXDw0O8UnA/Vnaua20/A Qu3ligrxpYVp9/8QG7pvXWn0J/baf/H4t7hMazz9PyV0tCsq3rhfJxWIMcRpirV5R0iX jK6EA6XXQx2kWDzL8VLo6Pqytf+Nht+bDLUQCYmoZB3i9c7SyB+IaiNigtQGGRxfkBT1 6I9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577965; x=1740182765; 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=SMOl5DWfSarAr8NfczAc5bcb6e3mt57YM/YFQ8kMkDk=; b=MNPLwdzXLI8gqRCuumcVs/hsFpUWJnUh37mBurrUgz33+5ZuD9IbvRiqfcQXQaZQSk GAtCd3Mz9l3x8Dt8QjuzuB7bbeKhhXkOwIcjg7j2EmnMEug1SscP/ueW/9F4YrFL71Nc oY3KUGmBKX+2k9LSHhFR6h6hPIq2WOVeqi7/VwLPJCKp08e5xzQbypIIdn1JkO8CbzOS 9julc24hSM3zbygOIjr7Zax11wunuxbxgt4L1NUGtfYcS71tWunKwHSCiFG9tCaGAoan WHbW1uXCccAIpr8F8tusJ42UvAoSFOHHKT6HM+5aIeKxl9+1RgC4+TiFi18gMEkdWKrG 9q5w== X-Forwarded-Encrypted: i=1; AJvYcCUUSTlUulQ5TDwejoi8leHboXlFlvjJZVqC+5RgUpOSj8/aW1waxMcIB34POSeYZMHm/13WVWSi8lUQ@vger.kernel.org, AJvYcCVYSYIshbdZPMGl7Ac62yIXv/GWi8YgOI/761bYoeQyjKuSLQVWFnFmdBJrcu3CJJboXCniDfekqjqKY1w=@vger.kernel.org, AJvYcCWw2sARMb73G+1XesvUBaFlyJFNrVVbtKZZePCxShaYerKEtpRxoIUG9XgXOWTkfst7NSGiLu5i1lb17bx6@vger.kernel.org X-Gm-Message-State: AOJu0Yx47Mr6J46yK3KeK4yIuIah2rYOrV99LGMPtB0Y8ncndJJVavn+ YLQJL+3BLAwM/wWLC3qN7dli8G58I2iMV9NTRc4RSZfQ6gRklMzG X-Gm-Gg: ASbGncufKYEN36epYLYBl6+KQu/sZjx0v3OFEyKKEMQdyHQiKf61iOlAfrsrGL36HA+ xjLzX6WKLBpA38fA4Vcksogz4PFXb6z4aBbAXjAQ7soYNuPWBeCrsn7M465/0Txsz6HI7AhbYB7 mHmrb8IijqE+AGs4+5ul1vaiEE+iVvWyHiPdvegMfdIPSNB0cBffY9tzon7a+F2myl44sRo2yj5 NodZZ3xMGvVcC/COZ9PayebcdKCwWhdzwMUVyBhSLJRYc3K7r8gP1qwzcWSe74p4/TnFxn+Hga/ vjW78p/WC1Pc1Mnph9TR2CyIapUCECu/RrPHXjE0D3pR+WfWIXllP0kP5y5HGDDNHUwDgt+e1fQ JU7g7iWpA1A== X-Google-Smtp-Source: AGHT+IGAJaQEmpdeALEh/GyxIXOnz6R69HJuA5hOSl0OQ1WF8mnI0XnI3HlrKU2LHmfIXMS1gCOOuQ== X-Received: by 2002:a17:902:ce89:b0:216:5db1:5dc1 with SMTP id d9443c01a7336-221043951fbmr18345175ad.1.1739577965620; Fri, 14 Feb 2025 16:06: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 d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.05.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:06:04 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:58 +1000 Subject: [PATCH 25/27] ASoC: tas2770: Fix volume scale Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-25-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=934; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=XaNoLJU7DdmYL4jp3fbyo1TQkWbzJcJkaIm31NjsXmo=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb+5Y/dPCvzHxiHDqWZYD0pO9fs9z2q4rpBCwS05So Lq/oOxTRykLgxgXg6yYIsuGJiGP2UZsN/tFKvfCzGFlAhnCwMUpABOJ4mBk+Oi24ZzB+U9ZSSte qa1jkND8Vr9mRubCv4cl392puiPRNJ3hf+Duv7HchX/iTy6WcdwWWR4t6TX1lrWkyWFP7gn95xY Y8gMA X-Developer-Key: i=jcalligeros99@gmail.com; a=openpgp; fpr=B08212489B3206D98F1479BDD43632D151F77960 From: Hector Martin The scale starts at -100dB, not -128dB. 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 555642d5c53533d9959314f0384c4dfe91ca799b..a9e65f95ec8600d905c45db4e013d3c2602fa8dc 100644 --- a/sound/soc/codecs/tas2770.c +++ b/sound/soc/codecs/tas2770.c @@ -653,7 +653,7 @@ static void tas2770_codec_remove(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 Sat Feb 15 00:02: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: 13975762 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 6676127452; Sat, 15 Feb 2025 00:06:13 +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=1739577977; cv=none; b=miEFkByk7ooqsKA6Ojkykk2jLjdbAL6xwkWFFTs2TCqLZC23CEqrkSGbS+y472Z7MOzQcXkQ6u4efFqPOrLFgZLCgbuYYHBKRGdbS1FRfgFMKe3+B97Wlch3MJhUhMQ0JWmwaOYtCjnLkAVTqhJWY6aH98QdDeV/78riaVPzJLg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577977; c=relaxed/simple; bh=eo0FgT54k97mDSR8rz6Pu8NwpXky/0riRsqEIavkVRo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EdRBSmIWf9sah2KhIuHsSqcWw3KOK1hTPRvR10SucalE/P7aYnPi8s6pwtLgOSiSEBKgr9AOpUixRlwRlgAlrbe63dBr2hQEKk//8lr96SJxa+ItIzpdLe5oxlpWV8NsxzlM/araI08QqHVidtuQSwacK+5NHge61HZK4I88JFs= 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=XNQfKvSx; 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="XNQfKvSx" Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-220e83d65e5so35560865ad.1; Fri, 14 Feb 2025 16:06:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577972; x=1740182772; 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=CRen9lz0iA3eKqSin+5VNNTShffgRxZVjvG8oHS7fzY=; b=XNQfKvSxBq+Ljuk2paYd8JXJIQs6j1gnnEjbF/JHnfH4Ol5wQLrk9UxJ5el+dw5JBS UnmMdzCjUR1BsFrkuxNFOyHjsfHeNApnqtWQ4uYUp3W+XhDiw4Q1B4+lvSQyNCjbRYRU wTULyIrKdOjrecAJGw+o+p96uFFpIp47B03ya5LoDKSQr3gDlYYAvaqSqdRFQeQtwfM8 cCwqj04vfI5EYr/JCXbnV+IXbLVi5pnSqCTffcKEaWvKG1p/T6RltwmxEaFet6SQRZ8T Lq0x8jvkxyYO3+y+5PehYKR0+C1aUqTbNz4Mehspp+NJ5m5gYh8+uo74Dww30Qcdcuo7 fbpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577973; x=1740182773; 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=CRen9lz0iA3eKqSin+5VNNTShffgRxZVjvG8oHS7fzY=; b=vMLe4jtROUQLd9lAU1LawS7ZcgoxhZ21ETAMuLehQreJx4pAEsyDZl+IkykJq4Kqs7 bYPzNjLfumGrYZ6vCJdrYRlhC3J5APD3MP70MGzLegBmo4y6iDlvQsJSZgjNg1L01SQq qCr7g8A/hXG5IqGQ80fpqrJ6ASUiRQmEEhSrF/hUa+3iKvw7MExL0Yc7ZjUNJPuq9wMl m8fxDwbSWjz3k2L4SwZdI1c4N/riwWpgR/m37a3fSkujtAmMC7GTFmaGY2gdohCzKIsm E5AUz1IUGXY3/AzYaOv38EKDqGFq7XDHjRPjhJDEz5FGaciCjE+R6dooPHnD4BfhiogN kCIg== X-Forwarded-Encrypted: i=1; AJvYcCVjQiRiODxYow1mXCqmbGHPyAKPA16vrE51CkJJlH5n5KZFWgeRvRmhTmoPGSMOUYE3VNwU1Ej/8Q8I@vger.kernel.org, AJvYcCXayE61czZyLIqCCXKYEtQdAUDflg3fRz+/2UCxzkWd2/k5IWCbhm27UDj3vWNtro6VexHbZlmsUL0Ya0g=@vger.kernel.org, AJvYcCXrC9WKnrKdpPLlWEMUy1s5tRm2RUabHI/W45YCWNC/x1WTVdjmx6z4GsvWVOPOAdpbgrI/CPunHAB6uTKB@vger.kernel.org X-Gm-Message-State: AOJu0Yxd1aINs2g5gG0BFe0giCANHXFQR5ZRL3r8YxqrZbn27rje4GfS cSPChZTNCyn/Nu3hHLsnjHmJW9l+ihtRl/EAVYNwt/yecqn4+2Ez X-Gm-Gg: ASbGncuhsCFkqGW38RVx93oS8V0Ll1l1fVnSLi0gEzYZYiSDUzzpsHk4VDDGlNVpQ4Q BkIJJZDwxvat3U/oEpbMTIm6yoSSEqnkUvko1AXW+f/to8v7nLNfxp5gz7rVzcCF3Vw4hSB1VmM NYyfO2Vf7Lu2spWVeAN1GmHrIEPioW2G20BD7IeYMy6UmY3fe3ZpsLPEOpRopK+BOrCBOcguRpl GTnbqG6q4N4HXREuXVeE0UKzhUsdmjQFxA9TLHwE0vzKNibokxm/i/oLD7VJMMCmzZ6Ht88SmSi zOzB20SN2KDUQMGMgM6RRGCbBNwpO4pRVLC2V4q5OcfF+F3CtmQQ2N80ksMjQ8B3MfPpDCzfcU/ HRoI8PNrxDQ== X-Google-Smtp-Source: AGHT+IFHQB6Hi75lq+IHVc2EFRmqZFJg6IszUCPchCSlNMP6cT4k1DouRGvCzCmAtaa7EuyBYHLM8g== X-Received: by 2002:a17:90a:df11:b0:2ee:d63f:d8f with SMTP id 98e67ed59e1d1-2fc40f105e6mr1703877a91.13.1739577972631; Fri, 14 Feb 2025 16:06:12 -0800 (PST) Received: from [192.168.2.3] (2403-580a-80ed-0-4835-5a07-49e7-f115.ip6.aussiebb.net. [2403:580a:80ed:0:4835:5a07:49e7:f115]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.06.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:06:12 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:02:59 +1000 Subject: [PATCH 26/27] ASoC: tas2764: Set the SDOUT polarity correctly Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-26-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2605; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=JUEJyKGKi/edxIy+wXLBYHgRqMQ6HGn+xp2GKuXciig=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb+7g7a02Zrw3+W/E9bv1iwQVhabuv82/LEf/8nLuJ H+zCG6ujlIWBjEuBlkxRZYNTUIes43YbvaLVO6FmcPKBDKEgYtTACYy+Tcjw6opz99Hf7+24N17 22kGAfXf1X34v9VOjZhgfVbqGMPGqU4M/4MUPrvNlFz/t3VWzivNpS63vnzXaS5zzzgZXCi1y2B mMTcA 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. 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 bdbc210ea8306ecebf704fe33fbe41083867e1ca..0cae0e8819d890f0818b531a40094f22e4e18fcb 100644 --- a/sound/soc/codecs/tas2764.c +++ b/sound/soc/codecs/tas2764.c @@ -426,7 +426,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) { @@ -435,12 +435,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; } @@ -450,6 +452,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 Sat Feb 15 00:03: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: 13975763 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 691E11A841A; Sat, 15 Feb 2025 00:06:20 +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=1739577982; cv=none; b=jzLXAq8S3nNTVT2Qh5Pas7TwJoPcuWx3Bg57PZCy5gFApZL1aRM2OHQm23PwPi48YuVzg/+h9l9dx3ec5SoYeBZgEpHky8RMOHuWaCFT8oghulyFHxcJuqVWSNvmb6zCVyBycsmSYCBvJ+mewcX9FjL9hat1FnXDvUYiqgIY/w4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739577982; c=relaxed/simple; bh=YGx9PSaUXVNDPo2cH+rNjw2DIvjtU+dlXI+O382Ewmw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MmmAYc78a2N9c1bmMb36uxWHayb/R+3yavEJVfWTD913uBRyNE/5upj2IzYCSJ2JEybkJ0B5ZDKAvjFzUlVCZADe9j9KIS7ILnfqZEmS0y8nWxws1B2DLuFkKI3EFvkos4K0cvoRwW0q6Gas0QrODtZqDpzephlI6ueI2XAV/ww= 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=mwKPX+d9; 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="mwKPX+d9" Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-220e83d65e5so35561795ad.1; Fri, 14 Feb 2025 16:06:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739577979; x=1740182779; 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=PZ84+yPdbVuhz7ak3Hw1Cb8Gf7TrNSS/4QEXDz4j3UI=; b=mwKPX+d9ZxjXnlHOLDVHaUdrpL5ZjIXHrs7IT1VUHgJDXtoJRF7DafI1fkHKOLP+cl n9F4EThzZdOPolEMSXvsvGdGDPXhKtM57sPcQjIvD0CbUMzXZhqi2pnZse/S7z6QeDCo C67RBS49QV4Y4y1LlWiOiPn1MrXfVyrFQKD1ia9Js6e0oobFXsiPqg3UaNbiG5ToObxM Y+TWTsqiZqTwYOKUzwM67dhva2NC2XQil8/9+f6NHk7FvdJc00KMJWYcoloTK8YWNof+ /ejKsgyIfRADfIVLi1MXG7HdHA3S+Cw/pBqqfUNwsclm7UqsH9W0GDibG4zfFS63H7kG 7UfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739577979; x=1740182779; 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=PZ84+yPdbVuhz7ak3Hw1Cb8Gf7TrNSS/4QEXDz4j3UI=; b=k2MV127Wc2yv26Qof4TPaXPx0TaAiUIpOyXITOHa+2P6mI4mR6kO5AzOwvjVZ9XttE zjoss4QJuQSo8+yZO+/XDymrYxLNd17negLfc2a+dHzDlu9JxW1rZDTOODMulp5734N3 RpUUshyPUw+TMb8+vT5kpihQD9v39UifGS9NImcz999l+4CNhc8g8NNI+6fXYgvYmt4Q hgYTfqpSPyg5+voDCJwdp5G64Cy6UUkX4nV0CzIqYx41G9J35/i+caAgAz8x+iuV1PZo HyF/lOCh/yjQctXZkOfTVQQ1B+H/LPR79HmJRq7ywVMVfb0+6+1QM1T/OlhXup2zIvf4 ijEQ== X-Forwarded-Encrypted: i=1; AJvYcCVcJVCP8A9RasBdQkYBJwqLweRolLhBvd/Uq1h6ad0ppGmf4QBch/vrGcALmxQKTBnJfeXrXes7KEslICs=@vger.kernel.org, AJvYcCVl8b6ua6gU5/7/fww/CPByn7ox5AOGVX0kVVjYCjfEmfhKcisdsPqO7KLneNPWFf2IqguF8iKDjaM7QY/2@vger.kernel.org, AJvYcCVlM2uRejOZ9yzaxK7Dfvonqcgig3N9XS2OKpwwV+FSR08Kf7lE2gBQ1yPKJV8zvfbRh3lRp8GjnuK2@vger.kernel.org X-Gm-Message-State: AOJu0YzLPr/SqA1Ntb/IgcSEpxgWV7NBYJOD2tu8CyPDquW3vDhnNape ClA7SFEqCLySUJfRXzXW+2gn9EkzJ9Is2e7R0Ke7+z9bGh5pm1XS X-Gm-Gg: ASbGncv3KwJczCYnJT5HTYHbU5+XHawAPMgInC7rf7WB4v3ASOLoR4cRbNsDKFfqOji 3qbR42Di96kPaeFVsfKuO8lAH02Dy0c2n6TS2wJ7oOdfgsPC87Vjbf6Tdlx9EowU5UZF8eMB0in 5BbB63cdtHVmOGTvihMk4MGUCUlvxUjJNF+adrFtRIECPmV8LLQFqp59nty0aAPTt8n/llMQtyF 1q9bkEh0t7RpYBQJY3UmcJnhhUGPoDMe2XnyoaWywcvpDF2rR/nWbv1gR4X0Z/MhZRUPnS1jQCC pATruljVCZx3oQYqGaDu9avYtWrAiZQpRbPGeCS7As/QHBtfGAm/WMMXvUyyn1Ky3iOiZq41aoh fwCM4bXDLLA== X-Google-Smtp-Source: AGHT+IG6Hm9pNI6VvtCGvN8M2e0uv4buL4nr2DpT31d3QO2bC+lTvrwW2S2SN9aTyfVa/+xOt06boA== X-Received: by 2002:a17:902:d50d:b0:220:f91a:4650 with SMTP id d9443c01a7336-2210402bfb5mr20473085ad.19.1739577979635; Fri, 14 Feb 2025 16:06:19 -0800 (PST) Received: from [192.168.2.3] (2403-580a-80ed-0-4835-5a07-49e7-f115.ip6.aussiebb.net. [2403:580a:80ed:0:4835:5a07:49e7:f115]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220f26ea127sm15071155ad.96.2025.02.14.16.06.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Feb 2025 16:06:19 -0800 (PST) From: James Calligeros Date: Sat, 15 Feb 2025 10:03:00 +1000 Subject: [PATCH 27/27] ASoC: tas2770: Set the SDOUT polarity correctly Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250215-apple-codec-changes-v1-27-723569b21b19@gmail.com> References: <20250215-apple-codec-changes-v1-0-723569b21b19@gmail.com> In-Reply-To: <20250215-apple-codec-changes-v1-0-723569b21b19@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 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, James Calligeros X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1752; i=jcalligeros99@gmail.com; h=from:subject:message-id; bh=t7b1dvsnhFRkTomOlVk7jphWt6a+ItGg7B4nOBgPrGs=; b=owGbwMvMwCV2xczoYuD3ygTG02pJDOnrb+54zPRzi9h80w331v155OGz4v3mBdahNcVm3Z9Vw nbL5W/Y31HKwiDGxSArpsiyoUnIY7YR281+kcq9MHNYmUCGMHBxCsBEdhgx/NPaa8J6NsC2Y9aK RV63t9iuXGixfo+cxJW+Sb9K/liqnN/GyHDBZFPP34qt1uL7bsUVZEorrp7E3SrLs+apoRZvc8G Kn4wA 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. 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 a9e65f95ec8600d905c45db4e013d3c2602fa8dc..793a0df499a631d8e4670d4a452572b2dae0c477 100644 --- a/sound/soc/codecs/tas2770.c +++ b/sound/soc/codecs/tas2770.c @@ -358,7 +358,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) { @@ -375,6 +375,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; @@ -393,6 +394,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;