| // SPDX-License-Identifier: GPL-2.0+ OR MIT |
| /* |
| * Devices used on die 0 on the Apple T6002 "M1 Ultra" SoC and present on |
| * Apple T6000 / T6001 "M1 Pro" / "M1 Max". |
| * |
| * Copyright The Asahi Linux Contributors |
| */ |
| |
| |
| nco: clock-controller@28e03c000 { |
| compatible = "apple,t6000-nco", "apple,nco"; |
| reg = <0x2 0x8e03c000 0x0 0x14000>; |
| clocks = <&nco_clkref>; |
| #clock-cells = <1>; |
| }; |
| |
| aic: interrupt-controller@28e100000 { |
| compatible = "apple,t6000-aic", "apple,aic2"; |
| #interrupt-cells = <4>; |
| interrupt-controller; |
| reg = <0x2 0x8e100000 0x0 0xc000>, |
| <0x2 0x8e10c000 0x0 0x4>; |
| reg-names = "core", "event"; |
| power-domains = <&ps_aic>; |
| }; |
| |
| pinctrl_smc: pinctrl@290820000 { |
| compatible = "apple,t6000-pinctrl", "apple,pinctrl"; |
| reg = <0x2 0x90820000 0x0 0x4000>; |
| |
| gpio-controller; |
| #gpio-cells = <2>; |
| gpio-ranges = <&pinctrl_smc 0 0 30>; |
| apple,npins = <30>; |
| |
| interrupt-controller; |
| #interrupt-cells = <2>; |
| interrupt-parent = <&aic>; |
| interrupts = <AIC_IRQ 0 743 IRQ_TYPE_LEVEL_HIGH>, |
| <AIC_IRQ 0 744 IRQ_TYPE_LEVEL_HIGH>, |
| <AIC_IRQ 0 745 IRQ_TYPE_LEVEL_HIGH>, |
| <AIC_IRQ 0 746 IRQ_TYPE_LEVEL_HIGH>, |
| <AIC_IRQ 0 747 IRQ_TYPE_LEVEL_HIGH>, |
| <AIC_IRQ 0 748 IRQ_TYPE_LEVEL_HIGH>, |
| <AIC_IRQ 0 749 IRQ_TYPE_LEVEL_HIGH>; |
| }; |
| |
| wdt: watchdog@2922b0000 { |
| compatible = "apple,t6000-wdt", "apple,wdt"; |
| reg = <0x2 0x922b0000 0x0 0x4000>; |
| clocks = <&clkref>; |
| interrupt-parent = <&aic>; |
| interrupts = <AIC_IRQ 0 631 IRQ_TYPE_LEVEL_HIGH>; |
| }; |
| |
| sio_dart_0: iommu@39b004000 { |
| compatible = "apple,t6000-dart"; |
| reg = <0x3 0x9b004000 0x0 0x4000>; |
| interrupt-parent = <&aic>; |
| interrupts = <AIC_IRQ 0 1130 IRQ_TYPE_LEVEL_HIGH>; |
| #iommu-cells = <1>; |
| power-domains = <&ps_sio_cpu>; |
| }; |
| |
| sio_dart_1: iommu@39b008000 { |
| compatible = "apple,t6000-dart"; |
| reg = <0x3 0x9b008000 0x0 0x8000>; |
| interrupt-parent = <&aic>; |
| interrupts = <AIC_IRQ 0 1130 IRQ_TYPE_LEVEL_HIGH>; |
| #iommu-cells = <1>; |
| power-domains = <&ps_sio_cpu>; |
| }; |
| |
| fpwm0: pwm@39b030000 { |
| compatible = "apple,t6000-fpwm", "apple,s5l-fpwm"; |
| reg = <0x3 0x9b030000 0x0 0x4000>; |
| power-domains = <&ps_fpwm0>; |
| clocks = <&clkref>; |
| #pwm-cells = <2>; |
| status = "disabled"; |
| }; |
| |
| i2c0: i2c@39b040000 { |
| compatible = "apple,t6000-i2c", "apple,i2c"; |
| reg = <0x3 0x9b040000 0x0 0x4000>; |
| clocks = <&clkref>; |
| interrupt-parent = <&aic>; |
| interrupts = <AIC_IRQ 0 1119 IRQ_TYPE_LEVEL_HIGH>; |
| pinctrl-0 = <&i2c0_pins>; |
| pinctrl-names = "default"; |
| power-domains = <&ps_i2c0>; |
| #address-cells = <0x1>; |
| #size-cells = <0x0>; |
| }; |
| |
| i2c1: i2c@39b044000 { |
| compatible = "apple,t6000-i2c", "apple,i2c"; |
| reg = <0x3 0x9b044000 0x0 0x4000>; |
| clocks = <&clkref>; |
| interrupt-parent = <&aic>; |
| interrupts = <AIC_IRQ 0 1120 IRQ_TYPE_LEVEL_HIGH>; |
| pinctrl-0 = <&i2c1_pins>; |
| pinctrl-names = "default"; |
| power-domains = <&ps_i2c1>; |
| #address-cells = <0x1>; |
| #size-cells = <0x0>; |
| status = "disabled"; |
| }; |
| |
| i2c2: i2c@39b048000 { |
| compatible = "apple,t6000-i2c", "apple,i2c"; |
| reg = <0x3 0x9b048000 0x0 0x4000>; |
| clocks = <&clkref>; |
| interrupt-parent = <&aic>; |
| interrupts = <AIC_IRQ 0 1121 IRQ_TYPE_LEVEL_HIGH>; |
| pinctrl-0 = <&i2c2_pins>; |
| pinctrl-names = "default"; |
| power-domains = <&ps_i2c2>; |
| #address-cells = <0x1>; |
| #size-cells = <0x0>; |
| status = "disabled"; |
| }; |
| |
| i2c3: i2c@39b04c000 { |
| compatible = "apple,t6000-i2c", "apple,i2c"; |
| reg = <0x3 0x9b04c000 0x0 0x4000>; |
| clocks = <&clkref>; |
| interrupt-parent = <&aic>; |
| interrupts = <AIC_IRQ 0 1122 IRQ_TYPE_LEVEL_HIGH>; |
| pinctrl-0 = <&i2c3_pins>; |
| pinctrl-names = "default"; |
| power-domains = <&ps_i2c3>; |
| #address-cells = <0x1>; |
| #size-cells = <0x0>; |
| status = "disabled"; |
| }; |
| |
| i2c4: i2c@39b050000 { |
| compatible = "apple,t6000-i2c", "apple,i2c"; |
| reg = <0x3 0x9b050000 0x0 0x4000>; |
| clocks = <&clkref>; |
| interrupt-parent = <&aic>; |
| interrupts = <AIC_IRQ 0 1123 IRQ_TYPE_LEVEL_HIGH>; |
| pinctrl-0 = <&i2c4_pins>; |
| pinctrl-names = "default"; |
| power-domains = <&ps_i2c4>; |
| #address-cells = <0x1>; |
| #size-cells = <0x0>; |
| status = "disabled"; |
| }; |
| |
| i2c5: i2c@39b054000 { |
| compatible = "apple,t6000-i2c", "apple,i2c"; |
| reg = <0x3 0x9b054000 0x0 0x4000>; |
| clocks = <&clkref>; |
| interrupt-parent = <&aic>; |
| interrupts = <AIC_IRQ 0 1124 IRQ_TYPE_LEVEL_HIGH>; |
| pinctrl-0 = <&i2c5_pins>; |
| pinctrl-names = "default"; |
| power-domains = <&ps_i2c5>; |
| #address-cells = <0x1>; |
| #size-cells = <0x0>; |
| status = "disabled"; |
| }; |
| |
| serial0: serial@39b200000 { |
| compatible = "apple,s5l-uart"; |
| reg = <0x3 0x9b200000 0x0 0x1000>; |
| reg-io-width = <4>; |
| interrupt-parent = <&aic>; |
| interrupts = <AIC_IRQ 0 1097 IRQ_TYPE_LEVEL_HIGH>; |
| /* |
| * TODO: figure out the clocking properly, there may |
| * be a third selectable clock. |
| */ |
| clocks = <&clkref>, <&clkref>; |
| clock-names = "uart", "clk_uart_baud0"; |
| power-domains = <&ps_uart0>; |
| status = "disabled"; |
| }; |
| |
| admac: dma-controller@39b400000 { |
| compatible = "apple,t6000-admac", "apple,admac"; |
| reg = <0x3 0x9b400000 0x0 0x34000>; |
| #dma-cells = <1>; |
| dma-channels = <16>; |
| interrupts-extended = <0>, |
| <&aic AIC_IRQ 0 1118 IRQ_TYPE_LEVEL_HIGH>, |
| <0>, |
| <0>; |
| iommus = <&sio_dart_0 2>, <&sio_dart_1 2>; |
| power-domains = <&ps_sio_adma>; |
| resets = <&ps_audio_p>; |
| }; |
| |
| mca: mca@39b600000 { |
| compatible = "apple,t6000-mca", "apple,mca"; |
| reg = <0x3 0x9b600000 0x0 0x10000>, |
| <0x3 0x9b500000 0x0 0x20000>; |
| clocks = <&nco 0>, <&nco 1>, <&nco 2>, <&nco 3>; |
| dmas = <&admac 0>, <&admac 1>, <&admac 2>, <&admac 3>, |
| <&admac 4>, <&admac 5>, <&admac 6>, <&admac 7>, |
| <&admac 8>, <&admac 9>, <&admac 10>, <&admac 11>, |
| <&admac 12>, <&admac 13>, <&admac 14>, <&admac 15>; |
| dma-names = "tx0a", "rx0a", "tx0b", "rx0b", |
| "tx1a", "rx1a", "tx1b", "rx1b", |
| "tx2a", "rx2a", "tx2b", "rx2b", |
| "tx3a", "rx3a", "tx3b", "rx3b"; |
| interrupt-parent = <&aic>; |
| interrupts = <AIC_IRQ 0 1112 IRQ_TYPE_LEVEL_HIGH>, |
| <AIC_IRQ 0 1113 IRQ_TYPE_LEVEL_HIGH>, |
| <AIC_IRQ 0 1114 IRQ_TYPE_LEVEL_HIGH>, |
| <AIC_IRQ 0 1115 IRQ_TYPE_LEVEL_HIGH>; |
| power-domains = <&ps_audio_p>, <&ps_mca0>, <&ps_mca1>, |
| <&ps_mca2>, <&ps_mca3>; |
| resets = <&ps_audio_p>; |
| #sound-dai-cells = <1>; |
| }; |
| |
| pcie0_dart_0: iommu@581008000 { |
| compatible = "apple,t6000-dart"; |
| reg = <0x5 0x81008000 0x0 0x4000>; |
| #iommu-cells = <1>; |
| interrupt-parent = <&aic>; |
| interrupts = <AIC_IRQ 0 1271 IRQ_TYPE_LEVEL_HIGH>; |
| power-domains = <&ps_apcie_gp_sys>; |
| }; |
| |
| pcie0_dart_1: iommu@582008000 { |
| compatible = "apple,t6000-dart"; |
| reg = <0x5 0x82008000 0x0 0x4000>; |
| #iommu-cells = <1>; |
| interrupt-parent = <&aic>; |
| interrupts = <AIC_IRQ 0 1274 IRQ_TYPE_LEVEL_HIGH>; |
| power-domains = <&ps_apcie_gp_sys>; |
| }; |
| |
| pcie0_dart_2: iommu@583008000 { |
| compatible = "apple,t6000-dart"; |
| reg = <0x5 0x83008000 0x0 0x4000>; |
| #iommu-cells = <1>; |
| interrupt-parent = <&aic>; |
| interrupts = <AIC_IRQ 0 1277 IRQ_TYPE_LEVEL_HIGH>; |
| power-domains = <&ps_apcie_gp_sys>; |
| status = "disabled"; |
| }; |
| |
| pcie0_dart_3: iommu@584008000 { |
| compatible = "apple,t6000-dart"; |
| reg = <0x5 0x84008000 0x0 0x4000>; |
| #iommu-cells = <1>; |
| interrupt-parent = <&aic>; |
| interrupts = <AIC_IRQ 0 1280 IRQ_TYPE_LEVEL_HIGH>; |
| power-domains = <&ps_apcie_gp_sys>; |
| status = "disabled"; |
| }; |
| |
| pcie0: pcie@590000000 { |
| compatible = "apple,t6000-pcie", "apple,pcie"; |
| device_type = "pci"; |
| |
| reg = <0x5 0x90000000 0x0 0x1000000>, |
| <0x5 0x80000000 0x0 0x100000>, |
| <0x5 0x81000000 0x0 0x4000>, |
| <0x5 0x82000000 0x0 0x4000>, |
| <0x5 0x83000000 0x0 0x4000>, |
| <0x5 0x84000000 0x0 0x4000>; |
| reg-names = "config", "rc", "port0", "port1", "port2", "port3"; |
| |
| interrupt-parent = <&aic>; |
| interrupts = <AIC_IRQ 0 1270 IRQ_TYPE_LEVEL_HIGH>, |
| <AIC_IRQ 0 1273 IRQ_TYPE_LEVEL_HIGH>, |
| <AIC_IRQ 0 1276 IRQ_TYPE_LEVEL_HIGH>, |
| <AIC_IRQ 0 1279 IRQ_TYPE_LEVEL_HIGH>; |
| |
| msi-controller; |
| msi-parent = <&pcie0>; |
| msi-ranges = <&aic AIC_IRQ 0 1581 IRQ_TYPE_EDGE_RISING 32>; |
| |
| |
| iommu-map = <0x100 &pcie0_dart_0 1 1>, |
| <0x200 &pcie0_dart_1 1 1>, |
| <0x300 &pcie0_dart_2 1 1>, |
| <0x400 &pcie0_dart_3 1 1>; |
| iommu-map-mask = <0xff00>; |
| |
| bus-range = <0 4>; |
| #address-cells = <3>; |
| #size-cells = <2>; |
| ranges = <0x43000000 0x5 0xa0000000 0x5 0xa0000000 0x0 0x20000000>, |
| <0x02000000 0x0 0xc0000000 0x5 0xc0000000 0x0 0x40000000>; |
| |
| power-domains = <&ps_apcie_gp_sys>; |
| pinctrl-0 = <&pcie_pins>; |
| pinctrl-names = "default"; |
| |
| port00: pci@0,0 { |
| device_type = "pci"; |
| reg = <0x0 0x0 0x0 0x0 0x0>; |
| reset-gpios = <&pinctrl_ap 4 GPIO_ACTIVE_LOW>; |
| |
| #address-cells = <3>; |
| #size-cells = <2>; |
| ranges; |
| |
| interrupt-controller; |
| #interrupt-cells = <1>; |
| |
| interrupt-map-mask = <0 0 0 7>; |
| interrupt-map = <0 0 0 1 &port00 0 0 0 0>, |
| <0 0 0 2 &port00 0 0 0 1>, |
| <0 0 0 3 &port00 0 0 0 2>, |
| <0 0 0 4 &port00 0 0 0 3>; |
| }; |
| |
| port01: pci@1,0 { |
| device_type = "pci"; |
| reg = <0x800 0x0 0x0 0x0 0x0>; |
| reset-gpios = <&pinctrl_ap 5 GPIO_ACTIVE_LOW>; |
| |
| #address-cells = <3>; |
| #size-cells = <2>; |
| ranges; |
| |
| interrupt-controller; |
| #interrupt-cells = <1>; |
| |
| interrupt-map-mask = <0 0 0 7>; |
| interrupt-map = <0 0 0 1 &port01 0 0 0 0>, |
| <0 0 0 2 &port01 0 0 0 1>, |
| <0 0 0 3 &port01 0 0 0 2>, |
| <0 0 0 4 &port01 0 0 0 3>; |
| }; |
| |
| port02: pci@2,0 { |
| device_type = "pci"; |
| reg = <0x1000 0x0 0x0 0x0 0x0>; |
| reset-gpios = <&pinctrl_ap 6 GPIO_ACTIVE_LOW>; |
| |
| #address-cells = <3>; |
| #size-cells = <2>; |
| ranges; |
| |
| interrupt-controller; |
| #interrupt-cells = <1>; |
| |
| interrupt-map-mask = <0 0 0 7>; |
| interrupt-map = <0 0 0 1 &port02 0 0 0 0>, |
| <0 0 0 2 &port02 0 0 0 1>, |
| <0 0 0 3 &port02 0 0 0 2>, |
| <0 0 0 4 &port02 0 0 0 3>; |
| status = "disabled"; |
| }; |
| |
| port03: pci@3,0 { |
| device_type = "pci"; |
| reg = <0x1800 0x0 0x0 0x0 0x0>; |
| reset-gpios = <&pinctrl_ap 7 GPIO_ACTIVE_LOW>; |
| |
| #address-cells = <3>; |
| #size-cells = <2>; |
| ranges; |
| |
| interrupt-controller; |
| #interrupt-cells = <1>; |
| |
| interrupt-map-mask = <0 0 0 7>; |
| interrupt-map = <0 0 0 1 &port03 0 0 0 0>, |
| <0 0 0 2 &port03 0 0 0 1>, |
| <0 0 0 3 &port03 0 0 0 2>, |
| <0 0 0 4 &port03 0 0 0 3>; |
| status = "disabled"; |
| }; |
| }; |