요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/fsl,spdif.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Freescale Sony/Philips Digital Interface Format (S/PDIF) Controller
maintainers:
- Shengjiu Wang <[email protected]>
description: |
The Freescale S/PDIF audio block is a stereo transceiver that allows the
processor to receive and transmit digital audio via an coaxial cable or
a fibre cable.
properties:
compatible:
oneOf:
- items:
- enum:
- 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
- items:
- enum:
- fsl,imx6sl-spdif
- fsl,imx6sx-spdif
- const: fsl,imx35-spdif
reg:
maxItems: 1
interrupts:
minItems: 1
items:
- description: Combined or receive interrupt
- description: Transmit interrupt
dmas:
items:
- description: DMA controller phandle and request line for RX
- description: DMA controller phandle and request line for TX
dma-names:
items:
- const: rx
- const: tx
clocks:
items:
- description: The core clock of spdif controller.
- description: Clock for tx0 and rx0.
- description: Clock for tx1 and rx1.
- description: Clock for tx2 and rx2.
- description: Clock for tx3 and rx3.
- description: Clock for tx4 and rx4.
- description: Clock for tx5 and rx5.
- description: Clock for tx6 and rx6.
- description: Clock for tx7 and rx7.
- description: The spba clock is required when SPDIF is placed as a bus
slave of the Shared Peripheral Bus and when two or more bus masters
(CPU, DMA or DSP) try to access it. This property is optional depending
on the SoC design.
- description: PLL clock source for 8kHz series rate, optional.
- description: PLL clock source for 11khz series rate, optional.
minItems: 9
clock-names:
items:
- const: core
- const: rxtx0
- const: rxtx1
- const: rxtx2
- const: rxtx3
- const: rxtx4
- const: rxtx5
- const: rxtx6
- const: rxtx7
- const: spba
- const: pll8k
- const: pll11k
minItems: 9
big-endian:
$ref: /schemas/types.yaml#/definitions/flag
description: |
If this property is absent, the native endian mode will be in use
as default, or the big endian mode will be in use for all the device
registers. Set this flag for HCDs with big endian descriptors and big
endian registers.
power-domains:
maxItems: 1
required:
- compatible
- reg
- interrupts
- dmas
- dma-names
- clocks
- clock-names
additionalProperties: false
allOf:
- if:
properties:
compatible:
enum:
- fsl,imx8qm-spdif
- fsl,imx8qxp-spdif
then:
properties:
interrupts:
minItems: 2
else:
properties:
interrupts:
maxItems: 1
- if:
properties:
compatible:
contains:
enum:
- fsl,imx8qm-spdif
- fsl,imx8qxp-spdif
then:
required:
- power-domains
examples:
- |
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;
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
Freescale S/PDIF stereo transceiver
1-16Freescale 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;
};
요약과 해설
fsl,spdif.yaml:1-160Freescale/NXP codec, SOF processor, S/PDIF와 SSI의 clock·DMA·전원·signal mode를 먼저 해설하고, 접을 수 있는 영어 원문 전체와 표·symbol·줄 좌표를 보존한 한국어 전문 번역을 제공합니다.