Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
bc5f26e
Merge branch 'bits/000-devicetree' into asahi-wip
jannau Jan 24, 2026
0f1e25c
Merge branch 'bits/002-backports' into asahi-wip
jannau Jan 24, 2026
86a435f
Merge branch 'bits/010-soc' into asahi-wip
jannau Jan 24, 2026
540540d
Merge branch 'bits/020-dart' into asahi-wip
jannau Jan 24, 2026
b2f2747
Merge branch 'bits/030-misc' into asahi-wip
jannau Jan 24, 2026
72ba8e7
Merge branch 'bits/040-dwc3' into asahi-wip
jannau Jan 24, 2026
18792a3
Merge branch 'bits/050-nvme' into asahi-wip
jannau Jan 24, 2026
7b79964
Merge branch 'bits/070-audio' into asahi-wip
jannau Jan 24, 2026
066214a
Merge branch 'bits/080-wifi' into asahi-wip
jannau Jan 24, 2026
21d842f
Merge branch 'bits/090-spi-hid' into asahi-wip
jannau Jan 24, 2026
7b5d694
Merge branch 'bits/110-smc' into asahi-wip
jannau Jan 24, 2026
f34e9f9
Merge branch 'bits/140-pci' into asahi-wip
jannau Jan 24, 2026
8bc119a
Merge branch 'bits/150-xhci-firmware' into asahi-wip
jannau Jan 24, 2026
221e6e9
Merge branch 'bits/170-atcphy' into asahi-wip
jannau Jan 24, 2026
e87d9a4
Merge branch 'bits/180-sio' into asahi-wip
jannau Jan 24, 2026
1976bc2
Merge branch 'bits/190-rust' into asahi-wip
jannau Jan 24, 2026
a2d51ee
Merge branch 'bits/200-dcp' into asahi-wip
jannau Jan 24, 2026
d99ac96
Merge branch 'bits/210-gpu' into asahi-wip
jannau Jan 24, 2026
8c83886
Merge branch 'bits/220-tso' into asahi-wip
jannau Jan 24, 2026
aa304cc
Merge branch 'bits/240-isp' into asahi-wip
jannau Jan 24, 2026
3725b04
Merge branch 'bits/250-aop' into asahi-wip
jannau Jan 24, 2026
44289ee
usb: typec: tipd: Track data_status changes for CD321x
jannau Sep 10, 2025
02113c7
usb: typec: tipd: HACK: Use drm oob hotplug event
jannau Dec 22, 2025
6fc52d7
arm64: dts: apple: t8103: Add dp-altmode dts hacks
jannau Dec 3, 2022
383d3b6
HACK: arm64: dts: apple: t8103: Mark ps_atc1_common as always on
jannau Dec 25, 2025
497fbae
arm64: dts: apple: t8112: Add dp-altmode dts hacks
jannau Dec 3, 2022
e84d797
HACK: arm64: dts: apple: t8112: Mark ps_atc1_common as always on
jannau Dec 25, 2025
9a5c74c
arm64: apple: t8112-j473: Add DP-altmode on typec1
jannau Aug 4, 2024
2cffbac
HACK: arm64: apple: t8112-j473: Mark ps_atc1_common as always on
jannau Dec 25, 2025
8fd2eba
arm64: dts: apple: t60xx: j[34]1[46]: Add dp-altmode hacks
jannau Nov 5, 2022
a8848a7
HACK: arm64: dts: apple: t60xx: j[34]1[46]: Mark ps_atc1_common as al…
jannau Dec 25, 2025
68feab3
arm64: dts: apple: t60xx: j[34]75: Add dp-altmode hacks
jannau Jun 9, 2024
ecc5cfa
HACK: arm64: dts: apple: t60xx: j[34]75: Mark ps_atc1_common as alway…
jannau Dec 25, 2025
b0b5bbf
arm64: dts: apple: t6020-j474s: Add dp-altmode hacks
jannau Nov 5, 2022
8b69f33
arm64: dts: apple: t8103: add &sio alias so m1n1 can handle it correctly
NekoCWD Jan 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
111 changes: 111 additions & 0 deletions Documentation/devicetree/bindings/dma/apple,sio.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/dma/apple,sio.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Apple SIO Coprocessor

