From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DEDCA326938 for ; Thu, 28 May 2026 07:24:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779953087; cv=none; b=I8J6+f61ZMcv35Xnx/3/TFziJbShwtp3kF89eF8jexcznUOfMKhTUCKRQ1bz33mIiM1OjLvqobmxVscvYm4ndGeS954IRL2+8gGX71n9FfYLuffa7CDB2HbaBWTJ3rXJteiNxnYvbKTpQdpmSUPIQrN2afYeQychs1vbW2w706Q= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779953087; c=relaxed/simple; bh=3idqJl6wcwvb0AxoBWTmL/VY5VBaQ2Axkzvg62roBUk=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=BtiroOCh6MboALwK+T55xpAXdv5C8Fc0Yg+5UyJ6vht9pQHu+DY72WL6hmM4iMoHZUZuoM9sfGP6Z/+G+FZOb4YC2SeFQsDlyws7BdcuLiG8pRxeSNwktLAwpr9sq0IG6qrPtdrlg5+j2nqKiwEbnxkS0fKEv6GVkEvhL4E5TrE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=K/HIdM0J; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=IWFQqjYb; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="K/HIdM0J"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="IWFQqjYb" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64S6vOTN2621802 for ; Thu, 28 May 2026 07:24:45 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= xG2QgzYKrgNHNc7YpKtXae1/+zJd/2dlkLEFMR6jA5Q=; b=K/HIdM0J4VfZNZg9 gWwXPiL0VpXp98qi9sa+PsE8pR9yOzWdbihcKQxfeBa0l7v8LFXJmZerqGb/Y4Jm ugp5tdlGPxaXSQx9nOZiCFgl+MOBASaFP8Bj9ji2HwPM+OzmJP6i10zCAp5g8Afp 34zYP/zK74oxdg9Ab2XvRgaVpMYsyGFnod/a6uLMCFFIABnPnel+Byfvst8t6+c3 topwHEkkyimPNnYskjbVHMcHuT15BHBBzFxLL6H6JBaEeVGQNqMmGsurdzZTVML2 MRFQQU1PN9HGPYcYK6IL8SMp0fUFnCKdDF+s3gU9Q4OfN6BTQcIoTsVfsf+ZPNsH QeDOsw== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ee7yf1s4t-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 28 May 2026 07:24:44 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2bf08c2a24bso5418495ad.2 for ; Thu, 28 May 2026 00:24:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1779953084; x=1780557884; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=xG2QgzYKrgNHNc7YpKtXae1/+zJd/2dlkLEFMR6jA5Q=; b=IWFQqjYbcjy+m3Q0dFfAfRPXpIcKV9gLC+fgRwGNNdT1B7C92M5WKUAlinOmoOY/vF 9HuTFE0jCbTxQ1AbODI8NmK4FuRtjdUf12sFVTDv0h2ZTU7Dc43qHvMw36eJQrVHt/aq MRjzRWyQFCowVsAr+Su8s+N0mxUyt2jMrc5+WXgBEFPbAdKU9KoPOOS3l4tMTe4Wn+wK oaLNCGe7vqNGP/dqTG0qswp0byB8Iz9nDW/R8N5Q+XcvqafLDhpxCetfj0OTDmQ87/NT j5yQs7d1ciPBYFzSGEvKn8uAUI7VS/1EiyEffFDzKc/UI3FsNPCC2+kNVtSintBmAcXy WMUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779953084; x=1780557884; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=xG2QgzYKrgNHNc7YpKtXae1/+zJd/2dlkLEFMR6jA5Q=; b=ngeR05XaajnFRblp8xWyt1843ttke5Dxs/5XEATjA3Id+npUGZi3Ov7pojV18ZvsDs XEhgHpmVksFOp3cnRrh+cZaAIokf5qx9LyH4El9P1xV12oih1PY1VFdg9MfuyN65EykZ ezHZDZEIv1dWGLxDXWPS0KlrBwU9L65blcxAhwVpdmNnW5o6PsgJ3w1ELStUyT1ZpTgE k2DOoK2bxv/9+drlQN+he4AJoSfblnaWznYyahhgn25LKfkPpeemSRxXomnKatPgNa0s D+FWaJzCIbkoSbXiHIWQKt2iUY+APTPe14zckg1lyS59SKopPgTsdepFv9bWgd+h4kxD SLMQ== X-Forwarded-Encrypted: i=1; AFNElJ8LAsxtIsa8EkeUp1IpANnIpx9ea9tYJan7zRA7wPdS52pgwFKfeYytPn/tjSV8/wDwnJHYE5Sg3iAcQAw=@vger.kernel.org X-Gm-Message-State: AOJu0Yzt5rS4Ix6IFVdDwScmPdjB9vQY9SJPxYTJGWxFizbxZ20cQakG jzGeaB1Qld4qpMiygfUAVmirPETz43gtd4cRnqxqprRd9NNoRW69xKnH7QeThI8WVl6nZ1DSMPF vOxYFgyUWDCkgxHeZpUYyXxm0Ka27ilO1RYDnh2cvtMPpIcwnGIVNVthcEVsZqVkDfU4= X-Gm-Gg: Acq92OGlPKlJEoNdR+lEblD8JARtgrTJRP0puty8DyvEmXMaGU1LzKXid0TzBxQROfu 1eFx8XVye90FHnuvxGidUwcFeiNVr1d7+8FWg4d9cqk562NDNe5hzGz7WYxm3ZVONMObw5/2B1G VJRT6W4oAjNFIQuJgg1HOyKF+FHV0pxC3wiDvU9yp9NUbeW4cu21mcS9XTSj5g6XDQ9Taaejp9Y 2N2FjcV9FfytQkcPkjm9pEXycKEKSb4dwTQ0I31wTF3TRMrhPrI0JNz7j7iB3o1vIz2FN1sBvDt K9s6ZUlaUnm7jhSXUoGqK6He5LnBgHe1xxIefrYOBGFeizY0VuvSHInn4U9isxKCFPxDMFaj78r E15MPRhnKZPoiiuFBVlUCpdPydkLioDlonHq+5CxOmLgLjAY0CYGxEU3q/51h4NfjxD7xzegyed F4Tqxc71n4ZL8tGhLS4IVndg== X-Received: by 2002:a17:902:d48e:b0:2ba:5a20:1d94 with SMTP id d9443c01a7336-2beb059944cmr298415435ad.13.1779953083682; Thu, 28 May 2026 00:24:43 -0700 (PDT) X-Received: by 2002:a17:902:d48e:b0:2ba:5a20:1d94 with SMTP id d9443c01a7336-2beb059944cmr298414945ad.13.1779953083192; Thu, 28 May 2026 00:24:43 -0700 (PDT) Received: from [10.133.33.247] (tpe-colo-wan-fw-bordernet.qualcomm.com. [103.229.16.4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2beb5695f05sm219572265ad.6.2026.05.28.00.24.39 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 28 May 2026 00:24:42 -0700 (PDT) Message-ID: Date: Thu, 28 May 2026 15:24:37 +0800 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 2/2] scsi: ufs: core: Add support for static TX Equalization settings To: Manivannan Sadhasivam Cc: bvanassche@acm.org, beanhuo@micron.com, peter.wang@mediatek.com, martin.petersen@oracle.com, linux-scsi@vger.kernel.org, Alim Akhtar , Avri Altman , "James E.J. Bottomley" , Ram Kumar Dwivedi , Nitin Rawat , open list References: <20260527144055.2758170-1-can.guo@oss.qualcomm.com> <20260527144055.2758170-3-can.guo@oss.qualcomm.com> Content-Language: en-US From: Can Guo In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Proofpoint-GUID: 2Z6IeJZ4NK2lYLxtxDmCFUGVAn6mL16B X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTI4MDA3MiBTYWx0ZWRfX84z7FUik+1R3 QNMVCEbSSk13JmEEVn6UB/QfSq/pZkvoHWkFegOwEcWM0zSB9ME+sKcRBmhueUtHYcOp90Qdp61 +4kJS9vi32UluumlzzviaTEwW3ysGA8uKxJwKLskgxRgciZ+7l1xvaLLKfe9zTLmpkqHqtia/Wf Gxc7iAaqHUc6Wfffx2ErnUdo30LOZzZ5k8vX4TK9hBgw5XuJ1vPRzF/zpjiwEFPorx70T+SE/IE NQ9e/Vc0JERF08QqQoy0LNZAprelOLD0xi6rJEVS63xYOjln44ZuGmAUg+KiWDFaeUXb7GTtOpb GWkZ8O47NOLv9Y73Rons2RY3bsOaurcqNJeky/rij1i/f+Mf2C51AwqgPvPYLYkEho1PUs7ROsK VkJ0a3rfMyPSbvLMGNFxsIp6hJCK9sQOTrxDKYV2ih6yVduXWC9LlrY3iY82p3I74bS/sC8pHiR mwzIDp/LVpGxJWbqMcg== X-Proofpoint-ORIG-GUID: 2Z6IeJZ4NK2lYLxtxDmCFUGVAn6mL16B X-Authority-Analysis: v=2.4 cv=G8gs1dk5 c=1 sm=1 tr=0 ts=6a17edbc cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=nuhDOHQX5FNHPW3J6Bj6AA==:17 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=f2HFmwmC_kV93FwCZ9MA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-05-28_02,2026-05-26_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 spamscore=0 priorityscore=1501 clxscore=1015 adultscore=0 impostorscore=0 malwarescore=0 phishscore=0 bulkscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2605280072 On 5/28/2026 2:13 PM, Manivannan Sadhasivam wrote: > On Wed, May 27, 2026 at 07:40:55AM -0700, Can Guo wrote: >> Static TX Equalization settings and TX Precode enable indication from DT >> properties txeq-preshoot-g[1-6], txeq-deemphasis-g[1-6], and >> tx-precode-enable-g6 are board-specific baseline values. Values are >> provided as per-lane tuples: >> >> , [] >> >> Parse DT u32 properties with explicit range checks by using >> of_property_count_u32_elems()/of_property_read_u32_array(). >> >> When adaptive TX Equalization is used, these static settings are not final: >> >> - If valid settings are retrieved from qTxEQGnSettings/wTxEQGnSettingsExt, >> those retrieved settings override static DT settings. >> - If retrieval is not available/valid, TX EQTR runs and trained settings >> override static DT settings. >> >> So static DT settings are a fallback and are intended for cases where >> adaptive TX Equalization is not enabled/used. Adaptive TX Equalization >> remains the primary path when enabled. >> >> No behavior changes for platforms that do not provide these properties. >> >> Signed-off-by: Can Guo >> --- >> drivers/ufs/core/ufs-txeq.c | 4 +- >> drivers/ufs/host/ufshcd-pltfrm.c | 128 +++++++++++++++++++++++++++++++ >> include/ufs/ufshcd.h | 2 + >> 3 files changed, 133 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/ufs/core/ufs-txeq.c b/drivers/ufs/core/ufs-txeq.c >> index 4b264adfdf49..634ec039e129 100644 >> --- a/drivers/ufs/core/ufs-txeq.c >> +++ b/drivers/ufs/core/ufs-txeq.c >> @@ -1297,7 +1297,7 @@ int ufshcd_config_tx_eq_settings(struct ufs_hba *hba, >> } >> >> params = &hba->tx_eq_params[gear - 1]; >> - if (!params->is_valid || force_tx_eqtr) { >> + if (!params->is_valid || params->is_static || force_tx_eqtr) { >> int ret; >> >> ret = ufshcd_tx_eqtr(hba, params, pwr_mode); >> @@ -1310,6 +1310,7 @@ int ufshcd_config_tx_eq_settings(struct ufs_hba *hba, >> /* Mark TX Equalization settings as valid */ >> params->is_valid = true; >> params->is_trained = true; >> + params->is_static = false; >> params->is_applied = false; >> } >> >> @@ -1495,6 +1496,7 @@ static void ufshcd_extract_tx_eq_settings_attrs(struct ufs_hba *hba, u8 gear) >> } >> >> params->is_valid = true; >> + params->is_static = false; > Maybe it's me, but I'm not able to understand how you want to apply these static > EQ settings. In commit message you said, the static values should be used as a > fallback, but you just check for 'params->is_static' while triggering > ufshcd_tx_eqtr() which is supposed to perform adaptive TX EQ training. IMO, you > don't need any check at all for applying static setting. If '(!params->is_valid > || force_tx_eqtr)' condition is not satisfied, then the static setting should be > used. Thanks for the review. The distinction is between two different sources that can pre-populate txeq_params with is_valid set to true before ufshcd_config_tx_eq_settings() is called: 1. DT properties — parsed by ufshcd_pltfrm_parse_tx_eq_settings(),     sets is_valid = true, is_static = true. 2. UFS Attributes (qTxEQGnSettings/wTxEQGnSettingsExt) — retrieved by     ufshcd_retrieve_tx_eq_settings() (introduced in the 2nd series),     sets is_valid = true, is_static = false. Since both sources set is_valid = true, the is_valid flag alone cannot tell them apart. The is_static flag is the discriminator: - is_valid && is_static -> settings came from DT; they are a board-level baseline.   TX EQTR should still run to find optimal settings, which will then overwrite the static ones. - is_valid && !is_static -> settings came from UFS Attributes; they are previously trained   known-good values. TX EQTR can be skipped. - !is_valid -> no settings available yet; TX EQTR must run. So the condition check on (!params->is_valid || params->is_static || force_tx_eqtr) handles all three cases. Thanks, Can Guo. > > - Mani >