All of lore.kernel.org
 help / color / mirror / Atom feed
From: Can Guo <cang@codeaurora.org>
To: Stanley Chu <stanley.chu@mediatek.com>
Cc: asutoshd@codeaurora.org, nguyenb@codeaurora.org,
	hongwus@codeaurora.org, rnayak@codeaurora.org,
	linux-scsi@vger.kernel.org, kernel-team@android.com,
	saravanak@google.com, salyzyn@google.com,
	Alim Akhtar <alim.akhtar@samsung.com>,
	Avri Altman <avri.altman@wdc.com>,
	"James E.J. Bottomley" <jejb@linux.ibm.com>,
	"Martin K. Petersen" <martin.petersen@oracle.com>,
	Bean Huo <beanhuo@micron.com>,
	Colin Ian King <colin.king@canonical.com>,
	Tomas Winkler <tomas.winkler@intel.com>,
	Bart Van Assche <bvanassche@acm.org>,
	Venkat Gopalakrishnan <venkatg@codeaurora.org>,
	open list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v5 6/8] scsi: ufs: Add dev ref clock gating wait time support
Date: Wed, 05 Feb 2020 12:52:10 +0800	[thread overview]
Message-ID: <d37515ab264b0c46848ee2b88ba0a676@codeaurora.org> (raw)
In-Reply-To: <1580871040.21785.7.camel@mtksdccf07>

