[PATCH WIP] arm64: dts: broadcom: bcm4908: Add PCIe controllers

Rafał Miłecki zajec5 at gmail.com
Thu Aug 19 08:54:08 PDT 2021


From: Rafał Miłecki <rafal at milecki.pl>

BCM4908 SoC has 3 PCIe controllers. Describe them.

Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
---
This is WIP. It's enough to initialize PCIe controllers and detect
attached devices. Checking DTS files however results in complains about
missing "dma-ranges", interrupt mapping & "msi-controller".
---
 .../boot/dts/broadcom/bcm4908/bcm4908.dtsi    | 53 ++++++++++++++++++-
 1 file changed, 52 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
index 984c737fa627..f09611697863 100644
--- a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
+++ b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
@@ -267,6 +267,57 @@ pmb: power-controller at 2800c0 {
 		};
 	};
 
+	pcie at 80040000 {
+		compatible = "brcm,bcm4908-pcie";
+		reg = <0x0 0x80040000 0x0 0xa000>;
+		power-domains = <&pmb BCM_PMB_PCIE0>;
+		resets = <&pcie_reset 0>;
+		reset-names = "perst";
+		interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
+		interrupt-names = "pcie";
+		device_type = "pci";
+		bus-range = <0x00 0xff>;
+
+		#address-cells = <3>;
+		#size-cells = <2>;
+		// BUS_ADDRESS(3)  CPU_PHYSICAL(2)  SIZE(2)
+		ranges = <0x02000000 0x0 0xc0000000  0x0 0xc0000000  0x0 0x10000000>;
+	};
+
+	pcie at 80050000 {
+		compatible = "brcm,bcm4908-pcie";
+		reg = <0x0 0x80050000 0x0 0xa000>;
+		power-domains = <&pmb BCM_PMB_PCIE1>;
+		resets = <&pcie_reset 1>;
+		reset-names = "perst";
+		interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
+		interrupt-names = "pcie";
+		device_type = "pci";
+		bus-range = <0x00 0xff>;
+
+		#address-cells = <3>;
+		#size-cells = <2>;
+		// BUS_ADDRESS(3)  CPU_PHYSICAL(2)  SIZE(2)
+		ranges = <0x02000000 0x0 0xd0000000  0x0 0xd0000000  0x0 0x10000000>;
+	};
+
+	pcie at 80060000 {
+		compatible = "brcm,bcm4908-pcie";
+		reg = <0x0 0x80060000 0x0 0xa000>;
+		power-domains = <&pmb BCM_PMB_PCIE2>;
+		resets = <&pcie_reset 2>;
+		reset-names = "perst";
+		interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
+		interrupt-names = "pcie";
+		device_type = "pci";
+		bus-range = <0x00 0xff>;
+
+		#address-cells = <3>;
+		#size-cells = <2>;
+		// BUS_ADDRESS(3)  CPU_PHYSICAL(2)  SIZE(2)
+		ranges = <0x02000000 0x0 0xe0000000  0x0 0xe0000000  0x0 0x10000000>;
+	};
+
 	bus at ff800000 {
 		compatible = "simple-bus";
 		#address-cells = <1>;
@@ -320,7 +371,7 @@ misc at 2600 {
 			#size-cells = <1>;
 			ranges = <0x00 0x2600 0xe4>;
 
-			reset-controller at 2644 {
+			pcie_reset: reset-controller at 2644 {
 				compatible = "brcm,bcm4908-misc-pcie-reset";
 				reg = <0x44 0x04>;
 				#reset-cells = <1>;
-- 
2.26.2




More information about the linux-arm-kernel mailing list