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

Linux 6.18.37 · Devicetree Bindings / Sound

Freescale S/PDIF controller

S/PDIF stereo transceiver의 DMA, 12개 clock 후보, endian과 i.MX8Q 조건을 설명합니다.

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

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

1. 요약·해설

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

요약과 해설

fsl,spdif.yaml:1-160

Freescale/NXP codec, SOF processor, S/PDIF와 SSI의 clock·DMA·전원·signal mode를 먼저 해설하고, 접을 수 있는 영어 원문 전체와 표·symbol·줄 좌표를 보존한 한국어 전문 번역을 제공합니다.

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,spdif.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Freescale Sony/Philips Digital Interface Format (S/PDIF) Controller
8
9 maintainers:
10 - Shengjiu Wang <[email protected]>
11
12 description: |
13 The Freescale S/PDIF audio block is a stereo transceiver that allows the
14 processor to receive and transmit digital audio via an coaxial cable or
15 a fibre cable.
16
17 properties:
18 compatible:
19 oneOf:
20 - items:
21 - enum:
22 - fsl,imx35-spdif
23 - fsl,imx6sx-spdif
24 - fsl,imx8mm-spdif
25 - fsl,imx8mn-spdif
26 - fsl,imx8mq-spdif
27 - fsl,imx8qm-spdif
28 - fsl,imx8qxp-spdif
29 - fsl,imx8ulp-spdif
30 - fsl,vf610-spdif
31 - items:
32 - enum:
33 - fsl,imx6sl-spdif
34 - fsl,imx6sx-spdif
35 - const: fsl,imx35-spdif
36
37 reg:
38 maxItems: 1
39
40 interrupts:
41 minItems: 1
42 items:
43 - description: Combined or receive interrupt
44 - description: Transmit interrupt
45
46 dmas:
47 items:
48 - description: DMA controller phandle and request line for RX
49 - description: DMA controller phandle and request line for TX
50
51 dma-names:
52 items:
53 - const: rx
54 - const: tx
55
56 clocks:
57 items:
58 - description: The core clock of spdif controller.
59 - description: Clock for tx0 and rx0.
60 - description: Clock for tx1 and rx1.
61 - description: Clock for tx2 and rx2.
62 - description: Clock for tx3 and rx3.
63 - description: Clock for tx4 and rx4.
64 - description: Clock for tx5 and rx5.
65 - description: Clock for tx6 and rx6.
66 - description: Clock for tx7 and rx7.
67 - description: The spba clock is required when SPDIF is placed as a bus
68 slave of the Shared Peripheral Bus and when two or more bus masters
69 (CPU, DMA or DSP) try to access it. This property is optional depending
70 on the SoC design.
71 - description: PLL clock source for 8kHz series rate, optional.
72 - description: PLL clock source for 11khz series rate, optional.
73 minItems: 9
74
75 clock-names:
76 items:
77 - const: core
78 - const: rxtx0
79 - const: rxtx1
80 - const: rxtx2
81 - const: rxtx3
82 - const: rxtx4
83 - const: rxtx5
84 - const: rxtx6
85 - const: rxtx7
86 - const: spba
87 - const: pll8k
88 - const: pll11k
89 minItems: 9
90
91 big-endian:
92 $ref: /schemas/types.yaml#/definitions/flag
93 description: |
94 If this property is absent, the native endian mode will be in use
95 as default, or the big endian mode will be in use for all the device
96 registers. Set this flag for HCDs with big endian descriptors and big
97 endian registers.
98
99 power-domains:
100 maxItems: 1
101
102 required:
103 - compatible
104 - reg
105 - interrupts
106 - dmas
107 - dma-names
108 - clocks
109 - clock-names
110
111 additionalProperties: false
112
113 allOf:
114 - if:
115 properties:
116 compatible:
117 enum:
118 - fsl,imx8qm-spdif
119 - fsl,imx8qxp-spdif
120 then:
121 properties:
122 interrupts:
123 minItems: 2
124 else:
125 properties:
126 interrupts:
127 maxItems: 1
128
129 - if:
130 properties:
131 compatible:
132 contains:
133 enum:
134 - fsl,imx8qm-spdif
135 - fsl,imx8qxp-spdif
136 then:
137 required:
138 - power-domains
139
140 examples:
141 - |
142 spdif@2004000 {
143 compatible = "fsl,imx35-spdif";
144 reg = <0x02004000 0x4000>;
145 interrupts = <0 52 0x04>;
146 dmas = <&sdma 14 18 0>,
147 <&sdma 15 18 0>;
148 dma-names = "rx", "tx";
149 clocks = <&clks 197>, <&clks 3>,
150 <&clks 197>, <&clks 107>,
151 <&clks 0>, <&clks 118>,
152 <&clks 62>, <&clks 139>,
153 <&clks 0>;
154 clock-names = "core", "rxtx0",
155 "rxtx1", "rxtx2",
156 "rxtx3", "rxtx4",
157 "rxtx5", "rxtx6",
158 "rxtx7";
159 big-endian;
160 };
161

3. 한국어 전문 번역

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

Freescale S/PDIF stereo transceiver

1-16

Freescale S/PDIF audio block은 coaxial cable 또는 fibre cable로 digital audio를 송수신하는 stereo transceiver입니다. Schema ID는 `http://devicetree.org/schemas/sound/fsl,spdif.yaml#`이며 maintainer는 Shengjiu Wang입니다.

SoC compatible, interrupt와 DMA

17-55

단일 compatible은 `fsl,imx35-spdif`, `fsl,imx6sx-spdif`, `fsl,imx8mm-spdif`, `fsl,imx8mn-spdif`, `fsl,imx8mq-spdif`, `fsl,imx8qm-spdif`, `fsl,imx8qxp-spdif`, `fsl,imx8ulp-spdif`, `fsl,vf610-spdif` 중 하나입니다. `fsl,imx6sl-spdif` 또는 `fsl,imx6sx-spdif`는 fallback `fsl,imx35-spdif`를 함께 둘 수도 있습니다.

`reg`는 최대 한 항목입니다. `interrupts`는 최소 한 개로 combined/receive interrupt 다음 transmit interrupt 순서입니다. `dmas`는 RX와 TX request 두 항목이고 `dma-names`는 `rx`, `tx`입니다.

Core, 8개 RX/TX와 선택 clock

56-90

`clocks`는 controller `core`, `rxtx0`부터 `rxtx7`까지 8개 RX/TX clock, 선택적 `spba`, 8 kHz 계열 `pll8k`, 11 kHz 계열 `pll11k` 순서이며 최소 9개입니다.

`spba`는 SPDIF가 Shared Peripheral Bus slave이고 CPU·DMA·DSP 중 둘 이상의 bus master가 접근할 때 필요하지만 SoC 설계에 따라 선택적입니다. `clock-names`는 같은 순서의 `core`, `rxtx0`~`rxtx7`, `spba`, `pll8k`, `pll11k`입니다.

Register endian과 power domain

91-101

`big-endian`이 없으면 native endian mode가 기본이고, 있으면 모든 device register에 big-endian mode를 사용합니다. Big-endian descriptor와 register를 가진 HCD에서 이 flag를 설정합니다. `power-domains`는 최대 한 항목입니다.

필수 속성과 i.MX8Q 조건

102-139

필수 속성은 `compatible`, `reg`, `interrupts`, `dmas`, `dma-names`, `clocks`, `clock-names`이며 추가 속성은 허용하지 않습니다.

`fsl,imx8qm-spdif`와 `fsl,imx8qxp-spdif`는 interrupt를 최소 2개 요구하고, 다른 SoC는 최대 한 개만 허용합니다. 같은 i.MX8Q 두 compatible에는 `power-domains`도 필수입니다.

i.MX35 S/PDIF 예제

140-160

예제는 `0x02004000`의 i.MX35 S/PDIF에 interrupt 52, RX/TX SDMA request 14·15, core와 `rxtx0`~`rxtx7` clock을 연결하고 big-endian register mode를 사용합니다.

spdif@2004000 {
    compatible = "fsl,imx35-spdif";
    reg = <0x02004000 0x4000>;
    interrupts = <0 52 0x04>;
    dmas = <&sdma 14 18 0>,
           <&sdma 15 18 0>;
    dma-names = "rx", "tx";
    clocks = <&clks 197>, <&clks 3>,
             <&clks 197>, <&clks 107>,
             <&clks 0>, <&clks 118>,
             <&clks 62>, <&clks 139>,
             <&clks 0>;
    clock-names = "core", "rxtx0",
                  "rxtx1", "rxtx2",
                  "rxtx3", "rxtx4",
                  "rxtx5", "rxtx6",
                  "rxtx7";
    big-endian;
};