요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
* AMD 10GbE driver (amd-xgbe)
Required properties:
- compatible: Should be "amd,xgbe-seattle-v1a"
- reg: Address and length of the register sets for the device
- MAC registers
- PCS registers
- SerDes Rx/Tx registers
- SerDes integration registers (1/2)
- SerDes integration registers (2/2)
- interrupts: Should contain the amd-xgbe interrupt(s). The first interrupt
listed is required and is the general device interrupt. If the optional
amd,per-channel-interrupt property is specified, then one additional
interrupt for each DMA channel supported by the device should be specified.
The last interrupt listed should be the PCS auto-negotiation interrupt.
- clocks:
- DMA clock for the amd-xgbe device (used for calculating the
correct Rx interrupt watchdog timer value on a DMA channel
for coalescing)
- PTP clock for the amd-xgbe device
- clock-names: Should be the names of the clocks
- "dma_clk" for the DMA clock
- "ptp_clk" for the PTP clock
- phy-mode: See ethernet.txt file in the same directory
Optional properties:
- dma-coherent: Present if dma operations are coherent
- amd,per-channel-interrupt: Indicates that Rx and Tx complete will generate
a unique interrupt for each DMA channel - this requires an additional
interrupt be configured for each DMA channel
- amd,speed-set: Speed capabilities of the device
0 - 1GbE and 10GbE (default)
1 - 2.5GbE and 10GbE
The MAC address will be determined using the optional properties defined in
ethernet.txt.
The following optional properties are represented by an array with each
value corresponding to a particular speed. The first array value represents
the setting for the 1GbE speed, the second value for the 2.5GbE speed and
the third value for the 10GbE speed. All three values are required if the
property is used.
- amd,serdes-blwc: Baseline wandering correction enablement
0 - Off
1 - On
- amd,serdes-cdr-rate: CDR rate speed selection
- amd,serdes-pq-skew: PQ (data sampling) skew
- amd,serdes-tx-amp: TX amplitude boost
- amd,serdes-dfe-tap-config: DFE taps available to run
- amd,serdes-dfe-tap-enable: DFE taps to enable
Example:
xgbe@e0700000 {
compatible = "amd,xgbe-seattle-v1a";
reg = <0 0xe0700000 0 0x80000>,
<0 0xe0780000 0 0x80000>,
<0 0xe1240800 0 0x00400>,
<0 0xe1250000 0 0x00060>,
<0 0xe1250080 0 0x00004>;
interrupt-parent = <&gic>;
interrupts = <0 325 4>,
<0 326 1>, <0 327 1>, <0 328 1>, <0 329 1>,
<0 323 4>;
amd,per-channel-interrupt;
clocks = <&xgbe_dma_clk>, <&xgbe_ptp_clk>;
clock-names = "dma_clk", "ptp_clk";
phy-mode = "xgmii";
mac-address = [ 02 a1 a2 a3 a4 a5 ];
amd,speed-set = <0>;
amd,serdes-blwc = <1>, <1>, <0>;
amd,serdes-cdr-rate = <2>, <2>, <7>;
amd,serdes-pq-skew = <10>, <10>, <30>;
amd,serdes-tx-amp = <15>, <15>, <10>;
amd,serdes-dfe-tap-config = <3>, <3>, <1>;
amd,serdes-dfe-tap-enable = <0>, <0>, <127>;
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
AMD 10GbE driver
1-2이 문서는 AMD 10GbE `amd-xgbe` driver 바인딩입니다.
다섯 register와 interrupt·clock
3-25필수 `compatible`은 `amd,xgbe-seattle-v1a`입니다. `reg`에는 MAC, PCS, SerDes Rx/Tx, SerDes integration 1/2, SerDes integration 2/2의 다섯 register set 주소와 길이를 순서대로 넣습니다.
`interrupts`의 첫 항목은 필수 general device interrupt입니다. 선택 `amd,per-channel-interrupt`를 쓰면 device가 지원하는 DMA channel마다 interrupt 하나를 추가해야 하며, 마지막 항목은 PCS auto-negotiation interrupt여야 합니다.
`clocks`에는 Rx interrupt coalescing용 DMA watchdog timer 계산에 쓰는 DMA clock과 PTP clock을 넣습니다. `clock-names`는 각각 `dma_clk`, `ptp_clk`입니다. `phy-mode`는 같은 directory의 `ethernet.txt`를 따릅니다.
MAC과 PCS 앞뒤에 SerDes data·integration block이 연결됩니다.
첫 interrupt와 마지막 interrupt의 의미가 고정되고 중간에 channel별 interrupt가 들어갑니다.
DMA coherency와 speed set
26-37선택 `dma-coherent`는 DMA operation이 coherent임을 나타냅니다. `amd,per-channel-interrupt`는 각 DMA channel의 Rx·Tx completion이 고유 interrupt를 생성하게 하며 channel마다 추가 interrupt가 필요합니다.
`amd,speed-set`은 device speed capability를 선택합니다. 0은 기본값으로 1GbE와 10GbE, 1은 2.5GbE와 10GbE를 지원합니다.
MAC address는 `ethernet.txt`에 정의된 선택 속성으로 결정합니다.
저속 mode와 10GbE 조합을 선택합니다.
속도별 SerDes 배열
38-51다음 선택 속성은 배열이며 각 값은 특정 speed에 대응합니다. 첫 값은 1GbE, 두 번째는 2.5GbE, 세 번째는 10GbE 설정입니다. 속성을 사용하면 세 값을 모두 제공해야 합니다.
`amd,serdes-blwc`는 baseline wandering correction으로 0은 off, 1은 on입니다. `amd,serdes-cdr-rate`는 CDR rate speed, `amd,serdes-pq-skew`는 PQ data-sampling skew, `amd,serdes-tx-amp`는 TX amplitude boost입니다.
`amd,serdes-dfe-tap-config`는 실행 가능한 DFE tap, `amd,serdes-dfe-tap-enable`은 활성화할 DFE tap을 지정합니다.
모든 속성은 같은 세 speed 순서를 사용합니다.
Seattle XGBE 예제
52-76예제는 다섯 register 범위, general·channel별·PCS interrupt, DMA·PTP clock, XGMII, MAC address와 speed set 0을 설정합니다. 여섯 SerDes 속성은 모두 1GbE·2.5GbE·10GbE의 세 값을 제공합니다.
xgbe@e0700000 {
compatible = "amd,xgbe-seattle-v1a";
reg = <0 0xe0700000 0 0x80000>,
<0 0xe0780000 0 0x80000>,
<0 0xe1240800 0 0x00400>,
<0 0xe1250000 0 0x00060>,
<0 0xe1250080 0 0x00004>;
interrupt-parent = <&gic>;
interrupts = <0 325 4>,
<0 326 1>, <0 327 1>, <0 328 1>, <0 329 1>,
<0 323 4>;
amd,per-channel-interrupt;
clocks = <&xgbe_dma_clk>, <&xgbe_ptp_clk>;
clock-names = "dma_clk", "ptp_clk";
phy-mode = "xgmii";
mac-address = [ 02 a1 a2 a3 a4 a5 ];
amd,speed-set = <0>;
amd,serdes-blwc = <1>, <1>, <0>;
amd,serdes-cdr-rate = <2>, <2>, <7>;
amd,serdes-pq-skew = <10>, <10>, <30>;
amd,serdes-tx-amp = <15>, <15>, <10>;
amd,serdes-dfe-tap-config = <3>, <3>, <1>;
amd,serdes-dfe-tap-enable = <0>, <0>, <127>;
};
요약과 해설
amd-xgbe.txt:1-761·2.5·10GbE 배열과 Seattle XGBE 예제를 설명합니다.