← Documents Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings / Sound

NVIDIA Tegra30 AHUB

Tegra30·114·124 AHUB의 register, clock, reset, DMA와 CIF ID 규칙을 설명합니다.

Source pathDocumentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

nvidia,tegra30-ahub.txt:1-88

Tegra30·114·124 AHUB의 register, clock, reset, DMA와 CIF ID 규칙을 설명합니다. 접을 수 있는 영어 원문은 전체 source line과 공백을 보존하며, 한국어 전문 번역은 property·endpoint·phandle·예제 코드를 원형대로 유지합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 NVIDIA Tegra30 AHUB (Audio Hub)
2
3 Required properties:
4 - compatible : For Tegra30, must contain "nvidia,tegra30-ahub". For Tegra114,
5 must contain "nvidia,tegra114-ahub". For Tegra124, must contain
6 "nvidia,tegra124-ahub". Otherwise, must contain "nvidia,<chip>-ahub",
7 plus at least one of the above, where <chip> is tegra132.
8 - reg : Should contain the register physical address and length for each of
9 the AHUB's register blocks.
10 - Tegra30 requires 2 entries, for the APBIF and AHUB/AUDIO register blocks.
11 - Tegra114 requires an additional entry, for the APBIF2 register block.
12 - interrupts : Should contain AHUB interrupt
13 - clocks : Must contain an entry for each entry in clock-names.
14 See ../clocks/clock-bindings.txt for details.
15 - clock-names : Must include the following entries:
16 - d_audio
17 - apbif
18 - resets : Must contain an entry for each entry in reset-names.
19 See ../reset/reset.txt for details.
20 - reset-names : Must include the following entries:
21 Tegra30 and later:
22 - d_audio
23 - apbif
24 - i2s0
25 - i2s1
26 - i2s2
27 - i2s3
28 - i2s4
29 - dam0
30 - dam1
31 - dam2
32 - spdif
33 Tegra114 and later additionally require:
34 - amx
35 - adx
36 Tegra124 and later additionally require:
37 - amx1
38 - adx1
39 - afc0
40 - afc1
41 - afc2
42 - afc3
43 - afc4
44 - afc5
45 - ranges : The bus address mapping for the configlink register bus.
46 Can be empty since the mapping is 1:1.
47 - dmas : Must contain an entry for each entry in clock-names.
48 See ../dma/dma.txt for details.
49 - dma-names : Must include the following entries:
50 - rx0 .. rx<n>
51 - tx0 .. tx<n>
52 ... where n is:
53 Tegra30: 3
54 Tegra114, Tegra124: 9
55 - #address-cells : For the configlink bus. Should be <1>;
56 - #size-cells : For the configlink bus. Should be <1>.
57
58 AHUB client modules need to specify the IDs of their CIFs (Client InterFaces).
59 For RX CIFs, the numbers indicate the register number within AHUB routing
60 register space (APBIF 0..3 RX, I2S 0..5 RX, DAM 0..2 RX 0..1, SPDIF RX 0..1).
61 For TX CIFs, the numbers indicate the bit position within the AHUB routing
62 registers (APBIF 0..3 TX, I2S 0..5 TX, DAM 0..2 TX, SPDIF TX 0..1).
63
64 Example:
65
66 ahub@70080000 {
67 compatible = "nvidia,tegra30-ahub";
68 reg = <0x70080000 0x200 0x70080200 0x100>;
69 interrupts = < 0 103 0x04 >;
70 nvidia,dma-request-selector = <&apbdma 1>;
71 clocks = <&tegra_car 106>, <&tegra_car 107>;
72 clock-names = "d_audio", "apbif";
73 resets = <&tegra_car 106>, <&tegra_car 107>, <&tegra_car 30>,
74 <&tegra_car 11>, <&tegra_car 18>, <&tegra_car 101>,
75 <&tegra_car 102>, <&tegra_car 108>, <&tegra_car 109>,
76 <&tegra_car 110>, <&tegra_car 10>;
77 reset-names = "d_audio", "apbif", "i2s0", "i2s1", "i2s2",
78 "i2s3", "i2s4", "dam0", "dam1", "dam2",
79 "spdif";
80 dmas = <&apbdma 1>, <&apbdma 1>;
81 <&apbdma 2>, <&apbdma 2>;
82 <&apbdma 3>, <&apbdma 3>;
83 <&apbdma 4>, <&apbdma 4>;
84 dma-names = "rx0", "tx0", "rx1", "tx1", "rx2", "tx2", "rx3", "tx3";
85 ranges;
86 #address-cells = <1>;
87 #size-cells = <1>;
88 };
89