On 2020-02-05 10:50, Stanley Chu wrote:
> Hi Can,
> 
> On Mon, 2020-02-03 at 01:17 -0800, Can Guo wrote:
>> In UFS version 3.0, a newly added attribute bRefClkGatingWaitTime 
>> defines
>> the minimum time for which the reference clock is required by device 
>> during
>> transition to LS-MODE or HIBERN8 state. Make this change to reflect 
>> the new
>> requirement by adding delays before turning off the clock.
>> 
>> Signed-off-by: Can Guo <cang@codeaurora.org>
>> Reviewed-by: Asutosh Das <asutoshd@codeaurora.org>
>> ---
>>  drivers/scsi/ufs/ufs.h    |  3 +++
>>  drivers/scsi/ufs/ufshcd.c | 40 
>> ++++++++++++++++++++++++++++++++++++++++
>>  2 files changed, 43 insertions(+)
>> 
>> diff --git a/drivers/scsi/ufs/ufs.h b/drivers/scsi/ufs/ufs.h
>> index cfe3803..304076e 100644
>> --- a/drivers/scsi/ufs/ufs.h
>> +++ b/drivers/scsi/ufs/ufs.h
>> @@ -167,6 +167,7 @@ enum attr_idn {
>>  	QUERY_ATTR_IDN_FFU_STATUS		= 0x14,
>>  	QUERY_ATTR_IDN_PSA_STATE		= 0x15,
>>  	QUERY_ATTR_IDN_PSA_DATA_SIZE		= 0x16,
>> +	QUERY_ATTR_IDN_REF_CLK_GATING_WAIT_TIME	= 0x17,
>>  };
>> 
>>  /* Descriptor idn for Query requests */
>> @@ -534,6 +535,8 @@ struct ufs_dev_info {
>>  	u16 wmanufacturerid;
>>  	/*UFS device Product Name */
>>  	u8 *model;
>> +	u16 spec_version;
>> +	u32 clk_gating_wait_us;
>>  };
>> 
>>  /**
>> diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
>> index e8f7f9d..d5c547b 100644
>> --- a/drivers/scsi/ufs/ufshcd.c
>> +++ b/drivers/scsi/ufs/ufshcd.c
>> @@ -91,6 +91,9 @@
>>  /* default delay of autosuspend: 2000 ms */
>>  #define RPM_AUTOSUSPEND_DELAY_MS 2000
>> 
>> +/* Default value of wait time before gating device ref clock */
>> +#define UFSHCD_REF_CLK_GATING_WAIT_US 0xFF /* microsecs */
>> +
>>  #define ufshcd_toggle_vreg(_dev, _vreg, _on)				\
>>  	({                                                              \
>>  		int _ret;                                               \
>> @@ -3281,6 +3284,37 @@ static inline int 
>> ufshcd_read_unit_desc_param(struct ufs_hba *hba,
>>  				      param_offset, param_read_buf, param_size);
>>  }
>> 
>> +static int ufshcd_get_ref_clk_gating_wait(struct ufs_hba *hba)
>> +{
>> +	int err = 0;
>> +	u32 gating_wait = UFSHCD_REF_CLK_GATING_WAIT_US;
>> +
>> +	if (hba->dev_info.spec_version >= 0x300) {
>> +		err = ufshcd_query_attr_retry(hba, UPIU_QUERY_OPCODE_READ_ATTR,
>> +				QUERY_ATTR_IDN_REF_CLK_GATING_WAIT_TIME, 0, 0,
>> +				&gating_wait);
>> +		if (err)
>> +			dev_err(hba->dev, "Failed reading bRefClkGatingWait. err = %d, use 
>> default %uus\n",
>> +					 err, gating_wait);
>> +
>> +		if (gating_wait == 0) {
>> +			gating_wait = UFSHCD_REF_CLK_GATING_WAIT_US;
>> +			dev_err(hba->dev, "Undefined ref clk gating wait time, use default 
>> %uus\n",
>> +					 gating_wait);
>> +		}
>> +
>> +		/*
>> +		 * bRefClkGatingWaitTime defines the minimum time for which the
>> +		 * reference clock is required by device during transition from
>> +		 * HS-MODE to LS-MODE or HIBERN8 state. Give it more time to be
>> +		 * on the safe side.
>> +		 */
>> +		hba->dev_info.clk_gating_wait_us = gating_wait + 50;
> 
> 
> Not sure if the additional 50us wait time here is too large.
> 
> Is there any special reason to fix it as "50"?
> 
> 
> Thanks,
> Stanley
> 

Hi Stanley,

We used to ask vendors about it, 50 is somehow agreed by them. Do you 
have a
better value in mind?

For me, I just wanted to give it 10, so that we can directly use 
usleep_range
with it, no need to decide whether to use udelay or usleep_range.

Thanks,
Can Guo.

>>  				      &dev_info->model, SD_ASCII_STD);
>> @@ -7003,6 +7041,8 @@ static int ufshcd_device_params_init(struct 
>> ufs_hba *hba)
>>  		goto out;
>>  	}
>> 
>> +	ufshcd_get_ref_clk_gating_wait(hba);
>> +
>>  	ufs_fixup_device_setup(hba);
>> 
>>  	if (!ufshcd_query_flag_retry(hba, UPIU_QUERY_OPCODE_READ_FLAG,

  reply	other threads:[~2020-02-05  4:52 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-03  9:17 [PATCH v5 0/8] UFS driver general fixes bundle 4 Can Guo
2020-02-03  9:17 ` [PATCH v5 1/8] scsi: ufs: Flush exception event before suspend Can Guo
2020-02-03 21:31   ` [EXT] " Bean Huo (beanhuo)
2020-02-03  9:17 ` [PATCH v5 2/8] scsi: ufs: set load before setting voltage in regulators Can Guo
2020-02-03 21:41   ` [EXT] " Bean Huo (beanhuo)
2020-02-04  6:16   ` Stanley Chu
2020-02-03  9:17 ` [PATCH v5 3/8] scsi: ufs: Remove the check before call setup clock notify vops Can Guo
2020-02-03 22:14   ` [EXT] " Bean Huo (beanhuo)
2020-02-04  6:16   ` Stanley Chu
2020-02-03  9:17 ` [PATCH v5 4/8] scsi: ufs-qcom: Adjust bus bandwidth voting and unvoting Can Guo
2020-02-05  2:17   ` Asutosh Das (asd)
2020-02-03  9:17 ` [PATCH v5 5/8] scsi: ufs: Fix ufshcd_hold() caused scheduling while atomic Can Guo
2020-02-03 22:07   ` [EXT] " Bean Huo (beanhuo)
2020-02-04  6:26   ` Stanley Chu
2020-02-03  9:17 ` [PATCH v5 6/8] scsi: ufs: Add dev ref clock gating wait time support Can Guo
2020-02-04 15:26   ` [EXT] " Bean Huo (beanhuo)
2020-02-05  2:50   ` Stanley Chu
2020-02-05  4:52     ` Can Guo [this message]
2020-02-06  0:55       ` Stanley Chu
2020-02-06  2:39         ` Can Guo
2020-02-03  9:17 ` [PATCH v5 7/8] scsi: ufs-qcom: Delay specific time before gate ref clk Can Guo
2020-02-05  7:20   ` hongwus
2020-02-03  9:17 ` [PATCH v5 8/8] scsi: ufs: Select INITIAL adapt for HS Gear4 Can Guo
2020-02-04 15:26   ` [EXT] " Bean Huo (beanhuo)
2020-02-05  7:38     ` hongwus

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d37515ab264b0c46848ee2b88ba0a676@codeaurora.org \
    --to=cang@codeaurora.org \
    --cc=alim.akhtar@samsung.com \
    --cc=asutoshd@codeaurora.org \
    --cc=avri.altman@wdc.com \
    --cc=beanhuo@micron.com \
    --cc=bvanassche@acm.org \
    --cc=colin.king@canonical.com \
    --cc=hongwus@codeaurora.org \
    --cc=jejb@linux.ibm.com \
    --cc=kernel-team@android.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=nguyenb@codeaurora.org \
    --cc=rnayak@codeaurora.org \
    --cc=salyzyn@google.com \
    --cc=saravanak@google.com \
    --cc=stanley.chu@mediatek.com \
    --cc=tomas.winkler@intel.com \
    --cc=venkatg@codeaurora.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.