Message ID | 20201211140035.20016-4-huobean@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Several changes for UFS WriteBooster | expand |
Hi Bean, On Fri, 2020-12-11 at 15:00 +0100, Bean Huo wrote: > From: Bean Huo <beanhuo@micron.com> > > UFS device-related flags should be grouped in ufs_dev_info. Take > wb_enabled and wb_buf_flush_enabled out from the struct ufs_hba, > group them to struct ufs_dev_info, and align the names of the structure > members vertically > > Signed-off-by: Bean Huo <beanhuo@micron.com> > --- > drivers/scsi/ufs/ufs-sysfs.c | 2 +- > drivers/scsi/ufs/ufs.h | 33 +++++++++++++++++++-------------- > drivers/scsi/ufs/ufshcd.c | 16 ++++++++-------- > drivers/scsi/ufs/ufshcd.h | 2 -- > 4 files changed, 28 insertions(+), 25 deletions(-) > > diff --git a/drivers/scsi/ufs/ufs-sysfs.c b/drivers/scsi/ufs/ufs-sysfs.c > index 2b4e9fe935cc..4bd7e18bb486 100644 > --- a/drivers/scsi/ufs/ufs-sysfs.c > +++ b/drivers/scsi/ufs/ufs-sysfs.c > @@ -194,7 +194,7 @@ static ssize_t wb_on_show(struct device *dev, struct device_attribute *attr, > { > struct ufs_hba *hba = dev_get_drvdata(dev); > > - return scnprintf(buf, PAGE_SIZE, "%d\n", hba->wb_enabled); > + return scnprintf(buf, PAGE_SIZE, "%d\n", hba->dev_info.wb_enabled); > } > > static ssize_t wb_on_store(struct device *dev, struct device_attribute *attr, > diff --git a/drivers/scsi/ufs/ufs.h b/drivers/scsi/ufs/ufs.h > index 14dfda735adf..45bebca29fdd 100644 > --- a/drivers/scsi/ufs/ufs.h > +++ b/drivers/scsi/ufs/ufs.h > @@ -527,22 +527,27 @@ struct ufs_vreg_info { > }; > > struct ufs_dev_info { > - bool f_power_on_wp_en; > + bool f_power_on_wp_en; > /* Keeps information if any of the LU is power on write protected */ > - bool is_lu_power_on_wp; > + bool is_lu_power_on_wp; > /* Maximum number of general LU supported by the UFS device */ > - u8 max_lu_supported; > - u8 wb_dedicated_lu; > - u16 wmanufacturerid; > - /*UFS device Product Name */ > - u8 *model; > - u16 wspecversion; > - u32 clk_gating_wait_us; > - u32 d_ext_ufs_feature_sup; > - u8 b_wb_buffer_type; > - u32 d_wb_alloc_units; > - bool b_rpm_dev_flush_capable; > - u8 b_presrv_uspc_en; > + u8 max_lu_supported; > + u16 wmanufacturerid; > + /* UFS device Product Name */ > + u8 *model; > + u16 wspecversion; > + u32 clk_gating_wait_us; > + u32 d_ext_ufs_feature_sup; > + > + /* UFS WB related flags */ > + bool wb_enabled; > + bool wb_buf_flush_enabled; > + u8 wb_dedicated_lu; > + u8 b_wb_buffer_type; > + u32 d_wb_alloc_units; > + > + bool b_rpm_dev_flush_capable; > + u8 b_presrv_uspc_en; Perhaps we could unify the style of these WB related stuff to wb_* ? Besides, I am not sure if using tab instead space between the type and name in this struct is a good idea. Thanks, Stanley Chu > }; > > /** > diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c > index 6a5532b752aa..528c257df48c 100644 > --- a/drivers/scsi/ufs/ufshcd.c > +++ b/drivers/scsi/ufs/ufshcd.c > @@ -589,8 +589,8 @@ static void ufshcd_device_reset(struct ufs_hba *hba) > if (!err) { > ufshcd_set_ufs_dev_active(hba); > if (ufshcd_is_wb_allowed(hba)) { > - hba->wb_enabled = false; > - hba->wb_buf_flush_enabled = false; > + hba->dev_info.wb_enabled = false; > + hba->dev_info.wb_buf_flush_enabled = false; > } > } > if (err != -EOPNOTSUPP) > @@ -5359,7 +5359,7 @@ int ufshcd_wb_ctrl(struct ufs_hba *hba, bool enable) > if (!ufshcd_is_wb_allowed(hba)) > return 0; > > - if (!(enable ^ hba->wb_enabled)) > + if (!(enable ^ hba->dev_info.wb_enabled)) > return 0; > if (enable) > opcode = UPIU_QUERY_OPCODE_SET_FLAG; > @@ -5375,7 +5375,7 @@ int ufshcd_wb_ctrl(struct ufs_hba *hba, bool enable) > return ret; > } > > - hba->wb_enabled = enable; > + hba->dev_info.wb_enabled = enable; > dev_dbg(hba->dev, "%s write booster %s %d\n", > __func__, enable ? "enable" : "disable", ret); > > @@ -5415,7 +5415,7 @@ static int ufshcd_wb_buf_flush_enable(struct ufs_hba *hba) > int ret; > u8 index; > > - if (!ufshcd_is_wb_allowed(hba) || hba->wb_buf_flush_enabled) > + if (!ufshcd_is_wb_allowed(hba) || hba->dev_info.wb_buf_flush_enabled) > return 0; > > index = ufshcd_wb_get_query_index(hba); > @@ -5426,7 +5426,7 @@ static int ufshcd_wb_buf_flush_enable(struct ufs_hba *hba) > dev_err(hba->dev, "%s WB - buf flush enable failed %d\n", > __func__, ret); > else > - hba->wb_buf_flush_enabled = true; > + hba->dev_info.wb_buf_flush_enabled = true; > > dev_dbg(hba->dev, "WB - Flush enabled: %d\n", ret); > return ret; > @@ -5437,7 +5437,7 @@ static int ufshcd_wb_buf_flush_disable(struct ufs_hba *hba) > int ret; > u8 index; > > - if (!ufshcd_is_wb_allowed(hba) || !hba->wb_buf_flush_enabled) > + if (!ufshcd_is_wb_allowed(hba) || !hba->dev_info.wb_buf_flush_enabled) > return 0; > > index = ufshcd_wb_get_query_index(hba); > @@ -5448,7 +5448,7 @@ static int ufshcd_wb_buf_flush_disable(struct ufs_hba *hba) > dev_warn(hba->dev, "%s: WB - buf flush disable failed %d\n", > __func__, ret); > } else { > - hba->wb_buf_flush_enabled = false; > + hba->dev_info.wb_buf_flush_enabled = false; > dev_dbg(hba->dev, "WB - Flush disabled: %d\n", ret); > } > > diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h > index 2a97006a2c93..45c3eca88f0e 100644 > --- a/drivers/scsi/ufs/ufshcd.h > +++ b/drivers/scsi/ufs/ufshcd.h > @@ -805,8 +805,6 @@ struct ufs_hba { > > struct device bsg_dev; > struct request_queue *bsg_queue; > - bool wb_buf_flush_enabled; > - bool wb_enabled; > struct delayed_work rpm_dev_flush_recheck_work; > > #ifdef CONFIG_SCSI_UFS_CRYPTO
On Tue, 2020-12-15 at 17:01 +0800, Stanley Chu wrote: > > + bool wb_buf_flush_enabled; > > + u8 wb_dedicated_lu; > > + u8 b_wb_buffer_type; > > + u32 d_wb_alloc_units; > > + > > + bool b_rpm_dev_flush_capable; > > + u8 b_presrv_uspc_en; > > Perhaps we could unify the style of these WB related stuff to wb_* ? yes, agree. I will change them. > > Besides, I am not sure if using tab instead space between the type > and > name in this struct is a good idea. > using space, in addition single space, type and parameter names are mixed. use space: /* UFS WB related flags */ bool wb_enabled; bool wb_buf_flush_enabled; u8 wb_dedicated_lu; u8 b_wb_buffer_type; u32 d_wb_alloc_units; use table: /* UFS WB related flags */ bool wb_enabled; bool wb_buf_flush_enabled; u8 wb_dedicated_lu; u8 b_wb_buffer_type; u32 d_wb_alloc_units; I think, the result is very clear comparing above two examples. yes, there is no explicit stipulation that we must use space or tab. Both styles exist in Linux. Maybe this is just matter of personal interest. Bean > Thanks, > Stanley Chu
On Tue, 2020-12-15 at 10:42 +0100, Bean Huo wrote: > On Tue, 2020-12-15 at 17:01 +0800, Stanley Chu wrote: > > > + bool wb_buf_flush_enabled; > > > + u8 wb_dedicated_lu; > > > + u8 b_wb_buffer_type; > > > + u32 d_wb_alloc_units; > > > + > > > + bool b_rpm_dev_flush_capable; > > > + u8 b_presrv_uspc_en; > > > > Perhaps we could unify the style of these WB related stuff to wb_* ? > > yes, agree. I will change them. > > > > > Besides, I am not sure if using tab instead space between the type > > and > > name in this struct is a good idea. > > > using space, in addition single space, type and parameter names are > mixed. > > > use space: > > /* UFS WB related flags */ > bool wb_enabled; > bool wb_buf_flush_enabled; > u8 > wb_dedicated_lu; > u8 b_wb_buffer_type; > u32 d_wb_alloc_units; > > use table: > > /* UFS WB related flags */ > bool wb_enabled; > bool wb_buf_flush_enabled; > u8 wb_dedicated_lu; > u8 b_wb_buffer_type; > u32 d_wb_alloc_units; > > I think, the result is very clear comparing above two examples. yes, > there is no explicit stipulation that we must use space or tab. Both > styles exist in Linux. Maybe this is just matter of personal interest. Hi Bean, Yes, I got your point. I am fine with this style change, but just wonder if it would be better to change all structures in all ufs headers (or at least all structures in ufs.h) in the same time to make the style unified in the same file? Besides, we may need other reviewer's comments for the new style. Thanks, Stanley Chu > > > Bean > > > Thanks, > > Stanley Chu >
diff --git a/drivers/scsi/ufs/ufs-sysfs.c b/drivers/scsi/ufs/ufs-sysfs.c index 2b4e9fe935cc..4bd7e18bb486 100644 --- a/drivers/scsi/ufs/ufs-sysfs.c +++ b/drivers/scsi/ufs/ufs-sysfs.c @@ -194,7 +194,7 @@ static ssize_t wb_on_show(struct device *dev, struct device_attribute *attr, { struct ufs_hba *hba = dev_get_drvdata(dev); - return scnprintf(buf, PAGE_SIZE, "%d\n", hba->wb_enabled); + return scnprintf(buf, PAGE_SIZE, "%d\n", hba->dev_info.wb_enabled); } static ssize_t wb_on_store(struct device *dev, struct device_attribute *attr, diff --git a/drivers/scsi/ufs/ufs.h b/drivers/scsi/ufs/ufs.h index 14dfda735adf..45bebca29fdd 100644 --- a/drivers/scsi/ufs/ufs.h +++ b/drivers/scsi/ufs/ufs.h @@ -527,22 +527,27 @@ struct ufs_vreg_info { }; struct ufs_dev_info { - bool f_power_on_wp_en; + bool f_power_on_wp_en; /* Keeps information if any of the LU is power on write protected */ - bool is_lu_power_on_wp; + bool is_lu_power_on_wp; /* Maximum number of general LU supported by the UFS device */ - u8 max_lu_supported; - u8 wb_dedicated_lu; - u16 wmanufacturerid; - /*UFS device Product Name */ - u8 *model; - u16 wspecversion; - u32 clk_gating_wait_us; - u32 d_ext_ufs_feature_sup; - u8 b_wb_buffer_type; - u32 d_wb_alloc_units; - bool b_rpm_dev_flush_capable; - u8 b_presrv_uspc_en; + u8 max_lu_supported; + u16 wmanufacturerid; + /* UFS device Product Name */ + u8 *model; + u16 wspecversion; + u32 clk_gating_wait_us; + u32 d_ext_ufs_feature_sup; + + /* UFS WB related flags */ + bool wb_enabled; + bool wb_buf_flush_enabled; + u8 wb_dedicated_lu; + u8 b_wb_buffer_type; + u32 d_wb_alloc_units; + + bool b_rpm_dev_flush_capable; + u8 b_presrv_uspc_en; }; /** diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 6a5532b752aa..528c257df48c 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -589,8 +589,8 @@ static void ufshcd_device_reset(struct ufs_hba *hba) if (!err) { ufshcd_set_ufs_dev_active(hba); if (ufshcd_is_wb_allowed(hba)) { - hba->wb_enabled = false; - hba->wb_buf_flush_enabled = false; + hba->dev_info.wb_enabled = false; + hba->dev_info.wb_buf_flush_enabled = false; } } if (err != -EOPNOTSUPP) @@ -5359,7 +5359,7 @@ int ufshcd_wb_ctrl(struct ufs_hba *hba, bool enable) if (!ufshcd_is_wb_allowed(hba)) return 0; - if (!(enable ^ hba->wb_enabled)) + if (!(enable ^ hba->dev_info.wb_enabled)) return 0; if (enable) opcode = UPIU_QUERY_OPCODE_SET_FLAG; @@ -5375,7 +5375,7 @@ int ufshcd_wb_ctrl(struct ufs_hba *hba, bool enable) return ret; } - hba->wb_enabled = enable; + hba->dev_info.wb_enabled = enable; dev_dbg(hba->dev, "%s write booster %s %d\n", __func__, enable ? "enable" : "disable", ret); @@ -5415,7 +5415,7 @@ static int ufshcd_wb_buf_flush_enable(struct ufs_hba *hba) int ret; u8 index; - if (!ufshcd_is_wb_allowed(hba) || hba->wb_buf_flush_enabled) + if (!ufshcd_is_wb_allowed(hba) || hba->dev_info.wb_buf_flush_enabled) return 0; index = ufshcd_wb_get_query_index(hba); @@ -5426,7 +5426,7 @@ static int ufshcd_wb_buf_flush_enable(struct ufs_hba *hba) dev_err(hba->dev, "%s WB - buf flush enable failed %d\n", __func__, ret); else - hba->wb_buf_flush_enabled = true; + hba->dev_info.wb_buf_flush_enabled = true; dev_dbg(hba->dev, "WB - Flush enabled: %d\n", ret); return ret; @@ -5437,7 +5437,7 @@ static int ufshcd_wb_buf_flush_disable(struct ufs_hba *hba) int ret; u8 index; - if (!ufshcd_is_wb_allowed(hba) || !hba->wb_buf_flush_enabled) + if (!ufshcd_is_wb_allowed(hba) || !hba->dev_info.wb_buf_flush_enabled) return 0; index = ufshcd_wb_get_query_index(hba); @@ -5448,7 +5448,7 @@ static int ufshcd_wb_buf_flush_disable(struct ufs_hba *hba) dev_warn(hba->dev, "%s: WB - buf flush disable failed %d\n", __func__, ret); } else { - hba->wb_buf_flush_enabled = false; + hba->dev_info.wb_buf_flush_enabled = false; dev_dbg(hba->dev, "WB - Flush disabled: %d\n", ret); } diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h index 2a97006a2c93..45c3eca88f0e 100644 --- a/drivers/scsi/ufs/ufshcd.h +++ b/drivers/scsi/ufs/ufshcd.h @@ -805,8 +805,6 @@ struct ufs_hba { struct device bsg_dev; struct request_queue *bsg_queue; - bool wb_buf_flush_enabled; - bool wb_enabled; struct delayed_work rpm_dev_flush_recheck_work; #ifdef CONFIG_SCSI_UFS_CRYPTO