3. 한국어 전문 번역

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

Tegra AHUB core 자원

1-14

NVIDIA Tegra30 AHUB(Audio Hub)의 `compatible`은 Tegra30에서 `nvidia,tegra30-ahub`, Tegra114에서 `nvidia,tegra114-ahub`, Tegra124에서 `nvidia,tegra124-ahub`입니다. Tegra132 같은 다른 chip은 `nvidia,<chip>-ahub`와 앞의 compatible 중 하나 이상을 함께 넣습니다.

`reg`에는 AHUB register block별 physical address와 length를 지정합니다. Tegra30은 APBIF와 AHUB/AUDIO 두 entry가 필요하고 Tegra114는 APBIF2 entry도 필요합니다. `interrupts`에는 AHUB interrupt를, `clocks`에는 `clock-names`의 각 entry에 대응하는 clock을 넣으며 세부 형식은 `../clocks/clock-bindings.txt`를 따릅니다.

Clock·reset·DMA 세대 차이

15-56

`clock-names`의 필수 이름은 `d_audio`와 `apbif`입니다. `resets`는 `reset-names`마다 하나씩 필요하며 형식은 `../reset/reset.txt`를 따릅니다.

Tegra30 이후의 reset 이름은 `d_audio`, `apbif`, `i2s0`~`i2s4`, `dam0`~`dam2`, `spdif`입니다. Tegra114 이후에는 `amx`, `adx`가 추가되고 Tegra124 이후에는 `amx1`, `adx1`, `afc0`~`afc5`도 추가됩니다.

`ranges`는 configlink register bus의 bus-address mapping이며 1:1 mapping이면 비어 있어도 됩니다. `dmas`는 DMA specifier 목록이고 형식은 `../dma/dma.txt`를 따릅니다. `dma-names`는 `rx0`~`rx<n>`과 `tx0`~`tx<n>`이며 n은 Tegra30에서 3, Tegra114·Tegra124에서 9입니다. Configlink bus의 `#address-cells`와 `#size-cells`는 모두 1입니다.

AHUB CIF ID 의미

57-63

AHUB client module은 CIF(Client InterFace) ID를 지정해야 합니다. RX CIF 번호는 AHUB routing register space의 register number를 나타내며 APBIF 0~3 RX, I2S 0~5 RX, DAM 0~2의 RX 0~1, SPDIF RX 0~1 범위를 사용합니다.

TX CIF 번호는 AHUB routing register 안의 bit position을 나타내며 APBIF 0~3 TX, I2S 0~5 TX, DAM 0~2 TX, SPDIF TX 0~1 범위를 사용합니다.

Tegra30 AHUB 예제

64-88

예제는 APBIF와 AHUB/AUDIO register, interrupt 103, APB DMA selector, 두 clock, 열한 reset, 네 RX/TX DMA pair와 configlink address cell을 구성합니다.

ahub@70080000 {
        compatible = "nvidia,tegra30-ahub";
        reg = <0x70080000 0x200 0x70080200 0x100>;
        interrupts = < 0 103 0x04 >;
        nvidia,dma-request-selector = <&apbdma 1>;
        clocks = <&tegra_car 106>, <&tegra_car 107>;
        clock-names = "d_audio", "apbif";
        resets = <&tegra_car 106>, <&tegra_car 107>, <&tegra_car 30>,
                <&tegra_car 11>, <&tegra_car 18>, <&tegra_car 101>,
                <&tegra_car 102>, <&tegra_car 108>, <&tegra_car 109>,
                <&tegra_car 110>, <&tegra_car 10>;
        reset-names = "d_audio", "apbif", "i2s0", "i2s1", "i2s2",
                "i2s3", "i2s4", "dam0", "dam1", "dam2",
                "spdif";
        dmas = <&apbdma 1>, <&apbdma 1>;
               <&apbdma 2>, <&apbdma 2>;
               <&apbdma 3>, <&apbdma 3>;
               <&apbdma 4>, <&apbdma 4>;
        dma-names = "rx0", "tx0", "rx1", "tx1", "rx2", "tx2", "rx3", "tx3";
        ranges;
        #address-cells = <1>;
        #size-cells = <1>;
};