Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
b49b7a5
phy: apple: atc: Don't treat the pipehandler lock as fatal in USB4 mode
DjDeveloperr Aug 24, 2026
77137b9
thunderbolt: apple: Preserve the other M3 control bits when starting …
DjDeveloperr Aug 24, 2026
d1ca2e5
thunderbolt: apple: Reject NHIs with more ring IRQs than status bits
DjDeveloperr Aug 24, 2026
5966e38
reset: apple-cio: Wait for the shared request register before reconfi…
DjDeveloperr Aug 24, 2026
9d306ff
reset: apple-cio: Wait before the request on t8103 too, and record th…
DjDeveloperr Aug 24, 2026
979c97f
usb: typec: tipd: Use the CD321x active-cable bit when rebuilding the…
DjDeveloperr Aug 24, 2026
658d76c
dt-bindings: PCI: apple: add T8103-family PCIe-C
DjDeveloperr Aug 25, 2026
d20d219
dt-bindings: describe Apple tunneled PCIe-C resources
DjDeveloperr Aug 28, 2026
6645cbc
dt-bindings: apple: validate PCIe-C and USB4 topology
DjDeveloperr Aug 29, 2026
13d0483
arm64: dts: apple: add T8103 and T8112 PCIe-C tunnels
DjDeveloperr Aug 25, 2026
14dab35
arm64: dts: apple: route base M1/M2 displays to both Type-C ports
DjDeveloperr Aug 25, 2026
5b41b7a
arm64: dts: apple: add non-Ultra T600x USB4 tunnel routing
DjDeveloperr Aug 25, 2026
fc1b73b
arm64: dts: apple: complete non-Ultra T602x USB4 and DCP routes
DjDeveloperr Aug 25, 2026
78724f5
arm64: dts: apple: add M2 Pro USB4 and display topology
DjDeveloperr Aug 25, 2026
8386208
arm64: dts: apple: keep USB4 disabled on M1/M2 Ultra
DjDeveloperr Aug 25, 2026
82b9fa7
arm64: dts: apple: avoid duplicate M2 display nodes
DjDeveloperr Aug 25, 2026
fd0e20b
arm64: dts: apple: gate Mac Studio USB4 routes
DjDeveloperr Aug 25, 2026
843e3ca
arm64: dts: apple: add complete USB4 handoff aliases
DjDeveloperr Aug 25, 2026
69ad698
arm64: dts: apple: wire PCIe-C on non-Ultra M1 and M2 SoCs
DjDeveloperr Aug 28, 2026
97bf647
PCI: apple: add cable-powered PCIe-C root complexes
DjDeveloperr Aug 25, 2026
c2b4c79
PCI: apple: support T8103-family PCIe-C tunnels
DjDeveloperr Aug 25, 2026
6e26f21
thunderbolt: apple: activate PCIe-C after the USB4 tunnel
DjDeveloperr Aug 28, 2026
148ccae
PCI: apple: support live tunneled PCIe-C ports
DjDeveloperr Aug 28, 2026
e1d7775
iommu: apple-dart: support tunneled PCIe-C DMA aliases
DjDeveloperr Aug 28, 2026
fa72d43
nvme-pci: order tunneled non-posted queue accesses
DjDeveloperr Aug 28, 2026
00c28cc
thunderbolt: apple: complete PCIe-C build dependencies
DjDeveloperr Aug 28, 2026
8174ba3
iommu: apple-dart: support retained PCIe-C tunnel domains
DjDeveloperr Aug 29, 2026
544b71a
PCI: apple: quiesce and restore tunneled PCIe-C links
DjDeveloperr Aug 29, 2026
f0c0ca0
thunderbolt: apple: coordinate tunneled PCIe lifecycle
DjDeveloperr Aug 29, 2026
b2bc356
PCI: apple: order PCIe-C hot-reconnect setup
DjDeveloperr Aug 29, 2026
3b7f11e
usb: dwc3-apple: preserve live ports across system sleep
DjDeveloperr Aug 29, 2026
161bfa5
tty: samsung: avoid suspended Apple UART access
DjDeveloperr Aug 29, 2026
3f9346c
usb: typec: cd321x: isolate hotplug state by port
DjDeveloperr Aug 29, 2026
dac5378
usb: typec: cd321x: preserve events during debounce
DjDeveloperr Aug 29, 2026
d2fbd5d
usb: typec: cd321x: track the active display route
DjDeveloperr Aug 29, 2026
6dde6f1
usb: typec: cd321x: cache and replay DP alt-mode status
DjDeveloperr Aug 29, 2026
9feeb7f
drm: apple: support shared Type-C display routes
DjDeveloperr Aug 25, 2026
6152da6
drm: apple: ignore legacy mux-index on Type-C DCPs
DjDeveloperr Aug 26, 2026
5c29016
drm: apple: recover Type-C displays across link interruptions
DjDeveloperr Aug 29, 2026
ec22f66
drm: apple: retrain Type-C display after USB4 route changes
DjDeveloperr Aug 29, 2026
0a580ce
drm: apple: refresh EDID after Type-C disconnect
DjDeveloperr Aug 29, 2026
1b6dd29
drm: apple: route Type-C displays through a shared DCP fabric
DjDeveloperr Aug 31, 2026
3d7d23c
drm: apple: keep Type-C displays configured across suspend
DjDeveloperr Aug 30, 2026
b8d9bdd
arm64: dts: apple: describe multi-DCP Type-C display topology
DjDeveloperr Aug 29, 2026
3a65e83
drm: apple: don't use devres for DCP property chunks
DjDeveloperr Aug 30, 2026
f6d4f47
thunderbolt: Add a PCI tunnel deactivate callback
DjDeveloperr Aug 31, 2026
d7f85f6
thunderbolt: apple: tear down PCIe-C when its tunnel goes away
DjDeveloperr Aug 31, 2026
443321d
thunderbolt: apple: accept cable speeds above Gen3
DjDeveloperr Sep 2, 2026
c111a22
usb: typec: tipd: fix partner identity use-after-free on CD321x
Sep 9, 2026
6a5489f
usb: typec: fix sysfs_emit_at() offset underflow on an empty mode list
Sep 10, 2026
38c14f6
drm: apple: support ProMotion variable refresh rate
DjDeveloperr Aug 31, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 51 additions & 3 deletions Documentation/devicetree/bindings/iommu/apple,dart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@ properties:
- apple,t8103-usb4-dart
- apple,t8110-dart
- apple,t6000-dart
- items:
- enum:
- apple,t6000-dart
- apple,t8112-dart
- const: apple,t8110-dart
- items:
- enum:
- apple,t6020-dart
Expand All @@ -46,20 +51,63 @@ properties:
Optional since not all IOMMUs are attached to a clock gate.

'#iommu-cells':
const: 1
enum: [1, 5]
description:
Has to be one. The single cell describes the stream id emitted by
a master to the IOMMU.
Usually one cell describing the stream id emitted by a master. The
T6020 NHI DART uses five cells to describe a stream range and its
device-visible DMA window.

power-domains:
maxItems: 1

apple,dma-range:
$ref: /schemas/types.yaml#/definitions/uint64-array
minItems: 2
maxItems: 2
description: >
Inclusive device-visible DMA aperture, encoded as a start address and
size. The IOMMU DMA allocator restricts mappings to this range.

apple,dma-offset:
$ref: /schemas/types.yaml#/definitions/uint64
description: >
Offset added to device-visible DMA addresses when indexing the DART page
tables. This models host bridges which alias a low PCI bus aperture into
a high DART translation window.

apple,tunable:
$ref: /schemas/types.yaml#/definitions/uint32-matrix
items:
items:
- description: Register offset
- description: Mask to be applied to the register value
- description: Bits to be set after applying the mask
description: >
List of (register offset, mask, value) tuples copied from Apple's Device
Tree by the bootloader and required to initialize dynamically powered
DART instances.

required:
- compatible
- reg
- '#iommu-cells'
- interrupts

allOf:
- if:
properties:
compatible:
contains:
const: apple,t6020-dart
then:
properties:
'#iommu-cells':
enum: [1, 5]
else:
properties:
'#iommu-cells':
const: 1

