* [PATCH v3 1/7] MAINTAINERS: Remove bouncing intel-gw maintainer
2026-04-01 9:31 [PATCH v3 0/7] PCI: intel-gw: Fixes to make the driver working again Florian Eckert
@ 2026-04-01 9:31 ` Florian Eckert
2026-04-01 9:31 ` [PATCH v3 2/7] PCI: intel-gw: Remove unused define Florian Eckert
` (5 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Florian Eckert @ 2026-04-01 9:31 UTC (permalink / raw)
To: Lorenzo Pieralisi, Krzysztof Wilczyński,
Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas, Johan Hovold,
Sajid Dalvi, Ajay Agarwal, Krzysztof Kozlowski, Conor Dooley,
Rahul Tanwar
Cc: linux-pci, linux-kernel, devicetree, Florian Eckert,
Eckert.Florian, ms
The maintainer's email address has been bouncing for months. Mark the PCI
intel-gw driver as orphaned.
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
---
MAINTAINERS | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/MAINTAINERS b/MAINTAINERS
index 96ea84948d76aff5e07579911d0f370ae13f481b..26f3b2e192fa9ef2e1c89d2310bebaa0a67dff00 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -20505,9 +20505,8 @@ F: Documentation/devicetree/bindings/pci/intel,keembay-pcie*
F: drivers/pci/controller/dwc/pcie-keembay.c
PCIE DRIVER FOR INTEL LGM GW SOC
-M: Chuanhua Lei <lchuanhua@maxlinear.com>
L: linux-pci@vger.kernel.org
-S: Maintained
+S: Orphan
F: Documentation/devicetree/bindings/pci/intel-gw-pcie.yaml
F: drivers/pci/controller/dwc/pcie-intel-gw.c
--
2.47.3
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH v3 2/7] PCI: intel-gw: Remove unused define
2026-04-01 9:31 [PATCH v3 0/7] PCI: intel-gw: Fixes to make the driver working again Florian Eckert
2026-04-01 9:31 ` [PATCH v3 1/7] MAINTAINERS: Remove bouncing intel-gw maintainer Florian Eckert
@ 2026-04-01 9:31 ` Florian Eckert
2026-04-01 9:31 ` [PATCH v3 3/7] PCI: intel-gw: Move interrupt enable to own function Florian Eckert
` (4 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Florian Eckert @ 2026-04-01 9:31 UTC (permalink / raw)
To: Lorenzo Pieralisi, Krzysztof Wilczyński,
Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas, Johan Hovold,
Sajid Dalvi, Ajay Agarwal, Krzysztof Kozlowski, Conor Dooley,
Rahul Tanwar
Cc: linux-pci, linux-kernel, devicetree, Florian Eckert,
Eckert.Florian, ms
The C preprocessor define 'PCIE_APP_INTX_OFST' is not used in the sources
and can therefore be deleted.
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
---
drivers/pci/controller/dwc/pcie-intel-gw.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/pci/controller/dwc/pcie-intel-gw.c b/drivers/pci/controller/dwc/pcie-intel-gw.c
index c21906eced61896c8a8307dbd6b72d229f9a5c5f..80d1607c46cbbb1e274b37a0bb9377a877678f5d 100644
--- a/drivers/pci/controller/dwc/pcie-intel-gw.c
+++ b/drivers/pci/controller/dwc/pcie-intel-gw.c
@@ -47,7 +47,6 @@
#define PCIE_APP_IRN_INTD BIT(16)
#define PCIE_APP_IRN_MSG_LTR BIT(18)
#define PCIE_APP_IRN_SYS_ERR_RC BIT(29)
-#define PCIE_APP_INTX_OFST 12
#define PCIE_APP_IRN_INT \
(PCIE_APP_IRN_AER_REPORT | PCIE_APP_IRN_PME | \
--
2.47.3
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH v3 3/7] PCI: intel-gw: Move interrupt enable to own function
2026-04-01 9:31 [PATCH v3 0/7] PCI: intel-gw: Fixes to make the driver working again Florian Eckert
2026-04-01 9:31 ` [PATCH v3 1/7] MAINTAINERS: Remove bouncing intel-gw maintainer Florian Eckert
2026-04-01 9:31 ` [PATCH v3 2/7] PCI: intel-gw: Remove unused define Florian Eckert
@ 2026-04-01 9:31 ` Florian Eckert
2026-04-01 9:31 ` [PATCH v3 4/7] PCI: intel-gw: Enable clock before phy init Florian Eckert
` (3 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Florian Eckert @ 2026-04-01 9:31 UTC (permalink / raw)
To: Lorenzo Pieralisi, Krzysztof Wilczyński,
Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas, Johan Hovold,
Sajid Dalvi, Ajay Agarwal, Krzysztof Kozlowski, Conor Dooley,
Rahul Tanwar
Cc: linux-pci, linux-kernel, devicetree, Florian Eckert,
Eckert.Florian, ms
To improve the readability of the code, move the interrupt enable
instructions to a separate function. That is already done for the disable
interrupt instruction.
In addtion, all pending interrupts are cleared and disabled, just as this
is done in the disable function 'intel_pcie_core_irq_disable()'. After
that, all relevant interrupts are enabled again. The 'PCIE_APP_IRNEN'
definition contains all the relevant interrupts that are of interest.
This change is also done in the Maxlinear SDK [1]. As I unfortunately
don’t have any documentation for this IP core, I suspect that the
intention is to set the IP core for interrupt handling to a specific
state. Perhaps the problem was that the IP core did not reinitialize the
interrupt register properly after a power cycle.
In my view, it can’t do any harm to switch the interrupt off and then on
again to set them to a specific state.
[1] https://github.com/maxlinear/linux/blob/updk_9.1.90/drivers/pci/controller/dwc/pcie-intel-gw.c#L431
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
---
drivers/pci/controller/dwc/pcie-intel-gw.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/drivers/pci/controller/dwc/pcie-intel-gw.c b/drivers/pci/controller/dwc/pcie-intel-gw.c
index 80d1607c46cbbb1e274b37a0bb9377a877678f5d..e88b8243cc41c607c39e4d58c4dcd8c8c082e8b0 100644
--- a/drivers/pci/controller/dwc/pcie-intel-gw.c
+++ b/drivers/pci/controller/dwc/pcie-intel-gw.c
@@ -195,6 +195,13 @@ static void intel_pcie_device_rst_deassert(struct intel_pcie *pcie)
gpiod_set_value_cansleep(pcie->reset_gpio, 0);
}
+static void intel_pcie_core_irq_enable(struct intel_pcie *pcie)
+{
+ pcie_app_wr(pcie, PCIE_APP_IRNEN, 0);
+ pcie_app_wr(pcie, PCIE_APP_IRNCR, PCIE_APP_IRN_INT);
+ pcie_app_wr(pcie, PCIE_APP_IRNEN, PCIE_APP_IRN_INT);
+}
+
static void intel_pcie_core_irq_disable(struct intel_pcie *pcie)
{
pcie_app_wr(pcie, PCIE_APP_IRNEN, 0);
@@ -316,9 +323,7 @@ static int intel_pcie_host_setup(struct intel_pcie *pcie)
if (ret)
goto app_init_err;
- /* Enable integrated interrupts */
- pcie_app_wr_mask(pcie, PCIE_APP_IRNEN, PCIE_APP_IRN_INT,
- PCIE_APP_IRN_INT);
+ intel_pcie_core_irq_enable(pcie);
return 0;
--
2.47.3
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH v3 4/7] PCI: intel-gw: Enable clock before phy init
2026-04-01 9:31 [PATCH v3 0/7] PCI: intel-gw: Fixes to make the driver working again Florian Eckert
` (2 preceding siblings ...)
2026-04-01 9:31 ` [PATCH v3 3/7] PCI: intel-gw: Move interrupt enable to own function Florian Eckert
@ 2026-04-01 9:31 ` Florian Eckert
2026-04-01 9:31 ` [PATCH v3 5/7] PCI: intel-gw: Add start_link callback function Florian Eckert
` (2 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Florian Eckert @ 2026-04-01 9:31 UTC (permalink / raw)
To: Lorenzo Pieralisi, Krzysztof Wilczyński,
Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas, Johan Hovold,
Sajid Dalvi, Ajay Agarwal, Krzysztof Kozlowski, Conor Dooley,
Rahul Tanwar
Cc: linux-pci, linux-kernel, devicetree, Florian Eckert,
Eckert.Florian, ms
To ensure that the boot sequence is correct, the dwc pcie core clock must
be switched on before phy init call [1]. This changes are based on patched
kernel sources of the MaxLinear SDK.
[1] https://github.com/maxlinear/linux/blob/updk_9.1.90/drivers/pci/controller/dwc/pcie-intel-gw.c#L544
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
---
drivers/pci/controller/dwc/pcie-intel-gw.c | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/drivers/pci/controller/dwc/pcie-intel-gw.c b/drivers/pci/controller/dwc/pcie-intel-gw.c
index e88b8243cc41c607c39e4d58c4dcd8c8c082e8b0..6d9499d954674a26a74bff56b7fb5759767424c0 100644
--- a/drivers/pci/controller/dwc/pcie-intel-gw.c
+++ b/drivers/pci/controller/dwc/pcie-intel-gw.c
@@ -291,13 +291,9 @@ static int intel_pcie_host_setup(struct intel_pcie *pcie)
intel_pcie_core_rst_assert(pcie);
intel_pcie_device_rst_assert(pcie);
-
- ret = phy_init(pcie->phy);
- if (ret)
- return ret;
-
intel_pcie_core_rst_deassert(pcie);
+ /* Controller clock must be provided earlier than PHY */
ret = clk_prepare_enable(pcie->core_clk);
if (ret) {
dev_err(pcie->pci.dev, "Core clock enable failed: %d\n", ret);
@@ -306,13 +302,17 @@ static int intel_pcie_host_setup(struct intel_pcie *pcie)
pci->atu_base = pci->dbi_base + 0xC0000;
+ ret = phy_init(pcie->phy);
+ if (ret)
+ goto phy_err;
+
intel_pcie_ltssm_disable(pcie);
intel_pcie_link_setup(pcie);
intel_pcie_init_n_fts(pci);
ret = dw_pcie_setup_rc(&pci->pp);
if (ret)
- goto app_init_err;
+ goto err;
dw_pcie_upconfig_setup(pci);
@@ -321,17 +321,18 @@ static int intel_pcie_host_setup(struct intel_pcie *pcie)
ret = dw_pcie_wait_for_link(pci);
if (ret)
- goto app_init_err;
+ goto err;
intel_pcie_core_irq_enable(pcie);
return 0;
-app_init_err:
+err:
+ phy_exit(pcie->phy);
+phy_err:
clk_disable_unprepare(pcie->core_clk);
clk_err:
intel_pcie_core_rst_assert(pcie);
- phy_exit(pcie->phy);
return ret;
}
--
2.47.3
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH v3 5/7] PCI: intel-gw: Add start_link callback function
2026-04-01 9:31 [PATCH v3 0/7] PCI: intel-gw: Fixes to make the driver working again Florian Eckert
` (3 preceding siblings ...)
2026-04-01 9:31 ` [PATCH v3 4/7] PCI: intel-gw: Enable clock before phy init Florian Eckert
@ 2026-04-01 9:31 ` Florian Eckert
2026-04-01 9:31 ` [PATCH v3 6/7] PCI: intel-gw: Move driver atu base assignment to probe function Florian Eckert
2026-04-01 9:31 ` [PATCH v3 7/7] dt-bindings: PCI: intel,lgm-pcie: Add atu resource Florian Eckert
6 siblings, 0 replies; 11+ messages in thread
From: Florian Eckert @ 2026-04-01 9:31 UTC (permalink / raw)
To: Lorenzo Pieralisi, Krzysztof Wilczyński,
Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas, Johan Hovold,
Sajid Dalvi, Ajay Agarwal, Krzysztof Kozlowski, Conor Dooley,
Rahul Tanwar
Cc: linux-pci, linux-kernel, devicetree, Florian Eckert,
Eckert.Florian, ms
The pcie-intel-gw driver has no start_link callback function. This commit
adds the missing callback function so that the driver works again and does
not abort with the following error messages during probing.
[ 2.512015] intel-gw-pcie d1000000.pcie: host bridge /soc/pcie@d1000000 ranges:
[ 2.517868] intel-gw-pcie d1000000.pcie: MEM 0x00dc000000..0x00ddffffff -> 0x00dc000000
[ 2.528450] intel-combo-phy d0c00000.combo-phy: Set combo mode: combophy[1]: mode: PCIe single lane mode
[ 2.551619] intel-gw-pcie d1000000.pcie: No outbound iATU found
[ 2.556060] intel-gw-pcie d1000000.pcie: Cannot initialize host
[ 2.561901] intel-gw-pcie d1000000.pcie: probe with driver intel-gw-pcie failed with error -22
[ 2.571041] intel-gw-pcie c1100000.pcie: host bridge /soc/pcie@c1100000 ranges:
[ 2.577736] intel-gw-pcie c1100000.pcie: MEM 0x00ce000000..0x00cfffffff -> 0x00ce000000
[ 2.588299] intel-combo-phy c0c00000.combo-phy: Set combo mode: combophy[3]: mode: PCIe single lane mode
[ 2.611471] intel-gw-pcie c1100000.pcie: No outbound iATU found
[ 2.615934] intel-gw-pcie c1100000.pcie: Cannot initialize host
[ 2.621759] intel-gw-pcie c1100000.pcie: probe with driver intel-gw-pcie failed with error -22
Fixes: c5097b9869a1 ("Revert "PCI: dwc: Wait for link up only if link is started"")
Fixes: da56a1bfbab5 ("PCI: dwc: Wait for link up only if link is started")
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
---
drivers/pci/controller/dwc/pcie-intel-gw.c | 24 +++++++++++-------------
1 file changed, 11 insertions(+), 13 deletions(-)
diff --git a/drivers/pci/controller/dwc/pcie-intel-gw.c b/drivers/pci/controller/dwc/pcie-intel-gw.c
index 6d9499d954674a26a74bff56b7fb5759767424c0..afd933050c92ee31c477e0b1738ab1136bdcfbf6 100644
--- a/drivers/pci/controller/dwc/pcie-intel-gw.c
+++ b/drivers/pci/controller/dwc/pcie-intel-gw.c
@@ -284,6 +284,16 @@ static void intel_pcie_turn_off(struct intel_pcie *pcie)
pcie_rc_cfg_wr_mask(pcie, PCI_COMMAND, PCI_COMMAND_MEMORY, 0);
}
+static int intel_pcie_start_link(struct dw_pcie *pci)
+{
+ struct intel_pcie *pcie = dev_get_drvdata(pci->dev);
+
+ intel_pcie_device_rst_deassert(pcie);
+ intel_pcie_ltssm_enable(pcie);
+
+ return 0;
+}
+
static int intel_pcie_host_setup(struct intel_pcie *pcie)
{
int ret;
@@ -310,25 +320,12 @@ static int intel_pcie_host_setup(struct intel_pcie *pcie)
intel_pcie_link_setup(pcie);
intel_pcie_init_n_fts(pci);
- ret = dw_pcie_setup_rc(&pci->pp);
- if (ret)
- goto err;
-
dw_pcie_upconfig_setup(pci);
- intel_pcie_device_rst_deassert(pcie);
- intel_pcie_ltssm_enable(pcie);
-
- ret = dw_pcie_wait_for_link(pci);
- if (ret)
- goto err;
-
intel_pcie_core_irq_enable(pcie);
return 0;
-err:
- phy_exit(pcie->phy);
phy_err:
clk_disable_unprepare(pcie->core_clk);
clk_err:
@@ -386,6 +383,7 @@ static int intel_pcie_rc_init(struct dw_pcie_rp *pp)
}
static const struct dw_pcie_ops intel_pcie_ops = {
+ .start_link = intel_pcie_start_link,
};
static const struct dw_pcie_host_ops intel_pcie_dw_ops = {
--
2.47.3
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH v3 6/7] PCI: intel-gw: Move driver atu base assignment to probe function
2026-04-01 9:31 [PATCH v3 0/7] PCI: intel-gw: Fixes to make the driver working again Florian Eckert
` (4 preceding siblings ...)
2026-04-01 9:31 ` [PATCH v3 5/7] PCI: intel-gw: Add start_link callback function Florian Eckert
@ 2026-04-01 9:31 ` Florian Eckert
2026-04-01 9:31 ` [PATCH v3 7/7] dt-bindings: PCI: intel,lgm-pcie: Add atu resource Florian Eckert
6 siblings, 0 replies; 11+ messages in thread
From: Florian Eckert @ 2026-04-01 9:31 UTC (permalink / raw)
To: Lorenzo Pieralisi, Krzysztof Wilczyński,
Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas, Johan Hovold,
Sajid Dalvi, Ajay Agarwal, Krzysztof Kozlowski, Conor Dooley,
Rahul Tanwar
Cc: linux-pci, linux-kernel, devicetree, Florian Eckert,
Eckert.Florian, ms
If no ATU resource is defined in the devicetree, then driver´s default
value '0x300000' [1] is set. This is done during probing in the function
'dw_pcie_get_resources()' [2] by dwc core.
The driver overwrites this again when its own init callback
'pp->ops->init()' [3] function 'intel_pcie_host_setup()' [4] is called.
This is done, because the 'atu_base' value for this IP is '0xC0000'
rather than '0x300000'.
callstack:
intel_pcie_probe()
dw_pcie_host_init()
dw_pcie_host_get_resources()
dw_pcie_get_resources() [2]
pp->ops->init = intel_pcie_rc_init() [3]
intel_pcie_host_setup() [4]
However, this is a problem because, the callback 'pp->ops->init' is called
after 'dw_pcie_get_resources()' in dwc core (see callstack). The 'atu_base'
must be set before, so that this value is not set by dwc core. Therefor
the assignment of 'atu_base' is moved to driver´s probe function.
While we’re at it, the change also adds the option to load ATU information
from the device tree. For reasons of backwards compatibility, this is not
mandatory. If ‘atu’ is still not specified in the devicetree, then driver’s
default value is still used and set in driver´s probe function. If the 'atu'
resource is present in the devicetree, then dwc core loads it via the
function 'dw_pcie_get_resources()' and not in the driver´s probe function.
[1] https://elixir.bootlin.com/linux/v6.19.10/source/drivers/pci/controller/dwc/pcie-designware.h#L292
[2] https://elixir.bootlin.com/linux/v6.19.10/source/drivers/pci/controller/dwc/pcie-designware.c#L150
[3] https://elixir.bootlin.com/linux/v6.19.10/source/drivers/pci/controller/dwc/pcie-designware-host.c#L589
[4] https://elixir.bootlin.com/linux/v6.19.10/source/drivers/pci/controller/dwc/pcie-intel-gw.c#L301
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
---
drivers/pci/controller/dwc/pcie-intel-gw.c | 28 ++++++++++++++++++++++++++--
1 file changed, 26 insertions(+), 2 deletions(-)
diff --git a/drivers/pci/controller/dwc/pcie-intel-gw.c b/drivers/pci/controller/dwc/pcie-intel-gw.c
index afd933050c92ee31c477e0b1738ab1136bdcfbf6..59b11e45944e199aac0f599f96d6cc90e2104708 100644
--- a/drivers/pci/controller/dwc/pcie-intel-gw.c
+++ b/drivers/pci/controller/dwc/pcie-intel-gw.c
@@ -310,8 +310,6 @@ static int intel_pcie_host_setup(struct intel_pcie *pcie)
goto clk_err;
}
- pci->atu_base = pci->dbi_base + 0xC0000;
-
ret = phy_init(pcie->phy);
if (ret)
goto phy_err;
@@ -395,6 +393,7 @@ static int intel_pcie_probe(struct platform_device *pdev)
struct device *dev = &pdev->dev;
struct intel_pcie *pcie;
struct dw_pcie_rp *pp;
+ struct resource *res;
struct dw_pcie *pci;
int ret;
@@ -419,6 +418,31 @@ static int intel_pcie_probe(struct platform_device *pdev)
pci->ops = &intel_pcie_ops;
pp->ops = &intel_pcie_dw_ops;
+ /*
+ * If the 'atu' resource is not available in the devicetree,
+ * then use the driver default value for backward compatibility.
+ * The 'atu' should always be set in the devicetree, as this is
+ * hardware specific setting that should not be defined in the
+ * source.
+ */
+ res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "atu");
+ if (!res) {
+ res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dbi");
+ pci->dbi_base = devm_pci_remap_cfg_resource(pci->dev, res);
+ if (IS_ERR(pci->dbi_base))
+ return PTR_ERR(pci->dbi_base);
+ pci->dbi_phys_addr = res->start;
+ pci->atu_base = devm_ioremap(dev, res->start + 0xC0000, SZ_4K);
+ if (!pci->atu_base) {
+ dev_err(dev, "failed to remap ATU space\n");
+ return -ENOMEM;
+
+ }
+ pci->atu_size = SZ_4K;
+ pci->atu_phys_addr = res->start + 0xC0000;
+ dev_warn(dev, "devicetree ATU resource is missing; driver`s default value is being used\n");
+ }
+
ret = dw_pcie_host_init(pp);
if (ret) {
dev_err(dev, "Cannot initialize host\n");
--
2.47.3
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH v3 7/7] dt-bindings: PCI: intel,lgm-pcie: Add atu resource
2026-04-01 9:31 [PATCH v3 0/7] PCI: intel-gw: Fixes to make the driver working again Florian Eckert
` (5 preceding siblings ...)
2026-04-01 9:31 ` [PATCH v3 6/7] PCI: intel-gw: Move driver atu base assignment to probe function Florian Eckert
@ 2026-04-01 9:31 ` Florian Eckert
2026-04-01 10:37 ` Rob Herring (Arm)
6 siblings, 1 reply; 11+ messages in thread
From: Florian Eckert @ 2026-04-01 9:31 UTC (permalink / raw)
To: Lorenzo Pieralisi, Krzysztof Wilczyński,
Manivannan Sadhasivam, Rob Herring, Bjorn Helgaas, Johan Hovold,
Sajid Dalvi, Ajay Agarwal, Krzysztof Kozlowski, Conor Dooley,
Rahul Tanwar
Cc: linux-pci, linux-kernel, devicetree, Florian Eckert,
Eckert.Florian, ms
The 'atu' information is already set in the dwc core, if it is specified
in the devicetree. The driver uses its own default, if not set in the
devicetree. This information is hardware specific and should therefore be
maintained in the devicetree rather than in the source.
To be backward compatibile, this field is not mandatory. If 'atu'
resource is not specified in the devicetree, the driver’s default value
is used.
Old DTS entry for PCIe:
reg = <0xd1000000 0x1000>,
<0xd3000000 0x20000>,
<0xd0c41000.0x1000>;
reg-names = "dbi", "config", "app";
New DTS entry for PCIe:
reg = <0xd1000000 0x1000>,
<0xd10c0000 0x1000>,
<0xd3000000 0x20000>,
<0xd0c41000.0x1000>;
reg-names = "dbi", "atu", "config", "app";
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
---
Documentation/devicetree/bindings/pci/intel-gw-pcie.yaml | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/pci/intel-gw-pcie.yaml b/Documentation/devicetree/bindings/pci/intel-gw-pcie.yaml
index 54e2890ae6314ac6847fc23f49440d05d66d87d4..a7cb2b66b382a55d88211890aee068f25f05f61b 100644
--- a/Documentation/devicetree/bindings/pci/intel-gw-pcie.yaml
+++ b/Documentation/devicetree/bindings/pci/intel-gw-pcie.yaml
@@ -27,16 +27,19 @@ properties:
- const: snps,dw-pcie
reg:
+ minItems: 3
items:
- description: Controller control and status registers.
- description: PCIe configuration registers.
- description: Controller application registers.
+ - description: Internal Address Translation Unit (iATU) registers.
reg-names:
items:
- const: dbi
- const: config
- const: app
+ - const: atu
ranges:
maxItems: 1
@@ -94,9 +97,10 @@ examples:
#address-cells = <3>;
#size-cells = <2>;
reg = <0xd0e00000 0x1000>,
+ <0xd0ec0000 0x1000>,
<0xd2000000 0x800000>,
<0xd0a41000 0x1000>;
- reg-names = "dbi", "config", "app";
+ reg-names = "dbi", "atu", "config", "app";
linux,pci-domain = <0>;
max-link-speed = <4>;
bus-range = <0x00 0x08>;
--
2.47.3
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH v3 7/7] dt-bindings: PCI: intel,lgm-pcie: Add atu resource
2026-04-01 9:31 ` [PATCH v3 7/7] dt-bindings: PCI: intel,lgm-pcie: Add atu resource Florian Eckert
@ 2026-04-01 10:37 ` Rob Herring (Arm)
2026-04-01 13:07 ` Rob Herring
0 siblings, 1 reply; 11+ messages in thread
From: Rob Herring (Arm) @ 2026-04-01 10:37 UTC (permalink / raw)
To: Florian Eckert
Cc: linux-pci, Eckert.Florian, Rahul Tanwar, linux-kernel,
Lorenzo Pieralisi, Krzysztof Kozlowski, Sajid Dalvi,
Bjorn Helgaas, Manivannan Sadhasivam, Ajay Agarwal, devicetree,
Johan Hovold, Conor Dooley, ms, Krzysztof Wilczyński
On Wed, 01 Apr 2026 11:31:43 +0200, Florian Eckert wrote:
> The 'atu' information is already set in the dwc core, if it is specified
> in the devicetree. The driver uses its own default, if not set in the
> devicetree. This information is hardware specific and should therefore be
> maintained in the devicetree rather than in the source.
>
> To be backward compatibile, this field is not mandatory. If 'atu'
> resource is not specified in the devicetree, the driver’s default value
> is used.
>
> Old DTS entry for PCIe:
>
> reg = <0xd1000000 0x1000>,
> <0xd3000000 0x20000>,
> <0xd0c41000.0x1000>;
> reg-names = "dbi", "config", "app";
>
> New DTS entry for PCIe:
>
> reg = <0xd1000000 0x1000>,
> <0xd10c0000 0x1000>,
> <0xd3000000 0x20000>,
> <0xd0c41000.0x1000>;
> reg-names = "dbi", "atu", "config", "app";
>
> Signed-off-by: Florian Eckert <fe@dev.tdt.de>
> ---
> Documentation/devicetree/bindings/pci/intel-gw-pcie.yaml | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
My bot found errors running 'make dt_binding_check' on your patch:
yamllint warnings/errors:
dtschema/dtc warnings/errors:
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/pci/intel-gw-pcie.example.dtb: pcie@d0e00000 (intel,lgm-pcie): reg-names:1: 'config' was expected
from schema $id: http://devicetree.org/schemas/pci/intel-gw-pcie.yaml
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/pci/intel-gw-pcie.example.dtb: pcie@d0e00000 (intel,lgm-pcie): reg-names:2: 'app' was expected
from schema $id: http://devicetree.org/schemas/pci/intel-gw-pcie.yaml
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/pci/intel-gw-pcie.example.dtb: pcie@d0e00000 (intel,lgm-pcie): reg-names:3: 'atu' was expected
from schema $id: http://devicetree.org/schemas/pci/intel-gw-pcie.yaml
doc reference errors (make refcheckdocs):
See https://patchwork.kernel.org/project/devicetree/patch/20260401-pcie-intel-gw-v3-7-63b008c5b7b2@dev.tdt.de
The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.
If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:
pip3 install dtschema --upgrade
Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 7/7] dt-bindings: PCI: intel,lgm-pcie: Add atu resource
2026-04-01 10:37 ` Rob Herring (Arm)
@ 2026-04-01 13:07 ` Rob Herring
2026-04-01 13:49 ` Florian Eckert
0 siblings, 1 reply; 11+ messages in thread
From: Rob Herring @ 2026-04-01 13:07 UTC (permalink / raw)
To: Florian Eckert
Cc: linux-pci, Eckert.Florian, Rahul Tanwar, linux-kernel,
Lorenzo Pieralisi, Krzysztof Kozlowski, Sajid Dalvi,
Bjorn Helgaas, Manivannan Sadhasivam, Ajay Agarwal, devicetree,
Johan Hovold, Conor Dooley, ms, Krzysztof Wilczyński
On Wed, Apr 1, 2026 at 5:37 AM Rob Herring (Arm) <robh@kernel.org> wrote:
>
>
> On Wed, 01 Apr 2026 11:31:43 +0200, Florian Eckert wrote:
> > The 'atu' information is already set in the dwc core, if it is specified
> > in the devicetree. The driver uses its own default, if not set in the
> > devicetree. This information is hardware specific and should therefore be
> > maintained in the devicetree rather than in the source.
> >
> > To be backward compatibile, this field is not mandatory. If 'atu'
> > resource is not specified in the devicetree, the driver’s default value
> > is used.
> >
> > Old DTS entry for PCIe:
> >
> > reg = <0xd1000000 0x1000>,
> > <0xd3000000 0x20000>,
> > <0xd0c41000.0x1000>;
> > reg-names = "dbi", "config", "app";
> >
> > New DTS entry for PCIe:
> >
> > reg = <0xd1000000 0x1000>,
> > <0xd10c0000 0x1000>,
> > <0xd3000000 0x20000>,
> > <0xd0c41000.0x1000>;
> > reg-names = "dbi", "atu", "config", "app";
This is also wrong. But the diff of the example shows the old vs. new,
so there's really no reason for any of this in the commit msg.
> >
> > Signed-off-by: Florian Eckert <fe@dev.tdt.de>
> > ---
> > Documentation/devicetree/bindings/pci/intel-gw-pcie.yaml | 6 +++++-
> > 1 file changed, 5 insertions(+), 1 deletion(-)
> >
>
> My bot found errors running 'make dt_binding_check' on your patch:
>
> yamllint warnings/errors:
>
> dtschema/dtc warnings/errors:
> /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/pci/intel-gw-pcie.example.dtb: pcie@d0e00000 (intel,lgm-pcie): reg-names:1: 'config' was expected
> from schema $id: http://devicetree.org/schemas/pci/intel-gw-pcie.yaml
> /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/pci/intel-gw-pcie.example.dtb: pcie@d0e00000 (intel,lgm-pcie): reg-names:2: 'app' was expected
> from schema $id: http://devicetree.org/schemas/pci/intel-gw-pcie.yaml
> /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/pci/intel-gw-pcie.example.dtb: pcie@d0e00000 (intel,lgm-pcie): reg-names:3: 'atu' was expected
> from schema $id: http://devicetree.org/schemas/pci/intel-gw-pcie.yaml
>
> doc reference errors (make refcheckdocs):
>
> See https://patchwork.kernel.org/project/devicetree/patch/20260401-pcie-intel-gw-v3-7-63b008c5b7b2@dev.tdt.de
>
> The base for the series is generally the latest rc1. A different dependency
> should be noted in *this* patch.
>
> If you already ran 'make dt_binding_check' and didn't see the above
> error(s), then make sure 'yamllint' is installed and dt-schema is up to
> date:
>
> pip3 install dtschema --upgrade
>
> Please check and re-submit after running the above command yourself. Note
> that DT_SCHEMA_FILES can be set to your schema file to speed up checking
> your schema. However, it must be unset to test all examples with your schema.
>
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 7/7] dt-bindings: PCI: intel,lgm-pcie: Add atu resource
2026-04-01 13:07 ` Rob Herring
@ 2026-04-01 13:49 ` Florian Eckert
0 siblings, 0 replies; 11+ messages in thread
From: Florian Eckert @ 2026-04-01 13:49 UTC (permalink / raw)
To: Rob Herring
Cc: linux-pci, Eckert.Florian, Rahul Tanwar, linux-kernel,
Lorenzo Pieralisi, Krzysztof Kozlowski, Sajid Dalvi,
Bjorn Helgaas, Manivannan Sadhasivam, Ajay Agarwal, devicetree,
Johan Hovold, Conor Dooley, ms, Krzysztof Wilczyński
On 2026-04-01 15:07, Rob Herring wrote:
> On Wed, Apr 1, 2026 at 5:37 AM Rob Herring (Arm) <robh@kernel.org>
> wrote:
>>
>>
>> On Wed, 01 Apr 2026 11:31:43 +0200, Florian Eckert wrote:
>> > The 'atu' information is already set in the dwc core, if it is specified
>> > in the devicetree. The driver uses its own default, if not set in the
>> > devicetree. This information is hardware specific and should therefore be
>> > maintained in the devicetree rather than in the source.
>> >
>> > To be backward compatibile, this field is not mandatory. If 'atu'
>> > resource is not specified in the devicetree, the driver’s default value
>> > is used.
>> >
>> > Old DTS entry for PCIe:
>> >
>> > reg = <0xd1000000 0x1000>,
>> > <0xd3000000 0x20000>,
>> > <0xd0c41000.0x1000>;
>> > reg-names = "dbi", "config", "app";
>> >
>> > New DTS entry for PCIe:
>> >
>> > reg = <0xd1000000 0x1000>,
>> > <0xd10c0000 0x1000>,
>> > <0xd3000000 0x20000>,
>> > <0xd0c41000.0x1000>;
>> > reg-names = "dbi", "atu", "config", "app";
>
> This is also wrong. But the diff of the example shows the old vs. new,
> so there's really no reason for any of this in the commit msg.
Got it. Thanks for pointing that out. I’ve already removed it for the
next cycle for the v4.
--
Florian
>> >
>> > Signed-off-by: Florian Eckert <fe@dev.tdt.de>
>> > ---
>> > Documentation/devicetree/bindings/pci/intel-gw-pcie.yaml | 6 +++++-
>> > 1 file changed, 5 insertions(+), 1 deletion(-)
>> >
>>
>> My bot found errors running 'make dt_binding_check' on your patch:
>>
>> yamllint warnings/errors:
>>
>> dtschema/dtc warnings/errors:
>> /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/pci/intel-gw-pcie.example.dtb:
>> pcie@d0e00000 (intel,lgm-pcie): reg-names:1: 'config' was expected
>> from schema $id:
>> http://devicetree.org/schemas/pci/intel-gw-pcie.yaml
>> /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/pci/intel-gw-pcie.example.dtb:
>> pcie@d0e00000 (intel,lgm-pcie): reg-names:2: 'app' was expected
>> from schema $id:
>> http://devicetree.org/schemas/pci/intel-gw-pcie.yaml
>> /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/pci/intel-gw-pcie.example.dtb:
>> pcie@d0e00000 (intel,lgm-pcie): reg-names:3: 'atu' was expected
>> from schema $id:
>> http://devicetree.org/schemas/pci/intel-gw-pcie.yaml
>>
>> doc reference errors (make refcheckdocs):
>>
>> See
>> https://patchwork.kernel.org/project/devicetree/patch/20260401-pcie-intel-gw-v3-7-63b008c5b7b2@dev.tdt.de
>>
>> The base for the series is generally the latest rc1. A different
>> dependency
>> should be noted in *this* patch.
>>
>> If you already ran 'make dt_binding_check' and didn't see the above
>> error(s), then make sure 'yamllint' is installed and dt-schema is up
>> to
>> date:
>>
>> pip3 install dtschema --upgrade
>>
>> Please check and re-submit after running the above command yourself.
>> Note
>> that DT_SCHEMA_FILES can be set to your schema file to speed up
>> checking
>> your schema. However, it must be unset to test all examples with your
>> schema.
>>
>>
^ permalink raw reply [flat|nested] 11+ messages in thread