17d2d16ccSHector Martin// SPDX-License-Identifier: GPL-2.0+ OR MIT 27d2d16ccSHector Martin/* 37d2d16ccSHector Martin * Apple T8103 "M1" SoC 47d2d16ccSHector Martin * 57d2d16ccSHector Martin * Other names: H13G, "Tonga" 67d2d16ccSHector Martin * 77d2d16ccSHector Martin * Copyright The Asahi Linux Contributors 87d2d16ccSHector Martin */ 97d2d16ccSHector Martin 10*5b970dfcSMarc Zyngier#include <dt-bindings/gpio/gpio.h> 117d2d16ccSHector Martin#include <dt-bindings/interrupt-controller/apple-aic.h> 127d2d16ccSHector Martin#include <dt-bindings/interrupt-controller/irq.h> 130a8282b8SMark Kettenis#include <dt-bindings/pinctrl/apple.h> 147d2d16ccSHector Martin 157d2d16ccSHector Martin/ { 167d2d16ccSHector Martin compatible = "apple,t8103", "apple,arm-platform"; 177d2d16ccSHector Martin 187d2d16ccSHector Martin #address-cells = <2>; 197d2d16ccSHector Martin #size-cells = <2>; 207d2d16ccSHector Martin 217d2d16ccSHector Martin cpus { 227d2d16ccSHector Martin #address-cells = <2>; 237d2d16ccSHector Martin #size-cells = <0>; 247d2d16ccSHector Martin 257d2d16ccSHector Martin cpu0: cpu@0 { 267d2d16ccSHector Martin compatible = "apple,icestorm"; 277d2d16ccSHector Martin device_type = "cpu"; 287d2d16ccSHector Martin reg = <0x0 0x0>; 297d2d16ccSHector Martin enable-method = "spin-table"; 307d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 317d2d16ccSHector Martin }; 327d2d16ccSHector Martin 337d2d16ccSHector Martin cpu1: cpu@1 { 347d2d16ccSHector Martin compatible = "apple,icestorm"; 357d2d16ccSHector Martin device_type = "cpu"; 367d2d16ccSHector Martin reg = <0x0 0x1>; 377d2d16ccSHector Martin enable-method = "spin-table"; 387d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 397d2d16ccSHector Martin }; 407d2d16ccSHector Martin 417d2d16ccSHector Martin cpu2: cpu@2 { 427d2d16ccSHector Martin compatible = "apple,icestorm"; 437d2d16ccSHector Martin device_type = "cpu"; 447d2d16ccSHector Martin reg = <0x0 0x2>; 457d2d16ccSHector Martin enable-method = "spin-table"; 467d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 477d2d16ccSHector Martin }; 487d2d16ccSHector Martin 497d2d16ccSHector Martin cpu3: cpu@3 { 507d2d16ccSHector Martin compatible = "apple,icestorm"; 517d2d16ccSHector Martin device_type = "cpu"; 527d2d16ccSHector Martin reg = <0x0 0x3>; 537d2d16ccSHector Martin enable-method = "spin-table"; 547d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 557d2d16ccSHector Martin }; 567d2d16ccSHector Martin 577d2d16ccSHector Martin cpu4: cpu@10100 { 587d2d16ccSHector Martin compatible = "apple,firestorm"; 597d2d16ccSHector Martin device_type = "cpu"; 607d2d16ccSHector Martin reg = <0x0 0x10100>; 617d2d16ccSHector Martin enable-method = "spin-table"; 627d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 637d2d16ccSHector Martin }; 647d2d16ccSHector Martin 657d2d16ccSHector Martin cpu5: cpu@10101 { 667d2d16ccSHector Martin compatible = "apple,firestorm"; 677d2d16ccSHector Martin device_type = "cpu"; 687d2d16ccSHector Martin reg = <0x0 0x10101>; 697d2d16ccSHector Martin enable-method = "spin-table"; 707d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 717d2d16ccSHector Martin }; 727d2d16ccSHector Martin 737d2d16ccSHector Martin cpu6: cpu@10102 { 747d2d16ccSHector Martin compatible = "apple,firestorm"; 757d2d16ccSHector Martin device_type = "cpu"; 767d2d16ccSHector Martin reg = <0x0 0x10102>; 777d2d16ccSHector Martin enable-method = "spin-table"; 787d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 797d2d16ccSHector Martin }; 807d2d16ccSHector Martin 817d2d16ccSHector Martin cpu7: cpu@10103 { 827d2d16ccSHector Martin compatible = "apple,firestorm"; 837d2d16ccSHector Martin device_type = "cpu"; 847d2d16ccSHector Martin reg = <0x0 0x10103>; 857d2d16ccSHector Martin enable-method = "spin-table"; 867d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 877d2d16ccSHector Martin }; 887d2d16ccSHector Martin }; 897d2d16ccSHector Martin 907d2d16ccSHector Martin timer { 917d2d16ccSHector Martin compatible = "arm,armv8-timer"; 927d2d16ccSHector Martin interrupt-parent = <&aic>; 937d2d16ccSHector Martin interrupt-names = "phys", "virt", "hyp-phys", "hyp-virt"; 947d2d16ccSHector Martin interrupts = <AIC_FIQ AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>, 957d2d16ccSHector Martin <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>, 967d2d16ccSHector Martin <AIC_FIQ AIC_TMR_HV_PHYS IRQ_TYPE_LEVEL_HIGH>, 977d2d16ccSHector Martin <AIC_FIQ AIC_TMR_HV_VIRT IRQ_TYPE_LEVEL_HIGH>; 987d2d16ccSHector Martin }; 997d2d16ccSHector Martin 1007d2d16ccSHector Martin clk24: clock-24m { 1017d2d16ccSHector Martin compatible = "fixed-clock"; 1027d2d16ccSHector Martin #clock-cells = <0>; 1037d2d16ccSHector Martin clock-frequency = <24000000>; 1047d2d16ccSHector Martin clock-output-names = "clk24"; 1057d2d16ccSHector Martin }; 1067d2d16ccSHector Martin 1077d2d16ccSHector Martin soc { 1087d2d16ccSHector Martin compatible = "simple-bus"; 1097d2d16ccSHector Martin #address-cells = <2>; 1107d2d16ccSHector Martin #size-cells = <2>; 1117d2d16ccSHector Martin 1127d2d16ccSHector Martin ranges; 1137d2d16ccSHector Martin nonposted-mmio; 1147d2d16ccSHector Martin 1157d2d16ccSHector Martin serial0: serial@235200000 { 1167d2d16ccSHector Martin compatible = "apple,s5l-uart"; 1177d2d16ccSHector Martin reg = <0x2 0x35200000 0x0 0x1000>; 1187d2d16ccSHector Martin reg-io-width = <4>; 1197d2d16ccSHector Martin interrupt-parent = <&aic>; 1207d2d16ccSHector Martin interrupts = <AIC_IRQ 605 IRQ_TYPE_LEVEL_HIGH>; 1217d2d16ccSHector Martin /* 1227d2d16ccSHector Martin * TODO: figure out the clocking properly, there may 1237d2d16ccSHector Martin * be a third selectable clock. 1247d2d16ccSHector Martin */ 1257d2d16ccSHector Martin clocks = <&clk24>, <&clk24>; 1267d2d16ccSHector Martin clock-names = "uart", "clk_uart_baud0"; 1277d2d16ccSHector Martin status = "disabled"; 1287d2d16ccSHector Martin }; 1297d2d16ccSHector Martin 1307d2d16ccSHector Martin aic: interrupt-controller@23b100000 { 1317d2d16ccSHector Martin compatible = "apple,t8103-aic", "apple,aic"; 1327d2d16ccSHector Martin #interrupt-cells = <3>; 1337d2d16ccSHector Martin interrupt-controller; 1347d2d16ccSHector Martin reg = <0x2 0x3b100000 0x0 0x8000>; 1357d2d16ccSHector Martin }; 1360a8282b8SMark Kettenis 1370a8282b8SMark Kettenis pinctrl_ap: pinctrl@23c100000 { 1380a8282b8SMark Kettenis compatible = "apple,t8103-pinctrl", "apple,pinctrl"; 1390a8282b8SMark Kettenis reg = <0x2 0x3c100000 0x0 0x100000>; 1400a8282b8SMark Kettenis 1410a8282b8SMark Kettenis gpio-controller; 1420a8282b8SMark Kettenis #gpio-cells = <2>; 1430a8282b8SMark Kettenis gpio-ranges = <&pinctrl_ap 0 0 212>; 1440a8282b8SMark Kettenis apple,npins = <212>; 1450a8282b8SMark Kettenis 1460a8282b8SMark Kettenis interrupt-controller; 1470a8282b8SMark Kettenis interrupt-parent = <&aic>; 1480a8282b8SMark Kettenis interrupts = <AIC_IRQ 190 IRQ_TYPE_LEVEL_HIGH>, 1490a8282b8SMark Kettenis <AIC_IRQ 191 IRQ_TYPE_LEVEL_HIGH>, 1500a8282b8SMark Kettenis <AIC_IRQ 192 IRQ_TYPE_LEVEL_HIGH>, 1510a8282b8SMark Kettenis <AIC_IRQ 193 IRQ_TYPE_LEVEL_HIGH>, 1520a8282b8SMark Kettenis <AIC_IRQ 194 IRQ_TYPE_LEVEL_HIGH>, 1530a8282b8SMark Kettenis <AIC_IRQ 195 IRQ_TYPE_LEVEL_HIGH>, 1540a8282b8SMark Kettenis <AIC_IRQ 196 IRQ_TYPE_LEVEL_HIGH>; 1550a8282b8SMark Kettenis 1560a8282b8SMark Kettenis pcie_pins: pcie-pins { 1570a8282b8SMark Kettenis pinmux = <APPLE_PINMUX(150, 1)>, 1580a8282b8SMark Kettenis <APPLE_PINMUX(151, 1)>, 1590a8282b8SMark Kettenis <APPLE_PINMUX(32, 1)>; 1600a8282b8SMark Kettenis }; 1610a8282b8SMark Kettenis }; 1620a8282b8SMark Kettenis 1630a8282b8SMark Kettenis pinctrl_aop: pinctrl@24a820000 { 1640a8282b8SMark Kettenis compatible = "apple,t8103-pinctrl", "apple,pinctrl"; 1650a8282b8SMark Kettenis reg = <0x2 0x4a820000 0x0 0x4000>; 1660a8282b8SMark Kettenis 1670a8282b8SMark Kettenis gpio-controller; 1680a8282b8SMark Kettenis #gpio-cells = <2>; 1690a8282b8SMark Kettenis gpio-ranges = <&pinctrl_aop 0 0 42>; 1700a8282b8SMark Kettenis apple,npins = <42>; 1710a8282b8SMark Kettenis 1720a8282b8SMark Kettenis interrupt-controller; 1730a8282b8SMark Kettenis interrupt-parent = <&aic>; 1740a8282b8SMark Kettenis interrupts = <AIC_IRQ 268 IRQ_TYPE_LEVEL_HIGH>, 1750a8282b8SMark Kettenis <AIC_IRQ 269 IRQ_TYPE_LEVEL_HIGH>, 1760a8282b8SMark Kettenis <AIC_IRQ 270 IRQ_TYPE_LEVEL_HIGH>, 1770a8282b8SMark Kettenis <AIC_IRQ 271 IRQ_TYPE_LEVEL_HIGH>, 1780a8282b8SMark Kettenis <AIC_IRQ 272 IRQ_TYPE_LEVEL_HIGH>, 1790a8282b8SMark Kettenis <AIC_IRQ 273 IRQ_TYPE_LEVEL_HIGH>, 1800a8282b8SMark Kettenis <AIC_IRQ 274 IRQ_TYPE_LEVEL_HIGH>; 1810a8282b8SMark Kettenis }; 1820a8282b8SMark Kettenis 1830a8282b8SMark Kettenis pinctrl_nub: pinctrl@23d1f0000 { 1840a8282b8SMark Kettenis compatible = "apple,t8103-pinctrl", "apple,pinctrl"; 1850a8282b8SMark Kettenis reg = <0x2 0x3d1f0000 0x0 0x4000>; 1860a8282b8SMark Kettenis 1870a8282b8SMark Kettenis gpio-controller; 1880a8282b8SMark Kettenis #gpio-cells = <2>; 1890a8282b8SMark Kettenis gpio-ranges = <&pinctrl_nub 0 0 23>; 1900a8282b8SMark Kettenis apple,npins = <23>; 1910a8282b8SMark Kettenis 1920a8282b8SMark Kettenis interrupt-controller; 1930a8282b8SMark Kettenis interrupt-parent = <&aic>; 1940a8282b8SMark Kettenis interrupts = <AIC_IRQ 330 IRQ_TYPE_LEVEL_HIGH>, 1950a8282b8SMark Kettenis <AIC_IRQ 331 IRQ_TYPE_LEVEL_HIGH>, 1960a8282b8SMark Kettenis <AIC_IRQ 332 IRQ_TYPE_LEVEL_HIGH>, 1970a8282b8SMark Kettenis <AIC_IRQ 333 IRQ_TYPE_LEVEL_HIGH>, 1980a8282b8SMark Kettenis <AIC_IRQ 334 IRQ_TYPE_LEVEL_HIGH>, 1990a8282b8SMark Kettenis <AIC_IRQ 335 IRQ_TYPE_LEVEL_HIGH>, 2000a8282b8SMark Kettenis <AIC_IRQ 336 IRQ_TYPE_LEVEL_HIGH>; 2010a8282b8SMark Kettenis }; 2020a8282b8SMark Kettenis 2030a8282b8SMark Kettenis pinctrl_smc: pinctrl@23e820000 { 2040a8282b8SMark Kettenis compatible = "apple,t8103-pinctrl", "apple,pinctrl"; 2050a8282b8SMark Kettenis reg = <0x2 0x3e820000 0x0 0x4000>; 2060a8282b8SMark Kettenis 2070a8282b8SMark Kettenis gpio-controller; 2080a8282b8SMark Kettenis #gpio-cells = <2>; 2090a8282b8SMark Kettenis gpio-ranges = <&pinctrl_smc 0 0 16>; 2100a8282b8SMark Kettenis apple,npins = <16>; 2110a8282b8SMark Kettenis 2120a8282b8SMark Kettenis interrupt-controller; 2130a8282b8SMark Kettenis interrupt-parent = <&aic>; 2140a8282b8SMark Kettenis interrupts = <AIC_IRQ 391 IRQ_TYPE_LEVEL_HIGH>, 2150a8282b8SMark Kettenis <AIC_IRQ 392 IRQ_TYPE_LEVEL_HIGH>, 2160a8282b8SMark Kettenis <AIC_IRQ 393 IRQ_TYPE_LEVEL_HIGH>, 2170a8282b8SMark Kettenis <AIC_IRQ 394 IRQ_TYPE_LEVEL_HIGH>, 2180a8282b8SMark Kettenis <AIC_IRQ 395 IRQ_TYPE_LEVEL_HIGH>, 2190a8282b8SMark Kettenis <AIC_IRQ 396 IRQ_TYPE_LEVEL_HIGH>, 2200a8282b8SMark Kettenis <AIC_IRQ 397 IRQ_TYPE_LEVEL_HIGH>; 2210a8282b8SMark Kettenis }; 222ff2a8d91SMark Kettenis 2233c866bb7SMarc Zyngier pcie0_dart_0: dart@681008000 { 2243c866bb7SMarc Zyngier compatible = "apple,t8103-dart"; 2253c866bb7SMarc Zyngier reg = <0x6 0x81008000 0x0 0x4000>; 2263c866bb7SMarc Zyngier #iommu-cells = <1>; 2273c866bb7SMarc Zyngier interrupt-parent = <&aic>; 2283c866bb7SMarc Zyngier interrupts = <AIC_IRQ 696 IRQ_TYPE_LEVEL_HIGH>; 2293c866bb7SMarc Zyngier }; 2303c866bb7SMarc Zyngier 2313c866bb7SMarc Zyngier pcie0_dart_1: dart@682008000 { 2323c866bb7SMarc Zyngier compatible = "apple,t8103-dart"; 2333c866bb7SMarc Zyngier reg = <0x6 0x82008000 0x0 0x4000>; 2343c866bb7SMarc Zyngier #iommu-cells = <1>; 2353c866bb7SMarc Zyngier interrupt-parent = <&aic>; 2363c866bb7SMarc Zyngier interrupts = <AIC_IRQ 699 IRQ_TYPE_LEVEL_HIGH>; 2373c866bb7SMarc Zyngier }; 2383c866bb7SMarc Zyngier 2393c866bb7SMarc Zyngier pcie0_dart_2: dart@683008000 { 2403c866bb7SMarc Zyngier compatible = "apple,t8103-dart"; 2413c866bb7SMarc Zyngier reg = <0x6 0x83008000 0x0 0x4000>; 2423c866bb7SMarc Zyngier #iommu-cells = <1>; 2433c866bb7SMarc Zyngier interrupt-parent = <&aic>; 2443c866bb7SMarc Zyngier interrupts = <AIC_IRQ 702 IRQ_TYPE_LEVEL_HIGH>; 2453c866bb7SMarc Zyngier }; 2463c866bb7SMarc Zyngier 247ff2a8d91SMark Kettenis pcie0: pcie@690000000 { 248ff2a8d91SMark Kettenis compatible = "apple,t8103-pcie", "apple,pcie"; 249ff2a8d91SMark Kettenis device_type = "pci"; 250ff2a8d91SMark Kettenis 251ff2a8d91SMark Kettenis reg = <0x6 0x90000000 0x0 0x1000000>, 252ff2a8d91SMark Kettenis <0x6 0x80000000 0x0 0x100000>, 253ff2a8d91SMark Kettenis <0x6 0x81000000 0x0 0x4000>, 254ff2a8d91SMark Kettenis <0x6 0x82000000 0x0 0x4000>, 255ff2a8d91SMark Kettenis <0x6 0x83000000 0x0 0x4000>; 256ff2a8d91SMark Kettenis reg-names = "config", "rc", "port0", "port1", "port2"; 257ff2a8d91SMark Kettenis 258ff2a8d91SMark Kettenis interrupt-parent = <&aic>; 259ff2a8d91SMark Kettenis interrupts = <AIC_IRQ 695 IRQ_TYPE_LEVEL_HIGH>, 260ff2a8d91SMark Kettenis <AIC_IRQ 698 IRQ_TYPE_LEVEL_HIGH>, 261ff2a8d91SMark Kettenis <AIC_IRQ 701 IRQ_TYPE_LEVEL_HIGH>; 262ff2a8d91SMark Kettenis 263ff2a8d91SMark Kettenis msi-controller; 264ff2a8d91SMark Kettenis msi-parent = <&pcie0>; 265ff2a8d91SMark Kettenis msi-ranges = <&aic AIC_IRQ 704 IRQ_TYPE_EDGE_RISING 32>; 266ff2a8d91SMark Kettenis 2673c866bb7SMarc Zyngier 2683c866bb7SMarc Zyngier iommu-map = <0x100 &pcie0_dart_0 1 1>, 2693c866bb7SMarc Zyngier <0x200 &pcie0_dart_1 1 1>, 2703c866bb7SMarc Zyngier <0x300 &pcie0_dart_2 1 1>; 2713c866bb7SMarc Zyngier iommu-map-mask = <0xff00>; 2723c866bb7SMarc Zyngier 273ff2a8d91SMark Kettenis bus-range = <0 3>; 274ff2a8d91SMark Kettenis #address-cells = <3>; 275ff2a8d91SMark Kettenis #size-cells = <2>; 276ff2a8d91SMark Kettenis ranges = <0x43000000 0x6 0xa0000000 0x6 0xa0000000 0x0 0x20000000>, 277ff2a8d91SMark Kettenis <0x02000000 0x0 0xc0000000 0x6 0xc0000000 0x0 0x40000000>; 278ff2a8d91SMark Kettenis 279ff2a8d91SMark Kettenis pinctrl-0 = <&pcie_pins>; 280ff2a8d91SMark Kettenis pinctrl-names = "default"; 281ff2a8d91SMark Kettenis 282128888a6SMarc Zyngier port00: pci@0,0 { 283ff2a8d91SMark Kettenis device_type = "pci"; 284ff2a8d91SMark Kettenis reg = <0x0 0x0 0x0 0x0 0x0>; 285*5b970dfcSMarc Zyngier reset-gpios = <&pinctrl_ap 152 GPIO_ACTIVE_LOW>; 286ff2a8d91SMark Kettenis max-link-speed = <2>; 287ff2a8d91SMark Kettenis 288ff2a8d91SMark Kettenis #address-cells = <3>; 289ff2a8d91SMark Kettenis #size-cells = <2>; 290ff2a8d91SMark Kettenis ranges; 291128888a6SMarc Zyngier 292128888a6SMarc Zyngier interrupt-controller; 293128888a6SMarc Zyngier #interrupt-cells = <1>; 294128888a6SMarc Zyngier 295128888a6SMarc Zyngier interrupt-map-mask = <0 0 0 7>; 296128888a6SMarc Zyngier interrupt-map = <0 0 0 1 &port00 0 0 0 0>, 297128888a6SMarc Zyngier <0 0 0 2 &port00 0 0 0 1>, 298128888a6SMarc Zyngier <0 0 0 3 &port00 0 0 0 2>, 299128888a6SMarc Zyngier <0 0 0 4 &port00 0 0 0 3>; 300ff2a8d91SMark Kettenis }; 301ff2a8d91SMark Kettenis 302128888a6SMarc Zyngier port01: pci@1,0 { 303ff2a8d91SMark Kettenis device_type = "pci"; 304ff2a8d91SMark Kettenis reg = <0x800 0x0 0x0 0x0 0x0>; 305*5b970dfcSMarc Zyngier reset-gpios = <&pinctrl_ap 153 GPIO_ACTIVE_LOW>; 306ff2a8d91SMark Kettenis max-link-speed = <2>; 307ff2a8d91SMark Kettenis 308ff2a8d91SMark Kettenis #address-cells = <3>; 309ff2a8d91SMark Kettenis #size-cells = <2>; 310ff2a8d91SMark Kettenis ranges; 311128888a6SMarc Zyngier 312128888a6SMarc Zyngier interrupt-controller; 313128888a6SMarc Zyngier #interrupt-cells = <1>; 314128888a6SMarc Zyngier 315128888a6SMarc Zyngier interrupt-map-mask = <0 0 0 7>; 316128888a6SMarc Zyngier interrupt-map = <0 0 0 1 &port01 0 0 0 0>, 317128888a6SMarc Zyngier <0 0 0 2 &port01 0 0 0 1>, 318128888a6SMarc Zyngier <0 0 0 3 &port01 0 0 0 2>, 319128888a6SMarc Zyngier <0 0 0 4 &port01 0 0 0 3>; 320ff2a8d91SMark Kettenis }; 321ff2a8d91SMark Kettenis 322128888a6SMarc Zyngier port02: pci@2,0 { 323ff2a8d91SMark Kettenis device_type = "pci"; 324ff2a8d91SMark Kettenis reg = <0x1000 0x0 0x0 0x0 0x0>; 325*5b970dfcSMarc Zyngier reset-gpios = <&pinctrl_ap 33 GPIO_ACTIVE_LOW>; 326ff2a8d91SMark Kettenis max-link-speed = <1>; 327ff2a8d91SMark Kettenis 328ff2a8d91SMark Kettenis #address-cells = <3>; 329ff2a8d91SMark Kettenis #size-cells = <2>; 330ff2a8d91SMark Kettenis ranges; 331128888a6SMarc Zyngier 332128888a6SMarc Zyngier interrupt-controller; 333128888a6SMarc Zyngier #interrupt-cells = <1>; 334128888a6SMarc Zyngier 335128888a6SMarc Zyngier interrupt-map-mask = <0 0 0 7>; 336128888a6SMarc Zyngier interrupt-map = <0 0 0 1 &port02 0 0 0 0>, 337128888a6SMarc Zyngier <0 0 0 2 &port02 0 0 0 1>, 338128888a6SMarc Zyngier <0 0 0 3 &port02 0 0 0 2>, 339128888a6SMarc Zyngier <0 0 0 4 &port02 0 0 0 3>; 340ff2a8d91SMark Kettenis }; 341ff2a8d91SMark Kettenis }; 3427d2d16ccSHector Martin }; 3437d2d16ccSHector Martin}; 344