* [PATCH 0/2] Disable periodic tracking on Tegra234
@ 2025-05-07 2:48 Wayne Chang
2025-05-07 2:48 ` [PATCH 1/2] phy: tegra: xusb: Decouple CYA_TRK_CODE_UPDATE_ON_IDLE from trk_hw_mode Wayne Chang
2025-05-07 2:48 ` [PATCH 2/2] phy: tegra: xusb: Disable periodic tracking on Tegra234 Wayne Chang
0 siblings, 2 replies; 4+ messages in thread
From: Wayne Chang @ 2025-05-07 2:48 UTC (permalink / raw)
To: waynec, jckuo, vkoul, kishon, thierry.reding, jonathanh
Cc: linux-phy, linux-tegra, linux-kernel
Decouple CYA_TRK_CODE_UPDATE_ON_IDLE from trk_hw_mode and disable
periodic tracking on Tegra234
Haotien Hsu (1):
phy: tegra: xusb: Disable periodic tracking on Tegra234
Wayne Chang (1):
phy: tegra: xusb: Decouple CYA_TRK_CODE_UPDATE_ON_IDLE from
trk_hw_mode
drivers/phy/tegra/xusb-tegra186.c | 16 +++++++++-------
drivers/phy/tegra/xusb.h | 1 +
2 files changed, 10 insertions(+), 7 deletions(-)
base-commit: 92a09c47464d040866cf2b4cd052bc60555185fb
--
2.25.1
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/2] phy: tegra: xusb: Decouple CYA_TRK_CODE_UPDATE_ON_IDLE from trk_hw_mode
2025-05-07 2:48 [PATCH 0/2] Disable periodic tracking on Tegra234 Wayne Chang
@ 2025-05-07 2:48 ` Wayne Chang
2025-05-07 9:39 ` Jon Hunter
2025-05-07 2:48 ` [PATCH 2/2] phy: tegra: xusb: Disable periodic tracking on Tegra234 Wayne Chang
1 sibling, 1 reply; 4+ messages in thread
From: Wayne Chang @ 2025-05-07 2:48 UTC (permalink / raw)
To: waynec, jckuo, vkoul, kishon, thierry.reding, jonathanh
Cc: linux-phy, linux-tegra, linux-kernel, stable
The logic that drives the pad calibration values resides in the
controller reset domain and so the calibration values are only being
captured when the controller is out of reset. However, by clearing the
CYA_TRK_CODE_UPDATE_ON_IDLE bit, the calibration values can be set
while the controller is in reset.
The CYA_TRK_CODE_UPDATE_ON_IDLE bit was previously cleared based on the
trk_hw_mode flag, but this dependency is not necessary. Instead,
introduce a new flag, trk_update_on_idle, to independently control this
bit.
Fixes: d8163a32ca95 ("phy: tegra: xusb: Add Tegra234 support")
Cc: stable@vger.kernel.org
Signed-off-by: Wayne Chang <waynec@nvidia.com>
---
drivers/phy/tegra/xusb-tegra186.c | 14 ++++++++------
drivers/phy/tegra/xusb.h | 1 +
2 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/drivers/phy/tegra/xusb-tegra186.c b/drivers/phy/tegra/xusb-tegra186.c
index fae6242aa730..dd0aaf305e90 100644
--- a/drivers/phy/tegra/xusb-tegra186.c
+++ b/drivers/phy/tegra/xusb-tegra186.c
@@ -650,14 +650,15 @@ static void tegra186_utmi_bias_pad_power_on(struct tegra_xusb_padctl *padctl)
udelay(100);
}
- if (padctl->soc->trk_hw_mode) {
- value = padctl_readl(padctl, XUSB_PADCTL_USB2_BIAS_PAD_CTL2);
- value |= USB2_TRK_HW_MODE;
+ value = padctl_readl(padctl, XUSB_PADCTL_USB2_BIAS_PAD_CTL2);
+ if (padctl->soc->trk_update_on_idle)
value &= ~CYA_TRK_CODE_UPDATE_ON_IDLE;
- padctl_writel(padctl, value, XUSB_PADCTL_USB2_BIAS_PAD_CTL2);
- } else {
+ if (padctl->soc->trk_hw_mode)
+ value |= USB2_TRK_HW_MODE;
+ padctl_writel(padctl, value, XUSB_PADCTL_USB2_BIAS_PAD_CTL2);
+
+ if (!padctl->soc->trk_hw_mode)
clk_disable_unprepare(priv->usb2_trk_clk);
- }
mutex_unlock(&padctl->lock);
}
@@ -1703,6 +1704,7 @@ const struct tegra_xusb_padctl_soc tegra234_xusb_padctl_soc = {
.supports_gen2 = true,
.poll_trk_completed = true,
.trk_hw_mode = true,
+ .trk_update_on_idle = true,
.supports_lp_cfg_en = true,
};
EXPORT_SYMBOL_GPL(tegra234_xusb_padctl_soc);
diff --git a/drivers/phy/tegra/xusb.h b/drivers/phy/tegra/xusb.h
index 6e45d194c689..d2b5f9565132 100644
--- a/drivers/phy/tegra/xusb.h
+++ b/drivers/phy/tegra/xusb.h
@@ -434,6 +434,7 @@ struct tegra_xusb_padctl_soc {
bool need_fake_usb3_port;
bool poll_trk_completed;
bool trk_hw_mode;
+ bool trk_update_on_idle;
bool supports_lp_cfg_en;
};
--
2.25.1
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] phy: tegra: xusb: Disable periodic tracking on Tegra234
2025-05-07 2:48 [PATCH 0/2] Disable periodic tracking on Tegra234 Wayne Chang
2025-05-07 2:48 ` [PATCH 1/2] phy: tegra: xusb: Decouple CYA_TRK_CODE_UPDATE_ON_IDLE from trk_hw_mode Wayne Chang
@ 2025-05-07 2:48 ` Wayne Chang
1 sibling, 0 replies; 4+ messages in thread
From: Wayne Chang @ 2025-05-07 2:48 UTC (permalink / raw)
To: waynec, jckuo, vkoul, kishon, thierry.reding, jonathanh
Cc: linux-phy, linux-tegra, linux-kernel, Haotien Hsu, stable
From: Haotien Hsu <haotienh@nvidia.com>
Periodic calibration updates (~10µs) may overlap with transfers when
PCIe NVMe SSD, LPDDR, and USB2 devices operate simultaneously, causing
crosstalk on Tegra234 devices. Hence disable periodic calibration updates
and make this a one-time calibration.
Fixes: d8163a32ca95 ("phy: tegra: xusb: Add Tegra234 support")
Cc: stable@vger.kernel.org
Signed-off-by: Haotien Hsu <haotienh@nvidia.com>
Signed-off-by: Wayne Chang <waynec@nvidia.com>
---
drivers/phy/tegra/xusb-tegra186.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/phy/tegra/xusb-tegra186.c b/drivers/phy/tegra/xusb-tegra186.c
index dd0aaf305e90..414f4eabfe9d 100644
--- a/drivers/phy/tegra/xusb-tegra186.c
+++ b/drivers/phy/tegra/xusb-tegra186.c
@@ -1703,7 +1703,7 @@ const struct tegra_xusb_padctl_soc tegra234_xusb_padctl_soc = {
.num_supplies = ARRAY_SIZE(tegra194_xusb_padctl_supply_names),
.supports_gen2 = true,
.poll_trk_completed = true,
- .trk_hw_mode = true,
+ .trk_hw_mode = false,
.trk_update_on_idle = true,
.supports_lp_cfg_en = true,
};
--
2.25.1
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 1/2] phy: tegra: xusb: Decouple CYA_TRK_CODE_UPDATE_ON_IDLE from trk_hw_mode
2025-05-07 2:48 ` [PATCH 1/2] phy: tegra: xusb: Decouple CYA_TRK_CODE_UPDATE_ON_IDLE from trk_hw_mode Wayne Chang
@ 2025-05-07 9:39 ` Jon Hunter
0 siblings, 0 replies; 4+ messages in thread
From: Jon Hunter @ 2025-05-07 9:39 UTC (permalink / raw)
To: Wayne Chang, jckuo, vkoul, kishon, thierry.reding
Cc: linux-phy, linux-tegra, linux-kernel, stable
Hi Wayne,
On 07/05/2025 03:48, Wayne Chang wrote:
> The logic that drives the pad calibration values resides in the
> controller reset domain and so the calibration values are only being
> captured when the controller is out of reset. However, by clearing the
> CYA_TRK_CODE_UPDATE_ON_IDLE bit, the calibration values can be set
> while the controller is in reset.
>
> The CYA_TRK_CODE_UPDATE_ON_IDLE bit was previously cleared based on the
> trk_hw_mode flag, but this dependency is not necessary. Instead,
> introduce a new flag, trk_update_on_idle, to independently control this
> bit.
>
> Fixes: d8163a32ca95 ("phy: tegra: xusb: Add Tegra234 support")
> Cc: stable@vger.kernel.org
> Signed-off-by: Wayne Chang <waynec@nvidia.com>
> ---
> drivers/phy/tegra/xusb-tegra186.c | 14 ++++++++------
> drivers/phy/tegra/xusb.h | 1 +
> 2 files changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/phy/tegra/xusb-tegra186.c b/drivers/phy/tegra/xusb-tegra186.c
> index fae6242aa730..dd0aaf305e90 100644
> --- a/drivers/phy/tegra/xusb-tegra186.c
> +++ b/drivers/phy/tegra/xusb-tegra186.c
> @@ -650,14 +650,15 @@ static void tegra186_utmi_bias_pad_power_on(struct tegra_xusb_padctl *padctl)
> udelay(100);
> }
>
> - if (padctl->soc->trk_hw_mode) {
> - value = padctl_readl(padctl, XUSB_PADCTL_USB2_BIAS_PAD_CTL2);
> - value |= USB2_TRK_HW_MODE;
> + value = padctl_readl(padctl, XUSB_PADCTL_USB2_BIAS_PAD_CTL2);
> + if (padctl->soc->trk_update_on_idle)
> value &= ~CYA_TRK_CODE_UPDATE_ON_IDLE;
> - padctl_writel(padctl, value, XUSB_PADCTL_USB2_BIAS_PAD_CTL2);
> - } else {
> + if (padctl->soc->trk_hw_mode)
> + value |= USB2_TRK_HW_MODE;
> + padctl_writel(padctl, value, XUSB_PADCTL_USB2_BIAS_PAD_CTL2);
> +
> + if (!padctl->soc->trk_hw_mode)
> clk_disable_unprepare(priv->usb2_trk_clk);
> - }
>
> mutex_unlock(&padctl->lock);
Can we rebase this on top of the fix 'phy: tegra: xusb: remove a stray
unlock'? This does not apply on top of that patch.
Thanks
Jon
--
nvpublic
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-05-07 9:56 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-07 2:48 [PATCH 0/2] Disable periodic tracking on Tegra234 Wayne Chang
2025-05-07 2:48 ` [PATCH 1/2] phy: tegra: xusb: Decouple CYA_TRK_CODE_UPDATE_ON_IDLE from trk_hw_mode Wayne Chang
2025-05-07 9:39 ` Jon Hunter
2025-05-07 2:48 ` [PATCH 2/2] phy: tegra: xusb: Disable periodic tracking on Tegra234 Wayne Chang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox