summaryrefslogtreecommitdiff
path: root/arch/arm64/boot/dts/freescale
diff options
context:
space:
mode:
authorRichard Zhu <hongxing.zhu@nxp.com>2020-03-24 15:42:26 +0800
committerRichard Zhu <hongxing.zhu@nxp.com>2020-03-26 16:40:48 +0800
commitc24b099bb5ee5fd9f320a941362db04e9e42cb22 (patch)
tree9c8e7d5a5c623195d495a1cc640cb20a9e95baf0 /arch/arm64/boot/dts/freescale
parent7c1e5ff049544d319a7a70d4793a0f6b749e9d75 (diff)
MLK-23668-1 arm64: dts: imx8qm: add multi-pcie ports support
- Enable the PCIEB port on the i.MX8QM MEK and base board. - In the PCIEAX1PCIEBx1SATA usecase, the PHYX2_PCLK[0] is mandatory required by PCIEB. Otherwise PCIEB can't link up when exist from L2 mode when only PCIEB is used. - PCIEB has one more PER clock, since that the PCIEA CSR register would be configuired when PCIEB is initialized. - Regarding to the base board HW limitation(two Disable#) are not connected. Only the standard PCIe EP device is supported on PCIEB port. Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com> Reviewed-by: Fugang Duan <fugang.duan@nxp.com>
Diffstat (limited to 'arch/arm64/boot/dts/freescale')
-rw-r--r--arch/arm64/boot/dts/freescale/imx8-ss-hsio.dtsi15
-rwxr-xr-xarch/arm64/boot/dts/freescale/imx8qm-mek.dts18
-rw-r--r--arch/arm64/boot/dts/freescale/imx8qm-ss-hsio.dtsi60
3 files changed, 73 insertions, 20 deletions
diff --git a/arch/arm64/boot/dts/freescale/imx8-ss-hsio.dtsi b/arch/arm64/boot/dts/freescale/imx8-ss-hsio.dtsi
index b9e0e353e431..916b18bb925f 100644
--- a/arch/arm64/boot/dts/freescale/imx8-ss-hsio.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8-ss-hsio.dtsi
@@ -94,7 +94,7 @@ hsio_subsys: bus@5f000000 {
compatible = "fsl,imx8qm-pcie","snps,dw-pcie";
reg = <0x5f010000 0x10000>, /* Controller reg */
<0x7ff00000 0x80000>, /* PCI cfg space */
- <0x5f110000 0x60000>; /* lpcg, csr, msic, gpio */
+ <0x5f080000 0xf0000>; /* lpcg, csr, msic, gpio */
reg-names = "dbi", "config", "hsio";
#address-cells = <3>;
#size-cells = <2>;
@@ -113,17 +113,6 @@ hsio_subsys: bus@5f000000 {
<0 0 0 2 &gic 0 106 4>,
<0 0 0 3 &gic 0 107 4>,
<0 0 0 4 &gic 0 108 4>;
- /*
- * Set the clks/pds for imx8qxp in default, clks/pds should be
- * refined for exact hw design of imx8 pcie.
- For example, when hsio-cfg = <PCIEAX1PCIEBX1SATA>,
- set clks below.
- clocks = <&hsio_lpcg IMX8QM_HSIO_PCIE_B_MSTR_AXI_CLK>,
- <&hsio_lpcg IMX8QM_HSIO_PCIE_B_SLV_AXI_CLK>,
- <&hsio_lpcg IMX8QM_HSIO_PHY_X2_PCLK_1>,
- <&hsio_lpcg IMX8QM_HSIO_PCIE_X1_PER_CLK>,
- <&hsio_lpcg IMX8QM_HSIO_PCIE_B_DBI_AXI_CLK>;
- */
clocks = <&pcieb_lpcg 0>,
<&pcieb_lpcg 1>,
<&pcieb_lpcg 2>,
@@ -132,7 +121,7 @@ hsio_subsys: bus@5f000000 {
<&pcieb_crr3_lpcg 0>,
<&misc_crr5_lpcg 0>;
clock-names = "pcie", "pcie_bus", "pcie_inbound_axi",
- "pcie_phy", "phy_per","pcie_per", "misc_per";
+ "pcie_phy", "phy_per", "pcie_per", "misc_per";
power-domains = <&pd IMX_SC_R_PCIE_B>,
<&pd IMX_SC_R_SERDES_1>,
<&pd IMX_SC_R_HSIO_GPIO>;
diff --git a/arch/arm64/boot/dts/freescale/imx8qm-mek.dts b/arch/arm64/boot/dts/freescale/imx8qm-mek.dts
index f12932180482..5f8df11c49d7 100755
--- a/arch/arm64/boot/dts/freescale/imx8qm-mek.dts
+++ b/arch/arm64/boot/dts/freescale/imx8qm-mek.dts
@@ -862,6 +862,14 @@
status = "okay";
};
+&pcieb{
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_pcieb>;
+ reset-gpio = <&lsio_gpio5 0 GPIO_ACTIVE_LOW>;
+ ext_osc = <1>;
+ status = "okay";
+};
+
&rpmsg0{
/*
* 64K for one rpmsg instance:
@@ -884,7 +892,7 @@
&sata {
pinctrl-names = "default";
- pinctrl-0 = <&pinctrl_pcieb>;
+ pinctrl-0 = <&pinctrl_sata>;
clkreq-gpio = <&lsio_gpio4 30 GPIO_ACTIVE_LOW>;
ext_osc = <1>;
status = "okay";
@@ -1442,7 +1450,6 @@
pinctrl_pciea: pcieagrp{
fsl,pins = <
IMX8QM_PCIE_CTRL0_WAKE_B_LSIO_GPIO4_IO28 0x04000021
- IMX8QM_PCIE_CTRL0_CLKREQ_B_LSIO_GPIO4_IO27 0x06000021
IMX8QM_PCIE_CTRL0_PERST_B_LSIO_GPIO4_IO29 0x06000021
IMX8QM_USDHC2_RESET_B_LSIO_GPIO4_IO09 0x06000021
>;
@@ -1450,6 +1457,13 @@
pinctrl_pcieb: pciebgrp{
fsl,pins = <
+ IMX8QM_PCIE_CTRL1_WAKE_B_LSIO_GPIO4_IO31 0x04000021
+ IMX8QM_PCIE_CTRL1_PERST_B_LSIO_GPIO5_IO00 0x06000021
+ >;
+ };
+
+ pinctrl_sata: satagrp{
+ fsl,pins = <
IMX8QM_PCIE_CTRL1_CLKREQ_B_LSIO_GPIO4_IO30 0x06000021
>;
};
diff --git a/arch/arm64/boot/dts/freescale/imx8qm-ss-hsio.dtsi b/arch/arm64/boot/dts/freescale/imx8qm-ss-hsio.dtsi
index b648374189f2..e62957d0187c 100644
--- a/arch/arm64/boot/dts/freescale/imx8qm-ss-hsio.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8qm-ss-hsio.dtsi
@@ -35,10 +35,13 @@
compatible = "fsl,imx8qxp-lpcg";
reg = <0x5f080000 0x10000>;
#clock-cells = <1>;
- clocks = <&hsio_refa_clk>, <&hsio_per_clk>;
- bit-offset = <0 4>;
+ clocks = <&hsio_refa_clk>, <&hsio_per_clk>,
+ <&hsio_refa_clk>, <&hsio_per_clk>;
+ bit-offset = <0 4 16 20>;
clock-output-names = "hsio_phyx2_pclk_0",
- "hsio_phyx2_pclk_1";
+ "hsio_phyx2_pclk_1",
+ "hsio_phyx2_apbclk_0",
+ "hsio_phyx2_apbclk_1";
power-domains = <&pd IMX_SC_R_SERDES_0>;
};
@@ -90,7 +93,7 @@
compatible = "fsl,imx8qm-pcie","snps,dw-pcie";
reg = <0x5f000000 0x10000>, /* Controller reg */
<0x6ff00000 0x80000>, /* PCI cfg space */
- <0x5f110000 0x60000>; /* lpcg, csr, msic, gpio */
+ <0x5f080000 0xf0000>; /* lpcg, csr, msic, gpio */
reg-names = "dbi", "config", "hsio";
#address-cells = <3>;
#size-cells = <2>;
@@ -121,7 +124,7 @@
<&pciea_crr2_lpcg 0>,
<&misc_crr5_lpcg 0>;
clock-names = "pcie", "pcie_bus", "pcie_inbound_axi",
- "pcie_phy", "phy_per","pcie_per", "misc_per";
+ "pcie_phy", "phy_per", "pcie_per", "misc_per";
power-domains = <&pd IMX_SC_R_PCIE_A>,
<&pd IMX_SC_R_SERDES_0>,
<&pd IMX_SC_R_HSIO_GPIO>;
@@ -132,6 +135,53 @@
status = "disabled";
};
+ pcieb: pcie@0x5f010000 {
+ compatible = "fsl,imx8qm-pcie","snps,dw-pcie";
+ reg = <0x5f010000 0x10000>, /* Controller reg */
+ <0x7ff00000 0x80000>, /* PCI cfg space */
+ <0x5f080000 0xf0000>; /* lpcg, csr, msic, gpio */
+ reg-names = "dbi", "config", "hsio";
+ #address-cells = <3>;
+ #size-cells = <2>;
+ device_type = "pci";
+ bus-range = <0x00 0xff>;
+ ranges = <0x81000000 0 0x00000000 0x7ff80000 0 0x00010000 /* downstream I/O */
+ 0x82000000 0 0x70000000 0x70000000 0 0x0ff00000>; /* non-prefetchable memory */
+ num-lanes = <1>;
+ num-viewport = <4>;
+ interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>; /* eDMA */
+ interrupt-names = "msi", "dma";
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0 0 0 0x7>;
+ interrupt-map = <0 0 0 1 &gic 0 105 4>,
+ <0 0 0 2 &gic 0 106 4>,
+ <0 0 0 3 &gic 0 107 4>,
+ <0 0 0 4 &gic 0 108 4>;
+ clocks = <&pcieb_lpcg 0>,
+ <&pcieb_lpcg 1>,
+ <&pcieb_lpcg 2>,
+ <&phyx2_lpcg 1>,
+ <&phyx2_lpcg 0>,
+ <&phyx2_crr0_lpcg 0>,
+ <&pcieb_crr3_lpcg 0>,
+ <&pciea_crr2_lpcg 0>,
+ <&misc_crr5_lpcg 0>;
+ clock-names = "pcie", "pcie_bus", "pcie_inbound_axi",
+ "pcie_phy", "pcie_phy_pclk", "phy_per",
+ "pcie_per", "pciex2_per", "misc_per";
+ power-domains = <&pd IMX_SC_R_PCIE_B>,
+ <&pd IMX_SC_R_PCIE_A>,
+ <&pd IMX_SC_R_SERDES_0>,
+ <&pd IMX_SC_R_HSIO_GPIO>;
+ power-domain-names = "pcie", "pcie_per", "pcie_phy",
+ "hsio_gpio";
+ fsl,max-link-speed = <3>;
+ hsio-cfg = <PCIEAX1PCIEBX1SATA>;
+ local-addr = <0x80000000>;
+ status = "disabled";
+ };
+
sata: sata@5f020000 {
compatible = "fsl,imx8qm-ahci";
reg = <0x5f020000 0x10000>, /* Controller reg */