Re: [PATCH 06/11] scsi: ufs: core: Add support to retrain TX Equalization via debugfs
From: Bart Van Assche
Date: Fri Feb 27 2026 - 16:55:50 EST
On 2/27/26 8:08 AM, Can Guo wrote:
", 0200, hba->debugfs_root, hba,
+ &retrain_tx_eq_fops);
for (attr = ufs_tx_eq_attrs; attr->name; attr++)
debugfs_create_file(attr->name, attr->mode, root, (void *)attr,
attr->fops);
Instead of creating one retrain_tx_eq attribute, please create one such attribute in each gear directory.
+static int ufshcd_retrain_tx_eq_prepare(struct ufs_hba *hba)
+{
+ int ret = 0;
+
+ mutex_lock(&hba->host->scan_mutex);
+ blk_mq_quiesce_tagset(&hba->host->tag_set);
+ down_write(&hba->clk_scaling_lock);
+
+ if (ufshcd_wait_for_pending_cmds(hba, 1 * USEC_PER_SEC)) {
+ ret = -EBUSY;
+ up_write(&hba->clk_scaling_lock);
+ blk_mq_unquiesce_tagset(&hba->host->tag_set);
+ mutex_unlock(&hba->host->scan_mutex);
+ goto out;
+ }
+
+ ufshcd_hold(hba);
+
+out:
+ return ret;
+}
+
+static void ufshcd_retrain_tx_eq_unprepare(struct ufs_hba *hba)
+{
+ up_write(&hba->clk_scaling_lock);
+ blk_mq_unquiesce_tagset(&hba->host->tag_set);
+ mutex_unlock(&hba->host->scan_mutex);
+ ufshcd_release(hba);
+}
Instead of duplicating some of the ufshcd_clock_scaling_prepare() /
ufshcd_clock_scaling_unprepare() code, please extract helper functions
from these functions for pausing and resuming command processing.
Additionally, please keep all code related to command processing in
ufshcd.c.
Thanks,
Bart.