1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229
|
// SPDX-License-Identifier: GPL-2.0+
/*
* Copyright 2024 NXP
* Richard Zhu <hongxing.zhu@nxp.com>
*/
&hsio_subsys {
compatible = "simple-bus";
ranges = <0x5f000000 0x0 0x5f000000 0x01000000>,
<0x40000000 0x0 0x60000000 0x10000000>,
<0x80000000 0x0 0x70000000 0x10000000>;
#address-cells = <1>;
#size-cells = <1>;
pcie0: pciea: pcie@5f000000 {
compatible = "fsl,imx8q-pcie";
reg = <0x5f000000 0x10000>,
<0x4ff00000 0x80000>;
reg-names = "dbi", "config";
ranges = <0x81000000 0 0x00000000 0x4ff80000 0 0x00010000>,
<0x82000000 0 0x40000000 0x40000000 0 0x0ff00000>;
#interrupt-cells = <1>;
interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "msi";
#address-cells = <3>;
#size-cells = <2>;
clocks = <&pciea_lpcg IMX_LPCG_CLK_6>,
<&pciea_lpcg IMX_LPCG_CLK_4>,
<&pciea_lpcg IMX_LPCG_CLK_5>;
clock-names = "dbi", "mstr", "slv";
bus-range = <0x00 0xff>;
device_type = "pci";
interrupt-map = <0 0 0 1 &gic 0 73 4>,
<0 0 0 2 &gic 0 74 4>,
<0 0 0 3 &gic 0 75 4>,
<0 0 0 4 &gic 0 76 4>;
interrupt-map-mask = <0 0 0 0x7>;
num-lanes = <1>;
num-viewport = <4>;
power-domains = <&pd IMX_SC_R_PCIE_A>;
fsl,max-link-speed = <3>;
status = "disabled";
};
pcie0_ep: pciea_ep: pcie-ep@5f000000 {
compatible = "fsl,imx8q-pcie-ep";
reg = <0x5f000000 0x00010000>,
<0x40000000 0x10000000>;
reg-names = "dbi", "addr_space";
num-lanes = <1>;
interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "dma";
clocks = <&pciea_lpcg IMX_LPCG_CLK_6>,
<&pciea_lpcg IMX_LPCG_CLK_4>,
<&pciea_lpcg IMX_LPCG_CLK_5>;
clock-names = "dbi", "mstr", "slv";
power-domains = <&pd IMX_SC_R_PCIE_A>;
fsl,max-link-speed = <3>;
num-ib-windows = <6>;
num-ob-windows = <6>;
status = "disabled";
};
pcie1: pcieb: pcie@5f010000 {
compatible = "fsl,imx8q-pcie";
reg = <0x5f010000 0x10000>,
<0x8ff00000 0x80000>;
reg-names = "dbi", "config";
ranges = <0x81000000 0 0x00000000 0x8ff80000 0 0x00010000>,
<0x82000000 0 0x80000000 0x80000000 0 0x0ff00000>;
#interrupt-cells = <1>;
interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "msi", "dma";
#address-cells = <3>;
#size-cells = <2>;
clocks = <&pcieb_lpcg IMX_LPCG_CLK_6>,
<&pcieb_lpcg IMX_LPCG_CLK_4>,
<&pcieb_lpcg IMX_LPCG_CLK_5>;
clock-names = "dbi", "mstr", "slv";
bus-range = <0x00 0xff>;
device_type = "pci";
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>;
interrupt-map-mask = <0 0 0 0x7>;
num-lanes = <1>;
num-viewport = <4>;
power-domains = <&pd IMX_SC_R_PCIE_B>;
fsl,max-link-speed = <3>;
status = "disabled";
};
sata: sata@5f020000 {
compatible = "fsl,imx8qm-ahci";
reg = <0x5f020000 0x10000>;
interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&sata_lpcg IMX_LPCG_CLK_4>,
<&sata_crr4_lpcg IMX_LPCG_CLK_4>;
clock-names = "sata", "sata_ref";
phy-names = "sata-phy", "cali-phy0", "cali-phy1";
power-domains = <&pd IMX_SC_R_SATA_0>;
/*
* Since "REXT" pin is only present for first lane PHY
* and its calibration result will be stored, and shared
* by the PHY used by SATA.
*
* Add the calibration PHYs for SATA here, although only
* the third lane PHY is used by SATA.
*/
phys = <&hsio_phy 2 PHY_TYPE_SATA 0>,
<&hsio_phy 0 PHY_TYPE_PCIE 0>,
<&hsio_phy 1 PHY_TYPE_PCIE 1>;
status = "disabled";
};
pciea_lpcg: clock-controller@5f050000 {
compatible = "fsl,imx8qxp-lpcg";
reg = <0x5f050000 0x10000>;
clocks = <&hsio_axi_clk>, <&hsio_axi_clk>, <&hsio_axi_clk>;
#clock-cells = <1>;
clock-indices = <IMX_LPCG_CLK_4>, <IMX_LPCG_CLK_5>, <IMX_LPCG_CLK_6>;
clock-output-names = "hsio_pciea_mstr_axi_clk",
"hsio_pciea_slv_axi_clk",
"hsio_pciea_dbi_axi_clk";
power-domains = <&pd IMX_SC_R_PCIE_A>;
};
sata_lpcg: clock-controller@5f070000 {
compatible = "fsl,imx8qxp-lpcg";
reg = <0x5f070000 0x10000>;
clocks = <&hsio_axi_clk>;
#clock-cells = <1>;
clock-indices = <IMX_LPCG_CLK_4>;
clock-output-names = "hsio_sata_clk";
power-domains = <&pd IMX_SC_R_SATA_0>;
};
phyx2_lpcg: clock-controller@5f080000 {
compatible = "fsl,imx8qxp-lpcg";
reg = <0x5f080000 0x10000>;
clocks = <&hsio_refa_clk>, <&hsio_per_clk>,
<&hsio_refa_clk>, <&hsio_per_clk>;
#clock-cells = <1>;
clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_1>,
<IMX_LPCG_CLK_4>, <IMX_LPCG_CLK_5>;
clock-output-names = "hsio_phyx2_pclk_0",
"hsio_phyx2_pclk_1",
"hsio_phyx2_apbclk_0",
"hsio_phyx2_apbclk_1";
power-domains = <&pd IMX_SC_R_SERDES_0>;
};
phyx1_lpcg: clock-controller@5f090000 {
compatible = "fsl,imx8qxp-lpcg";
reg = <0x5f090000 0x10000>;
clocks = <&hsio_refa_clk>, <&hsio_per_clk>,
<&hsio_per_clk>, <&hsio_per_clk>;
#clock-cells = <1>;
clock-indices = <IMX_LPCG_CLK_0>, <IMX_LPCG_CLK_1>,
<IMX_LPCG_CLK_2>, <IMX_LPCG_CLK_4>;
clock-output-names = "hsio_phyx1_pclk",
"hsio_phyx1_epcs_tx_clk",
"hsio_phyx1_epcs_rx_clk",
"hsio_phyx1_apb_clk";
power-domains = <&pd IMX_SC_R_SERDES_1>;
};
phyx2_crr0_lpcg: clock-controller@5f0a0000 {
compatible = "fsl,imx8qxp-lpcg";
reg = <0x5f0a0000 0x10000>;
clocks = <&hsio_per_clk>;
#clock-cells = <1>;
clock-indices = <IMX_LPCG_CLK_4>;
clock-output-names = "hsio_phyx2_per_clk";
power-domains = <&pd IMX_SC_R_SERDES_0>;
};
pciea_crr2_lpcg: clock-controller@5f0c0000 {
compatible = "fsl,imx8qxp-lpcg";
reg = <0x5f0c0000 0x10000>;
clocks = <&hsio_per_clk>;
#clock-cells = <1>;
clock-indices = <IMX_LPCG_CLK_4>;
clock-output-names = "hsio_pciea_per_clk";
power-domains = <&pd IMX_SC_R_PCIE_A>;
};
sata_crr4_lpcg: clock-controller@5f0e0000 {
compatible = "fsl,imx8qxp-lpcg";
reg = <0x5f0e0000 0x10000>;
clocks = <&hsio_per_clk>;
#clock-cells = <1>;
clock-indices = <IMX_LPCG_CLK_4>;
clock-output-names = "hsio_sata_per_clk";
power-domains = <&pd IMX_SC_R_SATA_0>;
};
hsio_phy: phy@5f180000 {
compatible = "fsl,imx8qm-hsio";
reg = <0x5f180000 0x30000>,
<0x5f110000 0x20000>,
<0x5f130000 0x30000>,
<0x5f160000 0x10000>;
reg-names = "reg", "phy", "ctrl", "misc";
clocks = <&phyx2_lpcg IMX_LPCG_CLK_0>,
<&phyx2_lpcg IMX_LPCG_CLK_1>,
<&phyx2_lpcg IMX_LPCG_CLK_4>,
<&phyx2_lpcg IMX_LPCG_CLK_5>,
<&phyx1_lpcg IMX_LPCG_CLK_0>,
<&phyx1_lpcg IMX_LPCG_CLK_1>,
<&phyx1_lpcg IMX_LPCG_CLK_2>,
<&phyx1_lpcg IMX_LPCG_CLK_4>,
<&phyx2_crr0_lpcg IMX_LPCG_CLK_4>,
<&phyx1_crr1_lpcg IMX_LPCG_CLK_4>,
<&pciea_crr2_lpcg IMX_LPCG_CLK_4>,
<&pcieb_crr3_lpcg IMX_LPCG_CLK_4>,
<&sata_crr4_lpcg IMX_LPCG_CLK_4>,
<&misc_crr5_lpcg IMX_LPCG_CLK_4>;
clock-names = "pclk0", "pclk1", "apb_pclk0", "apb_pclk1",
"pclk2", "epcs_tx", "epcs_rx", "apb_pclk2",
"phy0_crr", "phy1_crr", "ctl0_crr",
"ctl1_crr", "ctl2_crr", "misc_crr";
#phy-cells = <3>;
power-domains = <&pd IMX_SC_R_SERDES_0>, <&pd IMX_SC_R_SERDES_1>;
status = "disabled";
};
};
|