xref: /freebsd/sys/contrib/device-tree/src/arm64/freescale/imx8qm-ss-hsio.dtsi (revision ae5de77ed78ae54d86cead5604869212e8008e6b)
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