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

Linux 6.18.37 · Devicetree Bindings / Sound

NXP enhanced ASRC

i.MX8MN/8MP EASRC의 네 DMA context, coefficient firmware와 DPCM rate·format을 설명합니다.

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

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

1. 요약·해설

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

요약과 해설

fsl,easrc.yaml:1-109

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,easrc.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: NXP Asynchronous Sample Rate Converter (ASRC) Controller
8
9 maintainers:
10 - Shengjiu Wang <[email protected]>
11
12 properties:
13 $nodename:
14 pattern: "^easrc@.*"
15
16 compatible:
17 oneOf:
18 - enum:
19 - fsl,imx8mn-easrc
20 - items:
21 - enum:
22 - fsl,imx8mp-easrc
23 - const: fsl,imx8mn-easrc
24
25 reg:
26 maxItems: 1
27
28 interrupts:
29 maxItems: 1
30
31 clocks:
32 items:
33 - description: Peripheral clock
34
35 clock-names:
36 items:
37 - const: mem
38
39 dmas:
40 maxItems: 8
41
42 dma-names:
43 items:
44 - const: ctx0_rx
45 - const: ctx0_tx
46 - const: ctx1_rx
47 - const: ctx1_tx
48 - const: ctx2_rx
49 - const: ctx2_tx
50 - const: ctx3_rx
51 - const: ctx3_tx
52
53 firmware-name:
54 items:
55 - const: imx/easrc/easrc-imx8mn.bin
56 description: The coefficient table for the filters
57
58 fsl,asrc-rate:
59 $ref: /schemas/types.yaml#/definitions/uint32
60 minimum: 8000
61 maximum: 192000
62 description: Defines a mutual sample rate used by DPCM Back Ends
63
64 fsl,asrc-format:
65 $ref: /schemas/types.yaml#/definitions/uint32
66 enum: [2, 6, 10, 32, 36]
67 default: 2
68 description:
69 Defines a mutual sample format used by DPCM Back Ends
70
71 required:
72 - compatible
73 - reg
74 - interrupts
75 - clocks
76 - clock-names
77 - dmas
78 - dma-names
79 - firmware-name
80 - fsl,asrc-rate
81 - fsl,asrc-format
82
83 allOf:
84 - $ref: dai-common.yaml#
85
86 unevaluatedProperties: false
87
88 examples:
89 - |
90 #include <dt-bindings/clock/imx8mn-clock.h>
91
92 easrc: easrc@300c0000 {
93 compatible = "fsl,imx8mn-easrc";
94 reg = <0x300c0000 0x10000>;
95 interrupts = <0x0 122 0x4>;
96 clocks = <&clk IMX8MN_CLK_ASRC_ROOT>;
97 clock-names = "mem";
98 dmas = <&sdma2 16 23 0> , <&sdma2 17 23 0>,
99 <&sdma2 18 23 0> , <&sdma2 19 23 0>,
100 <&sdma2 20 23 0> , <&sdma2 21 23 0>,
101 <&sdma2 22 23 0> , <&sdma2 23 23 0>;
102 dma-names = "ctx0_rx", "ctx0_tx",
103 "ctx1_rx", "ctx1_tx",
104 "ctx2_rx", "ctx2_tx",
105 "ctx3_rx", "ctx3_tx";
106 firmware-name = "imx/easrc/easrc-imx8mn.bin";
107 fsl,asrc-rate = <8000>;
108 fsl,asrc-format = <2>;
109 };
110

3. 한국어 전문 번역

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

NXP enhanced ASRC schema

1-11

이 YAML binding은 NXP Asynchronous Sample Rate Converter(ASRC) controller를 정의합니다. Schema ID는 `http://devicetree.org/schemas/sound/fsl,easrc.yaml#`이고 maintainer는 Shengjiu Wang입니다.

Node name, compatible과 peripheral clock

12-38

Node name은 `^easrc@.*` pattern을 따라야 합니다. `compatible`은 단일 `fsl,imx8mn-easrc`이거나 `fsl,imx8mp-easrc` 뒤에 fallback `fsl,imx8mn-easrc`을 둔 두 항목입니다.

`reg`와 `interrupts`는 각각 최대 한 항목입니다. `clocks`는 peripheral clock 한 항목이고 `clock-names`는 `mem`입니다.

4 context DMA와 filter coefficient

39-57

`dmas`는 최대 8개입니다. `dma-names`는 `ctx0_rx`, `ctx0_tx`, `ctx1_rx`, `ctx1_tx`, `ctx2_rx`, `ctx2_tx`, `ctx3_rx`, `ctx3_tx` 순서로 네 context의 RX/TX pair를 정의합니다.

`firmware-name`은 filter coefficient table인 `imx/easrc/easrc-imx8mn.bin`으로 고정됩니다.

DPCM backend 공통 rate와 format

58-70

`fsl,asrc-rate`는 DPCM backend가 함께 사용할 sample rate를 정하는 `uint32`이며 범위는 8000~192000입니다.

`fsl,asrc-format`은 DPCM backend 공통 sample format을 정하며 2, 6, 10, 32, 36 중 하나이고 기본값은 2입니다.

필수 속성과 공통 DAI

71-87

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

i.MX8MN EASRC 4-context 예제

88-109

예제는 address `0x300c0000`의 EASRC에 interrupt 122와 ASRC root clock을 연결합니다. SDMA2 request 16~23을 네 RX/TX context에 배정하고 coefficient firmware, 8000 Hz rate와 format 2를 설정합니다.

#include <dt-bindings/clock/imx8mn-clock.h>

easrc: easrc@300c0000 {
    compatible = "fsl,imx8mn-easrc";
    reg = <0x300c0000 0x10000>;
    interrupts = <0x0 122 0x4>;
    clocks = <&clk IMX8MN_CLK_ASRC_ROOT>;
    clock-names = "mem";
    dmas = <&sdma2 16 23 0> , <&sdma2 17 23 0>,
           <&sdma2 18 23 0> , <&sdma2 19 23 0>,
           <&sdma2 20 23 0> , <&sdma2 21 23 0>,
           <&sdma2 22 23 0> , <&sdma2 23 23 0>;
    dma-names = "ctx0_rx", "ctx0_tx",
                "ctx1_rx", "ctx1_tx",
                "ctx2_rx", "ctx2_tx",
                "ctx3_rx", "ctx3_tx";
    firmware-name = "imx/easrc/easrc-imx8mn.bin";
    fsl,asrc-rate = <8000>;
    fsl,asrc-format = <2>;
};