eb5b12843b
The A83t and compatibles controllers don't have any reception capabilities on some instances of the controllers, even though it was never documented as such in the binding before. Therefore, on those controllers, we don't have the option to set an RX DMA channel. This was already done in the DTSI, but the binding itself was never updated. Let's add a special case in the schemas. Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com> Reviewed-by: Rob Herring <robh@kernel.org> Signed-off-by: Mark Brown <broonie@kernel.org>
133 lines
2.9 KiB
YAML
133 lines
2.9 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 <maxime.ripard@bootlin.com>
|
|
|
|
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
|
|
- const: allwinner,sun50i-a64-codec-i2s
|
|
- items:
|
|
- const: allwinner,sun50i-a64-i2s
|
|
- const: allwinner,sun8i-h3-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
|
|
|
|
then:
|
|
required:
|
|
- resets
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
const: allwinner,sun8i-a83t-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";
|
|
};
|
|
|
|
...
|