Fixed 8mp EP mode problem. imx6 actaully for all imx chips (imx6*, imx7*, imx8*, imx9*). To avoid confuse, rename all imx6_* to imx_*, IMX6_* to IMX_*. pci-imx6.c to pci-imx.c to avoid confuse. Using callback to reduce switch case for core reset and refclk. Add iMX8QXP and iMX8QM support. PHY driver ref: https://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy.git/commit/?h=next&id=82c56b6dd24fcdf811f2b47b72e5585c8a79b685 Base on linux 6.10-rc1 To: Richard Zhu <hongxing.zhu@xxxxxxx> To: Lucas Stach <l.stach@xxxxxxxxxxxxxx> To: Lorenzo Pieralisi <lpieralisi@xxxxxxxxxx> To: Krzysztof Wilczyński <kw@xxxxxxxxx> To: Rob Herring <robh@xxxxxxxxxx> To: Bjorn Helgaas <bhelgaas@xxxxxxxxxx> To: Shawn Guo <shawnguo@xxxxxxxxxx> To: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> To: Pengutronix Kernel Team <kernel@xxxxxxxxxxxxxx> To: Fabio Estevam <festevam@xxxxxxxxx> To: NXP Linux Team <linux-imx@xxxxxxx> To: Philipp Zabel <p.zabel@xxxxxxxxxxxxxx> To: Liam Girdwood <lgirdwood@xxxxxxxxx> To: Mark Brown <broonie@xxxxxxxxxx> To: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxx> To: Krzysztof Kozlowski <krzysztof.kozlowski+dt@xxxxxxxxxx> To: Conor Dooley <conor+dt@xxxxxxxxxx> Cc: linux-pci@xxxxxxxxxxxxxxx Cc: imx@xxxxxxxxxxxxxxx Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx Cc: linux-kernel@xxxxxxxxxxxxxxx Cc: bpf@xxxxxxxxxxxxxxx Cc: devicetree@xxxxxxxxxxxxxxx Signed-off-by: Frank Li <Frank.Li@xxxxxxx> Changes in v7: - rework commit message for PCI: imx6: Fix i.MX8MP PCIe EP's occasional failure to trigger MSI - Add Mani's review tags for patch 1, 5 - Fix errata number in commit message for patch 6 - replace set_ref_clk with enable_ref_clk in patch 4 - using regmap_set(clear)_bits in patch 4 - Use exactly the same logic with original code at patch 4 - Add errata doc link for patch 6 - Fix miss "." at comment form patch 6. - order include header for patch 9 - use cap register to set_speed for patch 9 - use PCIe in error msg for patch 9 - Remove reduntant ':' at patch 9' subject. - Change range to ranges for patch 10. - Change error code to -ENODEV for patch 10. - Link to v6: https://lore.kernel.org/r/20240617-pci2_upstream-v6-0-e0821238f997@xxxxxxx Changes in v6: - Base on Linux 6.10-rc1 by Bjorn's required. - Remove imx95 LUT patch because it need more time to work out the solution. This patch add 8qxp and 8qm and support and some bug fixes. - Link to v5: https://lore.kernel.org/r/20240528-pci2_upstream-v5-0-750aa7edb8e2@xxxxxxx Changes in v5: - Rebase to linux-pci next. fix conflict with gpiod change - Add rob and cornor's review tag - Link to v4: https://lore.kernel.org/r/20240507-pci2_upstream-v4-0-e8c80d874057@xxxxxxx Changes in v4: - Improve comment message for patch 1 and 2. - Rework commit message for patch 3 and add mani's review tag - Remove file rename patch and update maintainer patch - [PATCH v3 06/11] PCI: imx: Simplify switch-case logic by involve set_ref_clk callback remove extra space. keep original comments format (wrap at 80 column width) update error message "'Failed to enable PCIe REFCLK'" - PATCH v3 07/11] PCI: imx: Simplify switch-case logic by involve core_reset callback keep exact the logic as original code - Add patch to update comment about workaround ERR010728 - Add patch about help function imx_pcie_match_device() - Using bus device notify to update LUT information for imx95 to avoid parse iommu-map and msi-map in driver code. Bus notify will better and only update lut when device added. - split patch call PHY interface function. - Improve commit message for imx8q. remove local-address dts proptery. and use standard "range" to convert cpu address to bus address. - Check entry in cpu_fix function is too late. Check it at probe - Link to v3: https://lore.kernel.org/r/20240402-pci2_upstream-v3-0-803414bdb430@xxxxxxx Changes in v3: - Add an EP fixed patch PCI: imx6: Fix PCIe link down when i.MX8MM and i.MX8MP PCIe is EP mode PCI: imx6: Fix i.MX8MP PCIe EP can not trigger MSI - Add 8qxp rc support dt-bing yaml pass binding check make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j8 dt_binding_check DT_SCHEMA_FILES=fsl,imx6q-pcie.yaml LINT Documentation/devicetree/bindings DTEX Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.example.dts CHKDT Documentation/devicetree/bindings/processed-schema.json SCHEMA Documentation/devicetree/bindings/processed-schema.json DTC_CHK Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.example.dtb - Link to v2: https://lore.kernel.org/r/20240304-pci2_upstream-v2-0-ad07c5eb6d67@xxxxxxx Changes in v2: - remove file to 'pcie-imx.c' - keep CONFIG unchange. - Link to v1: https://lore.kernel.org/r/20240227-pci2_upstream-v1-0-b952f8333606@xxxxxxx --- Frank Li (6): PCI: imx6: Rename imx6_* with imx_* PCI: imx6: Introduce SoC specific callbacks for controlling REFCLK PCI: imx6: Simplify switch-case logic by involve core_reset callback PCI: imx6: Improve comment for workaround ERR010728 PCI: imx6: Consolidate redundant if-checks PCI: imx6: Call common PHY API to set mode, speed, and submode Richard Zhu (4): PCI: imx6: Fix establish link failure in EP mode for iMX8MM and iMX8MP PCI: imx6: Fix i.MX8MP PCIe EP's occasional failure to trigger MSI dt-bindings: imx6q-pcie: Add i.MX8Q pcie compatible string PCI: imx6: Add i.MX8Q PCIe root complex (RC) support .../devicetree/bindings/pci/fsl,imx6q-pcie.yaml | 16 + drivers/pci/controller/dwc/pci-imx6.c | 1005 +++++++++++--------- 2 files changed, 553 insertions(+), 468 deletions(-) --- base-commit: 48f0407456e4e68319a5cfcf409ceb57902acc54 change-id: 20240227-pci2_upstream-0cdd19a15163 Best regards, --- Frank Li <Frank.Li@xxxxxxx>