* [PATCH v3 0/2] PCI: tegra194: ASPM L1 entrance latency from device tree
@ 2026-05-15 7:07 Manikanta Maddireddy
2026-05-15 7:07 ` [PATCH v3 1/2] PCI: tegra194: Use aspm-l1-entry-delay-ns DT property for L1 entrance latency Manikanta Maddireddy
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Manikanta Maddireddy @ 2026-05-15 7:07 UTC (permalink / raw)
To: bhelgaas, lpieralisi, kwilczynski, mani, robh, krzk+dt, conor+dt,
thierry.reding, jonathanh, kishon, arnd, gregkh, Frank.Li, den,
hongxing.zhu, jingoohan1, vidyas, cassel, 18255117159
Cc: linux-pci, linux-tegra, linux-kernel, Manikanta Maddireddy
This series programs Synopsys DesignWare ASPM L1 entrance latency on NVIDIA
Tegra194/234 PCIe controllers from an optional device tree property and
corrects the default nanosecond cells so the PORT_AFR field advertises the
intended latency buckets.
Background
----------
The controller exposes L1 entrance latency in PCI Express PORT_AFR (DW DBI),
bits 27:29. Software must select a 3-bit code for the maximum L1 entry delay
the platform can tolerate. Patch 1 reads aspm-l1-entry-delay-ns (nanoseconds),
converts to whole microseconds with ceiling division (DIV_ROUND_UP), and
programs min(order_base_2(us), 7) into PORT_AFR during ASPM init. If the
property is absent, the driver keeps the existing default (code 7).
PORT_AFR L1 entrance latency encoding (bits 27:29)
--------------------------------------------------
+--------------------------+----------+
| Advertised maximum | Code |
+--------------------------+----------+
| Maximum of 1 us | 000b |
+--------------------------+----------+
| Maximum of 2 us | 001b |
+--------------------------+----------+
| Maximum of 4 us | 010b |
+--------------------------+----------+
| Maximum of 8 us | 011b |
+--------------------------+----------+
| Maximum of 16 us | 100b |
+--------------------------+----------+
| Maximum of 32 us | 101b |
+--------------------------+----------+
| Maximum of 64 us | 110b |
+--------------------------+----------+
| Rest | 111b |
+--------------------------+----------+
Patch summary
-------------
1/2 PCI: tegra194: Use aspm-l1-entry-delay-ns DT property for L1 entrance
latency
Add driver support described above. v1 and v2 could not program
encoding 0 (000b, 1 us bucket); v3 uses order_base_2(us) so values map
to the table.
2/2 arm64: tegra: fix aspm-l1-entry-delay-ns L1 latency cells
Commit d60ed99f1c9e ("arm64: tegra: Add aspm-l1-entry-delay-ns to PCIe
nodes") added 4000 / 8000 / 16000 ns cells. After ceiling conversion
those are 4 / 8 / 16 us, yielding PORT_AFR codes 2 / 3 / 4. The
intended advertisement is codes 3 / 4 / 5 (8 / 16 / 32 us buckets).
Double each nanosecond cell:
tegra194.dtsi: 4000 -> 8000 ns (all Root Port and Endpoint nodes)
tegra234.dtsi: 8000 -> 16000 ns (Root Port), 16000 -> 32000 ns (Endpoint)
With the v3 driver mapping in place, the original nanosecond cells no
longer yield the intended PORT_AFR codes; doubling them restores codes
3 / 4 / 5 as described above.
Fixes: d60ed99f1c9e ("arm64: tegra: Add aspm-l1-entry-delay-ns to PCIe nodes")
Testing
-------
- Verified device tree parsing and PORT_AFR encoding on target hardware.
- Exercised boundary nanosecond values with a temporary debug patch.
- Built on x86_64 (previous revision exposed a tree build failure).
Manikanta Maddireddy (2):
PCI: tegra194: Use aspm-l1-entry-delay-ns DT property for L1 entrance
latency
arm64: tegra: fix aspm-l1-entry-delay-ns L1 latency cells
arch/arm64/boot/dts/nvidia/tegra194.dtsi | 18 ++++++------
arch/arm64/boot/dts/nvidia/tegra234.dtsi | 32 +++++++++++-----------
drivers/pci/controller/dwc/pcie-tegra194.c | 13 +++++++++
3 files changed, 38 insertions(+), 25 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH v3 1/2] PCI: tegra194: Use aspm-l1-entry-delay-ns DT property for L1 entrance latency 2026-05-15 7:07 [PATCH v3 0/2] PCI: tegra194: ASPM L1 entrance latency from device tree Manikanta Maddireddy @ 2026-05-15 7:07 ` Manikanta Maddireddy 2026-05-20 19:30 ` Bjorn Helgaas 2026-05-15 7:07 ` [PATCH v3 2/2] arm64: tegra: fix aspm-l1-entry-delay-ns L1 latency cells Manikanta Maddireddy ` (2 subsequent siblings) 3 siblings, 1 reply; 7+ messages in thread From: Manikanta Maddireddy @ 2026-05-15 7:07 UTC (permalink / raw) To: bhelgaas, lpieralisi, kwilczynski, mani, robh, krzk+dt, conor+dt, thierry.reding, jonathanh, kishon, arnd, gregkh, Frank.Li, den, hongxing.zhu, jingoohan1, vidyas, cassel, 18255117159 Cc: linux-pci, linux-tegra, linux-kernel, Manikanta Maddireddy Program the Synopsys DesignWare PORT_AFR L1 entrance latency field from the optional aspm-l1-entry-delay-ns device tree property (nanoseconds). Convert delay to whole microseconds with ceiling division (DIV_ROUND_UP), then derive the 3-bit hw encoding as the minimum of order_base_2(us) and 7. If the property is not present or cannot be read, default to 7. Hardware encoding (PORT_AFR L1 entrance latency, bits 27:29): +--------------------------+----------+ | Advertised maximum | Code | +--------------------------+----------+ | Maximum of 1 us | 000b | +--------------------------+----------+ | Maximum of 2 us | 001b | +--------------------------+----------+ | Maximum of 4 us | 010b | +--------------------------+----------+ | Maximum of 8 us | 011b | +--------------------------+----------+ | Maximum of 16 us | 100b | +--------------------------+----------+ | Maximum of 32 us | 101b | +--------------------------+----------+ | Maximum of 64 us | 110b | +--------------------------+----------+ | Rest | 111b | +--------------------------+----------+ Signed-off-by: Manikanta Maddireddy <mmaddireddy@nvidia.com> --- V2: Fixed commit message as per review comments. V3: Fixed encoding to handle all cases per above table. drivers/pci/controller/dwc/pcie-tegra194.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/pci/controller/dwc/pcie-tegra194.c b/drivers/pci/controller/dwc/pcie-tegra194.c index 9dcfa194050e..5309a2f1356d 100644 --- a/drivers/pci/controller/dwc/pcie-tegra194.c +++ b/drivers/pci/controller/dwc/pcie-tegra194.c @@ -272,6 +272,7 @@ struct tegra_pcie_dw { u32 aspm_cmrt; u32 aspm_pwr_on_t; u32 aspm_l0s_enter_lat; + u32 aspm_l1_enter_lat; struct regulator *pex_ctl_supply; struct regulator *slot_ctl_3v3; @@ -715,6 +716,8 @@ static void init_host_aspm(struct tegra_pcie_dw *pcie) val = dw_pcie_readl_dbi(pci, PCIE_PORT_AFR); val &= ~PORT_AFR_L0S_ENTRANCE_LAT_MASK; val |= (pcie->aspm_l0s_enter_lat << PORT_AFR_L0S_ENTRANCE_LAT_SHIFT); + val &= ~PORT_AFR_L1_ENTRANCE_LAT_MASK; + val |= (pcie->aspm_l1_enter_lat << PORT_AFR_L1_ENTRANCE_LAT_SHIFT); val |= PORT_AFR_ENTER_ASPM; dw_pcie_writel_dbi(pci, PCIE_PORT_AFR, val); } @@ -1115,6 +1118,7 @@ static int tegra_pcie_dw_parse_dt(struct tegra_pcie_dw *pcie) { struct platform_device *pdev = to_platform_device(pcie->dev); struct device_node *np = pcie->dev->of_node; + u32 val; int ret; pcie->dbi_res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dbi"); @@ -1141,6 +1145,15 @@ static int tegra_pcie_dw_parse_dt(struct tegra_pcie_dw *pcie) dev_info(pcie->dev, "Failed to read ASPM L0s Entrance latency: %d\n", ret); + /* Default to max latency of 7. */ + pcie->aspm_l1_enter_lat = 7; + ret = of_property_read_u32(np, "aspm-l1-entry-delay-ns", &val); + if (!ret) { + u32 us = DIV_ROUND_UP(val, 1000); + + pcie->aspm_l1_enter_lat = min_t(u32, order_base_2(us), 7); + } + ret = of_property_read_u32(np, "num-lanes", &pcie->num_lanes); if (ret < 0) { dev_err(pcie->dev, "Failed to read num-lanes: %d\n", ret); -- 2.34.1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v3 1/2] PCI: tegra194: Use aspm-l1-entry-delay-ns DT property for L1 entrance latency 2026-05-15 7:07 ` [PATCH v3 1/2] PCI: tegra194: Use aspm-l1-entry-delay-ns DT property for L1 entrance latency Manikanta Maddireddy @ 2026-05-20 19:30 ` Bjorn Helgaas 2026-05-21 4:24 ` Manikanta Maddireddy 0 siblings, 1 reply; 7+ messages in thread From: Bjorn Helgaas @ 2026-05-20 19:30 UTC (permalink / raw) To: Manikanta Maddireddy Cc: bhelgaas, lpieralisi, kwilczynski, mani, robh, krzk+dt, conor+dt, thierry.reding, jonathanh, kishon, arnd, gregkh, Frank.Li, den, hongxing.zhu, jingoohan1, vidyas, cassel, 18255117159, linux-pci, linux-tegra, linux-kernel On Fri, May 15, 2026 at 12:37:52PM +0530, Manikanta Maddireddy wrote: > Program the Synopsys DesignWare PORT_AFR L1 entrance latency field from the > optional aspm-l1-entry-delay-ns device tree property (nanoseconds). > > Convert delay to whole microseconds with ceiling division (DIV_ROUND_UP), > then derive the 3-bit hw encoding as the minimum of order_base_2(us) and 7. > If the property is not present or cannot be read, default to 7. > > Hardware encoding (PORT_AFR L1 entrance latency, bits 27:29): > > +--------------------------+----------+ > | Advertised maximum | Code | > +--------------------------+----------+ > | Maximum of 1 us | 000b | > +--------------------------+----------+ > | Maximum of 2 us | 001b | > +--------------------------+----------+ > | Maximum of 4 us | 010b | > +--------------------------+----------+ > | Maximum of 8 us | 011b | > +--------------------------+----------+ > | Maximum of 16 us | 100b | > +--------------------------+----------+ > | Maximum of 32 us | 101b | > +--------------------------+----------+ > | Maximum of 64 us | 110b | > +--------------------------+----------+ > | Rest | 111b | > +--------------------------+----------+ > > Signed-off-by: Manikanta Maddireddy <mmaddireddy@nvidia.com> > --- > V2: Fixed commit message as per review comments. > V3: Fixed encoding to handle all cases per above table. > > drivers/pci/controller/dwc/pcie-tegra194.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/drivers/pci/controller/dwc/pcie-tegra194.c b/drivers/pci/controller/dwc/pcie-tegra194.c > index 9dcfa194050e..5309a2f1356d 100644 > --- a/drivers/pci/controller/dwc/pcie-tegra194.c > +++ b/drivers/pci/controller/dwc/pcie-tegra194.c > @@ -272,6 +272,7 @@ struct tegra_pcie_dw { > u32 aspm_cmrt; > u32 aspm_pwr_on_t; > u32 aspm_l0s_enter_lat; > + u32 aspm_l1_enter_lat; > > struct regulator *pex_ctl_supply; > struct regulator *slot_ctl_3v3; > @@ -715,6 +716,8 @@ static void init_host_aspm(struct tegra_pcie_dw *pcie) > val = dw_pcie_readl_dbi(pci, PCIE_PORT_AFR); > val &= ~PORT_AFR_L0S_ENTRANCE_LAT_MASK; > val |= (pcie->aspm_l0s_enter_lat << PORT_AFR_L0S_ENTRANCE_LAT_SHIFT); > + val &= ~PORT_AFR_L1_ENTRANCE_LAT_MASK; > + val |= (pcie->aspm_l1_enter_lat << PORT_AFR_L1_ENTRANCE_LAT_SHIFT); Thanks for your patch! I think follow-on patches could use FIELD_MODIFY() for PORT_AFR_L1_ENTRANCE_LAT_MASK and PORT_AFR_L0S_ENTRANCE_LAT_MASK. It would be good to remove all these _SHIFT #defines in a future patch, if possible: PORT_AFR_L0S_ENTRANCE_LAT_SHIFT PORT_AFR_L1_ENTRANCE_LAT_SHIFT GEN3_RELATED_OFF_RATE_SHADOW_SEL_SHIFT PCIE_MSIX_DOORBELL_PF_SHIFT EVENT_COUNTER_ENABLE_SHIFT EVENT_COUNTER_EVENT_SEL_SHIFT EVENT_COUNTER_GROUP_SEL_SHIFT The uses can probably be replaced with FIELD_MODIFY() and FIELD_PREP(), possibly with the addition of a _MASK #define or two. > val |= PORT_AFR_ENTER_ASPM; > dw_pcie_writel_dbi(pci, PCIE_PORT_AFR, val); > } > @@ -1115,6 +1118,7 @@ static int tegra_pcie_dw_parse_dt(struct tegra_pcie_dw *pcie) > { > struct platform_device *pdev = to_platform_device(pcie->dev); > struct device_node *np = pcie->dev->of_node; > + u32 val; > int ret; > > pcie->dbi_res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dbi"); > @@ -1141,6 +1145,15 @@ static int tegra_pcie_dw_parse_dt(struct tegra_pcie_dw *pcie) > dev_info(pcie->dev, > "Failed to read ASPM L0s Entrance latency: %d\n", ret); > > + /* Default to max latency of 7. */ > + pcie->aspm_l1_enter_lat = 7; > + ret = of_property_read_u32(np, "aspm-l1-entry-delay-ns", &val); > + if (!ret) { > + u32 us = DIV_ROUND_UP(val, 1000); > + > + pcie->aspm_l1_enter_lat = min_t(u32, order_base_2(us), 7); > + } > + > ret = of_property_read_u32(np, "num-lanes", &pcie->num_lanes); > if (ret < 0) { > dev_err(pcie->dev, "Failed to read num-lanes: %d\n", ret); > -- > 2.34.1 > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v3 1/2] PCI: tegra194: Use aspm-l1-entry-delay-ns DT property for L1 entrance latency 2026-05-20 19:30 ` Bjorn Helgaas @ 2026-05-21 4:24 ` Manikanta Maddireddy 0 siblings, 0 replies; 7+ messages in thread From: Manikanta Maddireddy @ 2026-05-21 4:24 UTC (permalink / raw) To: Bjorn Helgaas Cc: bhelgaas, lpieralisi, kwilczynski, mani, robh, krzk+dt, conor+dt, thierry.reding, jonathanh, kishon, arnd, gregkh, Frank.Li, den, hongxing.zhu, jingoohan1, vidyas, cassel, 18255117159, linux-pci, linux-tegra, linux-kernel On 21/05/26 1:00 am, Bjorn Helgaas wrote: > On Fri, May 15, 2026 at 12:37:52PM +0530, Manikanta Maddireddy wrote: >> Program the Synopsys DesignWare PORT_AFR L1 entrance latency field from the >> optional aspm-l1-entry-delay-ns device tree property (nanoseconds). >> >> Convert delay to whole microseconds with ceiling division (DIV_ROUND_UP), >> then derive the 3-bit hw encoding as the minimum of order_base_2(us) and 7. >> If the property is not present or cannot be read, default to 7. >> >> Hardware encoding (PORT_AFR L1 entrance latency, bits 27:29): >> >> +--------------------------+----------+ >> | Advertised maximum | Code | >> +--------------------------+----------+ >> | Maximum of 1 us | 000b | >> +--------------------------+----------+ >> | Maximum of 2 us | 001b | >> +--------------------------+----------+ >> | Maximum of 4 us | 010b | >> +--------------------------+----------+ >> | Maximum of 8 us | 011b | >> +--------------------------+----------+ >> | Maximum of 16 us | 100b | >> +--------------------------+----------+ >> | Maximum of 32 us | 101b | >> +--------------------------+----------+ >> | Maximum of 64 us | 110b | >> +--------------------------+----------+ >> | Rest | 111b | >> +--------------------------+----------+ >> >> Signed-off-by: Manikanta Maddireddy <mmaddireddy@nvidia.com> >> --- >> V2: Fixed commit message as per review comments. >> V3: Fixed encoding to handle all cases per above table. >> >> drivers/pci/controller/dwc/pcie-tegra194.c | 13 +++++++++++++ >> 1 file changed, 13 insertions(+) >> >> diff --git a/drivers/pci/controller/dwc/pcie-tegra194.c b/drivers/pci/controller/dwc/pcie-tegra194.c >> index 9dcfa194050e..5309a2f1356d 100644 >> --- a/drivers/pci/controller/dwc/pcie-tegra194.c >> +++ b/drivers/pci/controller/dwc/pcie-tegra194.c >> @@ -272,6 +272,7 @@ struct tegra_pcie_dw { >> u32 aspm_cmrt; >> u32 aspm_pwr_on_t; >> u32 aspm_l0s_enter_lat; >> + u32 aspm_l1_enter_lat; >> >> struct regulator *pex_ctl_supply; >> struct regulator *slot_ctl_3v3; >> @@ -715,6 +716,8 @@ static void init_host_aspm(struct tegra_pcie_dw *pcie) >> val = dw_pcie_readl_dbi(pci, PCIE_PORT_AFR); >> val &= ~PORT_AFR_L0S_ENTRANCE_LAT_MASK; >> val |= (pcie->aspm_l0s_enter_lat << PORT_AFR_L0S_ENTRANCE_LAT_SHIFT); >> + val &= ~PORT_AFR_L1_ENTRANCE_LAT_MASK; >> + val |= (pcie->aspm_l1_enter_lat << PORT_AFR_L1_ENTRANCE_LAT_SHIFT); > > Thanks for your patch! > > I think follow-on patches could use FIELD_MODIFY() for > PORT_AFR_L1_ENTRANCE_LAT_MASK and PORT_AFR_L0S_ENTRANCE_LAT_MASK. > > It would be good to remove all these _SHIFT #defines in a future patch, > if possible: > > PORT_AFR_L0S_ENTRANCE_LAT_SHIFT > PORT_AFR_L1_ENTRANCE_LAT_SHIFT > GEN3_RELATED_OFF_RATE_SHADOW_SEL_SHIFT > PCIE_MSIX_DOORBELL_PF_SHIFT > EVENT_COUNTER_ENABLE_SHIFT > EVENT_COUNTER_EVENT_SEL_SHIFT > EVENT_COUNTER_GROUP_SEL_SHIFT > > The uses can probably be replaced with FIELD_MODIFY() and > FIELD_PREP(), possibly with the addition of a _MASK #define or two. > Noted, I will send a patch to remove all _SHIFT #defines. Thanks, Manikanta >> val |= PORT_AFR_ENTER_ASPM; >> dw_pcie_writel_dbi(pci, PCIE_PORT_AFR, val); >> } >> @@ -1115,6 +1118,7 @@ static int tegra_pcie_dw_parse_dt(struct tegra_pcie_dw *pcie) >> { >> struct platform_device *pdev = to_platform_device(pcie->dev); >> struct device_node *np = pcie->dev->of_node; >> + u32 val; >> int ret; >> >> pcie->dbi_res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dbi"); >> @@ -1141,6 +1145,15 @@ static int tegra_pcie_dw_parse_dt(struct tegra_pcie_dw *pcie) >> dev_info(pcie->dev, >> "Failed to read ASPM L0s Entrance latency: %d\n", ret); >> >> + /* Default to max latency of 7. */ >> + pcie->aspm_l1_enter_lat = 7; >> + ret = of_property_read_u32(np, "aspm-l1-entry-delay-ns", &val); >> + if (!ret) { >> + u32 us = DIV_ROUND_UP(val, 1000); >> + >> + pcie->aspm_l1_enter_lat = min_t(u32, order_base_2(us), 7); >> + } >> + >> ret = of_property_read_u32(np, "num-lanes", &pcie->num_lanes); >> if (ret < 0) { >> dev_err(pcie->dev, "Failed to read num-lanes: %d\n", ret); >> -- >> 2.34.1 >> -- nvpublic ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v3 2/2] arm64: tegra: fix aspm-l1-entry-delay-ns L1 latency cells 2026-05-15 7:07 [PATCH v3 0/2] PCI: tegra194: ASPM L1 entrance latency from device tree Manikanta Maddireddy 2026-05-15 7:07 ` [PATCH v3 1/2] PCI: tegra194: Use aspm-l1-entry-delay-ns DT property for L1 entrance latency Manikanta Maddireddy @ 2026-05-15 7:07 ` Manikanta Maddireddy 2026-05-19 14:17 ` (subset) [PATCH v3 0/2] PCI: tegra194: ASPM L1 entrance latency from device tree Manivannan Sadhasivam 2026-05-28 21:36 ` Thierry Reding 3 siblings, 0 replies; 7+ messages in thread From: Manikanta Maddireddy @ 2026-05-15 7:07 UTC (permalink / raw) To: bhelgaas, lpieralisi, kwilczynski, mani, robh, krzk+dt, conor+dt, thierry.reding, jonathanh, kishon, arnd, gregkh, Frank.Li, den, hongxing.zhu, jingoohan1, vidyas, cassel, 18255117159 Cc: linux-pci, linux-tegra, linux-kernel, Manikanta Maddireddy The Tegra194 PCIe driver converts aspm-l1-entry-delay-ns to whole ms with ceiling division, then derives the Synopsys DesignWare PORT_AFR L1 entrance latency encoding as min(order_base_2(us), 7). The nanosecond values from the Fixes tag below round up to 4, 8, and 16 us, selecting PORT_AFR L1 entrance latency codes 2, 3, and 4 respectively. Raise the programmed latency so the PORT_AFR codes are 3 / 4 / 5 (8 / 16 / 32 us buckets) instead of 2 / 3 / 4 (4 / 8 / 16 us). - tegra194.dtsi: 4000 -> 8000 ns (all listed controllers) - tegra234.dtsi: 8000 -> 16000 ns (Root Port), 16000 -> 32000 ns (Endpoint) Fixes: d60ed99f1c9e ("arm64: tegra: Add aspm-l1-entry-delay-ns to PCIe nodes") Signed-off-by: Manikanta Maddireddy <mmaddireddy@nvidia.com> --- arch/arm64/boot/dts/nvidia/tegra194.dtsi | 18 ++++++------- arch/arm64/boot/dts/nvidia/tegra234.dtsi | 32 ++++++++++++------------ 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/arch/arm64/boot/dts/nvidia/tegra194.dtsi b/arch/arm64/boot/dts/nvidia/tegra194.dtsi index 1d659454a6f9..7bbf0e892724 100644 --- a/arch/arm64/boot/dts/nvidia/tegra194.dtsi +++ b/arch/arm64/boot/dts/nvidia/tegra194.dtsi @@ -2382,7 +2382,7 @@ pcie@14100000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <4000>; + aspm-l1-entry-delay-ns = <8000>; bus-range = <0x0 0xff>; @@ -2435,7 +2435,7 @@ pcie@14120000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <4000>; + aspm-l1-entry-delay-ns = <8000>; bus-range = <0x0 0xff>; @@ -2488,7 +2488,7 @@ pcie@14140000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <4000>; + aspm-l1-entry-delay-ns = <8000>; bus-range = <0x0 0xff>; @@ -2541,7 +2541,7 @@ pcie@14160000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <4000>; + aspm-l1-entry-delay-ns = <8000>; bus-range = <0x0 0xff>; @@ -2587,7 +2587,7 @@ pcie-ep@14160000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <4000>; + aspm-l1-entry-delay-ns = <8000>; interconnects = <&mc TEGRA194_MEMORY_CLIENT_PCIE4R &emc>, <&mc TEGRA194_MEMORY_CLIENT_PCIE4W &emc>; @@ -2634,7 +2634,7 @@ pcie@14180000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <4000>; + aspm-l1-entry-delay-ns = <8000>; bus-range = <0x0 0xff>; @@ -2680,7 +2680,7 @@ pcie-ep@14180000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <4000>; + aspm-l1-entry-delay-ns = <8000>; interconnects = <&mc TEGRA194_MEMORY_CLIENT_PCIE0R &emc>, <&mc TEGRA194_MEMORY_CLIENT_PCIE0W &emc>; @@ -2730,7 +2730,7 @@ pcie@141a0000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <4000>; + aspm-l1-entry-delay-ns = <8000>; bus-range = <0x0 0xff>; @@ -2779,7 +2779,7 @@ pcie-ep@141a0000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <4000>; + aspm-l1-entry-delay-ns = <8000>; interconnects = <&mc TEGRA194_MEMORY_CLIENT_PCIE5R &emc>, <&mc TEGRA194_MEMORY_CLIENT_PCIE5W &emc>; diff --git a/arch/arm64/boot/dts/nvidia/tegra234.dtsi b/arch/arm64/boot/dts/nvidia/tegra234.dtsi index 75bb9a0ad027..8e0c51e496e2 100644 --- a/arch/arm64/boot/dts/nvidia/tegra234.dtsi +++ b/arch/arm64/boot/dts/nvidia/tegra234.dtsi @@ -4532,7 +4532,7 @@ pcie@140a0000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <8000>; + aspm-l1-entry-delay-ns = <16000>; bus-range = <0x0 0xff>; @@ -4587,7 +4587,7 @@ pcie@140c0000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <8000>; + aspm-l1-entry-delay-ns = <16000>; bus-range = <0x0 0xff>; @@ -4642,7 +4642,7 @@ pcie@140e0000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <8000>; + aspm-l1-entry-delay-ns = <16000>; bus-range = <0x0 0xff>; @@ -4689,7 +4689,7 @@ pcie-ep@140e0000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <16000>; + aspm-l1-entry-delay-ns = <32000>; interconnects = <&mc TEGRA234_MEMORY_CLIENT_PCIE10AR &emc>, <&mc TEGRA234_MEMORY_CLIENT_PCIE10AW &emc>; @@ -4738,7 +4738,7 @@ pcie@14100000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <8000>; + aspm-l1-entry-delay-ns = <16000>; bus-range = <0x0 0xff>; @@ -4793,7 +4793,7 @@ pcie@14120000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <8000>; + aspm-l1-entry-delay-ns = <16000>; bus-range = <0x0 0xff>; @@ -4848,7 +4848,7 @@ pcie@14140000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <8000>; + aspm-l1-entry-delay-ns = <16000>; bus-range = <0x0 0xff>; @@ -4903,7 +4903,7 @@ pcie@14160000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <8000>; + aspm-l1-entry-delay-ns = <16000>; bus-range = <0x0 0xff>; @@ -4945,7 +4945,7 @@ pcie-ep@14160000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <16000>; + aspm-l1-entry-delay-ns = <32000>; interconnects = <&mc TEGRA234_MEMORY_CLIENT_PCIE4R &emc>, <&mc TEGRA234_MEMORY_CLIENT_PCIE4W &emc>; @@ -4992,7 +4992,7 @@ pcie@14180000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <8000>; + aspm-l1-entry-delay-ns = <16000>; bus-range = <0x0 0xff>; @@ -5047,7 +5047,7 @@ pcie@141a0000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <8000>; + aspm-l1-entry-delay-ns = <16000>; bus-range = <0x0 0xff>; @@ -5094,7 +5094,7 @@ pcie-ep@141a0000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <16000>; + aspm-l1-entry-delay-ns = <32000>; interconnects = <&mc TEGRA234_MEMORY_CLIENT_PCIE5R &emc>, <&mc TEGRA234_MEMORY_CLIENT_PCIE5W &emc>; @@ -5143,7 +5143,7 @@ pcie@141c0000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <8000>; + aspm-l1-entry-delay-ns = <16000>; bus-range = <0x0 0xff>; @@ -5190,7 +5190,7 @@ pcie-ep@141c0000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <16000>; + aspm-l1-entry-delay-ns = <32000>; interconnects = <&mc TEGRA234_MEMORY_CLIENT_PCIE6AR &emc>, <&mc TEGRA234_MEMORY_CLIENT_PCIE6AW &emc>; @@ -5239,7 +5239,7 @@ pcie@141e0000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <8000>; + aspm-l1-entry-delay-ns = <16000>; bus-range = <0x0 0xff>; @@ -5286,7 +5286,7 @@ pcie-ep@141e0000 { nvidia,aspm-cmrt-us = <60>; nvidia,aspm-pwr-on-t-us = <20>; nvidia,aspm-l0s-entrance-latency-us = <3>; - aspm-l1-entry-delay-ns = <16000>; + aspm-l1-entry-delay-ns = <32000>; interconnects = <&mc TEGRA234_MEMORY_CLIENT_PCIE7AR &emc>, <&mc TEGRA234_MEMORY_CLIENT_PCIE7AW &emc>; -- 2.34.1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: (subset) [PATCH v3 0/2] PCI: tegra194: ASPM L1 entrance latency from device tree 2026-05-15 7:07 [PATCH v3 0/2] PCI: tegra194: ASPM L1 entrance latency from device tree Manikanta Maddireddy 2026-05-15 7:07 ` [PATCH v3 1/2] PCI: tegra194: Use aspm-l1-entry-delay-ns DT property for L1 entrance latency Manikanta Maddireddy 2026-05-15 7:07 ` [PATCH v3 2/2] arm64: tegra: fix aspm-l1-entry-delay-ns L1 latency cells Manikanta Maddireddy @ 2026-05-19 14:17 ` Manivannan Sadhasivam 2026-05-28 21:36 ` Thierry Reding 3 siblings, 0 replies; 7+ messages in thread From: Manivannan Sadhasivam @ 2026-05-19 14:17 UTC (permalink / raw) To: bhelgaas, lpieralisi, kwilczynski, robh, krzk+dt, conor+dt, thierry.reding, jonathanh, kishon, arnd, gregkh, Frank.Li, den, hongxing.zhu, jingoohan1, vidyas, cassel, 18255117159, Manikanta Maddireddy Cc: linux-pci, linux-tegra, linux-kernel On Fri, 15 May 2026 12:37:51 +0530, Manikanta Maddireddy wrote: > This series programs Synopsys DesignWare ASPM L1 entrance latency on NVIDIA > Tegra194/234 PCIe controllers from an optional device tree property and > corrects the default nanosecond cells so the PORT_AFR field advertises the > intended latency buckets. > > Background > ---------- > The controller exposes L1 entrance latency in PCI Express PORT_AFR (DW DBI), > bits 27:29. Software must select a 3-bit code for the maximum L1 entry delay > the platform can tolerate. Patch 1 reads aspm-l1-entry-delay-ns (nanoseconds), > converts to whole microseconds with ceiling division (DIV_ROUND_UP), and > programs min(order_base_2(us), 7) into PORT_AFR during ASPM init. If the > property is absent, the driver keeps the existing default (code 7). > > [...] Applied, thanks! [1/2] PCI: tegra194: Use aspm-l1-entry-delay-ns DT property for L1 entrance latency commit: 87f493041e20759ffc27262cc0490c41628a5ee2 Best regards, -- Manivannan Sadhasivam <mani@kernel.org> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: (subset) [PATCH v3 0/2] PCI: tegra194: ASPM L1 entrance latency from device tree 2026-05-15 7:07 [PATCH v3 0/2] PCI: tegra194: ASPM L1 entrance latency from device tree Manikanta Maddireddy ` (2 preceding siblings ...) 2026-05-19 14:17 ` (subset) [PATCH v3 0/2] PCI: tegra194: ASPM L1 entrance latency from device tree Manivannan Sadhasivam @ 2026-05-28 21:36 ` Thierry Reding 3 siblings, 0 replies; 7+ messages in thread From: Thierry Reding @ 2026-05-28 21:36 UTC (permalink / raw) To: bhelgaas, lpieralisi, kwilczynski, mani, robh, krzk+dt, conor+dt, thierry.reding, jonathanh, kishon, arnd, gregkh, Frank.Li, den, hongxing.zhu, jingoohan1, vidyas, cassel, 18255117159, Manikanta Maddireddy Cc: linux-pci, linux-tegra, linux-kernel From: Thierry Reding <treding@nvidia.com> On Fri, 15 May 2026 12:37:51 +0530, Manikanta Maddireddy wrote: > This series programs Synopsys DesignWare ASPM L1 entrance latency on NVIDIA > Tegra194/234 PCIe controllers from an optional device tree property and > corrects the default nanosecond cells so the PORT_AFR field advertises the > intended latency buckets. > > Background > ---------- > The controller exposes L1 entrance latency in PCI Express PORT_AFR (DW DBI), > bits 27:29. Software must select a 3-bit code for the maximum L1 entry delay > the platform can tolerate. Patch 1 reads aspm-l1-entry-delay-ns (nanoseconds), > converts to whole microseconds with ceiling division (DIV_ROUND_UP), and > programs min(order_base_2(us), 7) into PORT_AFR during ASPM init. If the > property is absent, the driver keeps the existing default (code 7). > > [...] Applied, thanks! [2/2] arm64: tegra: fix aspm-l1-entry-delay-ns L1 latency cells commit: 56c5f525817ea99ce34110700b3a0ab71add0b8c Best regards, -- Thierry Reding <treding@nvidia.com> ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-05-28 21:36 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2026-05-15 7:07 [PATCH v3 0/2] PCI: tegra194: ASPM L1 entrance latency from device tree Manikanta Maddireddy 2026-05-15 7:07 ` [PATCH v3 1/2] PCI: tegra194: Use aspm-l1-entry-delay-ns DT property for L1 entrance latency Manikanta Maddireddy 2026-05-20 19:30 ` Bjorn Helgaas 2026-05-21 4:24 ` Manikanta Maddireddy 2026-05-15 7:07 ` [PATCH v3 2/2] arm64: tegra: fix aspm-l1-entry-delay-ns L1 latency cells Manikanta Maddireddy 2026-05-19 14:17 ` (subset) [PATCH v3 0/2] PCI: tegra194: ASPM L1 entrance latency from device tree Manivannan Sadhasivam 2026-05-28 21:36 ` Thierry Reding
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®