Received: by 2002:a25:d7c1:0:0:0:0:0 with SMTP id o184csp3130700ybg; Mon, 28 Oct 2019 07:59:09 -0700 (PDT) X-Google-Smtp-Source: APXvYqzCfeSPfR+Yv9/wKLKTh2CPrk248Da9w3cW+Eb5W/+PXSn/f0Wov3lggZjCSngoc2EgokEE X-Received: by 2002:aa7:cc95:: with SMTP id p21mr19953307edt.189.1572274749704; Mon, 28 Oct 2019 07:59:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1572274749; cv=none; d=google.com; s=arc-20160816; b=P9Q+RWskhWBy5s3dpxyQS4UXcz8NO5Yw8mc0pf8HwLt2fkWifja/h6FcDfGC/Lr1Yh +EYQpUgKG+NJI7Jsel4VSFVhrk7ge3DmXQOxAJ71jOR6WneFFbrW5v+EuvpKDZvxmq9M GuypKAOfIwbwxKXarV9H6dpdcj7TOy3jKOo7fACghGqTlhLN0OY3VWpkIjl6f1ODl9un 1bpF0kHWWgdhURf5o0ePjP1ojPL1IzcvExtT69EL0YvTy2ZU6B3RPOlwtaeQLjL4p8A6 XKMCWdsSRi+CXD5QNISmz8yLgRKOvnwzxz0Jm614TG9LTIXKPEXil6skjuZuohzDMOPC zKqg== 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=hYTIUnX/AI5Bz2L8GNYYWwUBBBy462BZp8zsLD175JY=; b=Pt1kerT09xiPEI2l3HkpHM5E6mY1PzkJ++H646N+vCfn/dmzrKB2SZslTh7Qyk6h8I pYuy8+DI6+N5pGy1kF4DwIrnn92nJo+j/CW5LgXcxyiE76Vuo6408WxXX7brX+H3xRSA 92LRa9vbrsC8L0PiT2a16I7SY91GYug8YnZ3hwIBH2Sl+niWAuCA1P80CBxB5DL4O4kX bDAYOO1ztRzPonvNWv/p3UXOCZvaqUoo5hVTlN1oLulxRnkt1FpaCUuI3I2YrpweBkqd KlLAMD3snE2AZFnOJydxiE8rzduavV4Hz5CRlzHUijFftrFBzVeT4E/u8p8qGvPcmrTU qtPw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@codeaurora.org header.s=default header.b=n6f+P6jK; dkim=pass header.i=@codeaurora.org header.s=default header.b=EvILnX+z; 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 k12si7486690ede.181.2019.10.28.07.58.46; Mon, 28 Oct 2019 07:59:09 -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=n6f+P6jK; dkim=pass header.i=@codeaurora.org header.s=default header.b=EvILnX+z; 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 S1731317AbfJ1Duu (ORCPT + 99 others); Sun, 27 Oct 2019 23:50:50 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:45166 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729328AbfJ1Duu (ORCPT ); Sun, 27 Oct 2019 23:50:50 -0400 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 05D1F607C3; Mon, 28 Oct 2019 03:50:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1572234649; bh=2CeJJiynBfiiPtkhT7KuxPuZD1ERpgqHk8mmRQakQ0Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=n6f+P6jK/V/8/IbIPvRVa67o6nXGMO7y+RcGl7KVylER+7cd9mE5TCziSw+Y8F0CV /hDwylCW7CSVBIjAS5oUwu1/UWiYyXoG9wPjMbpBV1WFi+Osbt/c/7V5zuzqyo9265 23vmXwPhKirEJ23RGVrw6yQ4g/Euyx2wy5/DdPfk= 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 4D7E2602DA; Mon, 28 Oct 2019 03:50:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1572234647; bh=2CeJJiynBfiiPtkhT7KuxPuZD1ERpgqHk8mmRQakQ0Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=EvILnX+zrqGP0AaTtuOzEl+rz/bulC8ONZduPcwlda5OAbMRNZ5tFrdTyZZThAbwj STnfsS3sxc9CCUWpDu51VFGeNauaawJZabupDQj8wpTnrxRlLrKU+N3m61Ws1y599C lPGmoIKUJ2CaLRSDpgfSkdxnAgV0unSiBvcqmrUc= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 4D7E2602DA 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 , Greg Kroah-Hartman , Allison Randal , Thomas Gleixner , linux-kernel@vger.kernel.org (open list) Subject: [PATCH v1 4/5] scsi: ufs: Do not clear the DL layer timers Date: Sun, 27 Oct 2019 20:50:06 -0700 Message-Id: <1572234608-32654-5-git-send-email-cang@codeaurora.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1572234608-32654-1-git-send-email-cang@codeaurora.org> References: <1572234608-32654-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. Change-Id: I1a8c02832a185dc4ce9043eee6572ddee89bdcdb 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