RE: [PATCH V6 00/12] pci-imx6: Add support for parsing the reset property in new Root Port binding
From: Sherry Sun
Date: Wed Feb 25 2026 - 22:13:32 EST
> 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:
> > 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.
> > 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
> >
> 8de74707409%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C63907
> 62234966
> >
> 08878%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiI
> wLjAuMDAw
> >
> MCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C
> &sdat
> >
> a=DpBA%2FzMVVWBnv6CYX%2BFNVcvkE%2B%2FqrRLxpO5B6M4%2BGEA%3
> D&reserved=0
> > [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
> >
> 00ee49dc955308de74707409%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0
> %7C0%7C
> >
> 639076223496632453%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOn
> RydWUsIlY
> >
> iOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%
> 7C0%
> >
> 7C%7C%7C&sdata=NIB0nG8cabdGEDSIRyPwplVtLoF18N5747IOUg5wj3s%3D&
> reserved
> > =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
> >
> alcomm.com%2F&data=05%7C02%7Csherry.sun%40nxp.com%7C45ad939b0
> 0ee49dc95
> >
> 5308de74707409%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C63
> 90762234
> >
> 96641988%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYi
> OiIwLjAuM
> >
> DAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7
> C%7C&s
> >
> data=nVlsou%2F9GBR4JW391xJfhFVgW9f8gdc22VVrICNxDKM%3D&reserved=
> 0
> >
> > Signed-off-by: Sherry Sun <sherry.sun@xxxxxxx>
>
> 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
>
> > ---
> > Changes in V6:
> > 1. Drop the pre-allocate pci_host_bridge struct changes in
> dw_pcie_host_init()
> > and imx_pcie_probe().
> > 2. Parse Root Port nodes in dw_pcie_host_init() as Frank and Mani
> suggested.
> > 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().
> >
> > 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
> > pci_host_bridge *.
> > 4. Modify dw_pcie_host_init() to allow drivers to pre-allocate
> pci_host_bridge
> > 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
> > patch#2.
> > 2. Call common pci_host_common_parse_ports() and
> pci_host_common_delete_ports()
> > in pci-imx6 driver.
> > 3. Use PCIE_T_PVPERL_MS and PCIE_RESET_CONFIG_WAIT_MS instead of
> magic number
> > 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
> >
>
> --
> மணிவண்ணன் சதாசிவம்