description:
SIO is a coprocessor on Apple M1 and later chips (and maybe also on earlier
chips). Its role is to offload SPI, UART and DisplayPort audio transfers,
being a pretend DMA controller.

maintainers:
- Martin Povišer <povik+lin@cutebit.org>

allOf:
- $ref: dma-controller.yaml#

properties:
compatible:
items:
- enum:
- apple,t6000-sio
- apple,t8103-sio
- const: apple,sio

reg:
maxItems: 1

'#dma-cells':
const: 1
description:
DMA clients specify a single cell that corresponds to the RTKit endpoint
number used for arranging the transfers in question

dma-channels:
maximum: 128

mboxes:
maxItems: 1

iommus:
maxItems: 1

power-domains:
maxItems: 1

memory-region:
minItems: 2
maxItems: 8
description:
A number of references to reserved memory regions among which are the DATA/TEXT
sections of coprocessor executable firmware and also auxiliary firmware data
describing the available DMA-enabled peripherals

apple,sio-firmware-params:
$ref: /schemas/types.yaml#/definitions/uint32-array
description: |
Parameters in the form of opaque key/value pairs that are to be sent to the SIO
coprocesssor once it boots. These parameters can point into the reserved memory
regions (in device address space).
Note that unlike Apple's firmware, we treat the parameters, and the data they
refer to, as opaque. Apple embed short data blobs into their SIO devicetree node
that describe the DMA-enabled peripherals (presumably with defined semantics).
Their driver processes those blobs and sets up data structure in mapped device
memory, then references this memory in the parameters sent to the SIO. At the
level of description we are opting for in this binding, we assume the job of
constructing those data structures has been done in advance, leaving behind an
opaque list of key/value parameter pairs to be sent by a prospective driver.
This approach is chosen for two reasons:
- It means we don't need to try to understand the semantics of Apple's blobs
as long as we know the transformation we need to do from Apple's devicetree
data to SIO data (which can be shoved away into a loader). It also means the
semantics of Apple's blobs (or of something to replace them) need not be part
of the binding and be kept up with Apple's firmware changes in the future.
- It leaves less work for the driver attaching on this binding. Instead the work
is done upfront in the loader which can be better suited for keeping up with
Apple's firmware changes.
required:
- compatible
- reg
- '#dma-cells'
- dma-channels
- mboxes
- iommus
- power-domains

additionalProperties: false

examples:
- |
sio: dma-controller@36400000 {
compatible = "apple,t8103-sio", "apple,sio";
reg = <0x36400000 0x8000>;
dma-channels = <128>;
#dma-cells = <1>;
mboxes = <&sio_mbox>;
iommus = <&sio_dart 0>;
power-domains = <&ps_sio_cpu>;
memory-region = <&sio_text>, <&sio_data>,
<&sio_auxdata1>, <&sio_auxdata2>; /* Filled by loader */
apple,sio-firmware-params = <0xb 0x10>, <0xc 0x1b80>, <0xf 0x14>,
<0x10 0x1e000>, <0x30d 0x34>, <0x30e 0x4000>,
<0x1a 0x38>, <0x1b 0x50>; /* Filled by loader */
};
86 changes: 86 additions & 0 deletions Documentation/devicetree/bindings/hwmon/apple,smc-hwmon.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/hwmon/apple,smc-hwmon.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Apple SMC Hardware Monitoring

description:
Apple's System Management Controller (SMC) exposes a vast array of
hardware monitoring sensors, including temperature probes, current and
voltage sense, power meters, and fan speeds. It also provides endpoints
to manually control the speed of each fan individually. Each Apple
Silicon device exposes a different set of endpoints via SMC keys. This
is true even when two machines share an SoC. The CPU core temperature
sensor keys on an M1 Mac mini are different to those on an M1 MacBook
Pro, for example.

maintainers:
- James Calligeros <jcalligeros99@gmail.com>

$defs:
sensor:
type: object

properties:
apple,key-id:
$ref: /schemas/types.yaml#/definitions/string
pattern: "^[A-Za-z0-9]{4}$"
description: The SMC FourCC key of the desired sensor.
Must match the node's suffix.

label:
description: Human-readable name for the sensor

required:
- apple,key-id

