[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <BN7PR08MB5684EA9B884FBCCF8A7416DEDBAD0@BN7PR08MB5684.namprd08.prod.outlook.com>
Date: Wed, 29 Apr 2020 10:18:22 +0000
From: "Bean Huo (beanhuo)" <beanhuo@...ron.com>
To: Stanley Chu <stanley.chu@...iatek.com>,
"linux-scsi@...r.kernel.org" <linux-scsi@...r.kernel.org>,
"martin.petersen@...cle.com" <martin.petersen@...cle.com>,
"avri.altman@....com" <avri.altman@....com>,
"alim.akhtar@...sung.com" <alim.akhtar@...sung.com>,
"jejb@...ux.ibm.com" <jejb@...ux.ibm.com>,
"asutoshd@...eaurora.org" <asutoshd@...eaurora.org>
CC: "cang@...eaurora.org" <cang@...eaurora.org>,
"matthias.bgg@...il.com" <matthias.bgg@...il.com>,
"bvanassche@....org" <bvanassche@....org>,
"linux-mediatek@...ts.infradead.org"
<linux-mediatek@...ts.infradead.org>,
"linux-arm-kernel@...ts.infradead.org"
<linux-arm-kernel@...ts.infradead.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"kuohong.wang@...iatek.com" <kuohong.wang@...iatek.com>,
"peter.wang@...iatek.com" <peter.wang@...iatek.com>,
"chun-hung.wu@...iatek.com" <chun-hung.wu@...iatek.com>,
"andy.teng@...iatek.com" <andy.teng@...iatek.com>
Subject: RE: [EXT] [PATCH v1 1/4] scsi: ufs: allow legacy UFS devices to
enable WriteBooster
> -----Original Message-----
> From: Stanley Chu <stanley.chu@...iatek.com>
> Sent: Tuesday, April 28, 2020 1:14 PM
> To: linux-scsi@...r.kernel.org; martin.petersen@...cle.com;
> avri.altman@....com; alim.akhtar@...sung.com; jejb@...ux.ibm.com;
> asutoshd@...eaurora.org
> Cc: Bean Huo (beanhuo) <beanhuo@...ron.com>; cang@...eaurora.org;
> matthias.bgg@...il.com; bvanassche@....org; linux-
> mediatek@...ts.infradead.org; linux-arm-kernel@...ts.infradead.org; linux-
> kernel@...r.kernel.org; kuohong.wang@...iatek.com;
> peter.wang@...iatek.com; chun-hung.wu@...iatek.com;
> andy.teng@...iatek.com; Stanley Chu <stanley.chu@...iatek.com>
> Subject: [EXT] [PATCH v1 1/4] scsi: ufs: allow legacy UFS devices to enable
> WriteBooster
>
> WriteBooster feature may be supported by some legacy UFS devices (i.e., < 3.1)
> by upgrading firmware.
>
> To enable WriteBooster feature in such devices, relax the entrance condition of
> ufshcd_wb_probe() to allow host driver to check those devices' WriteBooster
> capability.
>
> WriteBooster feature can be available if below both conditions are satisfied,
>
> 1. Device descriptor has dExtendedUFSFeaturesSupport field.
> 2. WriteBooster support is specified in above field.
>
> Signed-off-by: Stanley Chu <stanley.chu@...iatek.com>
> ---
> drivers/scsi/ufs/ufshcd.c | 19 +++++++++++++------
> 1 file changed, 13 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index
> 915e963398c4..111812c5304a 100644
> --- a/drivers/scsi/ufs/ufshcd.c
> +++ b/drivers/scsi/ufs/ufshcd.c
> @@ -6800,9 +6800,16 @@ static int ufshcd_scsi_add_wlus(struct ufs_hba *hba)
>
> static void ufshcd_wb_probe(struct ufs_hba *hba, u8 *desc_buf) {
> + if (hba->desc_size.dev_desc <=
> DEVICE_DESC_PARAM_EXT_UFS_FEATURE_SUP)
> + goto wb_disabled;
> +
> hba->dev_info.d_ext_ufs_feature_sup =
> get_unaligned_be32(desc_buf +
>
> DEVICE_DESC_PARAM_EXT_UFS_FEATURE_SUP);
> +
> + if (!(hba->dev_info.d_ext_ufs_feature_sup &
> UFS_DEV_WRITE_BOOSTER_SUP))
> + goto wb_disabled;
> +
> /*
> * WB may be supported but not configured while provisioning.
> * The spec says, in dedicated wb buffer mode, @@ -6818,11 +6825,12
> @@ static void ufshcd_wb_probe(struct ufs_hba *hba, u8 *desc_buf)
> hba->dev_info.b_presrv_uspc_en =
> desc_buf[DEVICE_DESC_PARAM_WB_PRESRV_USRSPC_EN];
>
> - if (!((hba->dev_info.d_ext_ufs_feature_sup &
> - UFS_DEV_WRITE_BOOSTER_SUP) &&
> - hba->dev_info.b_wb_buffer_type &&
> + if (!(hba->dev_info.b_wb_buffer_type &&
> hba->dev_info.d_wb_alloc_units))
> - hba->caps &= ~UFSHCD_CAP_WB_EN;
> + goto wb_disabled;
> +
> +wb_disabled:
> + hba->caps &= ~UFSHCD_CAP_WB_EN;
> }
>
> static int ufs_get_device_desc(struct ufs_hba *hba) @@ -6862,8 +6870,7 @@
> static int ufs_get_device_desc(struct ufs_hba *hba)
>
> model_index = desc_buf[DEVICE_DESC_PARAM_PRDCT_NAME];
>
> - /* Enable WB only for UFS-3.1 */
> - if (dev_info->wspecversion >= 0x310)
> + if (ufshcd_is_wb_allowed(hba))
> ufshcd_wb_probe(hba, desc_buf);
>
> err = ufshcd_read_string_desc(hba, model_index,
> --
> 2.18.0
Reviewed-by: Bean Huo <beanhuo@...ron.com>
Powered by blists - more mailing lists