additionalProperties: false

examples:
Expand Down
84 changes: 71 additions & 13 deletions Documentation/devicetree/bindings/pci/apple,pcie.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ description: |
separate from the port registers. In that case, there is one PHY
register range per port register range.

The PCIe-C variant connects a single root port to a USB4 router instead of
a physical PCIe link. It has no external PHY or PERST# GPIO and follows the
router's cable-controlled power lifetime.

All root ports share a single ECAM space, but separate GPIOs are
used to take the PCI devices on those ports out of reset. Therefore
the standard "reset-gpios" and "max-link-speed" properties appear on
Expand All @@ -45,28 +49,23 @@ properties:
- const: apple,t8122-pcie
- const: apple,t6020-pcie
- const: apple,t6020-pcie
- const: apple,t8103-pciec
- items:
- const: apple,t8112-pciec
- const: apple,t8103-pciec
- const: apple,t6000-pciec

reg:
minItems: 3
maxItems: 10

reg-names:
minItems: 3
items:
- const: config
- const: rc
- const: port0
- const: port1
- const: port2
- const: port3
- const: phy0
- const: phy1
- const: phy2
- const: phy3
maxItems: 10

ranges:
minItems: 2
maxItems: 2
maxItems: 3

interrupts:
description:
Expand All @@ -85,6 +84,8 @@ properties:
power-domains:
maxItems: 1

dma-coherent: true

patternProperties:
"^pci@":
$ref: /schemas/pci/pci-bus.yaml#
Expand All @@ -99,13 +100,16 @@ patternProperties:
description: Optional GPIO to power on the device
maxItems: 1

interrupt-controller: true

required:
- reset-gpios
- interrupt-controller
- "#interrupt-cells"
- interrupt-map-mask
- interrupt-map

unevaluatedProperties: false

required:
- compatible
- reg
Expand Down Expand Up @@ -141,6 +145,60 @@ allOf:
properties:
reg-names:
minItems: 10
- if:
properties:
compatible:
contains:
enum:
- apple,t8103-pciec
- apple,t6000-pciec
then:
properties:
reg:
minItems: 5
maxItems: 7
reg-names:
oneOf:
- items:
- const: config
- const: rc
- const: port0
- const: fabric
- const: debug
- items:
- const: config
- const: rc
- const: port0
- const: fabric
- const: debug
- const: ltssm
- const: intr2axi
interrupts:
maxItems: 1
ranges:
minItems: 3
maxItems: 3
else:
properties:
reg-names:
minItems: 3
items:
- const: config
- const: rc
- const: port0
- const: port1
- const: port2
- const: port3
- const: phy0
- const: phy1
- const: phy2
- const: phy3
ranges:
maxItems: 2
patternProperties:
"^pci@":
required:
- reset-gpios

examples:
- |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,20 @@ properties:

power-domains:
minItems: 3
maxItems: 3
maxItems: 4
description: |
The first three domains power the ACIO co-processor complex. When
apple,pcie-tunnel is present, the fourth domain powers its PCIe-C
controller and is enabled only after the USB4 PCIe tunnel is active.

thunderbolt-switch: true

apple,pcie-tunnel:
$ref: /schemas/types.yaml#/definitions/phandle
description:
PCIe-C tunnel container populated after the USB4 router has enabled its
PCIe adapter.

apple,tunable-rc:
$ref: /schemas/types.yaml#/definitions/uint32-matrix
items:
Expand Down Expand Up @@ -162,7 +172,8 @@ examples:
mboxes = <&usb4_1_mbox>;
power-domains = <&ps_atc1_cio>,
<&ps_atc1_cio_pcie>,
<&ps_atc1_cio_usb>;
<&ps_atc1_cio_usb>,
<&ps_atc1_pcie>;
resets = <&cio_reset 1>;
thunderbolt-switch;
pinctrl-0 = <&acio1_pins>;
Expand Down
3 changes: 3 additions & 0 deletions arch/arm64/boot/dts/apple/t6001.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
# define GPU_REPEAT(x) <x x x x>
#endif