properties:
compatible:
const: apple,smc-hwmon

patternProperties:
"^current-[A-Za-z0-9]{4}$":
$ref: "#/$defs/sensor"
unevaluatedProperties: false

"^fan-[A-Za-z0-9]{4}$":
$ref: "#/$defs/sensor"
unevaluatedProperties: false

properties:
apple,fan-minimum:
$ref: /schemas/types.yaml#/definitions/string
pattern: "^[A-Za-z0-9]{4}$"
description: SMC key containing the fan's minimum speed

apple,fan-maximum:
$ref: /schemas/types.yaml#/definitions/string
pattern: "^[A-Za-z0-9]{4}$"
description: SMC key containing the fan's maximum speed

apple,fan-target:
$ref: /schemas/types.yaml#/definitions/string
pattern: "^[A-Za-z0-9]{4}$"
description: Writeable endpoint for setting desired fan speed

apple,fan-mode:
$ref: /schemas/types.yaml#/definitions/string
pattern: "^[A-Za-z0-9]{4}$"
description: Writeable key to enable/disable manual fan control


"^power-[A-Za-z0-9]{4}$":
$ref: "#/$defs/sensor"
unevaluatedProperties: false

"^temperature-[A-Za-z0-9]{4}$":
$ref: "#/$defs/sensor"
unevaluatedProperties: false

"^voltage-[A-Za-z0-9]{4}$":
$ref: "#/$defs/sensor"
unevaluatedProperties: false

additionalProperties: false
45 changes: 45 additions & 0 deletions Documentation/devicetree/bindings/mfd/apple,smc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,12 @@ properties:
reboot:
$ref: /schemas/power/reset/apple,smc-reboot.yaml

rtc:
$ref: /schemas/rtc/apple,smc-rtc.yaml

hwmon:
$ref: /schemas/hwmon/apple,smc-hwmon.yaml

additionalProperties: false

required:
Expand Down Expand Up @@ -80,5 +86,44 @@ examples:
nvmem-cell-names = "shutdown_flag", "boot_stage",
"boot_error_count", "panic_count";
};
rtc {
compatible = "apple,smc-rtc";
nvmem-cells = <&rtc_offset>;
nvmem-cell-names = "rtc_offset";
};
hwmon {
compatible = "apple,smc-hwmon";
current-ID0R {
apple,key-id = "ID0R";
label = "AC Input Current";
};
fan-F0Ac {
apple,key-id = "F0Ac";
apple,fan-minimum = "F0Mn";
apple,fan-maximum = "F0Mx";
apple,fan-target = "F0Tg";
apple,fan-mode = "F0Md";
label = "Fan 1";
};
power-PSTR {
apple,key-id = "PSTR";
label = "Total System Power";
};
temperature-TW0P {
apple,key-id = "TW0P";
label = "WiFi/BT Module Temperature";
};
voltage-VD0R {
apple,key-id = "VD0R";
label = "AC Input Voltage";
};
};
};
};
51 changes: 48 additions & 3 deletions Documentation/devicetree/bindings/pci/apple,pcie.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,27 @@ properties:
power-domains:
maxItems: 1

patternProperties:
"^pci@":
$ref: /schemas/pci/pci-bus.yaml#
type: object
description: A single PCI root port

properties:
reg:
maxItems: 1

pwren-gpios:
description: Optional GPIO to power on the device
maxItems: 1

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

required:
- compatible
- reg
Expand Down Expand Up @@ -161,34 +182,58 @@ examples:
pinctrl-0 = <&pcie_pins>;
pinctrl-names = "default";
pci@0,0 {
port00: pci@0,0 {
device_type = "pci";
reg = <0x0 0x0 0x0 0x0 0x0>;
reset-gpios = <&pinctrl_ap 152 0>;
#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>;
};
pci@1,0 {
port01: pci@1,0 {
device_type = "pci";
reg = <0x800 0x0 0x0 0x0 0x0>;
reset-gpios = <&pinctrl_ap 153 0>;
#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>;
};
pci@2,0 {
port02: pci@2,0 {
device_type = "pci";
reg = <0x1000 0x0 0x0 0x0 0x0>;
reset-gpios = <&pinctrl_ap 33 0>;
#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>;
};
};
};
Loading