Received: by 2002:a05:6a10:2785:0:0:0:0 with SMTP id ia5csp212372pxb; Fri, 8 Jan 2021 03:01:35 -0800 (PST) X-Google-Smtp-Source: ABdhPJy7JhpunfvKt2fqspw8W2PrGU2MsHydPCM+gydr1tQ92IEvEtxByQyJfxlyvorSYikw9OW9 X-Received: by 2002:a17:906:f1cc:: with SMTP id gx12mr2200076ejb.164.1610103695682; Fri, 08 Jan 2021 03:01:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1610103695; cv=none; d=google.com; s=arc-20160816; b=GwLJNpxzvVW/MkmaAZ3pCQiqqezmMb2u60BHPCgo999HjVEi1+K9loZdlMLbMYLXzX MNnMw6pd/jCz9gtFxx4dZetOJUYKw/p4Sfm/iXtncLcQf/tnTs0BNAR/hvYeDS/IfeSi 4WTEjRnQFBmOBsMew/D1zEcJkAA19gAWUr3FAD/Lz6+0tkHVD5K3wAprdE0UOaFmJxTd 8jDtC9kTnEL2BS2KBc+DTMwBsTjWrlEoBQCxQzvHcjJb1dL75qhHdofy5xTRgpfoBVAy lETWGAMXQZsAndWmdRyEO2GmVkE+Xr7AgGM/Y1B6irf+jth0xE1abI5vMDtaT96XLY2y annA== 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; bh=rr4zQjuKMZFKxrA+TPrw+n3ZBzott1oyGG9I3wgblvM=; b=IUYFjUO2tfUISnmeTGx5QFHqf8RVNqAojpHHQaprK73YAl+nWfpcv+ZokWyXWRb09J C/eb6S68gkK9DlQmaK75HeCERGzNhqFmB4UvjWSAvlIBuxVtWztKw8qpmlM9WQR8veRC MqzaoRyMi3DjfDNm/hv3TR3ML7nT/qzg7/21TsMH4RLaX17DG03Nl1ImtDEdPVEBeUwC GVb0hIN24h+U0GBidNwe8hykq+5WdiG1XIqpsHYXpNk/w9RqSc40ywfxmAq4INzPyvup /USoQPUyNe2rRIWQ1bdPN/qqfCZsbWA+CRfZj23r8AdplczynnOnaLyKGbNT7/zXbad4 Yt9Q== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id cq7si3351247edb.425.2021.01.08.03.01.11; Fri, 08 Jan 2021 03:01:35 -0800 (PST) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727395AbhAHLAF (ORCPT + 99 others); Fri, 8 Jan 2021 06:00:05 -0500 Received: from alexa-out-tai-02.qualcomm.com ([103.229.16.227]:55682 "EHLO alexa-out-tai-02.qualcomm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726520AbhAHLAE (ORCPT ); Fri, 8 Jan 2021 06:00:04 -0500 Received: from ironmsg03-tai.qualcomm.com ([10.249.140.8]) by alexa-out-tai-02.qualcomm.com with ESMTP; 08 Jan 2021 18:59:21 +0800 X-QCInternal: smtphost Received: from cbsp-sh-gv.ap.qualcomm.com (HELO cbsp-sh-gv.qualcomm.com) ([10.231.249.68]) by ironmsg03-tai.qualcomm.com with ESMTP; 08 Jan 2021 18:58:57 +0800 Received: by cbsp-sh-gv.qualcomm.com (Postfix, from userid 393357) id 593A729ED; Fri, 8 Jan 2021 18:58:56 +0800 (CST) From: Ziqi Chen To: asutoshd@codeaurora.org, nguyenb@codeaurora.org, cang@codeaurora.org, hongwus@codeaurora.org, rnayak@codeaurora.org, vinholikatti@gmail.com, jejb@linux.vnet.ibm.com, martin.petersen@oracle.com, linux-scsi@vger.kernel.org, kernel-team@android.com, saravanak@google.com, salyzyn@google.com, ziqichen@codeaurora.org, kwmad.kim@samsung.com, stanley.chu@mediatek.com Cc: Andy Gross , Bjorn Andersson , Alim Akhtar , Avri Altman , "James E.J. Bottomley" , linux-arm-msm@vger.kernel.org (open list:ARM/QUALCOMM SUPPORT), linux-kernel@vger.kernel.org (open list) Subject: [PATCH v6 2/2] scsi: ufs-qcom: Fix ufs RST_n specs violation Date: Fri, 8 Jan 2021 18:56:25 +0800 Message-Id: <1610103385-45755-3-git-send-email-ziqichen@codeaurora.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1610103385-45755-1-git-send-email-ziqichen@codeaurora.org> References: <1610103385-45755-1-git-send-email-ziqichen@codeaurora.org> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org As per specs, e.g, JESD220E chapter 7.2, while powering off/on the ufs device, RST_n signal should be between VSS(Ground) and VCCQ/VCCQ2. Signed-off-by: Ziqi Chen --- drivers/scsi/ufs/ufs-qcom.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/scsi/ufs/ufs-qcom.c index 2206b1e..f97d7b0 100644 --- a/drivers/scsi/ufs/ufs-qcom.c +++ b/drivers/scsi/ufs/ufs-qcom.c @@ -568,6 +568,17 @@ static int ufs_qcom_link_startup_notify(struct ufs_hba *hba, return err; } +static void ufs_qcom_device_reset_ctrl(struct ufs_hba *hba, bool asserted) +{ + struct ufs_qcom_host *host = ufshcd_get_variant(hba); + + /* reset gpio is optional */ + if (!host->device_reset) + return; + + gpiod_set_value_cansleep(host->device_reset, asserted); +} + static int ufs_qcom_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op) { struct ufs_qcom_host *host = ufshcd_get_variant(hba); @@ -582,6 +593,9 @@ static int ufs_qcom_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op) ufs_qcom_disable_lane_clks(host); phy_power_off(phy); + /* reset the connected UFS device during power down */ + ufs_qcom_device_reset_ctrl(hba, true); + } else if (!ufs_qcom_is_link_active(hba)) { ufs_qcom_disable_lane_clks(host); } @@ -1421,10 +1435,10 @@ static int ufs_qcom_device_reset(struct ufs_hba *hba) * The UFS device shall detect reset pulses of 1us, sleep for 10us to * be on the safe side. */ - gpiod_set_value_cansleep(host->device_reset, 1); + ufs_qcom_device_reset_ctrl(hba, true); usleep_range(10, 15); - gpiod_set_value_cansleep(host->device_reset, 0); + ufs_qcom_device_reset_ctrl(hba, false); usleep_range(10, 15); return 0; -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project