Thread (15 messages) 15 messages, 2 authors, 2026-02-26

RE: [PATCH V6 00/12] pci-imx6: Add support for parsing the reset property in new Root Port binding

From: Sherry Sun <hidden>
Date: 2026-02-26 03:13:20
Also in: imx, linux-devicetree, linux-pci, lkml

Subject: Re: [PATCH V6 00/12] pci-imx6: Add support for parsing the reset
property in new Root Port binding

On Wed, Feb 25, 2026 at 06:55:11PM +0800, Sherry Sun wrote:
quoted
This patch set adds support for parsing the reset property in new Root
Port binding in pci-imx6 driver, similar to the implementation in the
qcom pcie driver[1].

Also introduce generic helper functions to parse Root Port device tree
nodes and extract common properties like reset GPIOs. This allows
multiple PCI host controller drivers to share the same parsing logic.

Define struct pci_host_port to hold common Root Port properties
(currently only reset GPIO descriptor) and add
pci_host_common_parse_ports() to parse Root Port nodes from device
tree.
quoted
Also add the 'ports' list to struct pci_host_bridge for better
maintain parsed Root Port information.

The plan is to add the wake-gpio property to the root port in
subsequent patches. Also, the vpcie-supply property will be moved to
the root port node later based on the refactoring patch set for the
PCI pwrctrl framework[2].

The initial idea is to adopt the Manivannan’s recent PCIe M.2 KeyE
connector support patch set[3] and PCI power control framework
patches[2], and extend them to the pcie-imx6 driver. Since the new
M.2/pwrctrl model is implemented based on Root Ports and requires the
pwrctrl driver to bind to a Root Port device, we need to introduce a
Root Port child node on i.MX boards that provide an M.2 connector.

To follow a more standardized DT structure, it also makes sense to
move the reset-gpios and wake-gpios properties into the Root Port
node. These signals logically belong to the Root Port rather than the
host bridge, and placing them there aligns with the new M.2/pwrctrl model.

Regarding backward compatibility, as Frank suggested, I will not
remove the old reset-gpio property from existing DTS files to avoid
function break.

For new i.MX platforms — such as the upcoming i.MX952-evk will add
vpcie-supply, reset-gpios, and wake-gpios directly under the Root Port
node.
Therefore, driver updates are needed to support both the legacy
properties and the new standardized Root Port based layout.

[1]
https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore
.kernel.org%2Flinux-pci%2F20250702-perst-v5-0-920b3d1f6ee1%40qti.qualc
omm.com%2F&data=05%7C02%7Csherry.sun%40nxp.com%7C45ad939b00ee
49dc95530
quoted
8de74707409%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C63907
62234966
quoted
08878%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiI
wLjAuMDAw
quoted
MCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C
&sdat
quoted
a=DpBA%2FzMVVWBnv6CYX%2BFNVcvkE%2B%2FqrRLxpO5B6M4%2BGEA%3
D&reserved=0
quoted
[2]
https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore
.kernel.org%2Flinux-pci%2F20260115-pci-pwrctrl-rework-v5-0-9d26da3ce90
3%40oss.qualcomm.com%2F&data=05%7C02%7Csherry.sun%40nxp.com%7C
45ad939b
quoted
00ee49dc955308de74707409%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0
%7C0%7C
quoted
639076223496632453%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOn
RydWUsIlY
quoted
iOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%
7C0%
quoted
7C%7C%7C&sdata=NIB0nG8cabdGEDSIRyPwplVtLoF18N5747IOUg5wj3s%3D&
reserved
quoted
=0 [3]
https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore
.kernel.org%2Flinux-pci%2F20260112-pci-m2-e-v4-0-
eff84d2c6d26%40oss.qu
quoted
alcomm.com%2F&data=05%7C02%7Csherry.sun%40nxp.com%7C45ad939b0
0ee49dc95
quoted
5308de74707409%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C63
90762234
quoted
96641988%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYi
OiIwLjAuM
quoted
DAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7
C%7C&s
quoted
data=nVlsou%2F9GBR4JW391xJfhFVgW9f8gdc22VVrICNxDKM%3D&reserved=
0
quoted
Signed-off-by: Sherry Sun <redacted>
Please do not send next version before closing or even giving a window.
Hi Manivannan, sorry, will pay attention next time.
Will check and close all comments for V5 and V6 before sending next version.

Best Regards
Sherry
quoted
---
Changes in V6:
1. Drop the pre-allocate pci_host_bridge struct changes in
dw_pcie_host_init()
quoted
   and imx_pcie_probe().
2. Parse Root Port nodes in dw_pcie_host_init() as Frank and Mani
suggested.
quoted
3. Move the imx_pcie_parse_legacy_binding() from imx_pcie_probe() to
   imx_pcie_host_init(), so that dw_pcie_host_init() parse Root Port first, if
   no Root Port nodes were parsed(indicated by empty ports list), then parse
   legacy binding.
4. Add device pointer parameter for pci_host_common_parse_ports().
5. Add NULL pointer check for reset gpio in
imx_pcie_parse_legacy_binding().
quoted
Changes in V5:
1. Add the Root Port list(pci_host_port) to struct pci_host_bridge for better
   maintain parsed Root Port information.
