Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp1378736ybx; Fri, 1 Nov 2019 22:05:01 -0700 (PDT) X-Google-Smtp-Source: APXvYqx007Ck6dFeQ3BhWT0wwVbJVXbhmiiuHifA8XBR3bR7wbb4tjuq7N2G407hwej/tkNUxEWg X-Received: by 2002:a50:ac14:: with SMTP id v20mr16798087edc.291.1572671101762; Fri, 01 Nov 2019 22:05:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1572671101; cv=none; d=google.com; s=arc-20160816; b=Nk4nBwot2nUzs2AT8fPSaocHY07xBPmoxOrx26zkWCkEzxfa4F04lfQQhyOgTDuLKT ekll8DLdoueV8QmNqw8xRFc8xrNDWnMmcPD5nGE/cNE57r35bE4H0V+P2fcBwElL/60N gqFSEFHd26JDycbg7jNeqizyFmFL9p3FgXtZo90uiaGMWDoz4THZrnJjl8/NWWgAxSkY 0vcQxoE5hfLPZkUYUtuX4f0zwUS46YImXulUHTG4zDt5RQtEKKXonKZ56GzBpTG7jAYg PRO33ZrWGbpjM3B/RREs2dR3EVTdt8JnvL+QbwM/oBEjfJKJXRU9Q3j+aK0TyLWbTwET 1Iag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dmarc-filter:dkim-signature:dkim-signature; bh=nwS3rJZvoYE9yfH0D+l67il9nh79NQaJmOM5o6t1zlY=; b=nzmx56PPBQo0WCEIRWMrP7D72E2z6vB+7ZxFsdEJ4MutFw3hSxEjJCL0+O2/c1xDmL 87GVEZkfIGUJPHt7lKu1JIYjgvTV7qwF5/sorO2qEhnYGBxt4CzgKV2vARDLpjvLv3lf u7EFAxsRq8S3piBE+vSHU9dRAoN8tQWe9sfuihUNHkItWAIzGCDPFD6m/212GyO/s46g QlRahB+xwYlH27qN1rx7pT77OO+/6D7Gf7hOy8Wc24Rp8wmNArS3O7FTMGWIZslBQNl+ WoV1FQxqzHU1MhvKRuC4ZggCa6B/unZ0YzWjZdYZa5uQA5RWoIc4cdFVmfZBilSGLzjS wmBA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@codeaurora.org header.s=default header.b="nMd/8nGf"; dkim=pass header.i=@codeaurora.org header.s=default header.b=iXdihnSq; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e15si2267151eda.106.2019.11.01.22.04.38; Fri, 01 Nov 2019 22:05:01 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@codeaurora.org header.s=default header.b="nMd/8nGf"; dkim=pass header.i=@codeaurora.org header.s=default header.b=iXdihnSq; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727724AbfKBFCF (ORCPT + 99 others); Sat, 2 Nov 2019 01:02:05 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:50520 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725842AbfKBFCF (ORCPT ); Sat, 2 Nov 2019 01:02:05 -0400 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 06C1D615F9; Sat, 2 Nov 2019 05:02:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1572670924; bh=jddr8MoBIT1xRLTGNsH2aNlw3qACJFJphVK1ta+sZIM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nMd/8nGfu8flN8Kl8MXijHoVJ+AYVIi5ucVh0U29wn93E4YMakJwvLX9Fe/lydL5F TtO6bhajsI4diAtfGsKtOsmDaYbSiBg8UaGnheMyjrtQrJUBdTuditW5yHMJz9tzXp 2K5Nkrvhj/hCLL5I3eu0rwIuOEIUtzd1GhZ6RnGY= X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on pdx-caf-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=ALL_TRUSTED,BAYES_00, DKIM_INVALID,DKIM_SIGNED,SPF_NONE autolearn=no autolearn_force=no version=3.4.0 Received: from pacamara-linux.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: cang@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id 9D4EC615DB; Sat, 2 Nov 2019 05:02:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1572670922; bh=jddr8MoBIT1xRLTGNsH2aNlw3qACJFJphVK1ta+sZIM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=iXdihnSqSu2sfB6YTQfDtGWWidGHj3QM15p3QRaIDQZwUlUbg0DzagychrHvWm+BF Wd869Bej1uvmUZUz5uDA++jypb10OP8J8LbOog5CeJvGEtMSPcMKIg5lFG5YbBzHUc T7LK9Pp2+Y+x/elndRSTBmFxWX1OhwlQN99Nz3DA= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 9D4EC615DB Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=cang@codeaurora.org From: Can Guo To: asutoshd@codeaurora.org, nguyenb@codeaurora.org, rnayak@codeaurora.org, linux-scsi@vger.kernel.org, kernel-team@android.com, saravanak@google.com, salyzyn@google.com, cang@codeaurora.org Cc: Alim Akhtar , Avri Altman , Pedro Sousa , "James E.J. Bottomley" , "Martin K. Petersen" , Stanley Chu , Bean Huo , Tomas Winkler , Subhash Jadavani , Venkat Gopalakrishnan , Greg Kroah-Hartman , Thomas Gleixner , Allison Randal , linux-kernel@vger.kernel.org (open list) Subject: [PATCH v3 4/5] scsi: ufs: Do not clear the DL layer timers Date: Fri, 1 Nov 2019 22:01:37 -0700 Message-Id: <1572670898-750-5-git-send-email-cang@codeaurora.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1572670898-750-1-git-send-email-cang@codeaurora.org> References: <1572670898-750-1-git-send-email-cang@codeaurora.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org During power mode change, PACP_PWR_Req frame sends PAPowerModeUserData parameters (and they are considered valid by device if Flags[4] - UserDataValid bit is set in the same frame). Currently we don't set these PAPowerModeUserData parameters and hardware always sets UserDataValid bit which would clear all the DL layer timeout values of the peer device after the power mode change. This change sets the PAPowerModeUserData[0..5] to UniPro specification recommended default values, in addition we are also setting the relevant DME_LOCAL_* timer attributes as required by UFS HCI specification. Signed-off-by: Can Guo --- drivers/scsi/ufs/ufshcd.c | 20 ++++++++++++++++++++ drivers/scsi/ufs/unipro.h | 11 +++++++++++ 2 files changed, 31 insertions(+) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 979b161..d6e52b3 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -4108,6 +4108,26 @@ static int ufshcd_change_power_mode(struct ufs_hba *hba, ufshcd_dme_set(hba, UIC_ARG_MIB(PA_HSSERIES), pwr_mode->hs_rate); + ufshcd_dme_set(hba, UIC_ARG_MIB(PA_PWRMODEUSERDATA0), + DL_FC0ProtectionTimeOutVal_Default); + ufshcd_dme_set(hba, UIC_ARG_MIB(PA_PWRMODEUSERDATA1), + DL_TC0ReplayTimeOutVal_Default); + ufshcd_dme_set(hba, UIC_ARG_MIB(PA_PWRMODEUSERDATA2), + DL_AFC0ReqTimeOutVal_Default); + ufshcd_dme_set(hba, UIC_ARG_MIB(PA_PWRMODEUSERDATA3), + DL_FC1ProtectionTimeOutVal_Default); + ufshcd_dme_set(hba, UIC_ARG_MIB(PA_PWRMODEUSERDATA4), + DL_TC1ReplayTimeOutVal_Default); + ufshcd_dme_set(hba, UIC_ARG_MIB(PA_PWRMODEUSERDATA5), + DL_AFC1ReqTimeOutVal_Default); + + ufshcd_dme_set(hba, UIC_ARG_MIB(DME_LocalFC0ProtectionTimeOutVal), + DL_FC0ProtectionTimeOutVal_Default); + ufshcd_dme_set(hba, UIC_ARG_MIB(DME_LocalTC0ReplayTimeOutVal), + DL_TC0ReplayTimeOutVal_Default); + ufshcd_dme_set(hba, UIC_ARG_MIB(DME_LocalAFC0ReqTimeOutVal), + DL_AFC0ReqTimeOutVal_Default); + ret = ufshcd_uic_change_pwr_mode(hba, pwr_mode->pwr_rx << 4 | pwr_mode->pwr_tx); diff --git a/drivers/scsi/ufs/unipro.h b/drivers/scsi/ufs/unipro.h index f539f87..3dc4d8b 100644 --- a/drivers/scsi/ufs/unipro.h +++ b/drivers/scsi/ufs/unipro.h @@ -161,6 +161,17 @@ /* PHY Adapter Protocol Constants */ #define PA_MAXDATALANES 4 +#define DL_FC0ProtectionTimeOutVal_Default 8191 +#define DL_TC0ReplayTimeOutVal_Default 65535 +#define DL_AFC0ReqTimeOutVal_Default 32767 +#define DL_FC1ProtectionTimeOutVal_Default 8191 +#define DL_TC1ReplayTimeOutVal_Default 65535 +#define DL_AFC1ReqTimeOutVal_Default 32767 + +#define DME_LocalFC0ProtectionTimeOutVal 0xD041 +#define DME_LocalTC0ReplayTimeOutVal 0xD042 +#define DME_LocalAFC0ReqTimeOutVal 0xD043 + /* PA power modes */ enum { FAST_MODE = 1, -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project