15f62a964SEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0+ 25f62a964SEmmanuel Vadot/* 35f62a964SEmmanuel Vadot * Copyright 2024 NXP 45f62a964SEmmanuel Vadot * Richard Zhu <hongxing.zhu@nxp.com> 55f62a964SEmmanuel Vadot */ 65f62a964SEmmanuel Vadot 75f62a964SEmmanuel Vadot&hsio_subsys { 85f62a964SEmmanuel Vadot compatible = "simple-bus"; 95f62a964SEmmanuel Vadot ranges = <0x5f000000 0x0 0x5f000000 0x01000000>, 105f62a964SEmmanuel Vadot <0x40000000 0x0 0x60000000 0x10000000>, 115f62a964SEmmanuel Vadot <0x80000000 0x0 0x70000000 0x10000000>; 125f62a964SEmmanuel Vadot #address-cells = <1>; 135f62a964SEmmanuel Vadot #size-cells = <1>; 145f62a964SEmmanuel Vadot 15*ae5de77eSEmmanuel Vadot pcie0: pciea: pcie@5f000000 { 165f62a964SEmmanuel Vadot compatible = "fsl,imx8q-pcie"; 175f62a964SEmmanuel Vadot reg = <0x5f000000 0x10000>, 185f62a964SEmmanuel Vadot <0x4ff00000 0x80000>; 195f62a964SEmmanuel Vadot reg-names = "dbi", "config"; 205f62a964SEmmanuel Vadot ranges = <0x81000000 0 0x00000000 0x4ff80000 0 0x00010000>, 215f62a964SEmmanuel Vadot <0x82000000 0 0x40000000 0x40000000 0 0x0ff00000>; 225f62a964SEmmanuel Vadot #interrupt-cells = <1>; 235f62a964SEmmanuel Vadot interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>; 245f62a964SEmmanuel Vadot interrupt-names = "msi"; 255f62a964SEmmanuel Vadot #address-cells = <3>; 265f62a964SEmmanuel Vadot #size-cells = <2>; 275f62a964SEmmanuel Vadot clocks = <&pciea_lpcg IMX_LPCG_CLK_6>, 285f62a964SEmmanuel Vadot <&pciea_lpcg IMX_LPCG_CLK_4>, 295f62a964SEmmanuel Vadot <&pciea_lpcg IMX_LPCG_CLK_5>; 305f62a964SEmmanuel Vadot clock-names = "dbi", "mstr", "slv"; 315f62a964SEmmanuel Vadot bus-range = <0x00 0xff>; 325f62a964SEmmanuel Vadot device_type = "pci"; 335f62a964SEmmanuel Vadot interrupt-map = <0 0 0 1 &gic 0 73 4>, 345f62a964SEmmanuel Vadot <0 0 0 2 &gic 0 74 4>, 355f62a964SEmmanuel Vadot <0 0 0 3 &gic 0 75 4>, 365f62a964SEmmanuel Vadot <0 0 0 4 &gic 0 76 4>; 375f62a964SEmmanuel Vadot interrupt-map-mask = <0 0 0 0x7>; 385f62a964SEmmanuel Vadot num-lanes = <1>; 395f62a964SEmmanuel Vadot num-viewport = <4>; 405f62a964SEmmanuel Vadot power-domains = <&pd IMX_SC_R_PCIE_A>; 415f62a964SEmmanuel Vadot fsl,max-link-speed = <3>; 425f62a964SEmmanuel Vadot status = "disabled"; 435f62a964SEmmanuel Vadot }; 445f62a964SEmmanuel Vadot 45*ae5de77eSEmmanuel Vadot pcie0_ep: pciea_ep: pcie-ep@5f000000 { 468ccc0d23SEmmanuel Vadot compatible = "fsl,imx8q-pcie-ep"; 478ccc0d23SEmmanuel Vadot reg = <0x5f000000 0x00010000>, 488ccc0d23SEmmanuel Vadot <0x40000000 0x10000000>; 498ccc0d23SEmmanuel Vadot reg-names = "dbi", "addr_space"; 508ccc0d23SEmmanuel Vadot num-lanes = <1>; 518ccc0d23SEmmanuel Vadot interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>; 528ccc0d23SEmmanuel Vadot interrupt-names = "dma"; 538ccc0d23SEmmanuel Vadot clocks = <&pciea_lpcg IMX_LPCG_CLK_6>, 548ccc0d23SEmmanuel Vadot <&pciea_lpcg IMX_LPCG_CLK_4>, 558ccc0d23SEmmanuel Vadot <&pciea_lpcg IMX_LPCG_CLK_5>; 568ccc0d23SEmmanuel Vadot clock-names = "dbi", "mstr", "slv"; 578ccc0d23SEmmanuel Vadot power-domains = <&pd IMX_SC_R_PCIE_A>; 588ccc0d23SEmmanuel Vadot fsl,max-link-speed = <3>; 598ccc0d23SEmmanuel Vadot num-ib-windows = <6>; 608ccc0d23SEmmanuel Vadot num-ob-windows = <6>; 618ccc0d23SEmmanuel Vadot status = "disabled"; 628ccc0d23SEmmanuel Vadot }; 638ccc0d23SEmmanuel Vadot 64*ae5de77eSEmmanuel Vadot pcie1: pcieb: pcie@5f010000 { 655f62a964SEmmanuel Vadot compatible = "fsl,imx8q-pcie"; 665f62a964SEmmanuel Vadot reg = <0x5f010000 0x10000>, 675f62a964SEmmanuel Vadot <0x8ff00000 0x80000>; 685f62a964SEmmanuel Vadot reg-names = "dbi", "config"; 695f62a964SEmmanuel Vadot ranges = <0x81000000 0 0x00000000 0x8ff80000 0 0x00010000>, 705f62a964SEmmanuel Vadot <0x82000000 0 0x80000000 0x80000000 0 0x0ff00000>; 715f62a964SEmmanuel Vadot #interrupt-cells = <1>; 728ccc0d23SEmmanuel Vadot interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>, 738ccc0d23SEmmanuel Vadot <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>; 748ccc0d23SEmmanuel Vadot interrupt-names = "msi", "dma"; 755f62a964SEmmanuel Vadot #address-cells = <3>; 765f62a964SEmmanuel Vadot #size-cells = <2>; 775f62a964SEmmanuel Vadot clocks = <&pcieb_lpcg IMX_LPCG_CLK_6>, 785f62a964SEmmanuel Vadot <&pcieb_lpcg IMX_LPCG_CLK_4>, 795f62a964SEmmanuel Vadot <&pcieb_lpcg IMX_LPCG_CLK_5>; 805f62a964SEmmanuel Vadot clock-names = "dbi", "mstr", "slv"; 815f62a964SEmmanuel Vadot bus-range = <0x00 0xff>; 825f62a964SEmmanuel Vadot device_type = "pci"; 835f62a964SEmmanuel Vadot interrupt-map = <0 0 0 1 &gic 0 105 4>, 845f62a964SEmmanuel Vadot <0 0 0 2 &gic 0 106 4>, 855f62a964SEmmanuel Vadot <0 0 0 3 &gic 0 107 4>, 865f62a964SEmmanuel Vadot <0 0 0 4 &gic 0 108 4>; 875f62a964SEmmanuel Vadot interrupt-map-mask = <0 0 0 0x7>; 885f62a964SEmmanuel Vadot num-lanes = <1>; 895f62a964SEmmanuel Vadot num-viewport = <4>; 905f62a964SEmmanuel Vadot power-domains = <&pd IMX_SC_R_PCIE_B>; 915f62a964SEmmanuel Vadot fsl,max-link-speed = <3>; 925f62a964SEmmanuel Vadot status = "disabled"; 935f62a964SEmmanuel Vadot }; 945f62a964SEmmanuel Vadot 955f62a964SEmmanuel Vadot sata: sata@5f020000 { 965f62a964SEmmanuel Vadot compatible = "fsl,imx8qm-ahci"; 975f62a964SEmmanuel Vadot reg = <0x5f020000 0x10000>; 985f62a964SEmmanuel Vadot interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>; 995f62a964SEmmanuel Vadot clocks = <&sata_lpcg IMX_LPCG_CLK_4>, 1005f62a964SEmmanuel Vadot <&sata_crr4_lpcg IMX_LPCG_CLK_4>; 1015f62a964SEmmanuel Vadot clock-names = "sata", "sata_ref"; 1025f62a964SEmmanuel Vadot phy-names = "sata-phy", "cali-phy0", "cali-phy1"; 1035f62a964SEmmanuel Vadot power-domains = <&pd IMX_SC_R_SATA_0>; 1045f62a964SEmmanuel Vadot /* 1055f62a964SEmmanuel Vadot * Since "REXT" pin is only present for first lane PHY 1065f62a964SEmmanuel Vadot * and its calibration result will be stored, and shared 1075f62a964SEmmanuel Vadot * by the PHY used by SATA. 1085f62a964SEmmanuel Vadot * 1095f62a964SEmmanuel Vadot * Add the calibration PHYs for SATA here, although only 1105f62a964SEmmanuel Vadot * the third lane PHY is used by SATA. 1115f62a964SEmmanuel Vadot */ 1125f62a964SEmmanuel Vadot phys = <&hsio_phy 2 PHY_TYPE_SATA 0>, 1135f62a964SEmmanuel Vadot <&hsio_phy 0 PHY_TYPE_PCIE 0>, 1145f62a964SEmmanuel Vadot <&hsio_phy 1 PHY_TYPE_PCIE 1>; 1155f62a964SEmmanuel Vadot status = "disabled"; 1165f62a964SEmmanuel Vadot }; 1175f62a964SEmmanuel Vadot 1185f62a964SEmmanuel Vadot pciea_lpcg: clock-controller@5f050000 { 1195f62a964SEmmanuel Vadot compatible = "fsl,imx8qxp-lpcg"; 1205f62a964SEmmanuel Vadot reg = <0x5f050000 0x10000>; 1215f62a964SEmmanuel Vadot clocks = <&hsio_axi_clk>, <&hsio_axi_clk>, <&hsio_axi_clk>; 1225f62a964SEmmanuel Vadot #clock-cells = <1>; 1235f62a964SEmmanuel Vadot clock-indices = <IMX_LPCG_CLK_4>, <IMX_LPCG_CLK_5>, <IMX_LPCG_CLK_6>; 1245f62a964SEmmanuel Vadot clock-output-names = "hsio_pciea_mstr_axi_clk", 1255f62a964SEmmanuel Vadot "hsio_pciea_slv_axi_clk", 1265f62a964SEmmanuel Vadot "hsio_pciea_dbi_axi_clk"; 1275f62a964SEmmanuel Vadot power-domains = <&pd IMX_SC_R_PCIE_A>; 1285f62a964SEmmanuel Vadot }; 1295f62a964SEmmanuel Vadot 1305f62a964SEmmanuel Vadot sata_lpcg: clock-controller@5f070000 { 1315f62a964SEmmanuel Vadot compatible = "fsl,imx8qxp-lpcg"; 1325f62a964SEmmanuel Vadot reg = <0x5f070000 0x10000>; 1335f62a964SEmmanuel Vadot clocks = <&hsio_axi_clk>; 1345f62a964SEmmanuel Vadot #clock-cells = <1>; 1355f62a964SEmmanuel Vadot clock-indices = <IMX_LPCG_CLK_4>; 1365f62a964SEmmanuel Vadot clock-output-names = "hsio_sata_clk"; 1375f62a964SEmmanuel Vadot power-domains = <&pd IMX_SC_R_SATA_0>; 1385f62a964SEmmanuel Vadot }; 1395f62a964SEmmanuel Vadot 1405f62a964SEmmanuel Vadot phyx2_lpcg: clock-controller@5f080000 { 1415f62a964SEmmanuel Vadot compatible = "fsl,imx8qxp-lpcg"; 1425f62a964SEmmanuel Vadot reg = <0x5f080000 0x10000>; 1435f62a964SEmmanuel Vadot clocks = <&hsio_refa_clk>, <&hsio_per_clk>, 1445f62a964SEmmanuel Vadot <&hsio_refa_clk>, <&hsio_per_clk>; 1455f62a964SEmmanuel Vadot #clock-cells = <1>; 1465f62a964SEmmanuel Vadot clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_1>, 1475f62a964SEmmanuel Vadot <IMX_LPCG_CLK_4>, <IMX_LPCG_CLK_5>; 1485f62a964SEmmanuel Vadot clock-output-names = "hsio_phyx2_pclk_0", 1495f62a964SEmmanuel Vadot "hsio_phyx2_pclk_1", 1505f62a964SEmmanuel Vadot "hsio_phyx2_apbclk_0", 1515f62a964SEmmanuel Vadot "hsio_phyx2_apbclk_1"; 1525f62a964SEmmanuel Vadot power-domains = <&pd IMX_SC_R_SERDES_0>; 1535f62a964SEmmanuel Vadot }; 1545f62a964SEmmanuel Vadot 1555f62a964SEmmanuel Vadot phyx1_lpcg: clock-controller@5f090000 { 1565f62a964SEmmanuel Vadot compatible = "fsl,imx8qxp-lpcg"; 1575f62a964SEmmanuel Vadot reg = <0x5f090000 0x10000>; 1585f62a964SEmmanuel Vadot clocks = <&hsio_refa_clk>, <&hsio_per_clk>, 1595f62a964SEmmanuel Vadot <&hsio_per_clk>, <&hsio_per_clk>; 1605f62a964SEmmanuel Vadot #clock-cells = <1>; 1615f62a964SEmmanuel Vadot clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_1>, 1625f62a964SEmmanuel Vadot <IMX_LPCG_CLK_2>, <IMX_LPCG_CLK_4>; 1635f62a964SEmmanuel Vadot clock-output-names = "hsio_phyx1_pclk", 1645f62a964SEmmanuel Vadot "hsio_phyx1_epcs_tx_clk", 1655f62a964SEmmanuel Vadot "hsio_phyx1_epcs_rx_clk", 1665f62a964SEmmanuel Vadot "hsio_phyx1_apb_clk"; 1675f62a964SEmmanuel Vadot power-domains = <&pd IMX_SC_R_SERDES_1>; 1685f62a964SEmmanuel Vadot }; 1695f62a964SEmmanuel Vadot 1705f62a964SEmmanuel Vadot phyx2_crr0_lpcg: clock-controller@5f0a0000 { 1715f62a964SEmmanuel Vadot compatible = "fsl,imx8qxp-lpcg"; 1725f62a964SEmmanuel Vadot reg = <0x5f0a0000 0x10000>; 1735f62a964SEmmanuel Vadot clocks = <&hsio_per_clk>; 1745f62a964SEmmanuel Vadot #clock-cells = <1>; 1755f62a964SEmmanuel Vadot clock-indices = <IMX_LPCG_CLK_4>; 1765f62a964SEmmanuel Vadot clock-output-names = "hsio_phyx2_per_clk"; 1775f62a964SEmmanuel Vadot power-domains = <&pd IMX_SC_R_SERDES_0>; 1785f62a964SEmmanuel Vadot }; 1795f62a964SEmmanuel Vadot 1805f62a964SEmmanuel Vadot pciea_crr2_lpcg: clock-controller@5f0c0000 { 1815f62a964SEmmanuel Vadot compatible = "fsl,imx8qxp-lpcg"; 1825f62a964SEmmanuel Vadot reg = <0x5f0c0000 0x10000>; 1835f62a964SEmmanuel Vadot clocks = <&hsio_per_clk>; 1845f62a964SEmmanuel Vadot #clock-cells = <1>; 1855f62a964SEmmanuel Vadot clock-indices = <IMX_LPCG_CLK_4>; 1865f62a964SEmmanuel Vadot clock-output-names = "hsio_pciea_per_clk"; 1875f62a964SEmmanuel Vadot power-domains = <&pd IMX_SC_R_PCIE_A>; 1885f62a964SEmmanuel Vadot }; 1895f62a964SEmmanuel Vadot 1905f62a964SEmmanuel Vadot sata_crr4_lpcg: clock-controller@5f0e0000 { 1915f62a964SEmmanuel Vadot compatible = "fsl,imx8qxp-lpcg"; 1925f62a964SEmmanuel Vadot reg = <0x5f0e0000 0x10000>; 1935f62a964SEmmanuel Vadot clocks = <&hsio_per_clk>; 1945f62a964SEmmanuel Vadot #clock-cells = <1>; 1955f62a964SEmmanuel Vadot clock-indices = <IMX_LPCG_CLK_4>; 1965f62a964SEmmanuel Vadot clock-output-names = "hsio_sata_per_clk"; 1975f62a964SEmmanuel Vadot power-domains = <&pd IMX_SC_R_SATA_0>; 1985f62a964SEmmanuel Vadot }; 1995f62a964SEmmanuel Vadot 2005f62a964SEmmanuel Vadot hsio_phy: phy@5f180000 { 2015f62a964SEmmanuel Vadot compatible = "fsl,imx8qm-hsio"; 2025f62a964SEmmanuel Vadot reg = <0x5f180000 0x30000>, 2035f62a964SEmmanuel Vadot <0x5f110000 0x20000>, 2045f62a964SEmmanuel Vadot <0x5f130000 0x30000>, 2055f62a964SEmmanuel Vadot <0x5f160000 0x10000>; 2065f62a964SEmmanuel Vadot reg-names = "reg", "phy", "ctrl", "misc"; 2075f62a964SEmmanuel Vadot clocks = <&phyx2_lpcg IMX_LPCG_CLK_0>, 2085f62a964SEmmanuel Vadot <&phyx2_lpcg IMX_LPCG_CLK_1>, 2095f62a964SEmmanuel Vadot <&phyx2_lpcg IMX_LPCG_CLK_4>, 2105f62a964SEmmanuel Vadot <&phyx2_lpcg IMX_LPCG_CLK_5>, 2115f62a964SEmmanuel Vadot <&phyx1_lpcg IMX_LPCG_CLK_0>, 2125f62a964SEmmanuel Vadot <&phyx1_lpcg IMX_LPCG_CLK_1>, 2135f62a964SEmmanuel Vadot <&phyx1_lpcg IMX_LPCG_CLK_2>, 2145f62a964SEmmanuel Vadot <&phyx1_lpcg IMX_LPCG_CLK_4>, 2155f62a964SEmmanuel Vadot <&phyx2_crr0_lpcg IMX_LPCG_CLK_4>, 2165f62a964SEmmanuel Vadot <&phyx1_crr1_lpcg IMX_LPCG_CLK_4>, 2175f62a964SEmmanuel Vadot <&pciea_crr2_lpcg IMX_LPCG_CLK_4>, 2185f62a964SEmmanuel Vadot <&pcieb_crr3_lpcg IMX_LPCG_CLK_4>, 2195f62a964SEmmanuel Vadot <&sata_crr4_lpcg IMX_LPCG_CLK_4>, 2205f62a964SEmmanuel Vadot <&misc_crr5_lpcg IMX_LPCG_CLK_4>; 2215f62a964SEmmanuel Vadot clock-names = "pclk0", "pclk1", "apb_pclk0", "apb_pclk1", 2225f62a964SEmmanuel Vadot "pclk2", "epcs_tx", "epcs_rx", "apb_pclk2", 2235f62a964SEmmanuel Vadot "phy0_crr", "phy1_crr", "ctl0_crr", 2245f62a964SEmmanuel Vadot "ctl1_crr", "ctl2_crr", "misc_crr"; 2255f62a964SEmmanuel Vadot #phy-cells = <3>; 2265f62a964SEmmanuel Vadot power-domains = <&pd IMX_SC_R_SERDES_0>, <&pd IMX_SC_R_SERDES_1>; 2275f62a964SEmmanuel Vadot status = "disabled"; 2285f62a964SEmmanuel Vadot }; 2295f62a964SEmmanuel Vadot}; 230