2. Delete the pci_host_common_delete_ports() as now the Root Port list in
   pci_host_bridge can be cleared by pci_release_host_bridge_dev().
3. Change the common API pci_host_common_parse_ports() pass down
struct
quoted
   pci_host_bridge *.
4. Modify dw_pcie_host_init() to allow drivers to pre-allocate
pci_host_bridge
quoted
   struct when needed.
5. Allocate bridge early in imx_pcie_probe() to parse Root Ports.

Changes in V4:
1. Add common helpers for parsing Root Port properties in pci-host-
common.c in
quoted
   patch#2.
2. Call common pci_host_common_parse_ports() and
pci_host_common_delete_ports()
quoted
   in pci-imx6 driver.
3. Use PCIE_T_PVPERL_MS and PCIE_RESET_CONFIG_WAIT_MS instead of
magic number
quoted
   100 in patch#3 as Manivannan suggested.
4. Use "PERST#" instead of "PCIe reset" for the reset gpio lable in patch#3.

Changes in V3:
1. Improve the patch#2 commit message as Frank suggested.
2. Add Reviewed-by tag for patch#1.

Changes in V2:
1. Improve the patch#1 commit message as Frank suggested.
2. Also mark the reset-gpio-active-high property as deprecated in
   imx6q-pcie DT binding as Rob suggested.
3. The imx_pcie_delete_ports() has been moved up so that the
   imx_pcie_parse_ports() can call this helper function in error handling.
4. Keep the old reset-gpio property in the host bridge node for the
   existing dts files and add comments to avoid confusion.
---

Sherry Sun (12):
  dt-bindings: PCI: fsl,imx6q-pcie: Add reset GPIO in Root Port node
  PCI: host-generic: Add common helpers for parsing Root Port properties
  PCI: dwc: Parse Root Port nodes in dw_pcie_host_init()
  PCI: imx6: Add support for parsing the reset property in new Root Port
    binding
  arm: dts: imx6qdl: Add Root Port node and PERST property
  arm: dts: imx6sx: Add Root Port node and PERST property
  arm: dts: imx7d: Add Root Port node and PERST property
  arm64: dts: imx8mm: Add Root Port node and PERST property
  arm64: dts: imx8mp: Add Root Port node and PERST property
  arm64: dts: imx8mq: Add Root Port node and PERST property
  arm64: dts: imx8dxl/qm/qxp: Add Root Port node and PERST property
  arm64: dts: imx95: Add Root Port node and PERST property

 .../bindings/pci/fsl,imx6q-pcie.yaml          | 32 ++++++++
 .../arm/boot/dts/nxp/imx/imx6qdl-sabresd.dtsi |  5 ++
 arch/arm/boot/dts/nxp/imx/imx6qdl.dtsi        | 11 +++
 .../arm/boot/dts/nxp/imx/imx6qp-sabreauto.dts |  5 ++
 arch/arm/boot/dts/nxp/imx/imx6sx-sdb.dtsi     |  5 ++
 arch/arm/boot/dts/nxp/imx/imx6sx.dtsi         | 11 +++
 arch/arm/boot/dts/nxp/imx/imx7d-sdb.dts       |  5 ++
 arch/arm/boot/dts/nxp/imx/imx7d.dtsi          | 11 +++
 .../boot/dts/freescale/imx8-ss-hsio.dtsi      | 11 +++
 arch/arm64/boot/dts/freescale/imx8dxl-evk.dts |  5 ++
arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi |  5 ++
 arch/arm64/boot/dts/freescale/imx8mm.dtsi     | 11 +++
 arch/arm64/boot/dts/freescale/imx8mp-evk.dts  |  5 ++
 arch/arm64/boot/dts/freescale/imx8mp.dtsi     | 11 +++
 arch/arm64/boot/dts/freescale/imx8mq-evk.dts  | 10 +++
 arch/arm64/boot/dts/freescale/imx8mq.dtsi     | 22 ++++++
 arch/arm64/boot/dts/freescale/imx8qm-mek.dts  | 10 +++
 .../boot/dts/freescale/imx8qm-ss-hsio.dtsi    | 22 ++++++
 arch/arm64/boot/dts/freescale/imx8qxp-mek.dts |  5 ++
 .../boot/dts/freescale/imx95-15x15-evk.dts    |  5 ++
 .../boot/dts/freescale/imx95-19x19-evk.dts    | 10 +++
 arch/arm64/boot/dts/freescale/imx95.dtsi      | 22 ++++++
 drivers/pci/controller/dwc/pci-imx6.c         | 76 +++++++++++++++----
 .../pci/controller/dwc/pcie-designware-host.c |  8 ++
 drivers/pci/controller/pci-host-common.c      | 58 ++++++++++++++
 drivers/pci/controller/pci-host-common.h      | 15 ++++
 drivers/pci/probe.c                           |  2 +
 include/linux/pci.h                           |  1 +
 28 files changed, 384 insertions(+), 15 deletions(-)

--
2.37.1
--
மணிவண்ணன் சதாசிவம்
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help