[PATCH 4/4] arm64: dts: renesas: r9a08g046: Add PCIe support
Biju <[email protected]>
| Newsgroups | org.kernel.vger.linux-renesas-soc,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
From: Biju Das <[email protected]> Populate the previously placeholder PCIe node for the RZ/G3L (R9A08G046) SoC with interrupts, clocks, resets, interrupt-map, and the PCIe root port's vendor/device ID, and enable it on the RZ/G3L SMARC board with the required pin control, CLKREQ# GPIO hog, and 100 MHz reference clock. Signed-off-by: Biju Das <[email protected]> --- arch/arm64/boot/dts/renesas/r9a08g046.dtsi | 45 ++++++++++++++++++- .../boot/dts/renesas/r9a08g046l48-smarc.dts | 16 +++++++ .../boot/dts/renesas/rzg3l-smarc-som.dtsi | 11 +++++ 3 files changed, 70 insertions(+), 2 deletions(-) diff --git a/arch/arm64/boot/dts/renesas/r9a08g046.dtsi b/arch/arm64/boot/dts/renesas/r9a08g046.dtsi index f652ad3f1d1a..83e466ec49ff 100644 --- a/arch/arm64/boot/dts/renesas/r9a08g046.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a08g046.dtsi @@ -1480,20 +1480,61 @@ hsusb1: usb@11eb0000 { }; pcie: pcie@11e40000 { + compatible = "renesas,r9a08g046-pcie"; reg = <0 0x11e40000 0 0x10000>; ranges = <0x02000000 0 0x30000000 0 0x30000000 0 0x08000000>; + /* Map all possible DRAM ranges (4 GB). */ + dma-ranges = <0x42000000 0 0x40000000 0 0x40000000 1 0x00000000>; + bus-range = <0x0 0xff>; + interrupts = <GIC_SPI 483 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 484 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 485 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 487 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 488 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 489 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 490 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 491 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 492 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 493 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 494 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 495 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 496 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 497 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 498 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "serr", "serr_cor", "serr_nonfatal", + "serr_fatal", "axi_err", "inta", + "intb", "intc", "intd", "msi", + "link_bandwidth", "pm_pme", "dma", + "pcie_evt", "msg", "all"; + #interrupt-cells = <1>; + interrupt-controller; + interrupt-map-mask = <0 0 0 7>; + interrupt-map = <0 0 0 1 &pcie 0 0 0 0>, /* INTA */ + <0 0 0 2 &pcie 0 0 0 1>, /* INTB */ + <0 0 0 3 &pcie 0 0 0 2>, /* INTC */ + <0 0 0 4 &pcie 0 0 0 3>; /* INTD */ + clocks = <&cpg CPG_MOD R9A08G046_PCI_ACLK>, + <&cpg CPG_MOD R9A08G046_PCI_CLKL1PM>, + <&cpg CPG_MOD R9A08G046_PCI_CLK_PMU>; + clock-names = "aclk", "pm", "pmu"; + resets = <&cpg R9A08G046_PCI_ARESETN>; + reset-names = "aresetn"; + power-domains = <&cpg>; device_type = "pci"; #address-cells = <3>; #size-cells = <2>; - /* placeholder */ + renesas,sysc = <&sysc>; + status = "disabled"; pcie_port0: pcie@0,0 { reg = <0x0 0x0 0x0 0x0 0x0>; ranges; device_type = "pci"; + vendor-id = <0x1912>; + device-id = <0x0033>; #address-cells = <3>; #size-cells = <2>; - /* placeholder */ }; }; diff --git a/arch/arm64/boot/dts/renesas/r9a08g046l48-smarc.dts b/arch/arm64/boot/dts/renesas/r9a08g046l48-smarc.dts index 5a8269c06435..a155967e1f68 100644 --- a/arch/arm64/boot/dts/renesas/r9a08g046l48-smarc.dts +++ b/arch/arm64/boot/dts/renesas/r9a08g046l48-smarc.dts @@ -170,6 +170,11 @@ &ohci1 { status = "okay"; }; +&pcie { + pinctrl-0 = <&pcie_pins>; + pinctrl-names = "default"; +}; + &phyrst { status = "okay"; }; @@ -190,6 +195,17 @@ i2c3_pins: i2c3 { <RZG3L_PORT_PINMUX(2, 1, 4)>; /* RIIC3_SDA */ }; + pcie-clkreq-n-hog { + gpio-hog; + gpios = <RZG3L_GPIO(G, 6) GPIO_ACTIVE_HIGH>; + output-low; + line-name = "PCIE_A_CKREQ"; + }; + + pcie_pins: pcie { + pinmux = <RZG3L_PORT_PINMUX(G, 7, 1)>; /* PCIE_RST_OUT# */ + }; + rsci1_pins: rsci1 { pinmux = <RZG3L_PORT_PINMUX(D, 4, 5)>, /* RSCI1_RXD_MISO_SCL */ <RZG3L_PORT_PINMUX(D, 5, 5)>, /* RSCI1_TXD_MOSI_SDA */ diff --git a/arch/arm64/boot/dts/renesas/rzg3l-smarc-som.dtsi b/arch/arm64/boot/dts/renesas/rzg3l-smarc-som.dtsi index c1c2795bda4e..2ee11d54bd58 100644 --- a/arch/arm64/boot/dts/renesas/rzg3l-smarc-som.dtsi +++ b/arch/arm64/boot/dts/renesas/rzg3l-smarc-som.dtsi @@ -51,6 +51,12 @@ memory@48000000 { reg = <0x0 0x48000000 0x0 0x78000000>; }; + pcie_refclk: pcie-ref-clock { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <100000000>; + }; + reg_1p0v: regulator-1p0v { compatible = "regulator-fixed"; regulator-name = "fixed-1.0V"; @@ -190,6 +196,11 @@ phy1: ethernet-phy@7 { }; }; +&pcie_port0 { + clocks = <&pcie_refclk>; + clock-names = "ref"; +}; + &pinctrl { eth0_pins: eth0 { txc { -- 2.43.0