mirror of
https://github.com/torvalds/linux.git
synced 2026-05-02 05:22:49 -04:00
R329 contains I2S controllers which are similar to, but are incompatible with, the H6 variant, because they change the layout of the RX channel mapping registers. The D1 contains I2S controllers which appear to be identical to those in the R329. Signed-off-by: Samuel Holland <samuel@sholland.org> Acked-by: Maxime Ripard <maxime@cerno.tech> Link: https://lore.kernel.org/r/20220203020116.12279-2-samuel@sholland.org Signed-off-by: Mark Brown <broonie@kernel.org>
148 lines
3.4 KiB
YAML
148 lines
3.4 KiB
YAML
# SPDX-License-Identifier: (GPL-2.0+ OR BSD-2-Clause)
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/sound/allwinner,sun4i-a10-i2s.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Allwinner A10 I2S Controller Device Tree Bindings
|
|
|
|
maintainers:
|
|
- Chen-Yu Tsai <wens@csie.org>
|
|
- Maxime Ripard <mripard@kernel.org>
|
|
|
|
properties:
|
|
"#sound-dai-cells":
|
|
const: 0
|
|
|
|
compatible:
|
|
oneOf:
|
|
- const: allwinner,sun4i-a10-i2s
|
|
- const: allwinner,sun6i-a31-i2s
|
|
- const: allwinner,sun8i-a83t-i2s
|
|
- const: allwinner,sun8i-h3-i2s
|
|
- items:
|
|
- const: allwinner,sun8i-r40-i2s
|
|
- const: allwinner,sun8i-h3-i2s
|
|
- items:
|
|
- const: allwinner,sun8i-v3-i2s
|
|
- const: allwinner,sun8i-h3-i2s
|
|
- const: allwinner,sun50i-a64-codec-i2s
|
|
- items:
|
|
- const: allwinner,sun50i-a64-i2s
|
|
- const: allwinner,sun8i-h3-i2s
|
|
- const: allwinner,sun50i-h6-i2s
|
|
- const: allwinner,sun50i-r329-i2s
|
|
- items:
|
|
- const: allwinner,sun20i-d1-i2s
|
|
- const: allwinner,sun50i-r329-i2s
|
|
|
|
reg:
|
|
maxItems: 1
|
|
|
|
interrupts:
|
|
maxItems: 1
|
|
|
|
clocks:
|
|
items:
|
|
- description: Bus Clock
|
|
- description: Module Clock
|
|
|
|
clock-names:
|
|
items:
|
|
- const: apb
|
|
- const: mod
|
|
|
|
# Even though it only applies to subschemas under the conditionals,
|
|
# not listing them here will trigger a warning because of the
|
|
# additionalsProperties set to false.
|
|
dmas: true
|
|
dma-names: true
|
|
resets:
|
|
maxItems: 1
|
|
|
|
allOf:
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- allwinner,sun6i-a31-i2s
|
|
- allwinner,sun8i-a83t-i2s
|
|
- allwinner,sun8i-h3-i2s
|
|
- allwinner,sun50i-a64-codec-i2s
|
|
- allwinner,sun50i-h6-i2s
|
|
- allwinner,sun50i-r329-i2s
|
|
|
|
then:
|
|
required:
|
|
- resets
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- allwinner,sun8i-a83t-i2s
|
|
- allwinner,sun8i-h3-i2s
|
|
|
|
then:
|
|
properties:
|
|
dmas:
|
|
minItems: 1
|
|
maxItems: 2
|
|
items:
|
|
- description: RX DMA Channel
|
|
- description: TX DMA Channel
|
|
description:
|
|
Some controllers cannot receive but can only transmit
|
|
data. In such a case, the RX DMA channel is to be omitted.
|
|
|
|
dma-names:
|
|
oneOf:
|
|
- items:
|
|
- const: rx
|
|
- const: tx
|
|
- const: tx
|
|
description:
|
|
Some controllers cannot receive but can only transmit
|
|
data. In such a case, the RX name is to be omitted.
|
|
|
|
else:
|
|
properties:
|
|
dmas:
|
|
items:
|
|
- description: RX DMA Channel
|
|
- description: TX DMA Channel
|
|
|
|
dma-names:
|
|
items:
|
|
- const: rx
|
|
- const: tx
|
|
|
|
required:
|
|
- "#sound-dai-cells"
|
|
- compatible
|
|
- reg
|
|
- interrupts
|
|
- clocks
|
|
- clock-names
|
|
- dmas
|
|
- dma-names
|
|
|
|
additionalProperties: false
|
|
|
|
examples:
|
|
- |
|
|
i2s0: i2s@1c22400 {
|
|
#sound-dai-cells = <0>;
|
|
compatible = "allwinner,sun4i-a10-i2s";
|
|
reg = <0x01c22400 0x400>;
|
|
interrupts = <0 16 4>;
|
|
clocks = <&apb0_gates 3>, <&i2s0_clk>;
|
|
clock-names = "apb", "mod";
|
|
dmas = <&dma 0 3>, <&dma 0 3>;
|
|
dma-names = "rx", "tx";
|
|
};
|
|
|
|
...
|