Message ID | 20200504142032.16619-2-beanhuo@micron.com (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Series | scsi: ufs: add UFS Host Performance Booster(HPB) support | expand |
On 2020-05-04 07:20, huobean@gmail.com wrote: > diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c > index 698e8d20b4ba..de13d2333f1f 100644 > --- a/drivers/scsi/ufs/ufshcd.c > +++ b/drivers/scsi/ufs/ufshcd.c > @@ -6627,6 +6627,17 @@ static int ufs_get_device_desc(struct ufs_hba *hba) > goto out; > } > > + if (desc_buf[DEVICE_DESC_PARAM_UFS_FEAT] & 0x80) { > + hba->dev_info.hpb_control_mode = > + desc_buf[DEVICE_DESC_PARAM_HPB_CTRL_MODE]; > + hba->dev_info.hpb_ver = > + (u16) (desc_buf[DEVICE_DESC_PARAM_HPB_VER] << 8) | > + desc_buf[DEVICE_DESC_PARAM_HPB_VER + 1]; > + dev_info(hba->dev, "HPB Version: 0x%2x\n", > + hba->dev_info.hpb_ver); > + dev_info(hba->dev, "HPB control mode: %d\n", > + hba->dev_info.hpb_control_mode); > + } > /* > * getting vendor (manufacturerID) and Bank Index in big endian > * format Please introduce a symbolic name for the constant 0x80, e.g. UFS_FEATURE_HPB. Please use get_unaligned_be16() instead of open-coding it. Thanks, Bart.
On Thu, 2020-05-07 at 17:59 -0700, Bart Van Assche wrote: > On 2020-05-04 07:20, huobean@gmail.com wrote: > > diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c > > index 698e8d20b4ba..de13d2333f1f 100644 > > --- a/drivers/scsi/ufs/ufshcd.c > > +++ b/drivers/scsi/ufs/ufshcd.c > > @@ -6627,6 +6627,17 @@ static int ufs_get_device_desc(struct > > ufs_hba *hba) > > goto out; > > } > > > > + if (desc_buf[DEVICE_DESC_PARAM_UFS_FEAT] & 0x80) { > > + hba->dev_info.hpb_control_mode = > > + desc_buf[DEVICE_DESC_PARAM_HPB_CTRL_MODE]; > > + hba->dev_info.hpb_ver = > > + (u16) (desc_buf[DEVICE_DESC_PARAM_HPB_VER] << > > 8) | > > + desc_buf[DEVICE_DESC_PARAM_HPB_VER + 1]; > > + dev_info(hba->dev, "HPB Version: 0x%2x\n", > > + hba->dev_info.hpb_ver); > > + dev_info(hba->dev, "HPB control mode: %d\n", > > + hba->dev_info.hpb_control_mode); > > + } > > /* > > * getting vendor (manufacturerID) and Bank Index in big endian > > * format > > Please introduce a symbolic name for the constant 0x80, e.g. > UFS_FEATURE_HPB. > > Please use get_unaligned_be16() instead of open-coding it. > > Thanks, > > Bart. > > Bart thanks, I will change them in the next version. thanks. Bean
diff --git a/drivers/scsi/ufs/ufs.h b/drivers/scsi/ufs/ufs.h index b7fec5c73688..53a5e263f7c8 100644 --- a/drivers/scsi/ufs/ufs.h +++ b/drivers/scsi/ufs/ufs.h @@ -258,6 +258,8 @@ enum device_desc_param { DEVICE_DESC_PARAM_PSA_MAX_DATA = 0x25, DEVICE_DESC_PARAM_PSA_TMT = 0x29, DEVICE_DESC_PARAM_PRDCT_REV = 0x2A, + DEVICE_DESC_PARAM_HPB_VER = 0x40, + DEVICE_DESC_PARAM_HPB_CTRL_MODE = 0x42, }; /* Interconnect descriptor parameters offsets in bytes*/ @@ -537,6 +539,10 @@ struct ufs_dev_info { u8 *model; u16 wspecversion; u32 clk_gating_wait_us; + /* HPB Version */ + u16 hpb_ver; + /* bHPBControl */ + u8 hpb_control_mode; }; /** diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 698e8d20b4ba..de13d2333f1f 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -6627,6 +6627,17 @@ static int ufs_get_device_desc(struct ufs_hba *hba) goto out; } + if (desc_buf[DEVICE_DESC_PARAM_UFS_FEAT] & 0x80) { + hba->dev_info.hpb_control_mode = + desc_buf[DEVICE_DESC_PARAM_HPB_CTRL_MODE]; + hba->dev_info.hpb_ver = + (u16) (desc_buf[DEVICE_DESC_PARAM_HPB_VER] << 8) | + desc_buf[DEVICE_DESC_PARAM_HPB_VER + 1]; + dev_info(hba->dev, "HPB Version: 0x%2x\n", + hba->dev_info.hpb_ver); + dev_info(hba->dev, "HPB control mode: %d\n", + hba->dev_info.hpb_control_mode); + } /* * getting vendor (manufacturerID) and Bank Index in big endian * format