| // SPDX-License-Identifier: GPL-2.0+ OR MIT |
| /* |
| * Mac Pro (M2 Ultra, 2023) |
| * |
| * target-type: J180d |
| * |
| * Copyright The Asahi Linux Contributors |
| */ |
| |
| /dts-v1/; |
| |
| #include "t6022.dtsi" |
| #include "t6022-jxxxd.dtsi" |
| |
| / { |
| compatible = "apple,j180d", "apple,t6022", "apple,arm-platform"; |
| model = "Apple Mac Pro (M2 Ultra, 2023)"; |
| chassis-type = "server"; |
| |
| aliases { |
| atcphy0 = &atcphy0; |
| atcphy1 = &atcphy1; |
| atcphy2 = &atcphy2; |
| atcphy3 = &atcphy3; |
| atcphy4 = &atcphy0_die1; |
| atcphy5 = &atcphy1_die1; |
| atcphy6 = &atcphy2_die1; |
| atcphy7 = &atcphy3_die1; |
| nvram = &nvram; |
| serial0 = &serial0; |
| }; |
| |
| chosen { |
| #address-cells = <2>; |
| #size-cells = <2>; |
| ranges; |
| |
| stdout-path = "serial0"; |
| |
| framebuffer0: framebuffer@0 { |
| compatible = "apple,simple-framebuffer", "simple-framebuffer"; |
| reg = <0 0 0 0>; /* To be filled by loader */ |
| /* Format properties will be added by loader */ |
| status = "disabled"; |
| power-domains = <&ps_dispext0_cpu0_die1>, <&ps_dptx_phy_ps_die1>; |
| }; |
| }; |
| |
| memory@10000000000 { |
| device_type = "memory"; |
| reg = <0x100 0 0x2 0>; /* To be filled by loader */ |
| }; |
| }; |
| |
| &serial0 { |
| status = "okay"; |
| }; |
| |
| /* USB Type C Rear */ |
| &i2c0 { |
| hpm2: usb-pd@3b { |
| compatible = "apple,cd321x"; |
| reg = <0x3b>; |
| interrupt-parent = <&pinctrl_ap>; |
| interrupts = <44 IRQ_TYPE_LEVEL_LOW>; |
| interrupt-names = "irq"; |
| |
| typec2: connector { |
| compatible = "usb-c-connector"; |
| label = "USB-C Back 1"; |
| power-role = "dual"; |
| data-role = "dual"; |
| |
| ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| port@0 { |
| reg = <0>; |
| typec2_connector_hs: endpoint { |
| remote-endpoint = <&dwc3_2_hs>; |
| }; |
| }; |
| port@1 { |
| reg = <1>; |
| typec2_connector_ss: endpoint { |
| remote-endpoint = <&atcphy2_typec_lanes>; |
| }; |
| }; |
| }; |
| }; |
| }; |
| |
| hpm3: usb-pd@3c { |
| compatible = "apple,cd321x"; |
| reg = <0x3c>; |
| interrupt-parent = <&pinctrl_ap>; |
| interrupts = <44 IRQ_TYPE_LEVEL_LOW>; |
| interrupt-names = "irq"; |
| |
| typec3: connector { |
| compatible = "usb-c-connector"; |
| label = "USB-C Back 2"; |
| power-role = "dual"; |
| data-role = "dual"; |
| |
| ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| port@0 { |
| reg = <0>; |
| typec3_connector_hs: endpoint { |
| remote-endpoint = <&dwc3_3_hs>; |
| }; |
| }; |
| port@1 { |
| reg = <1>; |
| typec3_connector_ss: endpoint { |
| remote-endpoint = <&atcphy3_typec_lanes>; |
| }; |
| }; |
| }; |
| }; |
| }; |
| |
| /* hpm4 and hpm5 included from t6022-jxxxd.dtsi */ |
| |
| hpm6: usb-pd@3d { |
| compatible = "apple,cd321x"; |
| reg = <0x3d>; |
| interrupt-parent = <&pinctrl_ap>; |
| interrupts = <44 IRQ_TYPE_LEVEL_LOW>; |
| interrupt-names = "irq"; |
| |
| typec6: connector { |
| compatible = "usb-c-connector"; |
| label = "USB-C Back 5"; |
| power-role = "dual"; |
| data-role = "dual"; |
| |
| ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| port@0 { |
| reg = <0>; |
| typec6_connector_hs: endpoint { |
| remote-endpoint = <&dwc3_6_hs>; |
| }; |
| }; |
| port@1 { |
| reg = <1>; |
| typec6_connector_ss: endpoint { |
| remote-endpoint = <&atcphy6_typec_lanes>; |
| }; |
| }; |
| }; |
| }; |
| }; |
| |
| hpm7: usb-pd@3e { |
| compatible = "apple,cd321x"; |
| reg = <0x3e>; |
| interrupt-parent = <&pinctrl_ap>; |
| interrupts = <44 IRQ_TYPE_LEVEL_LOW>; |
| interrupt-names = "irq"; |
| |
| typec7: connector { |
| compatible = "usb-c-connector"; |
| label = "USB-C Back 6"; |
| power-role = "dual"; |
| data-role = "dual"; |
| |
| ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| port@0 { |
| reg = <0>; |
| typec7_connector_hs: endpoint { |
| remote-endpoint = <&dwc3_7_hs>; |
| }; |
| }; |
| port@1 { |
| reg = <1>; |
| typec7_connector_ss: endpoint { |
| remote-endpoint = <&atcphy7_typec_lanes>; |
| }; |
| }; |
| }; |
| }; |
| }; |
| }; |
| |
| &typec4 { |
| label = "USB-C Back 3"; |
| }; |
| |
| &typec5 { |
| label = "USB-C Back 4"; |
| }; |
| |
| /* USB Type C Front */ |
| &i2c3 { |
| status = "okay"; |
| |
| hpm0: usb-pd@38 { |
| compatible = "apple,cd321x"; |
| reg = <0x38>; |
| interrupt-parent = <&pinctrl_ap>; |
| interrupts = <60 IRQ_TYPE_LEVEL_LOW>; |
| interrupt-names = "irq"; |
| |
| typec0: connector { |
| compatible = "usb-c-connector"; |
| label = "USB-C Top Right"; |
| power-role = "dual"; |
| data-role = "dual"; |
| |
| ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| port@0 { |
| reg = <0>; |
| typec0_connector_hs: endpoint { |
| remote-endpoint = <&dwc3_0_hs>; |
| }; |
| }; |
| port@1 { |
| reg = <1>; |
| typec0_connector_ss: endpoint { |
| remote-endpoint = <&atcphy0_typec_lanes>; |
| }; |
| }; |
| }; |
| }; |
| }; |
| |
| hpm1: usb-pd@3f { |
| compatible = "apple,cd321x"; |
| reg = <0x3f>; |
| interrupt-parent = <&pinctrl_ap>; |
| interrupts = <60 IRQ_TYPE_LEVEL_LOW>; |
| interrupt-names = "irq"; |
| |
| typec1: connector { |
| compatible = "usb-c-connector"; |
| label = "USB-C Top Left"; |
| power-role = "dual"; |
| data-role = "dual"; |
| |
| ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| port@0 { |
| reg = <0>; |
| typec1_connector_hs: endpoint { |
| remote-endpoint = <&dwc3_1_hs>; |
| }; |
| }; |
| port@1 { |
| reg = <1>; |
| typec1_connector_ss: endpoint { |
| remote-endpoint = <&atcphy1_typec_lanes>; |
| }; |
| }; |
| }; |
| }; |
| }; |
| }; |
| |
| /* USB controllers */ |
| &dwc3_0 { |
| ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| port@0 { |
| reg = <0>; |
| dwc3_0_hs: endpoint { |
| remote-endpoint = <&typec0_connector_hs>; |
| }; |
| }; |
| |
| port@1 { |
| reg = <1>; |
| dwc3_0_ss: endpoint { |
| remote-endpoint = <&atcphy0_usb3>; |
| }; |
| }; |
| }; |
| }; |
| |
| &dwc3_1 { |
| ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| port@0 { |
| reg = <0>; |
| dwc3_1_hs: endpoint { |
| remote-endpoint = <&typec1_connector_hs>; |
| }; |
| }; |
| |
| port@1 { |
| reg = <1>; |
| dwc3_1_ss: endpoint { |
| remote-endpoint = <&atcphy1_usb3>; |
| }; |
| }; |
| }; |
| }; |
| |
| &dwc3_2 { |
| ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| port@0 { |
| reg = <0>; |
| dwc3_2_hs: endpoint { |
| remote-endpoint = <&typec2_connector_hs>; |
| }; |
| }; |
| |
| port@1 { |
| reg = <1>; |
| dwc3_2_ss: endpoint { |
| remote-endpoint = <&atcphy2_usb3>; |
| }; |
| }; |
| }; |
| }; |
| |
| &dwc3_3 { |
| ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| port@0 { |
| reg = <0>; |
| dwc3_3_hs: endpoint { |
| remote-endpoint = <&typec3_connector_hs>; |
| }; |
| }; |
| |
| port@1 { |
| reg = <1>; |
| dwc3_3_ss: endpoint { |
| remote-endpoint = <&atcphy3_usb3>; |
| }; |
| }; |
| }; |
| }; |
| |
| /* USB controllers on die 1 */ |
| &dwc3_2_die1 { |
| ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| port@0 { |
| reg = <0>; |
| dwc3_6_hs: endpoint { |
| remote-endpoint = <&typec6_connector_hs>; |
| }; |
| }; |
| |
| port@1 { |
| reg = <1>; |
| dwc3_6_ss: endpoint { |
| remote-endpoint = <&atcphy6_usb3>; |
| }; |
| }; |
| }; |
| }; |
| |
| &dwc3_3_die1 { |
| ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| port@0 { |
| reg = <0>; |
| dwc3_7_hs: endpoint { |
| remote-endpoint = <&typec7_connector_hs>; |
| }; |
| }; |
| |
| port@1 { |
| reg = <1>; |
| dwc3_7_ss: endpoint { |
| remote-endpoint = <&atcphy7_usb3>; |
| }; |
| }; |
| }; |
| }; |
| |
| /* Type-C PHYs */ |
| &atcphy0 { |
| ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| port@0 { |
| reg = <0>; |
| atcphy0_typec_lanes: endpoint { |
| remote-endpoint = <&typec0_connector_ss>; |
| }; |
| }; |
| |
| port@1 { |
| reg = <1>; |
| atcphy0_usb3: endpoint { |
| remote-endpoint = <&dwc3_0_ss>; |
| }; |
| }; |
| }; |
| }; |
| |
| &atcphy1 { |
| ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| port@0 { |
| reg = <0>; |
| atcphy1_typec_lanes: endpoint { |
| remote-endpoint = <&typec1_connector_ss>; |
| }; |
| }; |
| |
| port@1 { |
| reg = <1>; |
| atcphy1_usb3: endpoint { |
| remote-endpoint = <&dwc3_1_ss>; |
| }; |
| }; |
| }; |
| }; |
| |
| &atcphy2 { |
| ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| port@0 { |
| reg = <0>; |
| atcphy2_typec_lanes: endpoint { |
| remote-endpoint = <&typec2_connector_ss>; |
| }; |
| }; |
| |
| port@1 { |
| reg = <1>; |
| atcphy2_usb3: endpoint { |
| remote-endpoint = <&dwc3_2_ss>; |
| }; |
| }; |
| }; |
| }; |
| |
| &atcphy3 { |
| ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| port@0 { |
| reg = <0>; |
| atcphy3_typec_lanes: endpoint { |
| remote-endpoint = <&typec3_connector_ss>; |
| }; |
| }; |
| |
| port@1 { |
| reg = <1>; |
| atcphy3_usb3: endpoint { |
| remote-endpoint = <&dwc3_3_ss>; |
| }; |
| }; |
| }; |
| }; |
| |
| &atcphy2_die1 { |
| ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| port@0 { |
| reg = <0>; |
| atcphy6_typec_lanes: endpoint { |
| remote-endpoint = <&typec6_connector_ss>; |
| }; |
| }; |
| |
| port@1 { |
| reg = <1>; |
| atcphy6_usb3: endpoint { |
| remote-endpoint = <&dwc3_6_ss>; |
| }; |
| }; |
| }; |
| }; |
| |
| &atcphy3_die1 { |
| ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| port@0 { |
| reg = <0>; |
| atcphy7_typec_lanes: endpoint { |
| remote-endpoint = <&typec7_connector_ss>; |
| }; |
| }; |
| |
| port@1 { |
| reg = <1>; |
| atcphy7_usb3: endpoint { |
| remote-endpoint = <&dwc3_7_ss>; |
| }; |
| }; |
| }; |
| }; |
| |
| /* |
| * Delete unused PCIe nodes, the Mac Pro uses slightly different PCIe |
| * controllers with a single port connected to a PM40100 PCIe switch |
| */ |
| /delete-node/ &pcie0; |
| /delete-node/ &pcie0_dart_0; |
| /delete-node/ &pcie0_dart_1; |
| /delete-node/ &pcie0_dart_2; |
| /delete-node/ &pcie0_dart_3; |
| |
| &nco_clkref { |
| clock-frequency = <1068000000>; |
| }; |
| |
| #include "spi1-nvram.dtsi" |