|
|
Log in / Subscribe / Register

PCI: renesas: Add RZ/G3E PCIe controller support

From:  John Madieu <john.madieu.xa-AT-bp.renesas.com>
To:  claudiu.beznea.uj-AT-bp.renesas.com, lpieralisi-AT-kernel.org, kwilczynski-AT-kernel.org, mani-AT-kernel.org, geert+renesas-AT-glider.be, krzk+dt-AT-kernel.org
Subject:  [PATCH 00/16] PCI: renesas: Add RZ/G3E PCIe controller support
Date:  Wed, 14 Jan 2026 16:33:21 +0100
Message-ID:  <20260114153337.46765-1-john.madieu.xa@bp.renesas.com>
Cc:  robh-AT-kernel.org, bhelgaas-AT-google.com, conor+dt-AT-kernel.org, magnus.damm-AT-gmail.com, biju.das.jz-AT-bp.renesas.com, linux-pci-AT-vger.kernel.org, linux-renesas-soc-AT-vger.kernel.org, devicetree-AT-vger.kernel.org, linux-clk-AT-vger.kernel.org, john.madieu-AT-gmail.com, John Madieu <john.madieu.xa-AT-bp.renesas.com>
Archive-link:  Article

The Renesas RZ/G3E SoC features a PCIe controller that shares similarities with
the existing RZ/G3S PCIe controller, but with several key differences.
This series adds support for the RZ/G3E PCIe controller by extending the existing
RZ/G3S driver and device tree bindings.

Key differences between RZ/G3E and RZ/G3S PCIe controllers:

Link Speed Support:
 - RZ/G3E: Supports PCIe Gen3 (8.0 GT/s) alongside Gen2 (5.0 GT/s)
 - RZ/G3S: Supports PCIe Gen2 (5.0 GT/s) only

Reset Control:
 - RZ/G3E: Uses register-based reset control mechanism
 - RZ/G3S: Uses exclusively external reset control signals

Inbound Window Configuration:
 - RZ/G3E: Requires precise power-of-2 window coverage with strict address
   alignment constraints. Non-power-of-2 memory regions must be split into
   multiple windows to avoid over-mapping, ensuring proper hardware address
   decoding for DMA operations.
 - RZ/G3S: Uses a simpler approach that rounds up to the next power-of-2,
   creating single larger windows. The hardware tolerates over-mapped regions.

Class/Revision IDs:
 - RZ/G3E: Requires explicit setting of class/revision values
 - RZ/G3S: Has default values in hardware

Clock Naming:
 - RZ/G3E: Uses "clkpmu" PM control clock while CLKREQ_B is deasserting
 - RZ/G3S: Uses "clkl1pm" clock for power management

Phy Settings:
 - RZ/G3E: Does not need PHY settings as it works with default hw values
 - RZ/G3S: Requires explicit PHY settings

This series extends the existing driver to detect the SoC type from the device
tree compatible string and configure the controller appropriately. The updates
are minimal and focused on the hardware-specific differences while keeping the
common code paths unified.

Note: The clks "PCIE_0_REFCLK_IN" and "PCIE_0_CORECLKIN" are added by mistake in
hardware manual

John Madieu (16):
  PCI: rzg3s-host: Fix reset handling in probe error path
  PCI: rzg3s-host: Fix inbound window size tracking
  clk: renesas: rzv2h-cpg: Add support for init_off clocks
  clk: renesas: r9a09g047: Add PCIe clocks and reset
  dt-bindings: PCI: renesas,r9a08g045s33-pcie: Document RZ/G3E SoC
  PCI: rzg3s-host: Make SYSC register offsets SoC-specific
  PCI: rzg3s-host: Make configuration reset lines optional
  PCI: rzg3s-host: Make inbound window setup SoC-specific
  PCI: rzg3s-host: Add SoC-specific configuration and initialization
    callbacks
  PCI: rzg3s-host: Explicitly set class code for RZ/G3E compatibility
  PCI: rzg3s-host: Add PCIe Gen3 (8.0 GT/s) link speed support
  PCI: rzg3s-host: Add support for RZ/G3E PCIe controller
  arm64: dts: renesas: r9a09g047: Add PCIe node
  arm64: dts: renesas: r9a09g047e57-smarc-som: Add PCIe reference clock
  arm64: dts: renesas: r9a09g047e57-smarc: Add PCIe pincontrol
  arm64: dts: renesas: r9a09g047e57-smarc: Enable PCIe

 .../bindings/pci/renesas,r9a08g045-pcie.yaml  | 243 +++++++----
 arch/arm64/boot/dts/renesas/r9a09g047.dtsi    |  68 +++
 .../boot/dts/renesas/r9a09g047e57-smarc.dts   |  11 +
 .../boot/dts/renesas/renesas-smarc2.dtsi      |   7 +
 .../boot/dts/renesas/rzg3e-smarc-som.dtsi     |  11 +
 drivers/clk/renesas/r9a09g047-cpg.c           |   5 +
 drivers/clk/renesas/rzv2h-cpg.c               |   9 +
 drivers/clk/renesas/rzv2h-cpg.h               |  18 +-
 drivers/pci/controller/pcie-rzg3s-host.c      | 393 +++++++++++++++---
 9 files changed, 632 insertions(+), 133 deletions(-)

-- 
2.25.1




Copyright © 2026, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds