Linux SCSI subsystem development
 help / color / mirror / Atom feed
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;
>> +       }


  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