19f7053f6SRichard Zhu// SPDX-License-Identifier: GPL-2.0+ 29f7053f6SRichard Zhu/* 39f7053f6SRichard Zhu * Copyright 2024 NXP 49f7053f6SRichard Zhu * Richard Zhu <hongxing.zhu@nxp.com> 59f7053f6SRichard Zhu */ 69f7053f6SRichard Zhu 79f7053f6SRichard Zhu&hsio_subsys { 89f7053f6SRichard Zhu compatible = "simple-bus"; 99f7053f6SRichard Zhu ranges = <0x5f000000 0x0 0x5f000000 0x01000000>, 109f7053f6SRichard Zhu <0x40000000 0x0 0x60000000 0x10000000>, 119f7053f6SRichard Zhu <0x80000000 0x0 0x70000000 0x10000000>; 129f7053f6SRichard Zhu #address-cells = <1>; 139f7053f6SRichard Zhu #size-cells = <1>; 149f7053f6SRichard Zhu 15*06d9879cSFrank Li pcie0: pciea: pcie@5f000000 { 169f7053f6SRichard Zhu compatible = "fsl,imx8q-pcie"; 179f7053f6SRichard Zhu reg = <0x5f000000 0x10000>, 189f7053f6SRichard Zhu <0x4ff00000 0x80000>; 199f7053f6SRichard Zhu reg-names = "dbi", "config"; 209f7053f6SRichard Zhu ranges = <0x81000000 0 0x00000000 0x4ff80000 0 0x00010000>, 219f7053f6SRichard Zhu <0x82000000 0 0x40000000 0x40000000 0 0x0ff00000>; 229f7053f6SRichard Zhu #interrupt-cells = <1>; 239f7053f6SRichard Zhu interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>; 249f7053f6SRichard Zhu interrupt-names = "msi"; 259f7053f6SRichard Zhu #address-cells = <3>; 269f7053f6SRichard Zhu #size-cells = <2>; 27a6301790SFrank Li clocks = <&pciea_lpcg IMX_LPCG_CLK_6>, 28a6301790SFrank Li <&pciea_lpcg IMX_LPCG_CLK_4>, 29a6301790SFrank Li <&pciea_lpcg IMX_LPCG_CLK_5>; 309f7053f6SRichard Zhu clock-names = "dbi", "mstr", "slv"; 319f7053f6SRichard Zhu bus-range = <0x00 0xff>; 329f7053f6SRichard Zhu device_type = "pci"; 339f7053f6SRichard Zhu interrupt-map = <0 0 0 1 &gic 0 73 4>, 349f7053f6SRichard Zhu <0 0 0 2 &gic 0 74 4>, 359f7053f6SRichard Zhu <0 0 0 3 &gic 0 75 4>, 369f7053f6SRichard Zhu <0 0 0 4 &gic 0 76 4>; 379f7053f6SRichard Zhu interrupt-map-mask = <0 0 0 0x7>; 389f7053f6SRichard Zhu num-lanes = <1>; 399f7053f6SRichard Zhu num-viewport = <4>; 409f7053f6SRichard Zhu power-domains = <&pd IMX_SC_R_PCIE_A>; 419f7053f6SRichard Zhu fsl,max-link-speed = <3>; 429f7053f6SRichard Zhu status = "disabled"; 439f7053f6SRichard Zhu }; 449f7053f6SRichard Zhu 45*06d9879cSFrank Li pcie0_ep: pciea_ep: pcie-ep@5f000000 { 46d03743c5SFrank Li compatible = "fsl,imx8q-pcie-ep"; 47d03743c5SFrank Li reg = <0x5f000000 0x00010000>, 48d03743c5SFrank Li <0x40000000 0x10000000>; 49d03743c5SFrank Li reg-names = "dbi", "addr_space"; 50d03743c5SFrank Li num-lanes = <1>; 51d03743c5SFrank Li interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>; 52d03743c5SFrank Li interrupt-names = "dma"; 53d03743c5SFrank Li clocks = <&pciea_lpcg IMX_LPCG_CLK_6>, 54d03743c5SFrank Li <&pciea_lpcg IMX_LPCG_CLK_4>, 55d03743c5SFrank Li <&pciea_lpcg IMX_LPCG_CLK_5>; 56d03743c5SFrank Li clock-names = "dbi", "mstr", "slv"; 57d03743c5SFrank Li power-domains = <&pd IMX_SC_R_PCIE_A>; 58d03743c5SFrank Li fsl,max-link-speed = <3>; 59d03743c5SFrank Li num-ib-windows = <6>; 60d03743c5SFrank Li num-ob-windows = <6>; 61d03743c5SFrank Li status = "disabled"; 62d03743c5SFrank Li }; 63d03743c5SFrank Li 64*06d9879cSFrank Li pcie1: pcieb: pcie@5f010000 { 659f7053f6SRichard Zhu compatible = "fsl,imx8q-pcie"; 669f7053f6SRichard Zhu reg = <0x5f010000 0x10000>, 679f7053f6SRichard Zhu <0x8ff00000 0x80000>; 689f7053f6SRichard Zhu reg-names = "dbi", "config"; 699f7053f6SRichard Zhu ranges = <0x81000000 0 0x00000000 0x8ff80000 0 0x00010000>, 709f7053f6SRichard Zhu <0x82000000 0 0x80000000 0x80000000 0 0x0ff00000>; 719f7053f6SRichard Zhu #interrupt-cells = <1>; 720b4c46f9SAlexander Stein interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>, 730b4c46f9SAlexander Stein <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>; 740b4c46f9SAlexander Stein interrupt-names = "msi", "dma"; 759f7053f6SRichard Zhu #address-cells = <3>; 769f7053f6SRichard Zhu #size-cells = <2>; 77a6301790SFrank Li clocks = <&pcieb_lpcg IMX_LPCG_CLK_6>, 78a6301790SFrank Li <&pcieb_lpcg IMX_LPCG_CLK_4>, 79a6301790SFrank Li <&pcieb_lpcg IMX_LPCG_CLK_5>; 809f7053f6SRichard Zhu clock-names = "dbi", "mstr", "slv"; 819f7053f6SRichard Zhu bus-range = <0x00 0xff>; 829f7053f6SRichard Zhu device_type = "pci"; 839f7053f6SRichard Zhu interrupt-map = <0 0 0 1 &gic 0 105 4>, 849f7053f6SRichard Zhu <0 0 0 2 &gic 0 106 4>, 859f7053f6SRichard Zhu <0 0 0 3 &gic 0 107 4>, 869f7053f6SRichard Zhu <0 0 0 4 &gic 0 108 4>; 879f7053f6SRichard Zhu interrupt-map-mask = <0 0 0 0x7>; 889f7053f6SRichard Zhu num-lanes = <1>; 899f7053f6SRichard Zhu num-viewport = <4>; 909f7053f6SRichard Zhu power-domains = <&pd IMX_SC_R_PCIE_B>; 919f7053f6SRichard Zhu fsl,max-link-speed = <3>; 929f7053f6SRichard Zhu status = "disabled"; 939f7053f6SRichard Zhu }; 949f7053f6SRichard Zhu 959f7053f6SRichard Zhu sata: sata@5f020000 { 969f7053f6SRichard Zhu compatible = "fsl,imx8qm-ahci"; 979f7053f6SRichard Zhu reg = <0x5f020000 0x10000>; 989f7053f6SRichard Zhu interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>; 99a6301790SFrank Li clocks = <&sata_lpcg IMX_LPCG_CLK_4>, 100a6301790SFrank Li <&sata_crr4_lpcg IMX_LPCG_CLK_4>; 1019f7053f6SRichard Zhu clock-names = "sata", "sata_ref"; 1029f7053f6SRichard Zhu phy-names = "sata-phy", "cali-phy0", "cali-phy1"; 1039f7053f6SRichard Zhu power-domains = <&pd IMX_SC_R_SATA_0>; 1049f7053f6SRichard Zhu /* 1059f7053f6SRichard Zhu * Since "REXT" pin is only present for first lane PHY 1069f7053f6SRichard Zhu * and its calibration result will be stored, and shared 1079f7053f6SRichard Zhu * by the PHY used by SATA. 1089f7053f6SRichard Zhu * 1099f7053f6SRichard Zhu * Add the calibration PHYs for SATA here, although only 1109f7053f6SRichard Zhu * the third lane PHY is used by SATA. 1119f7053f6SRichard Zhu */ 1129f7053f6SRichard Zhu phys = <&hsio_phy 2 PHY_TYPE_SATA 0>, 1139f7053f6SRichard Zhu <&hsio_phy 0 PHY_TYPE_PCIE 0>, 1149f7053f6SRichard Zhu <&hsio_phy 1 PHY_TYPE_PCIE 1>; 1159f7053f6SRichard Zhu status = "disabled"; 1169f7053f6SRichard Zhu }; 1179f7053f6SRichard Zhu 1189f7053f6SRichard Zhu pciea_lpcg: clock-controller@5f050000 { 1199f7053f6SRichard Zhu compatible = "fsl,imx8qxp-lpcg"; 1209f7053f6SRichard Zhu reg = <0x5f050000 0x10000>; 1219f7053f6SRichard Zhu clocks = <&hsio_axi_clk>, <&hsio_axi_clk>, <&hsio_axi_clk>; 1229f7053f6SRichard Zhu #clock-cells = <1>; 1239f7053f6SRichard Zhu clock-indices = <IMX_LPCG_CLK_4>, <IMX_LPCG_CLK_5>, <IMX_LPCG_CLK_6>; 1249f7053f6SRichard Zhu clock-output-names = "hsio_pciea_mstr_axi_clk", 1259f7053f6SRichard Zhu "hsio_pciea_slv_axi_clk", 1269f7053f6SRichard Zhu "hsio_pciea_dbi_axi_clk"; 1279f7053f6SRichard Zhu power-domains = <&pd IMX_SC_R_PCIE_A>; 1289f7053f6SRichard Zhu }; 1299f7053f6SRichard Zhu 1309f7053f6SRichard Zhu sata_lpcg: clock-controller@5f070000 { 1319f7053f6SRichard Zhu compatible = "fsl,imx8qxp-lpcg"; 1329f7053f6SRichard Zhu reg = <0x5f070000 0x10000>; 1339f7053f6SRichard Zhu clocks = <&hsio_axi_clk>; 1349f7053f6SRichard Zhu #clock-cells = <1>; 1359f7053f6SRichard Zhu clock-indices = <IMX_LPCG_CLK_4>; 1369f7053f6SRichard Zhu clock-output-names = "hsio_sata_clk"; 1379f7053f6SRichard Zhu power-domains = <&pd IMX_SC_R_SATA_0>; 1389f7053f6SRichard Zhu }; 1399f7053f6SRichard Zhu 1409f7053f6SRichard Zhu phyx2_lpcg: clock-controller@5f080000 { 1419f7053f6SRichard Zhu compatible = "fsl,imx8qxp-lpcg"; 1429f7053f6SRichard Zhu reg = <0x5f080000 0x10000>; 1439f7053f6SRichard Zhu clocks = <&hsio_refa_clk>, <&hsio_per_clk>, 1449f7053f6SRichard Zhu <&hsio_refa_clk>, <&hsio_per_clk>; 1459f7053f6SRichard Zhu #clock-cells = <1>; 1469f7053f6SRichard Zhu clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_1>, 1479f7053f6SRichard Zhu <IMX_LPCG_CLK_4>, <IMX_LPCG_CLK_5>; 1489f7053f6SRichard Zhu clock-output-names = "hsio_phyx2_pclk_0", 1499f7053f6SRichard Zhu "hsio_phyx2_pclk_1", 1509f7053f6SRichard Zhu "hsio_phyx2_apbclk_0", 1519f7053f6SRichard Zhu "hsio_phyx2_apbclk_1"; 1529f7053f6SRichard Zhu power-domains = <&pd IMX_SC_R_SERDES_0>; 1539f7053f6SRichard Zhu }; 1549f7053f6SRichard Zhu 1559f7053f6SRichard Zhu phyx1_lpcg: clock-controller@5f090000 { 1569f7053f6SRichard Zhu compatible = "fsl,imx8qxp-lpcg"; 1579f7053f6SRichard Zhu reg = <0x5f090000 0x10000>; 1589f7053f6SRichard Zhu clocks = <&hsio_refa_clk>, <&hsio_per_clk>, 1599f7053f6SRichard Zhu <&hsio_per_clk>, <&hsio_per_clk>; 1609f7053f6SRichard Zhu #clock-cells = <1>; 1619f7053f6SRichard Zhu clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_1>, 1629f7053f6SRichard Zhu <IMX_LPCG_CLK_2>, <IMX_LPCG_CLK_4>; 1639f7053f6SRichard Zhu clock-output-names = "hsio_phyx1_pclk", 1649f7053f6SRichard Zhu "hsio_phyx1_epcs_tx_clk", 1659f7053f6SRichard Zhu "hsio_phyx1_epcs_rx_clk", 1669f7053f6SRichard Zhu "hsio_phyx1_apb_clk"; 1679f7053f6SRichard Zhu power-domains = <&pd IMX_SC_R_SERDES_1>; 1689f7053f6SRichard Zhu }; 1699f7053f6SRichard Zhu 1709f7053f6SRichard Zhu phyx2_crr0_lpcg: clock-controller@5f0a0000 { 1719f7053f6SRichard Zhu compatible = "fsl,imx8qxp-lpcg"; 1729f7053f6SRichard Zhu reg = <0x5f0a0000 0x10000>; 1739f7053f6SRichard Zhu clocks = <&hsio_per_clk>; 1749f7053f6SRichard Zhu #clock-cells = <1>; 1759f7053f6SRichard Zhu clock-indices = <IMX_LPCG_CLK_4>; 1769f7053f6SRichard Zhu clock-output-names = "hsio_phyx2_per_clk"; 1779f7053f6SRichard Zhu power-domains = <&pd IMX_SC_R_SERDES_0>; 1789f7053f6SRichard Zhu }; 1799f7053f6SRichard Zhu 1809f7053f6SRichard Zhu pciea_crr2_lpcg: clock-controller@5f0c0000 { 1819f7053f6SRichard Zhu compatible = "fsl,imx8qxp-lpcg"; 1829f7053f6SRichard Zhu reg = <0x5f0c0000 0x10000>; 1839f7053f6SRichard Zhu clocks = <&hsio_per_clk>; 1849f7053f6SRichard Zhu #clock-cells = <1>; 1859f7053f6SRichard Zhu clock-indices = <IMX_LPCG_CLK_4>; 1869f7053f6SRichard Zhu clock-output-names = "hsio_pciea_per_clk"; 1879f7053f6SRichard Zhu power-domains = <&pd IMX_SC_R_PCIE_A>; 1889f7053f6SRichard Zhu }; 1899f7053f6SRichard Zhu 1909f7053f6SRichard Zhu sata_crr4_lpcg: clock-controller@5f0e0000 { 1919f7053f6SRichard Zhu compatible = "fsl,imx8qxp-lpcg"; 1929f7053f6SRichard Zhu reg = <0x5f0e0000 0x10000>; 1939f7053f6SRichard Zhu clocks = <&hsio_per_clk>; 1949f7053f6SRichard Zhu #clock-cells = <1>; 1959f7053f6SRichard Zhu clock-indices = <IMX_LPCG_CLK_4>; 1969f7053f6SRichard Zhu clock-output-names = "hsio_sata_per_clk"; 1979f7053f6SRichard Zhu power-domains = <&pd IMX_SC_R_SATA_0>; 1989f7053f6SRichard Zhu }; 1999f7053f6SRichard Zhu 2009f7053f6SRichard Zhu hsio_phy: phy@5f180000 { 2019f7053f6SRichard Zhu compatible = "fsl,imx8qm-hsio"; 2029f7053f6SRichard Zhu reg = <0x5f180000 0x30000>, 2039f7053f6SRichard Zhu <0x5f110000 0x20000>, 2049f7053f6SRichard Zhu <0x5f130000 0x30000>, 2059f7053f6SRichard Zhu <0x5f160000 0x10000>; 2069f7053f6SRichard Zhu reg-names = "reg", "phy", "ctrl", "misc"; 2079f7053f6SRichard Zhu clocks = <&phyx2_lpcg IMX_LPCG_CLK_0>, 2089f7053f6SRichard Zhu <&phyx2_lpcg IMX_LPCG_CLK_1>, 2099f7053f6SRichard Zhu <&phyx2_lpcg IMX_LPCG_CLK_4>, 2109f7053f6SRichard Zhu <&phyx2_lpcg IMX_LPCG_CLK_5>, 2119f7053f6SRichard Zhu <&phyx1_lpcg IMX_LPCG_CLK_0>, 2129f7053f6SRichard Zhu <&phyx1_lpcg IMX_LPCG_CLK_1>, 2139f7053f6SRichard Zhu <&phyx1_lpcg IMX_LPCG_CLK_2>, 2149f7053f6SRichard Zhu <&phyx1_lpcg IMX_LPCG_CLK_4>, 2159f7053f6SRichard Zhu <&phyx2_crr0_lpcg IMX_LPCG_CLK_4>, 2169f7053f6SRichard Zhu <&phyx1_crr1_lpcg IMX_LPCG_CLK_4>, 2179f7053f6SRichard Zhu <&pciea_crr2_lpcg IMX_LPCG_CLK_4>, 2189f7053f6SRichard Zhu <&pcieb_crr3_lpcg IMX_LPCG_CLK_4>, 2199f7053f6SRichard Zhu <&sata_crr4_lpcg IMX_LPCG_CLK_4>, 2209f7053f6SRichard Zhu <&misc_crr5_lpcg IMX_LPCG_CLK_4>; 2219f7053f6SRichard Zhu clock-names = "pclk0", "pclk1", "apb_pclk0", "apb_pclk1", 2229f7053f6SRichard Zhu "pclk2", "epcs_tx", "epcs_rx", "apb_pclk2", 2239f7053f6SRichard Zhu "phy0_crr", "phy1_crr", "ctl0_crr", 2249f7053f6SRichard Zhu "ctl1_crr", "ctl2_crr", "misc_crr"; 2259f7053f6SRichard Zhu #phy-cells = <3>; 2269f7053f6SRichard Zhu power-domains = <&pd IMX_SC_R_SERDES_0>, <&pd IMX_SC_R_SERDES_1>; 2279f7053f6SRichard Zhu status = "disabled"; 2289f7053f6SRichard Zhu }; 2299f7053f6SRichard Zhu}; 230