#define APPLE_T600X_NON_ULTRA

#include "t600x-common.dtsi"

/ {
Expand All @@ -45,6 +47,7 @@
&{/soc} {
#include "t600x-die0.dtsi"
#include "t600x-dieX.dtsi"
#include "t600x-pciec.dtsi"
#include "t600x-nvme.dtsi"
};

Expand Down
17 changes: 14 additions & 3 deletions arch/arm64/boot/dts/apple/t600x-dieX.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -466,6 +466,7 @@
};
*/

#ifdef APPLE_T600X_NON_ULTRA
DIE_NODE(usb4_0_mbox): mailbox@701100000 {
compatible = "apple,t6000-m3-mailbox",
"apple,m3-mailbox-v2";
Expand All @@ -491,7 +492,8 @@

power-domains = <&DIE_NODE(ps_atc0_cio)>,
<&DIE_NODE(ps_atc0_cio_pcie)>,
<&DIE_NODE(ps_atc0_cio_usb)>;
<&DIE_NODE(ps_atc0_cio_usb)>,
<&DIE_NODE(ps_atc0_pcie)>;

thunderbolt-switch;

Expand Down Expand Up @@ -557,6 +559,7 @@
apple,thunderbolt-drom = [00];
};
};
#endif

DIE_NODE(dwc3_0): usb@702280000 {
compatible = "apple,t6000-dwc3", "apple,t8103-dwc3";
Expand Down Expand Up @@ -619,6 +622,7 @@
status = "disabled";
};

#ifdef APPLE_T600X_NON_ULTRA
DIE_NODE(usb4_1_mbox): mailbox@b01100000 {
compatible = "apple,t6000-m3-mailbox",
"apple,m3-mailbox-v2";
Expand All @@ -644,7 +648,8 @@

power-domains = <&DIE_NODE(ps_atc1_cio)>,
<&DIE_NODE(ps_atc1_cio_pcie)>,
<&DIE_NODE(ps_atc1_cio_usb)>;
<&DIE_NODE(ps_atc1_cio_usb)>,
<&DIE_NODE(ps_atc1_pcie)>;

thunderbolt-switch;

Expand Down Expand Up @@ -710,6 +715,7 @@
apple,thunderbolt-drom = [00];
};
};
#endif

DIE_NODE(dwc3_1): usb@b02280000 {
compatible = "apple,t6000-dwc3", "apple,t8103-dwc3";
Expand Down Expand Up @@ -772,6 +778,7 @@
status = "disabled";
};

#ifdef APPLE_T600X_NON_ULTRA
DIE_NODE(usb4_2_mbox): mailbox@f01100000 {
compatible = "apple,t6000-m3-mailbox",
"apple,m3-mailbox-v2";
Expand All @@ -797,7 +804,8 @@

power-domains = <&DIE_NODE(ps_atc2_cio)>,
<&DIE_NODE(ps_atc2_cio_pcie)>,
<&DIE_NODE(ps_atc2_cio_usb)>;
<&DIE_NODE(ps_atc2_cio_usb)>,
<&DIE_NODE(ps_atc2_pcie)>;

thunderbolt-switch;

Expand Down Expand Up @@ -863,6 +871,7 @@
apple,thunderbolt-drom = [00];
};
};
#endif

DIE_NODE(dwc3_2): usb@f02280000 {
compatible = "apple,t6000-dwc3", "apple,t8103-dwc3";
Expand Down Expand Up @@ -925,6 +934,7 @@
status = "disabled";
};

#ifdef APPLE_T600X_NON_ULTRA
DIE_NODE(usb4_3_mbox): mailbox@1301100000 {
compatible = "apple,t6000-m3-mailbox",
"apple,m3-mailbox-v2";
Expand Down Expand Up @@ -1016,6 +1026,7 @@
apple,thunderbolt-drom = [00];
};
};
#endif

DIE_NODE(dwc3_3): usb@1302280000 {
compatible = "apple,t6000-dwc3", "apple,t8103-dwc3";
Expand Down
Loading