mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-02 08:32:55 +00:00

Samsung Exynos SoC reuses several devices from older designs, thus historically we kept the old (block's) compatible only. This works fine and there is no bug here, however guidelines expressed in Documentation/devicetree/bindings/writing-bindings.rst state that: 1. Compatibles should be specific. 2. We should add new compatibles in case of bugs or features. Add compatibles specific to each SoC in front of all old-SoC-like compatibles. Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com> Acked-by: Rob Herring <robh@kernel.org> Acked-by: Lee Jones <lee@kernel.org> Acked-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20231108104343.24192-12-krzysztof.kozlowski@linaro.org Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
163 lines
4.3 KiB
YAML
163 lines
4.3 KiB
YAML
# SPDX-License-Identifier: GPL-2.0
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/sound/samsung-i2s.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Samsung SoC I2S controller
|
|
|
|
maintainers:
|
|
- Krzysztof Kozlowski <krzk@kernel.org>
|
|
- Sylwester Nawrocki <s.nawrocki@samsung.com>
|
|
|
|
allOf:
|
|
- $ref: dai-common.yaml#
|
|
|
|
properties:
|
|
compatible:
|
|
description: |
|
|
samsung,s3c6410-i2s: for 8/16/24bit stereo I2S.
|
|
|
|
samsung,s5pv210-i2s: for 8/16/24bit multichannel (5.1) I2S with
|
|
secondary FIFO, s/w reset control and internal mux for root clock
|
|
source.
|
|
|
|
samsung,exynos5420-i2s: for 8/16/24bit multichannel (5.1) I2S for
|
|
playback, stereo channel capture, secondary FIFO using internal
|
|
or external DMA, s/w reset control, internal mux for root clock
|
|
source and 7.1 channel TDM support for playback; TDM (Time division
|
|
multiplexing) is to allow transfer of multiple channel audio data on
|
|
single data line.
|
|
|
|
samsung,exynos7-i2s: with all the available features of Exynos5 I2S.
|
|
Exynos7 I2S has 7.1 channel TDM support for capture, secondary FIFO
|
|
with only external DMA and more number of root clock sampling
|
|
frequencies.
|
|
|
|
samsung,exynos7-i2s1: I2S1 on previous samsung platforms supports
|
|
stereo channels. Exynos7 I2S1 upgraded to 5.1 multichannel with
|
|
slightly modified bit offsets.
|
|
|
|
tesla,fsd-i2s: for 8/16/24bit stereo channel I2S for playback and
|
|
capture, secondary FIFO using external DMA, s/w reset control,
|
|
internal mux for root clock source with all root clock sampling
|
|
frequencies supported by Exynos7 I2S and 7.1 channel TDM support
|
|
for playback and capture TDM (Time division multiplexing) to allow
|
|
transfer of multiple channel audio data on single data line.
|
|
oneOf:
|
|
- enum:
|
|
- samsung,s3c6410-i2s
|
|
- samsung,s5pv210-i2s
|
|
- samsung,exynos5420-i2s
|
|
- samsung,exynos7-i2s
|
|
- samsung,exynos7-i2s1
|
|
- tesla,fsd-i2s
|
|
- items:
|
|
- enum:
|
|
- samsung,exynos5433-i2s
|
|
- const: samsung,exynos7-i2s
|
|
|
|
'#address-cells':
|
|
const: 1
|
|
|
|
'#size-cells':
|
|
const: 0
|
|
|
|
reg:
|
|
maxItems: 1
|
|
|
|
dmas:
|
|
minItems: 2
|
|
maxItems: 3
|
|
|
|
dma-names:
|
|
oneOf:
|
|
- items:
|
|
- const: tx
|
|
- const: rx
|
|
- items:
|
|
- const: tx
|
|
- const: rx
|
|
- const: tx-sec
|
|
|
|
clocks:
|
|
minItems: 1
|
|
maxItems: 3
|
|
|
|
clock-names:
|
|
oneOf:
|
|
- items:
|
|
- const: iis
|
|
- items: # for I2S0
|
|
- const: iis
|
|
- const: i2s_opclk0
|
|
- const: i2s_opclk1
|
|
- items: # for I2S1 and I2S2
|
|
- const: iis
|
|
- const: i2s_opclk0
|
|
description: |
|
|
"iis" is the I2S bus clock and i2s_opclk0, i2s_opclk1 are sources
|
|
of the root clock. I2S0 has internal mux to select the source
|
|
of root clock and I2S1 and I2S2 doesn't have any such mux.
|
|
|
|
"#clock-cells":
|
|
const: 1
|
|
|
|
clock-output-names:
|
|
deprecated: true
|
|
oneOf:
|
|
- items: # for I2S0
|
|
- const: i2s_cdclk0
|
|
- items: # for I2S1
|
|
- const: i2s_cdclk1
|
|
- items: # for I2S2
|
|
- const: i2s_cdclk2
|
|
description: Names of the CDCLK I2S output clocks.
|
|
|
|
interrupts:
|
|
maxItems: 1
|
|
|
|
samsung,idma-addr:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
description: |
|
|
Internal DMA register base address of the audio
|
|
subsystem (used in secondary sound source).
|
|
|
|
power-domains:
|
|
maxItems: 1
|
|
|
|
"#sound-dai-cells":
|
|
const: 1
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
- dmas
|
|
- dma-names
|
|
- clocks
|
|
- clock-names
|
|
|
|
unevaluatedProperties: false
|
|
|
|
examples:
|
|
- |
|
|
#include <dt-bindings/clock/exynos-audss-clk.h>
|
|
|
|
i2s0: i2s@3830000 {
|
|
compatible = "samsung,s5pv210-i2s";
|
|
reg = <0x03830000 0x100>;
|
|
dmas = <&pdma0 10>,
|
|
<&pdma0 9>,
|
|
<&pdma0 8>;
|
|
dma-names = "tx", "rx", "tx-sec";
|
|
clocks = <&clock_audss EXYNOS_I2S_BUS>,
|
|
<&clock_audss EXYNOS_I2S_BUS>,
|
|
<&clock_audss EXYNOS_SCLK_I2S>;
|
|
clock-names = "iis", "i2s_opclk0", "i2s_opclk1";
|
|
#clock-cells = <1>;
|
|
samsung,idma-addr = <0x03000000>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&i2s0_bus>;
|
|
#sound-dai-cells = <1>;
|
|
};
|