← Documents Documentation/devicetree/bindings/net/amd-xgbe.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

AMD 10GbE XGBE

AMD XGBE의 register·channel interrupt와 속도별 SerDes 설정입니다.

Source pathDocumentation/devicetree/bindings/net/amd-xgbe.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

amd-xgbe.txt:1-76

1·2.5·10GbE 배열과 Seattle XGBE 예제를 설명합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 * AMD 10GbE driver (amd-xgbe)
2
3 Required properties:
4 - compatible: Should be "amd,xgbe-seattle-v1a"
5 - reg: Address and length of the register sets for the device
6 - MAC registers
7 - PCS registers
8 - SerDes Rx/Tx registers
9 - SerDes integration registers (1/2)
10 - SerDes integration registers (2/2)
11 - interrupts: Should contain the amd-xgbe interrupt(s). The first interrupt
12 listed is required and is the general device interrupt. If the optional
13 amd,per-channel-interrupt property is specified, then one additional
14 interrupt for each DMA channel supported by the device should be specified.
15 The last interrupt listed should be the PCS auto-negotiation interrupt.
16 - clocks:
17 - DMA clock for the amd-xgbe device (used for calculating the
18 correct Rx interrupt watchdog timer value on a DMA channel
19 for coalescing)
20 - PTP clock for the amd-xgbe device
21 - clock-names: Should be the names of the clocks
22 - "dma_clk" for the DMA clock
23 - "ptp_clk" for the PTP clock
24 - phy-mode: See ethernet.txt file in the same directory
25
26 Optional properties:
27 - dma-coherent: Present if dma operations are coherent
28 - amd,per-channel-interrupt: Indicates that Rx and Tx complete will generate
29 a unique interrupt for each DMA channel - this requires an additional
30 interrupt be configured for each DMA channel
31 - amd,speed-set: Speed capabilities of the device
32 0 - 1GbE and 10GbE (default)
33 1 - 2.5GbE and 10GbE
34
35 The MAC address will be determined using the optional properties defined in
36 ethernet.txt.
37
38 The following optional properties are represented by an array with each
39 value corresponding to a particular speed. The first array value represents
40 the setting for the 1GbE speed, the second value for the 2.5GbE speed and
41 the third value for the 10GbE speed. All three values are required if the
42 property is used.
43 - amd,serdes-blwc: Baseline wandering correction enablement
44 0 - Off
45 1 - On
46 - amd,serdes-cdr-rate: CDR rate speed selection
47 - amd,serdes-pq-skew: PQ (data sampling) skew
48 - amd,serdes-tx-amp: TX amplitude boost
49 - amd,serdes-dfe-tap-config: DFE taps available to run
50 - amd,serdes-dfe-tap-enable: DFE taps to enable
51
52 Example:
53 xgbe@e0700000 {
54 compatible = "amd,xgbe-seattle-v1a";
55 reg = <0 0xe0700000 0 0x80000>,
56 <0 0xe0780000 0 0x80000>,
57 <0 0xe1240800 0 0x00400>,
58 <0 0xe1250000 0 0x00060>,
59 <0 0xe1250080 0 0x00004>;
60 interrupt-parent = <&gic>;
61 interrupts = <0 325 4>,
62 <0 326 1>, <0 327 1>, <0 328 1>, <0 329 1>,
63 <0 323 4>;
64 amd,per-channel-interrupt;
65 clocks = <&xgbe_dma_clk>, <&xgbe_ptp_clk>;
66 clock-names = "dma_clk", "ptp_clk";
67 phy-mode = "xgmii";
68 mac-address = [ 02 a1 a2 a3 a4 a5 ];
69 amd,speed-set = <0>;
70 amd,serdes-blwc = <1>, <1>, <0>;
71 amd,serdes-cdr-rate = <2>, <2>, <7>;
72 amd,serdes-pq-skew = <10>, <10>, <30>;
73 amd,serdes-tx-amp = <15>, <15>, <10>;
74 amd,serdes-dfe-tap-config = <3>, <3>, <1>;
75 amd,serdes-dfe-tap-enable = <0>, <0>, <127>;
76 };
77

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`를 따릅니다.

AMD XGBE register blocks
MAC registersPCS registers
PCS registersSerDes Rx/Tx
SerDes Rx/TxSerDes integration 1/2
SerDes integration 1/2SerDes integration 2/2

MAC과 PCS 앞뒤에 SerDes data·integration block이 연결됩니다.

AMD XGBE interrupt ordering
FirstGeneral device interrupt
MiddleOne interrupt per DMA channel
LastPCS auto-negotiation interrupt

첫 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`에 정의된 선택 속성으로 결정합니다.

AMD XGBE speed set
amd,speed-setCapability
01GbE + 10GbE, default
12.5GbE + 10GbE

저속 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을 지정합니다.

SerDes 배열 index
IndexSpeed
01GbE
12.5GbE
210GbE

모든 속성은 같은 세 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>;
};