Received: by 2002:a05:7412:419a:b0:f3:1519:9f41 with SMTP id i26csp189780rdh; Thu, 23 Nov 2023 00:42:33 -0800 (PST) X-Google-Smtp-Source: AGHT+IGSFZ4AKYTXlhgasCMuA96fIzt9ClZp8esRA+QjeYaLE0zhU3P1TPL+edT6B77513+jARlT X-Received: by 2002:a05:6a00:2d94:b0:6c4:d615:2169 with SMTP id fb20-20020a056a002d9400b006c4d6152169mr3586366pfb.10.1700728953430; Thu, 23 Nov 2023 00:42:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700728953; cv=none; d=google.com; s=arc-20160816; b=vCl97igPyr1vbQP0aaNq5LRkgFAdxHABMcov6UvEoik03pRpJHKqJ8Zcso1Egijjco l32vg/NsPJIdd4cGXnAj5PEdNMvgs3wd7/pHSh/PX8uXF80w4fN1ArSuQTKOWaOKovv8 ZUd/C0UD5cBhto7ieVk+z9MNFgqiQI+dWdnVLtZGkQtba0KFTctkgrefFyyuHyiBujIf TeSb5+5Vd+lB4yWUAzyrYN+QhbN6BbbogA8SDE1arj5CUja3DdmDQii3l7GofUk2ck8Q oCvEV1ZAReGDYwG/jGUEEOf7Ho0CQqCANR8TZ37xjDSihASOe3FO7Yqt803pLhcPZO9s JY3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from:dkim-signature; bh=DFF6SBown3zJI3vv5koqMtjckFgbW+mpaijN5lmrUrY=; fh=VQa7NEjtn3/3f/ROk/deKj2WPVAkbCj26yn3kiZ4Ttc=; b=JlyKokuVYIXyMkF/xowyEt1nPIcUTlnlrm999cc/8d4VcLMaR7i8n//2OiQsz8s348 nTK8i+XL2ywLSrfq39oREqmuUJaMr45MslGwxRKZ0Wn0r+13RREkQy7myGD8CSNhLM5z PkK5F85NI5zgW7Lb+17qVgUznmuVfs/r8KluhjuhMhAXEKK45CPay9Uo85AJCnoCx4g3 rXXdUn+WVdPxMzPoit7iXjzxHPERlSYimOlgixigW0mmhpqESceu+fEDBCv8i6EmyAxf wGstRqM6hSQXaWBkdPznq4a4FWA7xPGhu8VqQLcKgydPBqHV97XeO5gE9lr5YyTV0NcU kd0g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=OpIA9zbx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id p24-20020a056a000a1800b006cb90e7f47csi827324pfh.199.2023.11.23.00.42.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Nov 2023 00:42:33 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=OpIA9zbx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id CCFB88317499; Thu, 23 Nov 2023 00:41:50 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232140AbjKWIlH (ORCPT + 99 others); Thu, 23 Nov 2023 03:41:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59470 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229543AbjKWIlF (ORCPT ); Thu, 23 Nov 2023 03:41:05 -0500 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EE6BCD56; Thu, 23 Nov 2023 00:41:11 -0800 (PST) Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 3AN5uFG9020347; Thu, 23 Nov 2023 08:36:41 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=from : to : cc : subject : date : message-id : in-reply-to : references; s=qcppdkim1; bh=DFF6SBown3zJI3vv5koqMtjckFgbW+mpaijN5lmrUrY=; b=OpIA9zbxNYBAFNRyegAJN0ZYE0fVwHTkkoybSVka+t4dGPDLnQ1ANWKQPVmPJmSPFn/n EqtZYFYeTklHBP1CVRvugmHUlB3oecQ0UbbH7GIUscniuApWLZLvT09W9xkCr5Lha8f7 CEtH+sc4UKqqZHk1LsFo7VL7n6wQlugVZVJ3Yw22t92/t6+aTlMBCIHG9pWYAsPUBP3j VNlAQh12t6iyfvfqkna78MkFe4JXhL5GOAgJoHI9UvkEz0AqSESlhapuFx2ZuOIwZ0me 8krMNiFblYLtz4sRk1nuycYzpe6gW50lZQouQnyADcq+xvvU251hb4KXADL70zw7diAS Ag== Received: from nasanppmta04.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3uhf6ktt5g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 23 Nov 2023 08:36:40 +0000 Received: from pps.filterd (NASANPPMTA04.qualcomm.com [127.0.0.1]) by NASANPPMTA04.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTP id 3AN8Woqr021515; Thu, 23 Nov 2023 08:36:39 GMT Received: from pps.reinject (localhost [127.0.0.1]) by NASANPPMTA04.qualcomm.com (PPS) with ESMTP id 3uhpmqphf1-1; Thu, 23 Nov 2023 08:36:39 +0000 Received: from NASANPPMTA04.qualcomm.com (NASANPPMTA04.qualcomm.com [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 3AN8YmAt023558; Thu, 23 Nov 2023 08:36:39 GMT Received: from stor-dylan.qualcomm.com (stor-dylan.qualcomm.com [192.168.140.207]) by NASANPPMTA04.qualcomm.com (PPS) with ESMTP id 3AN8adNT025579; Thu, 23 Nov 2023 08:36:39 +0000 Received: by stor-dylan.qualcomm.com (Postfix, from userid 359480) id 1F5CC20A68; Thu, 23 Nov 2023 00:36:39 -0800 (PST) From: Can Guo To: quic_cang@quicinc.com, bvanassche@acm.org, mani@kernel.org, adrian.hunter@intel.com, beanhuo@micron.com, avri.altman@wdc.com, junwoo80.lee@samsung.com, martin.petersen@oracle.com Cc: linux-scsi@vger.kernel.org, "Bao D. Nguyen" , Andy Gross , Bjorn Andersson , Konrad Dybcio , "James E.J. Bottomley" , linux-arm-msm@vger.kernel.org (open list:ARM/QUALCOMM SUPPORT), linux-kernel@vger.kernel.org (open list) Subject: [PATCH v4 10/10] scsi: ufs: ufs-qcom: Add support for UFS device version detection Date: Thu, 23 Nov 2023 00:36:16 -0800 Message-Id: <1700728577-14729-11-git-send-email-quic_cang@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1700728577-14729-1-git-send-email-quic_cang@quicinc.com> References: <1700728577-14729-1-git-send-email-quic_cang@quicinc.com> X-QCInternal: smtphost X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: sarxo_8PsrxAcwn7jT4nyfLh0nNpcGjK X-Proofpoint-ORIG-GUID: sarxo_8PsrxAcwn7jT4nyfLh0nNpcGjK X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.987,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-11-23_06,2023-11-22_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 lowpriorityscore=0 bulkscore=0 phishscore=0 priorityscore=1501 clxscore=1015 adultscore=0 mlxlogscore=999 spamscore=0 suspectscore=0 impostorscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311060000 definitions=main-2311230060 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Thu, 23 Nov 2023 00:41:51 -0800 (PST) From: "Bao D. Nguyen" A spare register in UFS host controller is used to indicate the UFS device version. The spare register is populated by bootloader for now, but in future it will be populated by HW automatically during link startup with its best efforts in any boot stages prior to Linux. During host driver init, read the spare register, if it is not populated with a UFS device version, go ahead with the dual init mechanism. If a UFS device version is in there, use the UFS device version together with host controller's HW version to decide the proper PHY gear which should be used to configure the UFS PHY without going through the second init. Signed-off-by: Bao D. Nguyen Signed-off-by: Can Guo --- drivers/ufs/host/ufs-qcom.c | 23 ++++++++++++++++++----- drivers/ufs/host/ufs-qcom.h | 2 ++ 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/drivers/ufs/host/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c index 7bbccf4..70bedd9 100644 --- a/drivers/ufs/host/ufs-qcom.c +++ b/drivers/ufs/host/ufs-qcom.c @@ -1070,15 +1070,28 @@ static void ufs_qcom_advertise_quirks(struct ufs_hba *hba) static void ufs_qcom_set_phy_gear(struct ufs_qcom_host *host) { struct ufs_host_params *host_params = &host->host_params; + u32 val, dev_major = 0; host->phy_gear = host_params->hs_tx_gear; - /* - * Power up the PHY using the minimum supported gear (UFS_HS_G2). - * Switching to max gear will be performed during reinit if supported. - */ - if (host->hw_ver.major < 0x5) + if (host->hw_ver.major < 0x5) { + /* + * Power up the PHY using the minimum supported gear (UFS_HS_G2). + * Switching to max gear will be performed during reinit if supported. + */ host->phy_gear = UFS_HS_G2; + } else { + val = ufshcd_readl(host->hba, REG_UFS_DEBUG_SPARE_CFG); + dev_major = FIELD_GET(GENMASK(7, 4), val); + + /* UFS device version populated, no need to do init twice */ + if (dev_major != 0) + host->hba->quirks &= ~UFSHCD_QUIRK_REINIT_AFTER_MAX_GEAR_SWITCH; + + /* For UFS 3.1 and older, apply HS-G4 PHY gear to save power */ + if (dev_major < 0x4 && dev_major > 0) + host->phy_gear = UFS_HS_G4; + } } static void ufs_qcom_set_host_params(struct ufs_hba *hba) diff --git a/drivers/ufs/host/ufs-qcom.h b/drivers/ufs/host/ufs-qcom.h index 11419eb..d12fc5a 100644 --- a/drivers/ufs/host/ufs-qcom.h +++ b/drivers/ufs/host/ufs-qcom.h @@ -54,6 +54,8 @@ enum { UFS_AH8_CFG = 0xFC, REG_UFS_CFG3 = 0x271C, + + REG_UFS_DEBUG_SPARE_CFG = 0x284C, }; /* QCOM UFS host controller vendor specific debug registers */ -- 2.7.4