Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp2784962ybl; Sun, 2 Feb 2020 06:38:37 -0800 (PST) X-Google-Smtp-Source: APXvYqzcqplT078XYQo9j2Smln6KuhImfK5OkxJaxQyusuVLpInsR54lffuEOQeS1LE3P8h5cYK2 X-Received: by 2002:a05:6808:50:: with SMTP id v16mr11613142oic.133.1580654316863; Sun, 02 Feb 2020 06:38:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1580654316; cv=none; d=google.com; s=arc-20160816; b=BmcFApKu0tNqhmZReiSC14sZvjba6I0qfV0ROFTSKUf1XoOZGBAbo0W4BLabzgJAyN RZqVHhQikkTXTBZPgm2KW19bHx0jWPJ/khAqD19gRbCZAP5pHGVodcqKkSP2jtM9koA6 it0FbiC5tdJeg0eG0grsYVBQEOTsKWn7k87NfUSqMRUdoUfozw6ct2CaCNTw5TTvUgXG uiLELMOW8f5hqW9ojXEJtTiaXdlaen/Wrwi96FVS3gvDcVrKKTEKb6ssXxzH1YcvE0fq 2e06rqPP0hRNHo4VdZjDSmCiePz5psOy/lTYS+JtzQtm71Cpc/P8Wc6Ef2Wbrq85daWa rzkA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=ih4Pj7LjGlqiueuD3OMdD/Ubng6cDHlRXAZYVnlfnn8=; b=g7z25t45/a0zW838DJy7ZiN/Uaz6RK4n8WteY28BECQnqTncnwwjR6mnMcbAmrdiSF xGq7SeyM+BFIJ3DzLyn+Qv1IHR6d0QuiU7p8XWMm24QoLrEpgp2ypZfwcrD/TG5FI0gP SSqmleRvACX+4nK5fCzC7IYOCTC1Qrks1U1VQyHg3OzgD9hqbd3ZDhwqzzPgqKlJ7gEu hTv5A69mGnAPcYD5uf4sGB5AAnkQlM9ErQg6LMNq66FGFkV7NySCCee7dtQRfPo2SH+y hjzXIyBz0VP+ws9gPOFYgrGRDv61fS1NaXBIHUHHHoTjJ46k9NQMM5jjB8JI+F2oQV5I oSWg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=CIVyqfkm; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f9si837567oti.44.2020.02.02.06.38.24; Sun, 02 Feb 2020 06:38:36 -0800 (PST) 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=@gmail.com header.s=20161025 header.b=CIVyqfkm; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727024AbgBBOhK (ORCPT + 99 others); Sun, 2 Feb 2020 09:37:10 -0500 Received: from mail-ua1-f68.google.com ([209.85.222.68]:38939 "EHLO mail-ua1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726837AbgBBOhJ (ORCPT ); Sun, 2 Feb 2020 09:37:09 -0500 Received: by mail-ua1-f68.google.com with SMTP id 73so4344549uac.6; Sun, 02 Feb 2020 06:37:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=ih4Pj7LjGlqiueuD3OMdD/Ubng6cDHlRXAZYVnlfnn8=; b=CIVyqfkmn/pL+mv/Mec0ynNmwkLzpZOKb3nQ5xFudSemA+Gw5ekljtq6uQQ5siajF+ nmC0DRQb6XGmv33YtbbsH4QzxWt9lXnMXAA6SRxK2WtydG4QxN0bzkrNGf2dKUWhT/rd jlWdKpKjuSiaeeeVpUj4fKrt88pUVVE06Msnf/BDPb1s3Av6VW4DDBKSAqnzwimwjvPP F7GhqRZXiCXpGOuYhW/0l8CY9xE36zvRsQtjviFByKEawdJvbdh25wxsnU7VyXJGwlxL SE2XUMmkq8IofSSfWsqsBWjs0LKJRxD+1VbVISBWFxNyme+y8CTiM/f6/tJICwfq9+y3 a6Tg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=ih4Pj7LjGlqiueuD3OMdD/Ubng6cDHlRXAZYVnlfnn8=; b=Ui+qUmskjt+8aKgi7gO8788TRImNkWEmfWUd3/XaUOCrb5v+/DdM1bScY9il6NTpDm eVujdqTe16eyp3kOoFXUp37iCvwDa/jjsqo5nggATFdnc1ZlMdzIh4atdcCaaAowTqEI JMs6s/bK+DLSY+To/tiMolUcWl6ufBH7l7CNcvioOLA1YQqPrUrF0pOYfq6ktj59jeFf 8/wr21vGE/2xG1Pli6zj8xL1UYyRpvumMkk0779Wje9KbUr/80S8C8GQcqh+XmdPiUsa gKVaaO9TdQ1qNVe5fE4piYTZnXrVzw2q0Xh8tJj6aal7EEF3uiaymIuEMbOy0Njknj80 WSyw== X-Gm-Message-State: APjAAAW/UngjpA5aZQdOjWPEB2ugGulvXst44bdBuBPBFiOi+p09qxEK i2TssTP9To0SUVGHS19DMlIUziLc0hUQUYFVOnE= X-Received: by 2002:ab0:2881:: with SMTP id s1mr11115054uap.95.1580654228212; Sun, 02 Feb 2020 06:37:08 -0800 (PST) MIME-Version: 1.0 References: <20200129073902.5786-1-stanley.chu@mediatek.com> <20200129073902.5786-5-stanley.chu@mediatek.com> In-Reply-To: <20200129073902.5786-5-stanley.chu@mediatek.com> From: Alim Akhtar Date: Sun, 2 Feb 2020 20:06:32 +0530 Message-ID: Subject: Re: [PATCH v3 4/4] scsi: ufs-mediatek: gate ref-clk during Auto-Hibern8 To: Stanley Chu Cc: linux-scsi@vger.kernel.org, "Martin K. Petersen" , Avri Altman , Alim Akhtar , "James E.J. Bottomley" , "Bean Huo (beanhuo)" , asutoshd@codeaurora.org, Can Guo , Matthias Brugger , Bart Van Assche , linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, open list , Kuohong Wang , peter.wang@mediatek.com, chun-hung.wu@mediatek.com, andy.teng@mediatek.com Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello Stanley On Wed, Jan 29, 2020 at 1:10 PM Stanley Chu wrote: > > In current UFS driver design, hba->uic_link_state will not > be changed after link enters Hibern8 state by Auto-Hibern8 mechanism. > In this case, reference clock gating will be skipped unless special > handling is implemented in vendor's callbacks. > > Support reference clock gating during Auto-Hibern8 period in > MediaTek Chipsets: If link state is already in Hibern8 while > Auto-Hibern8 feature is enabled, gate reference clock in > setup_clocks callback. > > Signed-off-by: Stanley Chu Reviewed-by: Alim Akhtar > --- > drivers/scsi/ufs/ufs-mediatek.c | 38 +++++++++++++++++++++++---------- > drivers/scsi/ufs/ufs-mediatek.h | 12 +++++++++++ > 2 files changed, 39 insertions(+), 11 deletions(-) > > diff --git a/drivers/scsi/ufs/ufs-mediatek.c b/drivers/scsi/ufs/ufs-mediatek.c > index d78897a14905..0ce08872d671 100644 > --- a/drivers/scsi/ufs/ufs-mediatek.c > +++ b/drivers/scsi/ufs/ufs-mediatek.c > @@ -143,6 +143,17 @@ static int ufs_mtk_setup_ref_clk(struct ufs_hba *hba, bool on) > return 0; > } > > +static u32 ufs_mtk_link_get_state(struct ufs_hba *hba) > +{ > + u32 val; > + > + ufshcd_writel(hba, 0x20, REG_UFS_DEBUG_SEL); > + val = ufshcd_readl(hba, REG_UFS_PROBE); > + val = val >> 28; > + > + return val; > +} > + > /** > * ufs_mtk_setup_clocks - enables/disable clocks > * @hba: host controller instance > @@ -155,7 +166,7 @@ static int ufs_mtk_setup_clocks(struct ufs_hba *hba, bool on, > enum ufs_notify_change_status status) > { > struct ufs_mtk_host *host = ufshcd_get_variant(hba); > - int ret = -EINVAL; > + int ret = 0; > > /* > * In case ufs_mtk_init() is not yet done, simply ignore. > @@ -165,19 +176,24 @@ static int ufs_mtk_setup_clocks(struct ufs_hba *hba, bool on, > if (!host) > return 0; > > - switch (status) { > - case PRE_CHANGE: > - if (!on && !ufshcd_is_link_active(hba)) { > + if (!on && status == PRE_CHANGE) { > + if (!ufshcd_is_link_active(hba)) { > ufs_mtk_setup_ref_clk(hba, on); > ret = phy_power_off(host->mphy); > + } else { > + /* > + * Gate ref-clk if link state is in Hibern8 > + * triggered by Auto-Hibern8. > + */ > + if (!ufshcd_can_hibern8_during_gating(hba) && > + ufshcd_is_auto_hibern8_enabled(hba) && > + ufs_mtk_link_get_state(hba) == > + VS_LINK_HIBERN8) > + ufs_mtk_setup_ref_clk(hba, on); > } > - break; > - case POST_CHANGE: > - if (on) { > - ret = phy_power_on(host->mphy); > - ufs_mtk_setup_ref_clk(hba, on); > - } > - break; > + } else if (on && status == POST_CHANGE) { > + ret = phy_power_on(host->mphy); > + ufs_mtk_setup_ref_clk(hba, on); > } > > return ret; > diff --git a/drivers/scsi/ufs/ufs-mediatek.h b/drivers/scsi/ufs/ufs-mediatek.h > index fccdd979d6fb..492414e5f481 100644 > --- a/drivers/scsi/ufs/ufs-mediatek.h > +++ b/drivers/scsi/ufs/ufs-mediatek.h > @@ -53,6 +53,18 @@ > #define VS_SAVEPOWERCONTROL 0xD0A6 > #define VS_UNIPROPOWERDOWNCONTROL 0xD0A8 > > +/* > + * Vendor specific link state > + */ > +enum { > + VS_LINK_DISABLED = 0, > + VS_LINK_DOWN = 1, > + VS_LINK_UP = 2, > + VS_LINK_HIBERN8 = 3, > + VS_LINK_LOST = 4, > + VS_LINK_CFG = 5, > +}; > + > /* > * SiP commands > */ > -- > 2.18.0 -- Regards, Alim