Received: by 2002:a25:d7c1:0:0:0:0:0 with SMTP id o184csp4121576ybg; Tue, 29 Oct 2019 02:26:22 -0700 (PDT) X-Google-Smtp-Source: APXvYqwagVvOfV9JWa/RyCAwc0hWoYkDiI3q87vdc2yo/U1//OPyNv0nLWKKUJf4p76oms/ZiV3N X-Received: by 2002:a17:906:4ec9:: with SMTP id i9mr2214102ejv.8.1572341182298; Tue, 29 Oct 2019 02:26:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1572341182; cv=none; d=google.com; s=arc-20160816; b=DyIxB2905xlc3trW2fR/trVsjMfCe+1g1TAK51MZJku9ZQ0VqrGdAsmROPfBD0PB57 vo2o9rjIqz0ZsKmy4QcubJLmc+yEewn7u/8j2T/rD0+zcLcPhkN/eSmc9qfR6dHWXmRZ OwKoJOQV47v+yjhxf+XZZQ8VrjZ9K4CsiGb9NGCe+Og7MN7RhCYIcHvNPiAgPq/p2txU T76/fTVyrqev7koixxikJoqV4V0tLS4KN51biozXOOCjiMEsyIFeK8ch51I0MGbaUOxj d6NZSzVZKDstGPPpAv7+aHFcIuTnn6iPn5n2t/alCT5OWU9Y2p5bGpOnmkdnVqPMkEuW qcww== 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=ywPffUakJxnP+fefbHovwwfavgpGBdN/HJisTjysitY=; b=JJasO6kpeaa1ls8Ee7GO2UclndgiktlsMvP0dqSRseFbVSwfWHA/X5WeKYR9U/b3vB vdGlpjURQuRM20u+o9TuTaWPu9XGkb70AXMyUl76Hq77lIiZIL0ibTXzThuT+Iun1VQr qyi5WOrpeRAJEKIqfhLLGk26QQiUcFCaSnPEudM3217rvXwi6u/08LjKjPb3xIzJ7ocL QaIlMiVdwBLauM6zD+21W5N4ff/7TxypgGpa3I0fQlVPW82YDu3hB4aMk2VRlAOVZ/e1 By6wQ6xBDB8OgMaOIRK86D+gdkn0xeh8q5W1RODblo+KsVvGtmDsK93vEYn2DeWeGFmZ KNLg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@codeaurora.org header.s=default header.b=aYRbNw7G; dkim=pass header.i=@codeaurora.org header.s=default header.b=B4F25mVY; 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 f23si11114969edj.380.2019.10.29.02.25.58; Tue, 29 Oct 2019 02:26:22 -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=aYRbNw7G; dkim=pass header.i=@codeaurora.org header.s=default header.b=B4F25mVY; 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 S1730191AbfJ2DNt (ORCPT + 99 others); Mon, 28 Oct 2019 23:13:49 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:35498 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726464AbfJ2DNt (ORCPT ); Mon, 28 Oct 2019 23:13:49 -0400 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 7C22660D90; Tue, 29 Oct 2019 03:13:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1572318827; bh=scuAnT5H3nEdJxrQRggDSKVMJUJJS7VQFEZmMK5pJLE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aYRbNw7GzDyJVFZtUXqxXDE0d8H+D43Xe1rGb3Dm0Zaljoi/VGM0lRW2bUNLcW/3L RH/8n1zfsvq3krjFJDO8QqeZ/1VLtvutfnUAPOfxi8jB4yNnquY6nvCJR4uqOVvVSP keuummUd7dMFOojKby5vPXID6YbBtyFaRm/wD+go= 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 F312C60CDD; Tue, 29 Oct 2019 03:13:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1572318825; bh=scuAnT5H3nEdJxrQRggDSKVMJUJJS7VQFEZmMK5pJLE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=B4F25mVYUQFmzJrCitT2mqxz1WPlQ1YbFP3pylRCDNBa+0wx2zUwElifiq49HLxF6 cCkNXZelCLy5SiOgMKa61qewwq5FMLzfoXWkMr/RrGtYN4ZsgmQJ5by0edxjLRng05 M1WVHAEM+rh74dFlv2IdEKaG+6t8X3t7CsBdNOPQ= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org F312C60CDD 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 , Allison Randal , Greg Kroah-Hartman , Thomas Gleixner , linux-kernel@vger.kernel.org (open list) Subject: [PATCH v2 4/5] scsi: ufs: Do not clear the DL layer timers Date: Mon, 28 Oct 2019 20:10:53 -0700 Message-Id: <1572318655-28772-5-git-send-email-cang@codeaurora.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1572318655-28772-1-git-send-email-cang@codeaurora.org> References: <1572318655-28772-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 6e9236a..34efa8a 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -4084,6 +4084,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