← Documents Documentation/devicetree/bindings/sound/fsl,esai.yaml GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings / Sound

Freescale ESAI controller

ESAI의 clock, RX/TX DMA, FIFO, synchronous mode와 SoC별 power-domain 조건을 설명합니다.

Source pathDocumentation/devicetree/bindings/sound/fsl,esai.yaml
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

fsl,esai.yaml:1-136

NXP/Freescale audio mixer, sample-rate converter와 serial interface의 signal flow, clock, DMA와 조건부 속성을 먼저 해설하고, 접을 수 있는 영어 원문 전체와 원문 줄 좌표를 보존한 한국어 전문 번역을 제공합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/sound/fsl,esai.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Freescale Enhanced Serial Audio Interface (ESAI) Controller
8
9 maintainers:
10 - Shengjiu Wang <shengjiu.wang@nxp.com>
11 - Frank Li <Frank.Li@nxp.com>
12
13 description:
14 The Enhanced Serial Audio Interface (ESAI) provides a full-duplex serial port
15 for serial communication with a variety of serial devices, including industry
16 standard codecs, Sony/Phillips Digital Interface (S/PDIF) transceivers, and
17 other DSPs. It has up to six transmitters and four receivers.
18
19 properties:
20 compatible:
21 oneOf:
22 - enum:
23 - fsl,imx35-esai
24 - fsl,imx6ull-esai
25 - fsl,vf610-esai
26 - items:
27 - enum:
28 - fsl,imx8qm-esai
29 - const: fsl,imx6ull-esai
30
31 reg:
32 maxItems: 1
33
34 interrupts:
35 maxItems: 1
36
37 clocks:
38 minItems: 3
39 items:
40 - description:
41 The core clock used to access registers.
42 - description:
43 The esai baud clock for esai controller used to
44 derive HCK, SCK and FS.
45 - description:
46 The system clock derived from ahb clock used to
47 derive HCK, SCK and FS.
48 - description:
49 The spba clock is required when ESAI is placed as a
50 bus slave of the Shared Peripheral Bus and when two
51 or more bus masters (CPU, DMA or DSP) try to access
52 it. This property is optional depending on the SoC
53 design.
54
55 clock-names:
56 minItems: 3
57 items:
58 - const: core
59 - const: extal
60 - const: fsys
61 - const: spba
62
63 dmas:
64 minItems: 2
65 maxItems: 2
66
67 dma-names:
68 items:
69 - const: rx
70 - const: tx
71
72 power-domains:
73 maxItems: 1
74
75 fsl,fifo-depth:
76 $ref: /schemas/types.yaml#/definitions/uint32
77 default: 64
78 description:
79 The number of elements in the transmit and receive
80 FIFOs. This number is the maximum allowed value for
81 TFCR[TFWM] or RFCR[RFWM].
82
83 fsl,esai-synchronous:
84 $ref: /schemas/types.yaml#/definitions/flag
85 description:
86 This is a boolean property. If present, indicating
87 that ESAI would work in the synchronous mode, which
88 means all the settings for Receiving would be
89 duplicated from Transmission related registers.
90
91 big-endian:
92 $ref: /schemas/types.yaml#/definitions/flag
93 description:
94 If this property is absent, the native endian mode
95 will be in use as default, or the big endian mode
96 will be in use for all the device registers.
97
98 required:
99 - compatible
100 - reg
101 - interrupts
102 - clocks
103 - clock-names
104 - dmas
105 - dma-names
106
107 unevaluatedProperties: false
108
109 allOf:
110 - $ref: dai-common.yaml#
111 - if:
112 properties:
113 compatible:
114 contains:
115 const: fsl,imx8qm-esai
116 then:
117 required:
118 - power-domains
119 else:
120 properties:
121 power-domains: false
122
123 examples:
124 - |
125 esai@2024000 {
126 compatible = "fsl,imx35-esai";
127 reg = <0x02024000 0x4000>;
128 interrupts = <0 51 0x04>;
129 clocks = <&clks 208>, <&clks 118>, <&clks 208>;
130 clock-names = "core", "extal", "fsys";
131 dmas = <&sdma 23 21 0>, <&sdma 24 21 0>;
132 dma-names = "rx", "tx";
133 fsl,fifo-depth = <128>;
134 fsl,esai-synchronous;
135 big-endian;
136 };
137

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

