요약·해설과 원문, 전문 번역을 서로 분리했습니다. 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,xcvr.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: NXP Audio Transceiver (XCVR) Controller
maintainers:
- Viorel Suman <viorel.suman@nxp.com>
description: |
NXP XCVR (Audio Transceiver) is a on-chip functional module
that allows CPU to receive and transmit digital audio via
HDMI2.1 eARC, HDMI1.4 ARC and SPDIF.
properties:
$nodename:
pattern: "^xcvr@.*"
compatible:
enum:
- fsl,imx8mp-xcvr
- fsl,imx93-xcvr
- fsl,imx95-xcvr
reg:
items:
- description: 20K RAM for code and data
- description: registers space
- description: RX FIFO address
- description: TX FIFO address
reg-names:
items:
- const: ram
- const: regs
- const: rxfifo
- const: txfifo
interrupts:
items:
- description: WAKEUPMIX Audio XCVR Interrupt 1
- description: WAKEUPMIX Audio XCVR Interrupt 2
- description: SPDIF wakeup interrupt from PHY
minItems: 1
clocks:
items:
- description: Peripheral clock
- description: PHY clock
- description: SPBA clock
- description: PLL clock
- description: PLL clock source for 8kHz series
- description: PLL clock source for 11kHz series
minItems: 4
clock-names:
items:
- const: ipg
- const: phy
- const: spba
- const: pll_ipg
- const: pll8k
- const: pll11k
minItems: 4
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
resets:
maxItems: 1
required:
- compatible
- reg
- reg-names
- interrupts
- clocks
- clock-names
- dmas
- dma-names
allOf:
- $ref: dai-common.yaml#
- if:
properties:
compatible:
contains:
const: fsl,imx8mp-xcvr
then:
required:
- resets
- if:
properties:
compatible:
contains:
enum:
- fsl,imx93-xcvr
- fsl,imx95-xcvr
then:
properties:
interrupts:
minItems: 2
maxItems: 2
else:
properties:
interrupts:
minItems: 3
maxItems: 3
- if:
properties:
compatible:
contains:
enum:
- fsl,imx8mp-xcvr
- fsl,imx93-xcvr
then:
properties:
clocks:
maxItems: 4
clock-names:
maxItems: 4
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/imx8mp-clock.h>
#include <dt-bindings/reset/imx8mp-reset.h>
xcvr: xcvr@30cc0000 {
compatible = "fsl,imx8mp-xcvr";
reg = <0x30cc0000 0x800>,
<0x30cc0800 0x400>,
<0x30cc0c00 0x080>,
<0x30cc0e00 0x080>;
reg-names = "ram", "regs", "rxfifo", "txfifo";
interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&audiomix_clk IMX8MP_CLK_AUDIOMIX_EARC_IPG>,
<&audiomix_clk IMX8MP_CLK_AUDIOMIX_EARC_PHY>,
<&audiomix_clk IMX8MP_CLK_AUDIOMIX_SPBA2_ROOT>,
<&audiomix_clk IMX8MP_CLK_AUDIOMIX_AUDPLL_ROOT>;
clock-names = "ipg", "phy", "spba", "pll_ipg";
dmas = <&sdma2 30 2 0>, <&sdma2 31 2 0>;
dma-names = "rx", "tx";
resets = <&audiomix_reset 0>;
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
NXP Audio Transceiver
1-16NXP XCVR(Audio Transceiver)는 CPU가 HDMI 2.1 eARC, HDMI 1.4 ARC, SPDIF를 통해 digital audio를 송수신하게 하는 on-chip functional module입니다. Schema ID는 `http://devicetree.org/schemas/sound/fsl,xcvr.yaml#`이며 maintainer는 Viorel Suman입니다.
Node, register region과 interrupt
17-47Node name은 `^xcvr@.*` pattern을 따르며 `compatible`은 `fsl,imx8mp-xcvr`, `fsl,imx93-xcvr`, `fsl,imx95-xcvr` 중 하나입니다.
`reg`의 네 region은 20 KB code/data RAM, register space, RX FIFO address, TX FIFO address 순서이고 `reg-names`는 `ram`, `regs`, `rxfifo`, `txfifo`입니다.
`interrupts`는 WAKEUPMIX Audio XCVR interrupt 1·2와 PHY의 SPDIF wakeup interrupt 순서이며 최소 한 항목입니다.
Clock, RX/TX DMA와 reset
48-80`clocks`는 peripheral `ipg`, PHY `phy`, SPBA `spba`, PLL `pll_ipg`, 8 kHz 계열 `pll8k`, 11 kHz 계열 `pll11k` 순서이며 최소 4개입니다. `clock-names`도 같은 순서입니다.
`dmas`는 RX와 TX request 두 항목이고 `dma-names`는 `rx`, `tx`입니다. `resets`는 최대 한 항목입니다.
기본 필수 속성
81-90필수 속성은 `compatible`, `reg`, `reg-names`, `interrupts`, `clocks`, `clock-names`, `dmas`, `dma-names`입니다.
SoC별 reset, interrupt와 clock 수
91-135Binding은 `dai-common.yaml#`을 상속합니다. `fsl,imx8mp-xcvr`에는 `resets`가 필수입니다.
`fsl,imx93-xcvr`와 `fsl,imx95-xcvr`는 interrupt를 정확히 2개 사용하고, 다른 compatible인 i.MX8MP는 정확히 3개를 사용합니다.
`fsl,imx8mp-xcvr`와 `fsl,imx93-xcvr`는 `clocks`와 `clock-names`를 최대 4개만 허용합니다. 공통 schema 평가 뒤 남는 추가 속성은 허용하지 않습니다.
i.MX8MP XCVR 예제
136-160예제는 `0x30cc0000`의 XCVR에 RAM·register·RX FIFO·TX FIFO region, GIC SPI 128·129·146, IPG·PHY·SPBA·audio PLL clock, SDMA2 RX/TX request 30·31과 AudioMix reset을 연결합니다.
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/imx8mp-clock.h>
#include <dt-bindings/reset/imx8mp-reset.h>
xcvr: xcvr@30cc0000 {
compatible = "fsl,imx8mp-xcvr";
reg = <0x30cc0000 0x800>,
<0x30cc0800 0x400>,
<0x30cc0c00 0x080>,
<0x30cc0e00 0x080>;
reg-names = "ram", "regs", "rxfifo", "txfifo";
interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&audiomix_clk IMX8MP_CLK_AUDIOMIX_EARC_IPG>,
<&audiomix_clk IMX8MP_CLK_AUDIOMIX_EARC_PHY>,
<&audiomix_clk IMX8MP_CLK_AUDIOMIX_SPBA2_ROOT>,
<&audiomix_clk IMX8MP_CLK_AUDIOMIX_AUDPLL_ROOT>;
clock-names = "ipg", "phy", "spba", "pll_ipg";
dmas = <&sdma2 30 2 0>, <&sdma2 31 2 0>;
dma-names = "rx", "tx";
resets = <&audiomix_reset 0>;
};
요약과 해설
fsl,xcvr.yaml:1-160NXP XCVR와 Google Chameleon·ChromeOS EC·SC7180 audio 구성의 memory, interrupt, DAI graph를 먼저 해설하고, 접을 수 있는 영어 원문 전체와 source path·symbol·줄 좌표를 보존한 한국어 전문 번역을 제공합니다.