From: Can Guo <can.guo@oss.qualcomm.com>
To: Bean Huo <beanhuo@iokpp.de>,
avri.altman@wdc.com, bvanassche@acm.org, beanhuo@micron.com,
peter.wang@mediatek.com, martin.petersen@oracle.com,
mani@kernel.org
Cc: linux-scsi@vger.kernel.org, Alim Akhtar <alim.akhtar@samsung.com>,
"James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>,
"Bao D. Nguyen" <quic_nguyenb@quicinc.com>,
Adrian Hunter <adrian.hunter@intel.com>,
open list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v4 07/12] scsi: ufs: core: Add support to retrain TX Equalization via debugfs
Date: Mon, 23 Mar 2026 14:13:43 +0800 [thread overview]
Message-ID: <7747227e-0667-445c-a2e9-c92b273ea8de@oss.qualcomm.com> (raw)
In-Reply-To: <7ef32c7c4f9c2220b04e9d0ce55d45a7e3373da8.camel@iokpp.de>
On 3/22/2026 9:36 PM, Bean Huo wrote:
> On Fri, 2026-03-20 at 20:10 -0700, Can Guo wrote:
>> +/**
>> + * ufshcd_retrain_tx_eq - Retrain TX Equalization and apply new settings
>> + * @hba: per-adapter instance
>> + * @gear: target High-Speed (HS) gear for retraining
>> + *
>> + * This function initiates a refresh of the TX Equalization settings for a
>> + * specific HS gear. It scales the clocks to maximum frequency, negotiates
>> the
>> + * power mode with the device, retrains TX EQ and applies new TX EQ settings
>> + * by conducting a Power Mode change.
>> + *
>> + * Returns 0 on success, non-zero error code otherwise
>> + */
>> +int ufshcd_retrain_tx_eq(struct ufs_hba *hba, u32 gear)
>> +{
>> + struct ufs_pa_layer_attr new_pwr_info, final_params = {};
>> + int ret;
>> +
>> + if (!ufshcd_is_tx_eq_supported(hba) || !use_adaptive_txeq)
>> + return -EOPNOTSUPP;
>> +
>> + if (gear < adaptive_txeq_gear)
>> + return -ERANGE;
>> +
>> + ufshcd_hold(hba);
>> +
>> + ret = ufshcd_pause_command_processing(hba, 1 * USEC_PER_SEC);
>> + if (ret) {
>> + ufshcd_release(hba);
>> + return ret;
>> + }
>> +
>> + /* scale up clocks to max frequency before TX EQTR */
>> + if (ufshcd_is_clkscaling_supported(hba))
>> + ufshcd_scale_clks(hba, ULONG_MAX, true);
>> +
>> + new_pwr_info = hba->pwr_info;
>> + new_pwr_info.gear_tx = gear;
>> + new_pwr_info.gear_rx = gear;
>> +
>> + ret = ufshcd_vops_negotiate_pwr_mode(hba, &new_pwr_info,
>> &final_params);
>> + if (ret)
>> + memcpy(&final_params, &new_pwr_info, sizeof(final_params));
>> +
>> + if (final_params.gear_tx != gear) {
>> + dev_err(hba->dev, "Negotiated Gear (%u) does not match target
>> Gear (%u)\n",
>> + final_params.gear_tx, gear);\
> might be ret = -EINVAL; before goto?
You are right, let me add it in next version.
Thanks,
Can Guo.
>
>
>> + goto out;
>> + }
next prev parent reply other threads:[~2026-03-23 6:13 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-21 3:10 [PATCH v4 00/12] scsi: ufs: Add TX Equalization support for UFS 5.0 Can Guo
2026-03-21 3:10 ` [PATCH v4 01/12] scsi: ufs: core: Introduce a new ufshcd vops negotiate_pwr_mode() Can Guo
2026-03-23 9:10 ` Bean Huo
2026-03-21 3:10 ` [PATCH v4 02/12] scsi: ufs: core: Pass force_pmc to ufshcd_config_pwr_mode() as a parameter Can Guo
2026-03-23 9:11 ` Bean Huo
2026-03-21 3:10 ` [PATCH v4 03/12] scsi: ufs: core: Add UFS_HS_G6 and UFS_HS_GEAR_MAX to enum ufs_hs_gear_tag Can Guo
2026-03-23 9:11 ` Bean Huo
2026-03-21 3:10 ` [PATCH v4 04/12] scsi: ufs: core: Add support for TX Equalization Can Guo
2026-03-22 9:48 ` Bean Huo
2026-03-22 14:26 ` Bean Huo
2026-03-23 6:05 ` Can Guo
2026-03-23 9:15 ` Bean Huo
2026-03-24 7:46 ` Peter Wang (王信友)
2026-03-24 10:09 ` Can Guo
2026-03-24 11:54 ` Peter Wang (王信友)
2026-03-24 12:32 ` Can Guo
2026-03-21 3:10 ` [PATCH v4 05/12] scsi: ufs: core: Add debugfs entries for TX Equalization params Can Guo
2026-03-23 9:16 ` Bean Huo
2026-03-21 3:10 ` [PATCH v4 06/12] scsi: ufs: core: Add helpers to pause and resume command processing Can Guo
2026-03-23 9:17 ` Bean Huo
2026-03-21 3:10 ` [PATCH v4 07/12] scsi: ufs: core: Add support to retrain TX Equalization via debugfs Can Guo
2026-03-22 13:36 ` Bean Huo
2026-03-23 6:13 ` Can Guo [this message]
2026-03-23 9:21 ` Bean Huo
2026-03-21 3:10 ` [PATCH v4 08/12] scsi: ufs: ufs-qcom: Fixup PAM-4 TX L0_L1_L2_L3 adaptation pattern length Can Guo
2026-03-23 9:22 ` Bean Huo
2026-03-21 3:10 ` [PATCH v4 09/12] scsi: ufs: ufs-qcom: Implement vops tx_eqtr_notify() Can Guo
2026-03-23 9:23 ` Bean Huo
2026-03-21 3:10 ` [PATCH v4 10/12] scsi: ufs: ufs-qcom: Implement vops get_rx_fom() Can Guo
2026-03-23 9:24 ` Bean Huo
2026-03-21 3:10 ` [PATCH v4 11/12] scsi: ufs: ufs-qcom: Implement vops apply_tx_eqtr_settings() Can Guo
2026-03-23 9:24 ` Bean Huo
2026-03-21 3:10 ` [PATCH v4 12/12] scsi: ufs: ufs-qcom: Enable TX Equalization Can Guo
2026-03-23 9:25 ` Bean Huo
2026-03-23 16:50 ` [PATCH v4 00/12] scsi: ufs: Add TX Equalization support for UFS 5.0 Bart Van Assche
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=7747227e-0667-445c-a2e9-c92b273ea8de@oss.qualcomm.com \
--to=can.guo@oss.qualcomm.com \
--cc=James.Bottomley@HansenPartnership.com \
--cc=adrian.hunter@intel.com \
--cc=alim.akhtar@samsung.com \
--cc=avri.altman@wdc.com \
--cc=beanhuo@iokpp.de \
--cc=beanhuo@micron.com \
--cc=bvanassche@acm.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=mani@kernel.org \
--cc=martin.petersen@oracle.com \
--cc=peter.wang@mediatek.com \
--cc=quic_nguyenb@quicinc.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox