Unverified Commit cd3b9a0f authored by Mark Brown's avatar Mark Brown
Browse files

ASoC platform driver for Apple MCA

Merge series from Martin Povišer <povik+lin@cutebit.org>:

sending what should be the final touches on Apple MCA driver. It most
likely goes without saying but please do not merge the DT additions
into the ASoC tree.
parents 4a34613b 6ed462d1
Loading
Loading
Loading
Loading
+131 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/apple,mca.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Apple MCA I2S transceiver

description: |
  MCA is an I2S transceiver peripheral found on M1 and other Apple chips. It is
  composed of a number of identical clusters which can operate independently
  or in an interlinked fashion. Up to 6 clusters have been seen on an MCA.

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

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

  reg:
    items:
      - description: Register region of the MCA clusters proper
      - description: Register region of the DMA glue and its FIFOs

  interrupts:
    minItems: 4
    maxItems: 6
    description:
      One interrupt per each cluster

  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

  dmas:
    minItems: 16
    maxItems: 24
    description:
      DMA channels corresponding to the SERDES units in the peripheral. They are
      listed in groups of four per cluster, and within the group they are given
      as associated to the TXA, RXA, TXB, RXB units.

  dma-names:
    minItems: 16
    items:
      - const: tx0a
      - const: rx0a
      - const: tx0b
      - const: rx0b
      - const: tx1a
      - const: rx1a
      - const: tx1b
      - const: rx1b
      - const: tx2a
      - const: rx2a
      - const: tx2b
      - const: rx2b
      - const: tx3a
      - const: rx3a
      - const: tx3b
      - const: rx3b
      - const: tx4a
      - const: rx4a
      - const: tx4b
      - const: rx4b
      - const: tx5a
      - const: rx5a
      - const: tx5b
      - const: rx5b
    description: |
      Names for the DMA channels: 'tx'/'rx', then cluster number, then 'a'/'b'
      based on the associated SERDES unit.

  clocks:
    minItems: 4
    maxItems: 6
    description:
      Clusters' input reference clock.

  resets:
    maxItems: 1

  power-domains:
    minItems: 5
    maxItems: 7
    description:
      First a general power domain for register access, then the power
      domains of individual clusters for their operation.

  '#sound-dai-cells':
    const: 1

required:
  - compatible
  - reg
  - dmas
  - dma-names
  - clocks
  - power-domains
  - '#sound-dai-cells'

additionalProperties: false

examples:
  - |
    mca: i2s@9b600000 {
      compatible = "apple,t6000-mca", "apple,mca";
      reg = <0x9b600000 0x10000>,
            <0x9b200000 0x20000>;

      clocks = <&nco 0>, <&nco 1>, <&nco 2>, <&nco 3>;
      power-domains = <&ps_audio_p>, <&ps_mca0>, <&ps_mca1>,
                      <&ps_mca2>, <&ps_mca3>;
      dmas = <&admac 0>, <&admac 1>, <&admac 2>, <&admac 3>,
             <&admac 4>, <&admac 5>, <&admac 6>, <&admac 7>,
             <&admac 8>, <&admac 9>, <&admac 10>, <&admac 11>,
             <&admac 12>, <&admac 13>, <&admac 14>, <&admac 15>;
      dma-names = "tx0a", "rx0a", "tx0b", "rx0b",
                  "tx1a", "rx1a", "tx1b", "rx1b",
                  "tx2a", "rx2a", "tx2b", "rx2b",
                  "tx3a", "rx3a", "tx3b", "rx3b";

      #sound-dai-cells = <1>;
    };
+8 −0
Original line number Diff line number Diff line
@@ -1899,6 +1899,14 @@ F: include/dt-bindings/pinctrl/apple.h
F:	include/linux/apple-mailbox.h
F:	include/linux/soc/apple/*
ARM/APPLE MACHINE SOUND DRIVERS
M:	Martin Povišer <povik+lin@cutebit.org>
L:	asahi@lists.linux.dev
L:	alsa-devel@alsa-project.org (moderated for non-subscribers)
S:	Maintained
F:	Documentation/devicetree/bindings/sound/apple,*
F:	drivers/sound/apple/*
ARM/ARTPEC MACHINE SUPPORT
M:	Jesper Nilsson <jesper.nilsson@axis.com>
M:	Lars Persson <lars.persson@axis.com>
+1 −0
Original line number Diff line number Diff line
@@ -68,6 +68,7 @@ config SND_SOC_ACPI
# All the supported SoCs
source "sound/soc/adi/Kconfig"
source "sound/soc/amd/Kconfig"
source "sound/soc/apple/Kconfig"
source "sound/soc/atmel/Kconfig"
source "sound/soc/au1x/Kconfig"
source "sound/soc/bcm/Kconfig"
+1 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ obj-$(CONFIG_SND_SOC_ACPI) += snd-soc-acpi.o
obj-$(CONFIG_SND_SOC)	+= snd-soc-core.o
obj-$(CONFIG_SND_SOC)	+= codecs/
obj-$(CONFIG_SND_SOC)	+= generic/
obj-$(CONFIG_SND_SOC)	+= apple/
obj-$(CONFIG_SND_SOC)	+= adi/
obj-$(CONFIG_SND_SOC)	+= amd/
obj-$(CONFIG_SND_SOC)	+= atmel/
+9 −0
Original line number Diff line number Diff line
config SND_SOC_APPLE_MCA
	tristate "Apple Silicon MCA driver"
	depends on ARCH_APPLE || COMPILE_TEST
	select SND_DMAENGINE_PCM
	select COMMON_CLK
	default ARCH_APPLE
	help
	  This option enables an ASoC platform driver for MCA peripherals found
	  on Apple Silicon SoCs.
Loading