Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp2830322pxv; Mon, 12 Jul 2021 03:00:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxvfcA2smGALhv1wylbLX9a+kafR1FB/CoV01gjHuXuwg7+d8qpRqnl27/QHrX5+o+Ya2NA X-Received: by 2002:a6b:dc08:: with SMTP id s8mr28667072ioc.7.1626084057141; Mon, 12 Jul 2021 03:00:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626084057; cv=none; d=google.com; s=arc-20160816; b=pN2sIzFSNYhHd9cnoemY0EmBDfHrGGNzVGwsup+2Zt9Bo99E5a9qVlWM6zUYOEn+my BaNDj5nuTQOYM0VYOPtJ/CTEEqou4znOOjMgYyLY5B51U6h3fmhVormlhhyco7VNj2nR veZ6Ulz2UkaujyGNE02JLhV87O84jDTvauj6C0cLnMdFWv8ANECdFkgMt7an6r9bAZ2m UEr7BD066J58+oApZcHzeWV1g/giwXFMOAVKgZtSbaWrcDKoSqq5aZo/dkvPjUQXtZNK r519PTXHy5/yZY6fsxnk4Hd1ulpNtLb1hF1ogc7BR+JNfUdFN0GRDuo3bieWxUVHNk4o YMbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=i1ZVyVrKFvLJPcA2ilTkEAFaqIfE1U6dbtNCz6Mz8lo=; b=ldM/t3jTgSmjGEp+awE+f5FPcALBAuzK+PCfpFjQB45poHJ0lo4+r63mCz4ZOt30TX C2EFw5ipzDlPNDTFjO9o2ao5b82jq1ChptkS3bTypfnLlWK+Fn+NO7BiRkWJJl5IaL/x P/KJQ4577MmI8OHQimQWbpiJeVPv1hOUwiYbA+5kyRPVfcYMEHkHp05MSIGXswEL86WV hBuJRr5JzJyJ30XNcke2CP5kEm/C/gRluBx/x/DSjMTOIon58mI7M7xD9/qS8Vg60N3X oxhWTE0MN20JhFmVW7AUlm3FuHaBWLu6fDopTYX37TZR8OvciEIg04kwfQWfxb+XMQgc 7Chg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=bvm8CbnC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i23si18083590jav.3.2021.07.12.03.00.41; Mon, 12 Jul 2021 03:00:57 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=bvm8CbnC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241916AbhGLHMe (ORCPT + 99 others); Mon, 12 Jul 2021 03:12:34 -0400 Received: from mail.kernel.org ([198.145.29.99]:50396 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240074AbhGLGup (ORCPT ); Mon, 12 Jul 2021 02:50:45 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 9818F610CD; Mon, 12 Jul 2021 06:47:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626072471; bh=CTyWB9QGIlHAP5vMGcvJDJzBqgMb6VV7ylxgstjsmxc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bvm8CbnC45PqT11M84lR6QTPBbAhGVU9a/VgMBjMj9VngUr1WHIy7SpzipLuDEyQw AQCrFUY7Poj850iw7o9t5bjkSRWncHZXNLQUqpz4xXImqJUc1TYJkxHT/mkYM/ZDuh WibgBMOOL1yoQqJw7my75rq3WTkJjMZgOv4qpbZE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Shuming Fan , Mark Brown , Sasha Levin Subject: [PATCH 5.10 507/593] ASoC: rt5682: fix getting the wrong device id when the suspend_stress_test Date: Mon, 12 Jul 2021 08:11:07 +0200 Message-Id: <20210712060947.566638948@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210712060843.180606720@linuxfoundation.org> References: <20210712060843.180606720@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Shuming Fan [ Upstream commit 867f8d18df4f5ccd6c2daf4441a6adeca0b9725b ] This patch will be the workaround to fix getting the wrong device ID on the rare chance. It seems like something unstable when the system resumes. e.g. the bus clock This patch tries to read the device ID to check several times. After the test, the driver will get the correct device ID the second time. Signed-off-by: Shuming Fan Link: https://lore.kernel.org/r/20210111092740.9128-1-shumingf@realtek.com Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- sound/soc/codecs/rt5682-sdw.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/sound/soc/codecs/rt5682-sdw.c b/sound/soc/codecs/rt5682-sdw.c index 848b79b5a130..5f8867e00923 100644 --- a/sound/soc/codecs/rt5682-sdw.c +++ b/sound/soc/codecs/rt5682-sdw.c @@ -375,18 +375,12 @@ static int rt5682_sdw_init(struct device *dev, struct regmap *regmap, static int rt5682_io_init(struct device *dev, struct sdw_slave *slave) { struct rt5682_priv *rt5682 = dev_get_drvdata(dev); - int ret = 0; + int ret = 0, loop = 10; unsigned int val; if (rt5682->hw_init) return 0; - regmap_read(rt5682->regmap, RT5682_DEVICE_ID, &val); - if (val != DEVICE_ID) { - dev_err(dev, "Device with ID register %x is not rt5682\n", val); - return -ENODEV; - } - /* * PM runtime is only enabled when a Slave reports as Attached */ @@ -406,6 +400,19 @@ static int rt5682_io_init(struct device *dev, struct sdw_slave *slave) pm_runtime_get_noresume(&slave->dev); + while (loop > 0) { + regmap_read(rt5682->regmap, RT5682_DEVICE_ID, &val); + if (val == DEVICE_ID) + break; + dev_warn(dev, "Device with ID register %x is not rt5682\n", val); + usleep_range(30000, 30005); + loop--; + } + if (val != DEVICE_ID) { + dev_err(dev, "Device with ID register %x is not rt5682\n", val); + return -ENODEV; + } + if (rt5682->first_hw_init) { regcache_cache_only(rt5682->regmap, false); regcache_cache_bypass(rt5682->regmap, true); -- 2.30.2