요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
NVIDIA Tegra30 AHUB (Audio Hub)
Required properties:
- compatible : For Tegra30, must contain "nvidia,tegra30-ahub". For Tegra114,
must contain "nvidia,tegra114-ahub". For Tegra124, must contain
"nvidia,tegra124-ahub". Otherwise, must contain "nvidia,<chip>-ahub",
plus at least one of the above, where <chip> is tegra132.
- reg : Should contain the register physical address and length for each of
the AHUB's register blocks.
- Tegra30 requires 2 entries, for the APBIF and AHUB/AUDIO register blocks.
- Tegra114 requires an additional entry, for the APBIF2 register block.
- interrupts : Should contain AHUB interrupt
- clocks : Must contain an entry for each entry in clock-names.
See ../clocks/clock-bindings.txt for details.
- clock-names : Must include the following entries:
- d_audio
- apbif
- resets : Must contain an entry for each entry in reset-names.
See ../reset/reset.txt for details.
- reset-names : Must include the following entries:
Tegra30 and later:
- d_audio
- apbif
- i2s0
- i2s1
- i2s2
- i2s3
- i2s4
- dam0
- dam1
- dam2
- spdif
Tegra114 and later additionally require:
- amx
- adx
Tegra124 and later additionally require:
- amx1
- adx1
- afc0
- afc1
- afc2
- afc3
- afc4
- afc5
- ranges : The bus address mapping for the configlink register bus.
Can be empty since the mapping is 1:1.
- dmas : Must contain an entry for each entry in clock-names.
See ../dma/dma.txt for details.
- dma-names : Must include the following entries:
- rx0 .. rx<n>
- tx0 .. tx<n>
... where n is:
Tegra30: 3
Tegra114, Tegra124: 9
- #address-cells : For the configlink bus. Should be <1>;
- #size-cells : For the configlink bus. Should be <1>.
AHUB client modules need to specify the IDs of their CIFs (Client InterFaces).
For RX CIFs, the numbers indicate the register number within AHUB routing
register space (APBIF 0..3 RX, I2S 0..5 RX, DAM 0..2 RX 0..1, SPDIF RX 0..1).
For TX CIFs, the numbers indicate the bit position within the AHUB routing
registers (APBIF 0..3 TX, I2S 0..5 TX, DAM 0..2 TX, SPDIF TX 0..1).
Example:
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>;
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
Tegra AHUB core 자원
1-14NVIDIA 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-63AHUB 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>;
};
요약과 해설
nvidia,tegra30-ahub.txt:1-88Tegra30·114·124 AHUB의 register, clock, reset, DMA와 CIF ID 규칙을 설명합니다. 접을 수 있는 영어 원문은 전체 source line과 공백을 보존하며, 한국어 전문 번역은 property·endpoint·phandle·예제 코드를 원형대로 유지합니다.