xref: /linux/arch/arm64/boot/dts/freescale/imx8qm-ss-hsio.dtsi (revision ec71f661a572a770d7c861cd52a50cbbb0e1a8d1)
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