lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20230817093257.951-1-shenghao-ding@ti.com>
Date:   Thu, 17 Aug 2023 17:32:56 +0800
From:   Shenghao Ding <shenghao-ding@...com>
To:     <broonie@...nel.org>, <robh+dt@...nel.org>, <lgirdwood@...il.com>,
        <perex@...ex.cz>, <pierre-louis.bossart@...ux.intel.com>
CC:     <kevin-lu@...com>, <13916275206@....com>,
        <alsa-devel@...a-project.org>, <linux-kernel@...r.kernel.org>,
        <liam.r.girdwood@...el.com>, <mengdong.lin@...el.com>,
        <baojun.xu@...com>, <thomas.gfeller@...rop.com>, <peeyush@...com>,
        <navada@...com>, <tiwai@...e.de>, <gentuser@...il.com>,
        Shenghao Ding <shenghao-ding@...com>
Subject: [PATCH v1] ASoC: tas2781: fixed register access error when switching to other chips

fixed register access error when switching to other tas2781 -- refresh the page
inside regmap on the switched tas2781

Signed-off-by: Shenghao Ding <shenghao-ding@...com>

---
Changes in v1:
 - fixed register access error when switching to other tas2781
---
 sound/soc/codecs/tas2781-comlib.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/sound/soc/codecs/tas2781-comlib.c b/sound/soc/codecs/tas2781-comlib.c
index a88c6c28a394..ffb26e4a7e2f 100644
--- a/sound/soc/codecs/tas2781-comlib.c
+++ b/sound/soc/codecs/tas2781-comlib.c
@@ -57,16 +57,17 @@ static int tasdevice_change_chn_book(struct tasdevice_priv *tas_priv,
 
 		if (client->addr != tasdev->dev_addr) {
 			client->addr = tasdev->dev_addr;
-			if (tasdev->cur_book == book) {
-				ret = regmap_write(map,
-					TASDEVICE_PAGE_SELECT, 0);
-				if (ret < 0) {
-					dev_err(tas_priv->dev, "%s, E=%d\n",
-						__func__, ret);
-					goto out;
-				}
+			/* All tas2781s share the same regmap, clear the page
+			 * inside regmap once switching to another tas2781.
+			 * Register 0 at any pages and any books inside tas2781
+			 * is the same one for page-switching.
+			 */
+			ret = regmap_write(map, TASDEVICE_PAGE_SELECT, 0);
+			if (ret < 0) {
+				dev_err(tas_priv->dev, "%s, E=%d\n",
+					__func__, ret);
+				goto out;
 			}
-			goto out;
 		}
 
 		if (tasdev->cur_book != book) {
-- 
2.34.1

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