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.
This commit is contained in:
commit
cd3b9a0f20
131
Documentation/devicetree/bindings/sound/apple,mca.yaml
Normal file
131
Documentation/devicetree/bindings/sound/apple,mca.yaml
Normal file
@ -0,0 +1,131 @@
|
||||
# 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>;
|
||||
};
|
@ -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>
|
||||
|
@ -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"
|
||||
|
@ -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
sound/soc/apple/Kconfig
Normal file
9
sound/soc/apple/Kconfig
Normal file
@ -0,0 +1,9 @@
|
||||
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.
|
3
sound/soc/apple/Makefile
Normal file
3
sound/soc/apple/Makefile
Normal file
@ -0,0 +1,3 @@
|
||||
snd-soc-apple-mca-objs := mca.o
|
||||
|
||||
obj-$(CONFIG_SND_SOC_APPLE_MCA) += snd-soc-apple-mca.o
|
1167
sound/soc/apple/mca.c
Normal file
1167
sound/soc/apple/mca.c
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user