1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/renesas,fsi.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Renesas FIFO-buffered Serial Interface (FSI)
maintainers:
- Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
properties:
$nodename:
pattern: "^sound@.*"
compatible:
oneOf:
# for FSI2 SoC
- items:
- enum:
- renesas,fsi2-sh73a0 # SH-Mobile AG5
- renesas,fsi2-r8a7740 # R-Mobile A1
- enum:
- renesas,sh_fsi2
# for Generic
- items:
- enum:
- renesas,sh_fsi
- renesas,sh_fsi2
reg:
maxItems: 1
interrupts:
maxItems: 1
clocks:
minItems: 1
items:
- description: Main FSI module clock
- description: |
SPU bus/bridge clock. On R8A7740, this clock must be enabled to allow
register access as the FSI block is connected behind the SPU bus.
- description: CPG DIV6 functional clocks for FSI port A
- description: CPG DIV6 functional clocks for FSI port B
- description: FSI dividers for port A used for audio clock generation
- description: FSI dividers for port B used for audio clock generation
- description: External clock inputs for FSI port A provided by the board
- description: External clock inputs for FSI port B provided by the board
clock-names:
minItems: 1
maxItems: 8
items:
enum:
- fck # Main FSI module clock
- spu # optional SPU bus/bridge clock
- icka # optional CPG DIV6 functional clocks for FSI port A
- ickb # optional CPG DIV6 functional clocks for FSI port B
- diva # optional FSI dividers for port A used for audio clock generation
- divb # optional FSI dividers for port B used for audio clock generation
- xcka # optional External clock inputs for FSI port A provided by the board
- xckb # optional External clock inputs for FSI port B provided by the board
power-domains:
maxItems: 1
'#sound-dai-cells':
const: 1
patternProperties:
"^fsi(a|b),spdif-connection$":
$ref: /schemas/types.yaml#/definitions/flag
description: FSI is connected by S/PDIF
"^fsi(a|b),stream-mode-support$":
$ref: /schemas/types.yaml#/definitions/flag
description: FSI supports 16bit stream mode
"^fsi(a|b),use-internal-clock$":
$ref: /schemas/types.yaml#/definitions/flag
description: FSI uses internal clock when master mode
required:
- compatible
- reg
- interrupts
- clocks
- power-domains
- '#sound-dai-cells'
unevaluatedProperties: false
allOf:
- $ref: dai-common.yaml#
- if:
properties:
compatible:
contains:
const: renesas,fsi2-r8a7740
then:
required:
- clock-names
properties:
clock-names:
minItems: 2
items:
- const: fck
- const: spu
- enum: [icka, ickb, diva, divb, xcka, xckb]
- enum: [icka, ickb, diva, divb, xcka, xckb]
- enum: [icka, ickb, diva, divb, xcka, xckb]
- enum: [icka, ickb, diva, divb, xcka, xckb]
- enum: [icka, ickb, diva, divb, xcka, xckb]
- enum: [icka, ickb, diva, divb, xcka, xckb]
examples:
- |
#include <dt-bindings/clock/r8a7740-clock.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
sh_fsi2: sound@fe1f0000 {
compatible = "renesas,fsi2-r8a7740", "renesas,sh_fsi2";
reg = <0xfe1f0000 0x400>;
interrupts = <GIC_SPI 9 0x4>;
clocks = <&mstp3_clks R8A7740_CLK_FSI>, <&spu_clk>,
<&fsia_clk>, <&fsiack_clk>, <&fsidiva_clk>,
<&fsib_clk>, <&fsibck_clk>, <&fsidivb_clk>;
clock-names = "fck", "spu", "icka", "xcka", "diva",
"ickb", "xckb", "divb";
power-domains = <&pd_a4mp>;
#sound-dai-cells = <1>;
fsia,spdif-connection;
fsia,stream-mode-support;
fsia,use-internal-clock;
};
|