diff --git a/Documentation/devicetree/bindings/arm/apple.yaml b/Documentation/devicetree/bindings/arm/apple.yaml index f0061e05acbef..19972afe6eb3d 100644 --- a/Documentation/devicetree/bindings/arm/apple.yaml +++ b/Documentation/devicetree/bindings/arm/apple.yaml @@ -357,8 +357,8 @@ properties: - apple,j604 # MacBook Pro (14-inch, M4, 2024) - apple,j623 # iMac (24-inch, 2x USB-C, M4, 2024) - apple,j624 # iMac (24-inch, 4x USB-C, M4, 2024) - - apple,j713 # MacBook Air (13-inch, M3, 2025) - - apple,j715 # MacBook Air (15-inch, M3, 2025) + - apple,j713 # MacBook Air (13-inch, M4, 2025) + - apple,j715 # MacBook Air (15-inch, M4, 2025) - apple,j773g # Mac mini (M4, 2024) - const: apple,t8132 - const: apple,arm-platform diff --git a/Documentation/devicetree/bindings/clock/apple,pmgr-clocks.yaml b/Documentation/devicetree/bindings/clock/apple,pmgr-clocks.yaml new file mode 100644 index 0000000000000..ff2b04cec515b --- /dev/null +++ b/Documentation/devicetree/bindings/clock/apple,pmgr-clocks.yaml @@ -0,0 +1,104 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/clock/apple,pmgr-clocks.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Apple PMGR peripheral clock selectors + +maintainers: + - Ryan Murray <81541646+RyanTheTide@users.noreply.github.com> + +description: | + Peripheral input clocks managed by the SoC power manager. The clock + specifier is the SoC clock selector from the hardware description. It is + separate from a PMGR device/power-gate ID. Rates may change with performance + state and must not be represented as fixed clocks sampled at one boot. + The provider remains disabled until a generation-specific clock driver + can resolve selectors and coordinate ownership with firmware. + +select: + properties: + compatible: + contains: + enum: + - apple,t6041-pmgr-clocks + - apple,t8140-pmgr-clocks + - apple,t8132-pmgr-clocks + required: + - compatible + +allOf: + - if: + properties: + compatible: + contains: + enum: + - apple,t8132-pmgr-clocks + required: + - compatible + then: + properties: + compatible: + items: + - const: apple,t8132-pmgr-clocks + - const: apple,pmgr-clocks + + '#clock-cells': + const: 1 + + required: + - compatible + - '#clock-cells' + + additionalProperties: false + else: + properties: + compatible: + items: + - enum: + - apple,t6041-pmgr-clocks + - apple,t8140-pmgr-clocks + - const: apple,pmgr-clocks + + reg: + description: PMGR control apertures in hardware-description order. + minItems: 44 + maxItems: 63 + + '#clock-cells': + const: 1 + + apple,pmgr: + $ref: /schemas/types.yaml#/definitions/phandle + description: Primary PMGR syscon. Additional control banks are described by reg. + + required: + - reg + - compatible + - '#clock-cells' + - apple,pmgr + + allOf: + - if: + properties: + compatible: + contains: + const: apple,t6041-pmgr-clocks + then: + properties: + reg: + minItems: 63 + maxItems: 63 + - if: + properties: + compatible: + contains: + const: apple,t8140-pmgr-clocks + then: + properties: + reg: + minItems: 44 + maxItems: 44 + + additionalProperties: false diff --git a/Documentation/devicetree/bindings/crypto/apple,aes.yaml b/Documentation/devicetree/bindings/crypto/apple,aes.yaml new file mode 100644 index 0000000000000..ceedd32be134a --- /dev/null +++ b/Documentation/devicetree/bindings/crypto/apple,aes.yaml @@ -0,0 +1,103 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/crypto/apple,aes.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Apple AES engine + +maintainers: + - Ryan Murray <81541646+RyanTheTide@users.noreply.github.com> + +description: | + AES hardware attached to the SIO DART. The register banks are the + engine, shared control and auxiliary control windows, in that order. + +select: + properties: + compatible: + contains: + enum: + - apple,t6041-aes + - apple,t8140-aes + - apple,t8132-aes + required: + - compatible + +allOf: + - if: + properties: + compatible: + contains: + enum: + - apple,t8132-aes + required: + - compatible + then: + properties: + compatible: + items: + - enum: + - apple,t8132-aes + - const: apple,aes + + reg: + minItems: 3 + maxItems: 3 + + interrupts: + minItems: 1 + maxItems: 1 + + power-domains: + minItems: 1 + maxItems: 1 + + iommus: + minItems: 1 + maxItems: 1 + + required: + - compatible + - reg + - interrupts + - power-domains + - iommus + + additionalProperties: false + else: + properties: + compatible: + oneOf: + - items: + - const: apple,t6041-aes + - const: apple,aes + - items: + - const: apple,t8140-aes + - const: apple,aes + + reg: + minItems: 3 + maxItems: 3 + description: Register apertures in hardware-description order. + + interrupts: + minItems: 1 + maxItems: 1 + + power-domains: + minItems: 1 + maxItems: 1 + + iommus: + minItems: 1 + maxItems: 1 + + required: + - compatible + - reg + - interrupts + - power-domains + - iommus + + additionalProperties: false diff --git a/Documentation/devicetree/bindings/display/apple,dcp-expert.yaml b/Documentation/devicetree/bindings/display/apple,dcp-expert.yaml new file mode 100644 index 0000000000000..cf91ff82a2991 --- /dev/null +++ b/Documentation/devicetree/bindings/display/apple,dcp-expert.yaml @@ -0,0 +1,79 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/display/apple,dcp-expert.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Apple display expert control registers + +maintainers: + - Ryan Murray <81541646+RyanTheTide@users.noreply.github.com> + +description: | + Display control and timing register apertures associated with a display + coprocessor. These registers can be shared with firmware-owned display + blocks and must not be accessed without an ownership handoff. + +select: + properties: + compatible: + contains: + enum: + - apple,t6041-dcp-expert + - apple,t8140-dcp-expert + - apple,t8132-dcp-expert + required: + - compatible + +allOf: + - if: + properties: + compatible: + contains: + enum: + - apple,t8132-dcp-expert + required: + - compatible + then: + properties: + compatible: + items: + - enum: + - apple,t8132-dcp-expert + - const: apple,dcp-expert + + reg: + minItems: 2 + maxItems: 2 + + required: + - compatible + - reg + + additionalProperties: false + else: + properties: + compatible: + oneOf: + - items: + - const: apple,t6041-dcp-expert + - const: apple,dcp-expert + - items: + - const: apple,t8140-dcp-expert + - const: apple,dcp-expert + + reg: + minItems: 3 + maxItems: 17 + description: Register apertures in hardware-description order. + + interrupts: + minItems: 1 + maxItems: 1 + + required: + - compatible + - reg + - interrupts + + additionalProperties: false diff --git a/Documentation/devicetree/bindings/display/apple,dpin.yaml b/Documentation/devicetree/bindings/display/apple,dpin.yaml new file mode 100644 index 0000000000000..014f53b60bc82 --- /dev/null +++ b/Documentation/devicetree/bindings/display/apple,dpin.yaml @@ -0,0 +1,78 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/display/apple,dpin.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Apple DisplayPort tunnel ingress + +maintainers: + - Ryan Murray <81541646+RyanTheTide@users.noreply.github.com> + +description: | + DisplayPort ingress registers and interrupt for a USB4 display tunnel. + +select: + properties: + compatible: + contains: + enum: + - apple,t6041-dpin + - apple,t8132-dpin + required: + - compatible + +allOf: + - if: + properties: + compatible: + contains: + enum: + - apple,t8132-dpin + required: + - compatible + then: + properties: + compatible: + items: + - enum: + - apple,t8132-dpin + - const: apple,dpin + + reg: + minItems: 1 + maxItems: 1 + + interrupts: + minItems: 1 + maxItems: 1 + + required: + - compatible + - reg + - interrupts + + additionalProperties: false + else: + properties: + compatible: + oneOf: + - items: + - const: apple,t6041-dpin + - const: apple,dpin + + reg: + minItems: 1 + maxItems: 1 + description: Register apertures in hardware-description order. + + interrupts: + minItems: 1 + maxItems: 1 + + required: + - compatible + - reg + - interrupts + + additionalProperties: false diff --git a/Documentation/devicetree/bindings/dma/apple,pcie-piodma.yaml b/Documentation/devicetree/bindings/dma/apple,pcie-piodma.yaml new file mode 100644 index 0000000000000..dad43a69a71fe --- /dev/null +++ b/Documentation/devicetree/bindings/dma/apple,pcie-piodma.yaml @@ -0,0 +1,88 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/dma/apple,pcie-piodma.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Apple PCIe PIODMA engine + +maintainers: + - Ryan Murray <81541646+RyanTheTide@users.noreply.github.com> + +description: | + PCIe auxiliary DMA register banks and completion interrupt. The stream + is distinct from the PCIe endpoint streams in the same DART. + +select: + properties: + compatible: + contains: + enum: + - apple,t6041-pcie-piodma + - apple,t8132-pcie-piodma + required: + - compatible + +allOf: + - if: + properties: + compatible: + contains: + enum: + - apple,t8132-pcie-piodma + required: + - compatible + then: + properties: + compatible: + items: + - enum: + - apple,t8132-pcie-piodma + - const: apple,pcie-piodma + + reg: + minItems: 3 + maxItems: 3 + + interrupts: + minItems: 1 + maxItems: 1 + + iommus: + maxItems: 1 + + required: + - compatible + - reg + - interrupts + - iommus + + additionalProperties: false + else: + properties: + compatible: + oneOf: + - items: + - const: apple,t6041-pcie-piodma + - const: apple,pcie-piodma + + reg: + minItems: 3 + maxItems: 3 + description: Register apertures in hardware-description order. + + interrupts: + minItems: 1 + maxItems: 1 + + iommus: + minItems: 1 + maxItems: 1 + + required: + - compatible + - reg + - interrupts + - iommus + + additionalProperties: false diff --git a/Documentation/devicetree/bindings/dma/apple,pciec-piodma.yaml b/Documentation/devicetree/bindings/dma/apple,pciec-piodma.yaml new file mode 100644 index 0000000000000..560b49eb08159 --- /dev/null +++ b/Documentation/devicetree/bindings/dma/apple,pciec-piodma.yaml @@ -0,0 +1,88 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/dma/apple,pciec-piodma.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Apple PCIe tunnel PIODMA engine + +maintainers: + - Ryan Murray <81541646+RyanTheTide@users.noreply.github.com> + +description: | + PCIe tunnel auxiliary DMA register banks and completion interrupt. Its + stream is distinct from the tunnel endpoint streams in the same DART. + +select: + properties: + compatible: + contains: + enum: + - apple,t6041-pciec-piodma + - apple,t8132-pciec-piodma + required: + - compatible + +allOf: + - if: + properties: + compatible: + contains: + enum: + - apple,t8132-pciec-piodma + required: + - compatible + then: + properties: + compatible: + items: + - enum: + - apple,t8132-pciec-piodma + - const: apple,pciec-piodma + + reg: + minItems: 4 + maxItems: 4 + + interrupts: + minItems: 1 + maxItems: 1 + + iommus: + maxItems: 1 + + required: + - compatible + - reg + - interrupts + - iommus + + additionalProperties: false + else: + properties: + compatible: + oneOf: + - items: + - const: apple,t6041-pciec-piodma + - const: apple,pciec-piodma + + reg: + minItems: 4 + maxItems: 4 + description: Register apertures in hardware-description order. + + interrupts: + minItems: 1 + maxItems: 1 + + iommus: + minItems: 1 + maxItems: 1 + + required: + - compatible + - reg + - interrupts + - iommus + + additionalProperties: false diff --git a/Documentation/devicetree/bindings/iommu/apple,dapf.yaml b/Documentation/devicetree/bindings/iommu/apple,dapf.yaml new file mode 100644 index 0000000000000..d5637a060feb1 --- /dev/null +++ b/Documentation/devicetree/bindings/iommu/apple,dapf.yaml @@ -0,0 +1,43 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/iommu/apple,dapf.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Apple M4 base SoC DMA address protection filter + +maintainers: + - Ryan Murray <81541646+RyanTheTide@users.noreply.github.com> + +description: | + Hardware resources of the M4 base SoC DMA address protection filter. + The interface is described for discovery and must remain disabled until + its ownership, initialization and shutdown are supported. Register windows + are listed in hardware resource order; firmware configuration and tuning + data are supplied by the boot firmware rather than this binding. + +select: + properties: + compatible: + contains: + enum: + - apple,t8132-dapf + required: + - compatible + +properties: + compatible: + items: + - enum: + - apple,t8132-dapf + - const: apple,dapf + + reg: + minItems: 1 + maxItems: 1 + +required: + - compatible + - reg + +additionalProperties: false diff --git a/Documentation/devicetree/bindings/iommu/apple,dart-smmu.yaml b/Documentation/devicetree/bindings/iommu/apple,dart-smmu.yaml new file mode 100644 index 0000000000000..cc2e2382852bc --- /dev/null +++ b/Documentation/devicetree/bindings/iommu/apple,dart-smmu.yaml @@ -0,0 +1,43 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/iommu/apple,dart-smmu.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Apple M4 base SoC system MMU companion interface + +maintainers: + - Ryan Murray <81541646+RyanTheTide@users.noreply.github.com> + +description: | + Hardware resources of the M4 base SoC system MMU companion interface. + The interface is described for discovery and must remain disabled until + its ownership, initialization and shutdown are supported. Register windows + are listed in hardware resource order; firmware configuration and tuning + data are supplied by the boot firmware rather than this binding. + +select: + properties: + compatible: + contains: + enum: + - apple,t8132-dart-smmu + required: + - compatible + +properties: + compatible: + items: + - enum: + - apple,t8132-dart-smmu + - const: apple,dart-smmu + + reg: + minItems: 1 + maxItems: 1 + +required: + - compatible + - reg + +additionalProperties: false diff --git a/Documentation/devicetree/bindings/iommu/apple,gapf.yaml b/Documentation/devicetree/bindings/iommu/apple,gapf.yaml new file mode 100644 index 0000000000000..1dcf32e31c8e4 --- /dev/null +++ b/Documentation/devicetree/bindings/iommu/apple,gapf.yaml @@ -0,0 +1,43 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/iommu/apple,gapf.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Apple M4 base SoC global address protection filter + +maintainers: + - Ryan Murray <81541646+RyanTheTide@users.noreply.github.com> + +description: | + Hardware resources of the M4 base SoC global address protection filter. + The interface is described for discovery and must remain disabled until + its ownership, initialization and shutdown are supported. Register windows + are listed in hardware resource order; firmware configuration and tuning + data are supplied by the boot firmware rather than this binding. + +select: + properties: + compatible: + contains: + enum: + - apple,t8132-gapf + required: + - compatible + +properties: + compatible: + items: + - enum: + - apple,t8132-gapf + - const: apple,gapf + + reg: + minItems: 1 + maxItems: 1 + +required: + - compatible + - reg + +additionalProperties: false diff --git a/Documentation/devicetree/bindings/media/apple,jpeg.yaml b/Documentation/devicetree/bindings/media/apple,jpeg.yaml index 056e1d33c00fd..7dab8e2586674 100644 --- a/Documentation/devicetree/bindings/media/apple,jpeg.yaml +++ b/Documentation/devicetree/bindings/media/apple,jpeg.yaml @@ -19,61 +19,118 @@ description: | the engine's 32-bit buffer pointer registers. T8140 engines take 64-bit buffer addresses and use their DART's full window. -properties: - compatible: - enum: - - apple,t6041-jpeg - - apple,t8140-jpeg - - reg: - maxItems: 1 - - interrupts: - maxItems: 1 - - iommus: - maxItems: 1 - - power-domains: - minItems: 1 - items: - - description: The engine's power domain - - description: Performance request held while the engine works - - power-domain-names: - minItems: 1 - items: - - const: core - - const: perf - - apple,dma-range: - $ref: /schemas/types.yaml#/definitions/uint64-array - items: - - const: 0x10000000000 - - const: 0x100000000 - description: Device-visible DMA window, as a 64-bit base and size. - Only for engines with 32-bit buffer pointers. - -required: - - compatible - - reg - - interrupts - - iommus - - power-domains +select: + properties: + compatible: + contains: + enum: + - apple,t6041-jpeg + - apple,t8140-jpeg + - apple,t8132-jpeg + required: + - compatible allOf: - if: properties: compatible: - const: apple,t6041-jpeg + contains: + enum: + - apple,t8132-jpeg + required: + - compatible then: + properties: + compatible: + items: + - enum: + - apple,t8132-jpeg + - const: apple,jpeg + + reg: + minItems: 1 + maxItems: 1 + + interrupts: + minItems: 1 + maxItems: 1 + + power-domains: + minItems: 1 + maxItems: 1 + + iommus: + minItems: 1 + maxItems: 1 + + clocks: + minItems: 1 + maxItems: 2 + required: - - apple,dma-range + - compatible + - reg + - interrupts + - power-domains + - iommus + + additionalProperties: false else: properties: - apple,dma-range: false + compatible: + enum: + - apple,t6041-jpeg + - apple,t8140-jpeg + + reg: + maxItems: 1 + + interrupts: + maxItems: 1 + + iommus: + maxItems: 1 + + power-domains: + minItems: 1 + items: + - description: The engine's power domain + - description: Performance request held while the engine works + + power-domain-names: + minItems: 1 + items: + - const: core + - const: perf + + apple,dma-range: + $ref: /schemas/types.yaml#/definitions/uint64-array + items: + - const: 0x10000000000 + - const: 0x100000000 + description: Device-visible DMA window, as a 64-bit base and size. + Only for engines with 32-bit buffer pointers. -additionalProperties: false + required: + - compatible + - reg + - interrupts + - iommus + - power-domains + + allOf: + - if: + properties: + compatible: + const: apple,t6041-jpeg + then: + required: + - apple,dma-range + else: + properties: + apple,dma-range: false + + additionalProperties: false examples: - | diff --git a/Documentation/devicetree/bindings/media/apple,prores.yaml b/Documentation/devicetree/bindings/media/apple,prores.yaml index 07afac17ef2ee..1774c4c2ccef1 100644 --- a/Documentation/devicetree/bindings/media/apple,prores.yaml +++ b/Documentation/devicetree/bindings/media/apple,prores.yaml @@ -14,51 +14,103 @@ description: | descriptors in a DMA ring; the engine signals completion with an interrupt. It has no firmware. Its power domain also resets it. -properties: - compatible: - const: apple,t8140-prores - - reg: - items: - - description: Engine registers - - description: Wrapper registers - - reg-names: - items: - - const: core - - const: wrapper - - interrupts: - minItems: 1 - maxItems: 2 - - iommus: - maxItems: 1 - - power-domains: - minItems: 1 - items: - - description: The engine's power domain - - description: Performance request held while the engine works - - power-domain-names: - minItems: 1 - items: - - const: core - - const: perf - - resets: - maxItems: 1 - -required: - - compatible - - reg - - reg-names - - interrupts - - iommus - - power-domains - -additionalProperties: false +select: + properties: + compatible: + contains: + enum: + - apple,t8140-prores + - apple,t8132-prores + required: + - compatible + +allOf: + - if: + properties: + compatible: + contains: + enum: + - apple,t8132-prores + required: + - compatible + then: + properties: + compatible: + items: + - enum: + - apple,t8132-prores + - const: apple,prores + + reg: + minItems: 3 + maxItems: 3 + + interrupts: + minItems: 2 + maxItems: 2 + + power-domains: + minItems: 1 + maxItems: 1 + + iommus: + minItems: 1 + maxItems: 1 + + required: + - compatible + - reg + - interrupts + - power-domains + - iommus + + additionalProperties: false + else: + properties: + compatible: + const: apple,t8140-prores + + reg: + items: + - description: Engine registers + - description: Wrapper registers + + reg-names: + items: + - const: core + - const: wrapper + + interrupts: + minItems: 1 + maxItems: 2 + + iommus: + maxItems: 1 + + power-domains: + minItems: 1 + items: + - description: The engine's power domain + - description: Performance request held while the engine works + + power-domain-names: + minItems: 1 + items: + - const: core + - const: perf + + resets: + maxItems: 1 + + required: + - compatible + - reg + - reg-names + - interrupts + - iommus + - power-domains + + additionalProperties: false examples: - | diff --git a/Documentation/devicetree/bindings/media/apple,scaler.yaml b/Documentation/devicetree/bindings/media/apple,scaler.yaml new file mode 100644 index 0000000000000..a1d21526658dd --- /dev/null +++ b/Documentation/devicetree/bindings/media/apple,scaler.yaml @@ -0,0 +1,117 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/media/apple,scaler.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Apple image scaler + +maintainers: + - Ryan Murray <81541646+RyanTheTide@users.noreply.github.com> + +description: | + The image scaler and its companion DMA registers. The two DART streams + carry image data and PIODMA transfers. Firmware performance votes are + not fixed clock rates and are not encoded as clock-frequency values. + +select: + properties: + compatible: + contains: + enum: + - apple,t6041-scaler + - apple,t8140-scaler + - apple,t8132-scaler + required: + - compatible + +allOf: + - if: + properties: + compatible: + contains: + enum: + - apple,t8132-scaler + required: + - compatible + then: + properties: + compatible: + items: + - enum: + - apple,t8132-scaler + - const: apple,scaler + + reg: + minItems: 4 + maxItems: 4 + + interrupts: + minItems: 2 + maxItems: 2 + + power-domains: + minItems: 1 + maxItems: 2 + + iommus: + minItems: 1 + maxItems: 2 + + clocks: + minItems: 1 + maxItems: 1 + + required: + - compatible + - reg + - interrupts + - power-domains + - iommus + + additionalProperties: false + else: + properties: + compatible: + oneOf: + - items: + - const: apple,t6041-scaler + - const: apple,scaler + - items: + - const: apple,t8140-scaler + - const: apple,scaler + + reg: + minItems: 4 + maxItems: 4 + description: Register apertures in hardware-description order. + + interrupts: + minItems: 2 + maxItems: 2 + + power-domains: + minItems: 2 + maxItems: 2 + + iommus: + minItems: 2 + maxItems: 2 + + clocks: + minItems: 1 + maxItems: 1 + + resets: + maxItems: 1 + + required: + - compatible + - reg + - interrupts + - power-domains + - resets + - iommus + - clocks + + additionalProperties: false diff --git a/Documentation/devicetree/bindings/media/apple,t8140-ave.yaml b/Documentation/devicetree/bindings/media/apple,t8140-ave.yaml index dadb98b19f822..dd37dd32447b0 100644 --- a/Documentation/devicetree/bindings/media/apple,t8140-ave.yaml +++ b/Documentation/devicetree/bindings/media/apple,t8140-ave.yaml @@ -14,67 +14,126 @@ description: | preloaded by the bootloader. Its two DART instances translate the same stream. The bootloader supplies two reserved firmware regions and their IOVA mappings. -properties: - compatible: - enum: - - apple,t6000-ave - - apple,t6041-ave - - apple,t8112-ave - - apple,t8140-ave - - reg: - items: - - description: Codec registers - - description: Mailbox registers - - description: Coprocessor registers - - reg-names: - items: - - const: codec - - const: mailbox - - const: coproc - - interrupts: - items: - - description: Mailbox, raised when the firmware posts to a host ring - - description: Codec interrupt handled by the firmware - - description: Codec interrupt handled by the firmware - - description: Codec interrupt handled by the firmware - - description: Codec interrupt handled by the firmware - - power-domains: - minItems: 5 - maxItems: 6 - - power-domain-names: - minItems: 5 - items: - - const: dma - - const: pipe4 - - const: pipe5 - - const: me0 - - const: me1 - - const: perf - description: | - A performance floor the encoder needs to run at full speed, held - while the encoder is powered (for example the SoC rail floor of a - PMC). - - iommus: - maxItems: 2 - - memory-region: - items: - - description: Preloaded firmware text - - description: Preloaded firmware data - -required: - - compatible - - reg - - reg-names - - interrupts - - power-domains - - power-domain-names - - iommus - -additionalProperties: false +select: + properties: + compatible: + contains: + enum: + - apple,t6000-ave + - apple,t6041-ave + - apple,t8112-ave + - apple,t8140-ave + - apple,t8132-ave + required: + - compatible + +allOf: + - if: + properties: + compatible: + contains: + enum: + - apple,t8132-ave + required: + - compatible + then: + properties: + compatible: + items: + - enum: + - apple,t8132-ave + - const: apple,ave + + reg: + minItems: 5 + maxItems: 5 + + interrupts: + minItems: 5 + maxItems: 5 + + power-domains: + minItems: 1 + maxItems: 6 + + iommus: + minItems: 1 + maxItems: 2 + + clocks: + minItems: 1 + maxItems: 1 + + required: + - compatible + - reg + - interrupts + - power-domains + - iommus + + additionalProperties: false + else: + properties: + compatible: + enum: + - apple,t6000-ave + - apple,t6041-ave + - apple,t8112-ave + - apple,t8140-ave + + reg: + items: + - description: Codec registers + - description: Mailbox registers + - description: Coprocessor registers + + reg-names: + items: + - const: codec + - const: mailbox + - const: coproc + + interrupts: + items: + - description: Mailbox, raised when the firmware posts to a host ring + - description: Codec interrupt handled by the firmware + - description: Codec interrupt handled by the firmware + - description: Codec interrupt handled by the firmware + - description: Codec interrupt handled by the firmware + + power-domains: + minItems: 5 + maxItems: 6 + + power-domain-names: + minItems: 5 + items: + - const: dma + - const: pipe4 + - const: pipe5 + - const: me0 + - const: me1 + - const: perf + description: | + A performance floor the encoder needs to run at full speed, held + while the encoder is powered (for example the SoC rail floor of a + PMC). + + iommus: + maxItems: 2 + + memory-region: + items: + - description: Preloaded firmware text + - description: Preloaded firmware data + + required: + - compatible + - reg + - reg-names + - interrupts + - power-domains + - power-domain-names + - iommus + + additionalProperties: false diff --git a/Documentation/devicetree/bindings/pwm/apple,pwm.yaml b/Documentation/devicetree/bindings/pwm/apple,pwm.yaml new file mode 100644 index 0000000000000..280a017a63018 --- /dev/null +++ b/Documentation/devicetree/bindings/pwm/apple,pwm.yaml @@ -0,0 +1,53 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pwm/apple,pwm.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Apple M4 base SoC PWM controller + +maintainers: + - Ryan Murray <81541646+RyanTheTide@users.noreply.github.com> + +description: | + Hardware resources of the M4 base SoC PWM controller. + The interface is described for discovery and must remain disabled until + its ownership, initialization and shutdown are supported. Register windows + are listed in hardware resource order; firmware configuration and tuning + data are supplied by the boot firmware rather than this binding. + +select: + properties: + compatible: + contains: + enum: + - apple,t8132-pwm + required: + - compatible + +properties: + compatible: + items: + - enum: + - apple,t8132-pwm + - const: apple,pwm + + reg: + minItems: 1 + maxItems: 1 + + interrupts: + minItems: 1 + maxItems: 1 + + power-domains: + minItems: 1 + maxItems: 1 + +required: + - compatible + - reg + - interrupts + - power-domains + +additionalProperties: false diff --git a/Documentation/devicetree/bindings/soc/apple/apple,aft.yaml b/Documentation/devicetree/bindings/soc/apple/apple,aft.yaml new file mode 100644 index 0000000000000..b2aefbcf15fad --- /dev/null +++ b/Documentation/devicetree/bindings/soc/apple/apple,aft.yaml @@ -0,0 +1,43 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/soc/apple/apple,aft.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Apple M4 base SoC fabric trace interface + +maintainers: + - Ryan Murray <81541646+RyanTheTide@users.noreply.github.com> + +description: | + Hardware resources of the M4 base SoC fabric trace interface. + The interface is described for discovery and must remain disabled until + its ownership, initialization and shutdown are supported. Register windows + are listed in hardware resource order; firmware configuration and tuning + data are supplied by the boot firmware rather than this binding. + +select: + properties: + compatible: + contains: + enum: + - apple,t8132-aft + required: + - compatible + +properties: + compatible: + items: + - enum: + - apple,t8132-aft + - const: apple,aft + + reg: + minItems: 1 + maxItems: 1 + +required: + - compatible + - reg + +additionalProperties: false diff --git a/Documentation/devicetree/bindings/soc/apple/apple,aon-ptd.yaml b/Documentation/devicetree/bindings/soc/apple/apple,aon-ptd.yaml new file mode 100644 index 0000000000000..538f63aa4e13d --- /dev/null +++ b/Documentation/devicetree/bindings/soc/apple/apple,aon-ptd.yaml @@ -0,0 +1,103 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/soc/apple/apple,aon-ptd.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Apple always-on power telemetry interrupt router + +maintainers: + - Ryan Murray <81541646+RyanTheTide@users.noreply.github.com> + +description: | + Always-on power telemetry register banks and upstream interrupts. The + firmware owns the telemetry data and interrupt routing at boot. + +select: + properties: + compatible: + contains: + enum: + - apple,t6041-aon-ptd + - apple,t8140-aon-ptd + - apple,t8132-aon-ptd + required: + - compatible + +allOf: + - if: + properties: + compatible: + contains: + enum: + - apple,t8132-aon-ptd + required: + - compatible + then: + properties: + compatible: + items: + - enum: + - apple,t8132-aon-ptd + - const: apple,aon-ptd + + reg: + minItems: 4 + maxItems: 4 + + interrupts: + minItems: 32 + maxItems: 32 + + '#address-cells': + const: 0 + '#interrupt-cells': + const: 1 + interrupt-controller: true + + required: + - compatible + - reg + - interrupts + - interrupt-controller + - '#interrupt-cells' + - '#address-cells' + + additionalProperties: false + else: + properties: + compatible: + oneOf: + - items: + - const: apple,t6041-aon-ptd + - const: apple,aon-ptd + - items: + - const: apple,t8140-aon-ptd + - const: apple,aon-ptd + + reg: + minItems: 4 + maxItems: 4 + description: Register apertures in hardware-description order. + + interrupts: + minItems: 32 + maxItems: 32 + + interrupt-controller: true + + '#interrupt-cells': + description: Firmware telemetry source identifier, plus flags on T8140. + enum: [1, 2] + + '#address-cells': + const: 0 + + required: + - compatible + - reg + - interrupts + - interrupt-controller + - '#interrupt-cells' + + additionalProperties: false diff --git a/Documentation/devicetree/bindings/soc/apple/apple,cpu-debug.yaml b/Documentation/devicetree/bindings/soc/apple/apple,cpu-debug.yaml new file mode 100644 index 0000000000000..6c02a181939f5 --- /dev/null +++ b/Documentation/devicetree/bindings/soc/apple/apple,cpu-debug.yaml @@ -0,0 +1,79 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/soc/apple/apple,cpu-debug.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Apple processor debug interface + +maintainers: + - Ryan Murray <81541646+RyanTheTide@users.noreply.github.com> + +description: | + Processor debug register apertures. Access ownership must be established + before a debugger accesses this block. + +select: + properties: + compatible: + contains: + enum: + - apple,t6041-cpu-debug + - apple,t8132-cpu-debug + required: + - compatible + +allOf: + - if: + properties: + compatible: + contains: + enum: + - apple,t8132-cpu-debug + required: + - compatible + then: + properties: + compatible: + items: + - enum: + - apple,t8132-cpu-debug + - const: apple,cpu-debug + + reg: + minItems: 2 + maxItems: 2 + + interrupts: + minItems: 1 + maxItems: 1 + + required: + - compatible + - reg + - interrupts + + additionalProperties: false + else: + properties: + compatible: + oneOf: + - items: + - const: apple,t6041-cpu-debug + - const: apple,cpu-debug + + reg: + minItems: 2 + maxItems: 2 + description: Register apertures in hardware-description order. + + interrupts: + minItems: 1 + maxItems: 1 + + required: + - compatible + - reg + - interrupts + + additionalProperties: false diff --git a/Documentation/devicetree/bindings/soc/apple/apple,dwi.yaml b/Documentation/devicetree/bindings/soc/apple/apple,dwi.yaml new file mode 100644 index 0000000000000..dd73483d7edf4 --- /dev/null +++ b/Documentation/devicetree/bindings/soc/apple/apple,dwi.yaml @@ -0,0 +1,93 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/soc/apple/apple,dwi.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Apple DWI controller + +maintainers: + - Ryan Murray <81541646+RyanTheTide@users.noreply.github.com> + +description: | + DWI hardware register window and interrupt. Register programming and + firmware ownership must be qualified before enabling the controller. + +select: + properties: + compatible: + contains: + enum: + - apple,t6041-dwi + - apple,t8140-dwi + - apple,t8132-dwi + required: + - compatible + +allOf: + - if: + properties: + compatible: + contains: + enum: + - apple,t8132-dwi + required: + - compatible + then: + properties: + compatible: + items: + - enum: + - apple,t8132-dwi + - const: apple,dwi + + reg: + minItems: 1 + maxItems: 1 + + interrupts: + minItems: 1 + maxItems: 1 + + power-domains: + minItems: 1 + maxItems: 1 + + required: + - compatible + - reg + - interrupts + - power-domains + + additionalProperties: false + else: + properties: + compatible: + oneOf: + - items: + - const: apple,t6041-dwi + - const: apple,dwi + - items: + - const: apple,t8140-dwi + - const: apple,dwi + + reg: + minItems: 1 + maxItems: 1 + description: Register apertures in hardware-description order. + + interrupts: + minItems: 1 + maxItems: 1 + + power-domains: + minItems: 1 + maxItems: 1 + + required: + - compatible + - reg + - interrupts + - power-domains + + additionalProperties: false diff --git a/Documentation/devicetree/bindings/spmi/apple,spmi.yaml b/Documentation/devicetree/bindings/spmi/apple,spmi.yaml index 0b35a017bb808..9bd5d535a0fc2 100644 --- a/Documentation/devicetree/bindings/spmi/apple,spmi.yaml +++ b/Documentation/devicetree/bindings/spmi/apple,spmi.yaml @@ -39,7 +39,11 @@ properties: - const: apple,t8142-spmi reg: - maxItems: 1 + minItems: 1 + items: + - description: SPMI command interface + - description: SPMI interrupt interface + - description: SPMI auxiliary interface interrupts: maxItems: 1 diff --git a/arch/arm64/boot/dts/apple/t8132-j604-audio.dtsi b/arch/arm64/boot/dts/apple/t8132-j604-audio.dtsi new file mode 100644 index 0000000000000..87f67b94c6cdc --- /dev/null +++ b/arch/arm64/boot/dts/apple/t8132-j604-audio.dtsi @@ -0,0 +1,84 @@ +// SPDX-License-Identifier: GPL-2.0+ OR MIT +/* J604 audio endpoints. Routing and protection qualification remain separate. */ + +#include +#include + +/ { + speaker_sdz: regulator-speaker-sdz { + compatible = "regulator-fixed"; + regulator-name = "speaker-sdz"; + gpios = <&pinctrl_ap 15 GPIO_ACTIVE_HIGH>; + enable-active-high; + status = "disabled"; + }; +}; + +&i2c1 { + jack_codec: codec@4b { + compatible = "cirrus,cs42l84"; + reg = <0x4b>; + reset-gpios = <&pinctrl_nub 17 GPIO_ACTIVE_HIGH>; + interrupts-extended = <&pinctrl_ap 98 IRQ_TYPE_LEVEL_LOW>; + #sound-dai-cells = <0>; + status = "disabled"; + }; +}; + +&i2c3 { + audio_speaker: codec@38 { + compatible = "ti,sn012776", "ti,tas2764"; + reg = <0x38>; + SDZ-supply = <&speaker_sdz>; + apple,sdz-group-fail-closed; + #sound-dai-cells = <0>; + interrupts-extended = <&pinctrl_ap 14 IRQ_TYPE_LEVEL_LOW>; + status = "disabled"; + }; + + audio_speaker_left_woofer_2: codec@39 { + compatible = "ti,sn012776", "ti,tas2764"; + reg = <0x39>; + SDZ-supply = <&speaker_sdz>; + apple,sdz-group-fail-closed; + #sound-dai-cells = <0>; + status = "disabled"; + }; + + audio_speaker_left_tweeter: codec@3a { + compatible = "ti,sn012776", "ti,tas2764"; + reg = <0x3a>; + SDZ-supply = <&speaker_sdz>; + apple,sdz-group-fail-closed; + #sound-dai-cells = <0>; + status = "disabled"; + }; + + audio_speaker_right_woofer_1: codec@3b { + compatible = "ti,sn012776", "ti,tas2764"; + reg = <0x3b>; + SDZ-supply = <&speaker_sdz>; + apple,sdz-group-fail-closed; + #sound-dai-cells = <0>; + status = "disabled"; + }; + + audio_speaker_right_woofer_2: codec@3c { + compatible = "ti,sn012776", "ti,tas2764"; + reg = <0x3c>; + SDZ-supply = <&speaker_sdz>; + apple,sdz-group-fail-closed; + #sound-dai-cells = <0>; + status = "disabled"; + }; + + audio_speaker_right_tweeter: codec@3d { + compatible = "ti,sn012776", "ti,tas2764"; + reg = <0x3d>; + SDZ-supply = <&speaker_sdz>; + apple,sdz-group-fail-closed; + #sound-dai-cells = <0>; + status = "disabled"; + }; + +}; diff --git a/arch/arm64/boot/dts/apple/t8132-j604.dts b/arch/arm64/boot/dts/apple/t8132-j604.dts index 8a065a6f47a7b..53ecd0e644b15 100644 --- a/arch/arm64/boot/dts/apple/t8132-j604.dts +++ b/arch/arm64/boot/dts/apple/t8132-j604.dts @@ -34,3 +34,21 @@ &fpwm1 { status = "okay"; }; + +/* + * CPU DVFS and deep idle, as on the J713. This machine has a fan, so + * it does not need the board thermal owner the fanless Airs wait for. + */ +&cpufreq_e { + status = "okay"; +}; + +&cpufreq_p { + status = "okay"; +}; + +&cpuidle { + status = "okay"; +}; + +#include "t8132-j604-audio.dtsi" diff --git a/arch/arm64/boot/dts/apple/t8132-j623-audio.dtsi b/arch/arm64/boot/dts/apple/t8132-j623-audio.dtsi new file mode 100644 index 0000000000000..a2ac5784d78c9 --- /dev/null +++ b/arch/arm64/boot/dts/apple/t8132-j623-audio.dtsi @@ -0,0 +1,66 @@ +// SPDX-License-Identifier: GPL-2.0+ OR MIT +/* J623 audio endpoints. Routing and protection qualification remain separate. */ + +#include +#include + +/ { + speaker_sdz: regulator-speaker-sdz { + compatible = "regulator-fixed"; + regulator-name = "speaker-sdz"; + gpios = <&pinctrl_ap 15 GPIO_ACTIVE_HIGH>; + enable-active-high; + status = "disabled"; + }; +}; + +&i2c1 { + jack_codec: codec@4b { + compatible = "cirrus,cs42l84"; + reg = <0x4b>; + reset-gpios = <&pinctrl_nub 17 GPIO_ACTIVE_HIGH>; + interrupts-extended = <&pinctrl_ap 98 IRQ_TYPE_LEVEL_LOW>; + #sound-dai-cells = <0>; + status = "disabled"; + }; +}; + +&i2c3 { + audio_speaker: codec@38 { + compatible = "ti,sn012776", "ti,tas2764"; + reg = <0x38>; + SDZ-supply = <&speaker_sdz>; + apple,sdz-group-fail-closed; + #sound-dai-cells = <0>; + interrupts-extended = <&pinctrl_ap 14 IRQ_TYPE_LEVEL_LOW>; + status = "disabled"; + }; + + audio_speaker_left_tweeter: codec@39 { + compatible = "ti,sn012776", "ti,tas2764"; + reg = <0x39>; + SDZ-supply = <&speaker_sdz>; + apple,sdz-group-fail-closed; + #sound-dai-cells = <0>; + status = "disabled"; + }; + + audio_speaker_right_woofer: codec@3b { + compatible = "ti,sn012776", "ti,tas2764"; + reg = <0x3b>; + SDZ-supply = <&speaker_sdz>; + apple,sdz-group-fail-closed; + #sound-dai-cells = <0>; + status = "disabled"; + }; + + audio_speaker_right_tweeter: codec@3c { + compatible = "ti,sn012776", "ti,tas2764"; + reg = <0x3c>; + SDZ-supply = <&speaker_sdz>; + apple,sdz-group-fail-closed; + #sound-dai-cells = <0>; + status = "disabled"; + }; + +}; diff --git a/arch/arm64/boot/dts/apple/t8132-j623.dts b/arch/arm64/boot/dts/apple/t8132-j623.dts index 9b94a6ae74a20..da4718bceeafb 100644 --- a/arch/arm64/boot/dts/apple/t8132-j623.dts +++ b/arch/arm64/boot/dts/apple/t8132-j623.dts @@ -17,3 +17,21 @@ model = "Apple iMac (24-inch, 2x USB-C, M4, 2024)"; chassis-type = "all-in-one"; }; + +/* + * CPU DVFS and deep idle, as on the J713. This machine has a fan, so + * it does not need the board thermal owner the fanless Airs wait for. + */ +&cpufreq_e { + status = "okay"; +}; + +&cpufreq_p { + status = "okay"; +}; + +&cpuidle { + status = "okay"; +}; + +#include "t8132-j623-audio.dtsi" diff --git a/arch/arm64/boot/dts/apple/t8132-j624-audio.dtsi b/arch/arm64/boot/dts/apple/t8132-j624-audio.dtsi new file mode 100644 index 0000000000000..a7f91b5276e63 --- /dev/null +++ b/arch/arm64/boot/dts/apple/t8132-j624-audio.dtsi @@ -0,0 +1,66 @@ +// SPDX-License-Identifier: GPL-2.0+ OR MIT +/* J624 audio endpoints. Routing and protection qualification remain separate. */ + +#include +#include + +/ { + speaker_sdz: regulator-speaker-sdz { + compatible = "regulator-fixed"; + regulator-name = "speaker-sdz"; + gpios = <&pinctrl_ap 15 GPIO_ACTIVE_HIGH>; + enable-active-high; + status = "disabled"; + }; +}; + +&i2c1 { + jack_codec: codec@4b { + compatible = "cirrus,cs42l84"; + reg = <0x4b>; + reset-gpios = <&pinctrl_nub 17 GPIO_ACTIVE_HIGH>; + interrupts-extended = <&pinctrl_ap 98 IRQ_TYPE_LEVEL_LOW>; + #sound-dai-cells = <0>; + status = "disabled"; + }; +}; + +&i2c3 { + audio_speaker: codec@38 { + compatible = "ti,sn012776", "ti,tas2764"; + reg = <0x38>; + SDZ-supply = <&speaker_sdz>; + apple,sdz-group-fail-closed; + #sound-dai-cells = <0>; + interrupts-extended = <&pinctrl_ap 14 IRQ_TYPE_LEVEL_LOW>; + status = "disabled"; + }; + + audio_speaker_left_tweeter: codec@39 { + compatible = "ti,sn012776", "ti,tas2764"; + reg = <0x39>; + SDZ-supply = <&speaker_sdz>; + apple,sdz-group-fail-closed; + #sound-dai-cells = <0>; + status = "disabled"; + }; + + audio_speaker_right_woofer: codec@3b { + compatible = "ti,sn012776", "ti,tas2764"; + reg = <0x3b>; + SDZ-supply = <&speaker_sdz>; + apple,sdz-group-fail-closed; + #sound-dai-cells = <0>; + status = "disabled"; + }; + + audio_speaker_right_tweeter: codec@3c { + compatible = "ti,sn012776", "ti,tas2764"; + reg = <0x3c>; + SDZ-supply = <&speaker_sdz>; + apple,sdz-group-fail-closed; + #sound-dai-cells = <0>; + status = "disabled"; + }; + +}; diff --git a/arch/arm64/boot/dts/apple/t8132-j624.dts b/arch/arm64/boot/dts/apple/t8132-j624.dts index 37e1a46f89b84..a832eb3c61aa0 100644 --- a/arch/arm64/boot/dts/apple/t8132-j624.dts +++ b/arch/arm64/boot/dts/apple/t8132-j624.dts @@ -17,3 +17,21 @@ model = "Apple iMac (24-inch, 4x USB-C, M4, 2024)"; chassis-type = "all-in-one"; }; + +/* + * CPU DVFS and deep idle, as on the J713. This machine has a fan, so + * it does not need the board thermal owner the fanless Airs wait for. + */ +&cpufreq_e { + status = "okay"; +}; + +&cpufreq_p { + status = "okay"; +}; + +&cpuidle { + status = "okay"; +}; + +#include "t8132-j624-audio.dtsi" diff --git a/arch/arm64/boot/dts/apple/t8132-j715-audio.dtsi b/arch/arm64/boot/dts/apple/t8132-j715-audio.dtsi new file mode 100644 index 0000000000000..55d87d672de6b --- /dev/null +++ b/arch/arm64/boot/dts/apple/t8132-j715-audio.dtsi @@ -0,0 +1,84 @@ +// SPDX-License-Identifier: GPL-2.0+ OR MIT +/* J715 audio endpoints. Routing and protection qualification remain separate. */ + +#include +#include + +/ { + speaker_sdz: regulator-speaker-sdz { + compatible = "regulator-fixed"; + regulator-name = "speaker-sdz"; + gpios = <&pinctrl_ap 15 GPIO_ACTIVE_HIGH>; + enable-active-high; + status = "disabled"; + }; +}; + +&i2c1 { + jack_codec: codec@4b { + compatible = "cirrus,cs42l84"; + reg = <0x4b>; + reset-gpios = <&pinctrl_nub 17 GPIO_ACTIVE_HIGH>; + interrupts-extended = <&pinctrl_ap 98 IRQ_TYPE_LEVEL_LOW>; + #sound-dai-cells = <0>; + status = "disabled"; + }; +}; + +&i2c3 { + audio_speaker: codec@38 { + compatible = "ti,sn012776", "ti,tas2764"; + reg = <0x38>; + SDZ-supply = <&speaker_sdz>; + apple,sdz-group-fail-closed; + #sound-dai-cells = <0>; + interrupts-extended = <&pinctrl_ap 14 IRQ_TYPE_LEVEL_LOW>; + status = "disabled"; + }; + + audio_speaker_left_woofer_2: codec@3a { + compatible = "ti,sn012776", "ti,tas2764"; + reg = <0x3a>; + SDZ-supply = <&speaker_sdz>; + apple,sdz-group-fail-closed; + #sound-dai-cells = <0>; + status = "disabled"; + }; + + audio_speaker_left_tweeter: codec@39 { + compatible = "ti,sn012776", "ti,tas2764"; + reg = <0x39>; + SDZ-supply = <&speaker_sdz>; + apple,sdz-group-fail-closed; + #sound-dai-cells = <0>; + status = "disabled"; + }; + + audio_speaker_right_woofer_1: codec@3b { + compatible = "ti,sn012776", "ti,tas2764"; + reg = <0x3b>; + SDZ-supply = <&speaker_sdz>; + apple,sdz-group-fail-closed; + #sound-dai-cells = <0>; + status = "disabled"; + }; + + audio_speaker_right_woofer_2: codec@3d { + compatible = "ti,sn012776", "ti,tas2764"; + reg = <0x3d>; + SDZ-supply = <&speaker_sdz>; + apple,sdz-group-fail-closed; + #sound-dai-cells = <0>; + status = "disabled"; + }; + + audio_speaker_right_tweeter: codec@3c { + compatible = "ti,sn012776", "ti,tas2764"; + reg = <0x3c>; + SDZ-supply = <&speaker_sdz>; + apple,sdz-group-fail-closed; + #sound-dai-cells = <0>; + status = "disabled"; + }; + +}; diff --git a/arch/arm64/boot/dts/apple/t8132-j715.dts b/arch/arm64/boot/dts/apple/t8132-j715.dts index 1a387d273e8ff..4b66f453b71da 100644 --- a/arch/arm64/boot/dts/apple/t8132-j715.dts +++ b/arch/arm64/boot/dts/apple/t8132-j715.dts @@ -34,3 +34,5 @@ &fpwm1 { status = "okay"; }; + +#include "t8132-j715-audio.dtsi" diff --git a/arch/arm64/boot/dts/apple/t8132-j773g-audio.dtsi b/arch/arm64/boot/dts/apple/t8132-j773g-audio.dtsi new file mode 100644 index 0000000000000..32131af267c34 --- /dev/null +++ b/arch/arm64/boot/dts/apple/t8132-j773g-audio.dtsi @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: GPL-2.0+ OR MIT +/* J773G audio endpoints. Routing and protection qualification remain separate. */ + +#include +#include + +/ { + speaker_sdz: regulator-speaker-sdz { + compatible = "regulator-fixed"; + regulator-name = "speaker-sdz"; + gpios = <&pinctrl_ap 15 GPIO_ACTIVE_HIGH>; + enable-active-high; + status = "disabled"; + }; +}; + +&i2c1 { + jack_codec: codec@4b { + compatible = "cirrus,cs42l84"; + reg = <0x4b>; + reset-gpios = <&pinctrl_nub 17 GPIO_ACTIVE_HIGH>; + interrupts-extended = <&pinctrl_ap 98 IRQ_TYPE_LEVEL_LOW>; + #sound-dai-cells = <0>; + status = "disabled"; + }; +}; + +&i2c3 { + audio_speaker: codec@38 { + compatible = "ti,sn012776", "ti,tas2764"; + reg = <0x38>; + SDZ-supply = <&speaker_sdz>; + apple,sdz-group-fail-closed; + #sound-dai-cells = <0>; + interrupts-extended = <&pinctrl_ap 14 IRQ_TYPE_LEVEL_LOW>; + status = "disabled"; + }; + +}; diff --git a/arch/arm64/boot/dts/apple/t8132-j773g.dts b/arch/arm64/boot/dts/apple/t8132-j773g.dts index 2f16f8e62c06c..aa38b26c8b9db 100644 --- a/arch/arm64/boot/dts/apple/t8132-j773g.dts +++ b/arch/arm64/boot/dts/apple/t8132-j773g.dts @@ -24,3 +24,21 @@ &framebuffer0 { power-domains = <&ps_dispext0_fe>, <&ps_dptx_phy>; }; + +/* + * CPU DVFS and deep idle, as on the J713. This machine has a fan, so + * it does not need the board thermal owner the fanless Airs wait for. + */ +&cpufreq_e { + status = "okay"; +}; + +&cpufreq_p { + status = "okay"; +}; + +&cpuidle { + status = "okay"; +}; + +#include "t8132-j773g-audio.dtsi" diff --git a/arch/arm64/boot/dts/apple/t8132-peripheral-buses.dtsi b/arch/arm64/boot/dts/apple/t8132-peripheral-buses.dtsi new file mode 100644 index 0000000000000..2554025a5ca13 --- /dev/null +++ b/arch/arm64/boot/dts/apple/t8132-peripheral-buses.dtsi @@ -0,0 +1,85 @@ +// SPDX-License-Identifier: GPL-2.0+ OR MIT +/* Unclaimed T8132 peripheral buses. */ + +&soc { + spi4: spi@3ad110000 { + compatible = "apple,t8132-spi", "apple,t8103-spi"; + reg = <0x3 0xad110000 0 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + clocks = <&peripheral_clocks 422>; + power-domains = <&ps_spi4>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + nub_spmi_a1: spmi@388a08000 { + compatible = "apple,t8132-spmi", "apple,t8103-spmi"; + reg = <0x3 0x88a08000 0 0x4000>, + <0x3 0x88a04000 0 0x4000>, + <0x3 0x88a00000 0 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + interrupt-controller; + #interrupt-cells = <2>; + #address-cells = <2>; + #size-cells = <0>; + status = "disabled"; + }; + + aop_spmi0: spmi@390914000 { + compatible = "apple,t8132-spmi", "apple,t8103-spmi"; + reg = <0x3 0x90914000 0 0x4000>, + <0x3 0x90904000 0 0x4000>, + <0x3 0x90900000 0 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + interrupt-controller; + #interrupt-cells = <2>; + #address-cells = <2>; + #size-cells = <0>; + status = "disabled"; + }; + + nub_spmi1: spmi@388614000 { + compatible = "apple,t8132-spmi", "apple,t8103-spmi"; + reg = <0x3 0x88614000 0 0x4000>, + <0x3 0x88604000 0 0x4000>, + <0x3 0x88600000 0 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + interrupt-controller; + #interrupt-cells = <2>; + #address-cells = <2>; + #size-cells = <0>; + status = "disabled"; + }; + + aop_spmi1: spmi@390b14000 { + compatible = "apple,t8132-spmi", "apple,t8103-spmi"; + reg = <0x3 0x90b14000 0 0x4000>, + <0x3 0x90b04000 0 0x4000>, + <0x3 0x90b00000 0 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + interrupt-controller; + #interrupt-cells = <2>; + #address-cells = <2>; + #size-cells = <0>; + status = "disabled"; + }; + + spi3: spi@3ad10c000 { + compatible = "apple,t8132-spi", "apple,t8103-spi"; + reg = <0x3 0xad10c000 0 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + clocks = <&peripheral_clocks 421>; + power-domains = <&ps_spi3>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + +}; diff --git a/arch/arm64/boot/dts/apple/t8132-peripherals.dtsi b/arch/arm64/boot/dts/apple/t8132-peripherals.dtsi new file mode 100644 index 0000000000000..3975e23c8a273 --- /dev/null +++ b/arch/arm64/boot/dts/apple/t8132-peripherals.dtsi @@ -0,0 +1,401 @@ +// SPDX-License-Identifier: GPL-2.0+ OR MIT +/* Additional T8132 hardware interfaces. Keep unclaimed engines disabled. */ + +&soc { + dart_scaler0: iommu@505260000 { + compatible = "apple,t8132-dart", "apple,t8110-dart"; + reg = <0x5 0x05260000 0x0 0x20000>; + interrupt-parent = <&aic>; + interrupts = ; + #iommu-cells = <1>; + status = "disabled"; + }; + + dart_scaler1: filter@38079c000 { + compatible = "apple,t8132-gapf", "apple,gapf"; + reg = <0x3 0x8079c000 0x0 0x4000>; + status = "disabled"; + }; + + dart_jpeg00: iommu@3a5020000 { + compatible = "apple,t8132-dart", "apple,t8110-dart"; + reg = <0x3 0xa5020000 0x0 0xc000>; + interrupt-parent = <&aic>; + interrupts = ; + #iommu-cells = <1>; + status = "disabled"; + }; + + dart_jpeg10: iommu@3a5080000 { + compatible = "apple,t8132-dart", "apple,t8110-dart"; + reg = <0x3 0xa5080000 0x0 0xc000>; + interrupt-parent = <&aic>; + interrupts = ; + #iommu-cells = <1>; + status = "disabled"; + }; + + dart_ave0: iommu@421080000 { + compatible = "apple,t8132-dart", "apple,t8110-dart"; + reg = <0x4 0x21080000 0x0 0xc000>; + interrupt-parent = <&aic>; + interrupts = ; + #iommu-cells = <1>; + status = "disabled"; + }; + + dart_ave1: iommu@4210a0000 { + compatible = "apple,t8132-dart", "apple,t8110-dart"; + reg = <0x4 0x210a0000 0x0 0xc000>; + interrupt-parent = <&aic>; + interrupts = ; + #iommu-cells = <1>; + status = "disabled"; + }; + + dart_ave2: iommu@421094000 { + compatible = "apple,t8132-dart-smmu", "apple,dart-smmu"; + reg = <0x4 0x21094000 0x0 0x4000>; + status = "disabled"; + }; + + dart_ave3: filter@4210b0000 { + compatible = "apple,t8132-dapf", "apple,dapf"; + reg = <0x4 0x210b0000 0x0 0x4000>; + status = "disabled"; + }; + + dart_apr0: iommu@281020000 { + compatible = "apple,t8132-dart", "apple,t8110-dart"; + reg = <0x2 0x81020000 0x0 0xc000>; + interrupt-parent = <&aic>; + interrupts = ; + #iommu-cells = <1>; + status = "disabled"; + }; + + dart_sio0: iommu@3ad060000 { + compatible = "apple,t8132-dart", "apple,t8110-dart"; + reg = <0x3 0xad060000 0x0 0xc000>; + interrupt-parent = <&aic>; + interrupts = ; + #iommu-cells = <1>; + status = "disabled"; + }; + + dart_aop_companion1: filter@390f10000 { + compatible = "apple,t8132-dapf", "apple,dapf"; + reg = <0x3 0x90f10000 0x0 0x4000>; + status = "disabled"; + }; + + dart_aop_companion2: filter@3882a4000 { + compatible = "apple,t8132-gapf", "apple,gapf"; + reg = <0x3 0x882a4000 0x0 0x4000>; + status = "disabled"; + }; + + dart_mtp_companion1: filter@394810000 { + compatible = "apple,t8132-dapf", "apple,dapf"; + reg = <0x3 0x94810000 0x0 0x4000>; + status = "disabled"; + }; + + dart_disp0_companion1: iommu@30a314000 { + compatible = "apple,t8132-dart-smmu", "apple,dart-smmu"; + reg = <0x3 0x0a314000 0x0 0x4000>; + status = "disabled"; + }; + + dart_dispext0_companion1: iommu@286314000 { + compatible = "apple,t8132-dart-smmu", "apple,dart-smmu"; + reg = <0x2 0x86314000 0x0 0x4000>; + status = "disabled"; + }; + + dart_dispext1_companion1: iommu@48a314000 { + compatible = "apple,t8132-dart-smmu", "apple,dart-smmu"; + reg = <0x4 0x8a314000 0x0 0x4000>; + status = "disabled"; + }; + + dart_isp_companion3: iommu@48e8f4000 { + compatible = "apple,t8132-dart-smmu", "apple,dart-smmu"; + reg = <0x4 0x8e8f4000 0x0 0x4000>; + status = "disabled"; + }; + + dart_isp_companion4: iommu@48e914000 { + compatible = "apple,t8132-dart-smmu", "apple,dart-smmu"; + reg = <0x4 0x8e914000 0x0 0x4000>; + status = "disabled"; + }; + + dart_isp_companion5: filter@48e8d0000 { + compatible = "apple,t8132-dapf", "apple,dapf"; + reg = <0x4 0x8e8d0000 0x0 0x4000>; + status = "disabled"; + }; + + dart_ane_companion3: filter@501810000 { + compatible = "apple,t8132-dapf", "apple,dapf"; + reg = <0x5 0x01810000 0x0 0x4000>; + status = "disabled"; + }; + + apcie0_piodma: dma-controller@490030000 { + compatible = "apple,t8132-pcie-piodma", "apple,pcie-piodma"; + reg = <0x4 0x90030000 0x0 0x4000>, + <0x4 0x90034000 0x0 0x4000>, + <0x4 0x90038000 0x0 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + status = "disabled"; + iommus = <&dart_apcie0 17>; + }; + + apciec0_piodma: dma-controller@404068000 { + compatible = "apple,t8132-pciec-piodma", "apple,pciec-piodma"; + reg = <0x4 0x04068000 0x0 0x4000>, + <0x4 0x0406c000 0x0 0x4000>, + <0x4 0x04070000 0x0 0x4000>, + <0x4 0x0403c000 0x0 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + status = "disabled"; + iommus = <&usb4_0_pcie_dart 254>; + }; + + atc0_dpin0: displayport@401e50000 { + compatible = "apple,t8132-dpin", "apple,dpin"; + reg = <0x4 0x01e50000 0x0 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + status = "disabled"; + }; + + atc0_dpin1: displayport@401e58000 { + compatible = "apple,t8132-dpin", "apple,dpin"; + reg = <0x4 0x01e58000 0x0 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + status = "disabled"; + }; + + apciec1_piodma: dma-controller@40c068000 { + compatible = "apple,t8132-pciec-piodma", "apple,pciec-piodma"; + reg = <0x4 0x0c068000 0x0 0x4000>, + <0x4 0x0c06c000 0x0 0x4000>, + <0x4 0x0c070000 0x0 0x4000>, + <0x4 0x0c03c000 0x0 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + status = "disabled"; + iommus = <&usb4_1_pcie_dart 254>; + }; + + atc1_dpin0: displayport@409e50000 { + compatible = "apple,t8132-dpin", "apple,dpin"; + reg = <0x4 0x09e50000 0x0 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + status = "disabled"; + }; + + atc1_dpin1: displayport@409e58000 { + compatible = "apple,t8132-dpin", "apple,dpin"; + reg = <0x4 0x09e58000 0x0 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + status = "disabled"; + }; + + dwi: dwi@380200000 { + compatible = "apple,t8132-dwi", "apple,dwi"; + reg = <0x3 0x80200000 0x0 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + power-domains = <&ps_dwi>; + status = "disabled"; + }; + + pwm: pwm@3ad040000 { + compatible = "apple,t8132-pwm", "apple,pwm"; + reg = <0x3 0xad040000 0x0 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + power-domains = <&ps_fpwm0>; + status = "disabled"; + }; + + aes: crypto@3ad00c000 { + compatible = "apple,t8132-aes", "apple,aes"; + reg = <0x3 0xad00c000 0x0 0x4000>, + <0x3 0x882dc000 0x0 0x8000>, + <0x3 0x88078000 0x0 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + power-domains = <&ps_aes>; + iommus = <&dart_sio0 1>; + status = "disabled"; + }; + + aon_ptd: interrupt-controller@38c840000 { + compatible = "apple,t8132-aon-ptd", "apple,aon-ptd"; + reg = <0x3 0x8c840000 0x0 0x4000>, + <0x3 0x8c850000 0x0 0x4000>, + <0x3 0x8c858000 0x0 0x4000>, + <0x3 0x8c860000 0x0 0x4000>; + interrupt-parent = <&aic>; + interrupts = , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + ; + interrupt-controller; + #interrupt-cells = <1>; + #address-cells = <0>; + status = "disabled"; + }; + + dcp0_expert: display-sideband@3882b8044 { + compatible = "apple,t8132-dcp-expert", "apple,dcp-expert"; + reg = <0x3 0x882b8044 0x0 0xc>, + <0x3 0x88030000 0x0 0x4>; + status = "disabled"; + }; + + dcpext0_expert: display-sideband@3882b8044 { + compatible = "apple,t8132-dcp-expert", "apple,dcp-expert"; + reg = <0x3 0x882b8044 0x0 0xc>, + <0x3 0x88030000 0x0 0x4>; + status = "disabled"; + }; + + dcpext1_expert: display-sideband@3882b8044 { + compatible = "apple,t8132-dcp-expert", "apple,dcp-expert"; + reg = <0x3 0x882b8044 0x0 0xc>, + <0x3 0x88030000 0x0 0x4>; + status = "disabled"; + }; + + scaler0: scaler@505000000 { + compatible = "apple,t8132-scaler", "apple,scaler"; + reg = <0x5 0x05000000 0x0 0x38000>, + <0x5 0x05210000 0x0 0x4000>, + <0x5 0x05204000 0x0 0x4000>, + <0x5 0x04000000 0x0 0x8000>; + interrupt-parent = <&aic>; + interrupts = , + ; + power-domains = <&ps_msr>, <&ps_msr_ase_core>; + iommus = <&dart_scaler0 0>, <&dart_scaler0 1>; + clocks = <&peripheral_clocks 399>; + status = "disabled"; + }; + + jpeg0: jpeg@3a5000000 { + compatible = "apple,t8132-jpeg", "apple,jpeg"; + reg = <0x3 0xa5000000 0x0 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + power-domains = <&ps_jpg>; + iommus = <&dart_jpeg00 0>; + clocks = <&peripheral_clocks 322>, <&peripheral_clocks 323>; + status = "disabled"; + }; + + jpeg1: jpeg@3a5060000 { + compatible = "apple,t8132-jpeg", "apple,jpeg"; + reg = <0x3 0xa5060000 0x0 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + power-domains = <&ps_jpg>; + iommus = <&dart_jpeg10 0>; + clocks = <&peripheral_clocks 322>, <&peripheral_clocks 323>; + status = "disabled"; + }; + + ave: video-encoder@421100000 { + compatible = "apple,t8132-ave", "apple,ave"; + reg = <0x4 0x21100000 0x0 0x45c000>, + <0x4 0x21800000 0x0 0x800000>, + <0x4 0x21050000 0x0 0x4000>, + <0x3 0x80708000 0x0 0x4000>, + <0x4 0x20000000 0x0 0x1000000>; + interrupt-parent = <&aic>; + interrupts = , + , + , + , + ; + power-domains = <&ps_venc_sys>, <&ps_venc_pipe4>, <&ps_venc_pipe5>, <&ps_venc_me0>, <&ps_venc_me1>, <&ps_venc_dma>; + iommus = <&dart_ave0 0>, <&dart_ave1 0>; + clocks = <&peripheral_clocks 430>; + status = "disabled"; + }; + + apr: video-codec@281000000 { + compatible = "apple,t8132-prores", "apple,prores"; + reg = <0x2 0x81000000 0x0 0x4000>, + <0x2 0x80000000 0x0 0x1000000>, + <0x2 0x810c0000 0x0 0x4000>; + interrupt-parent = <&aic>; + interrupts = , + ; + power-domains = <&ps_scodec>; + iommus = <&dart_apr0 1>; + status = "disabled"; + }; + + dbgCPU: debug@389700000 { + compatible = "apple,t8132-cpu-debug", "apple,cpu-debug"; + reg = <0x3 0x89700000 0x0 0x28000>, + <0x3 0x895c0000 0x0 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + status = "disabled"; + }; + + aft: trace@220180000 { + compatible = "apple,t8132-aft", "apple,aft"; + reg = <0x2 0x20180000 0x0 0xc000>; + status = "disabled"; + }; + +}; + +/ { + peripheral_clocks: clocks { + compatible = "apple,t8132-pmgr-clocks", "apple,pmgr-clocks"; + #clock-cells = <1>; + status = "disabled"; + }; +}; diff --git a/arch/arm64/boot/dts/apple/t8132.dtsi b/arch/arm64/boot/dts/apple/t8132.dtsi index 6ee608983784e..df18126f36def 100644 --- a/arch/arm64/boot/dts/apple/t8132.dtsi +++ b/arch/arm64/boot/dts/apple/t8132.dtsi @@ -1327,3 +1327,7 @@ }; #include "t8132-memory.dtsi" + +#include "t8132-peripherals.dtsi" + +#include "t8132-peripheral-buses.dtsi"