Freescale ESAI controller

1-18

이 YAML binding은 Freescale Enhanced Serial Audio Interface(ESAI)를 정의합니다. ESAI는 표준 codec, Sony/Phillips Digital Interface(S/PDIF) transceiver와 DSP 등 여러 serial device와 통신하는 full-duplex serial port이며 transmitter 최대 6개와 receiver 최대 4개를 제공합니다.

Schema ID는 `http://devicetree.org/schemas/sound/fsl,esai.yaml#`이고 maintainer는 Shengjiu Wang과 Frank Li입니다.

SoC compatible, register와 IRQ

19-36

`compatible`은 `fsl,imx35-esai`, `fsl,imx6ull-esai`, `fsl,vf610-esai` 중 하나이거나 `fsl,imx8qm-esai` 뒤에 fallback `fsl,imx6ull-esai`을 둔 두 항목입니다. `reg`와 `interrupts`는 각각 최대 한 항목입니다.

Core, baud, system과 SPBA clock

37-62

`clocks`와 `clock-names`는 최소 세 항목입니다. `core`는 register access용 core clock, `extal`은 HCK/SCK/FS를 유도하는 ESAI baud clock, `fsys`는 AHB에서 유도되어 HCK/SCK/FS 생성에 쓰이는 system clock입니다.

선택적인 `spba` clock은 ESAI가 Shared Peripheral Bus slave이고 CPU, DMA, DSP 중 둘 이상의 bus master가 접근하는 SoC 설계에서 필요합니다.

RX/TX DMA와 power domain

63-74

`dmas`는 정확히 두 항목이며 `dma-names`는 `rx`, `tx` 순서입니다. `power-domains`는 최대 한 항목입니다.

FIFO depth, synchronous mode와 endian

75-97

`fsl,fifo-depth`는 TX/RX FIFO element 수를 정하는 `uint32`이며 기본값은 64입니다. 이 값은 `TFCR[TFWM]` 또는 `RFCR[RFWM]`에 허용되는 최대값입니다.

Flag `fsl,esai-synchronous`가 있으면 ESAI가 synchronous mode로 동작해 receive 설정을 transmission 관련 register에서 복제합니다.

Flag `big-endian`이 없으면 native endian이 기본이고, 있으면 모든 device register에 big-endian mode를 사용합니다.

필수 속성과 i.MX8QM 조건

98-122

필수 속성은 `compatible`, `reg`, `interrupts`, `clocks`, `clock-names`, `dmas`, `dma-names`입니다. `dai-common.yaml#`을 상속하며 평가되지 않은 속성은 허용하지 않습니다.

`compatible`에 `fsl,imx8qm-esai`가 포함되면 `power-domains`가 필수입니다. 다른 compatible에서는 `power-domains`를 사용할 수 없습니다.

i.MX35 ESAI 예제

123-136

예제는 address `0x02024000`의 i.MX35 ESAI에 interrupt 51, 세 필수 clock, RX/TX SDMA를 연결합니다. FIFO depth는 128이며 synchronous mode와 big-endian register access를 활성화합니다.

esai@2024000 {
  compatible = "fsl,imx35-esai";
  reg = <0x02024000 0x4000>;
  interrupts = <0 51 0x04>;
  clocks = <&clks 208>, <&clks 118>, <&clks 208>;
  clock-names = "core", "extal", "fsys";
  dmas = <&sdma 23 21 0>, <&sdma 24 21 0>;
  dma-names = "rx", "tx";
  fsl,fifo-depth = <128>;
  fsl,esai-synchronous;
  big-endian;
};