CHAPTER 10
10. Microchip LAN8841의 RGMII, errata와 IEEE 1588 경계를 읽는다
LAN8841 데이터시트와 Linux micrel driver를 기준으로 KSZ9131 공통 RGMII skew 초기화, LAN8841 전용 analog/latency errata, interrupt output, cable test와 PHY 내부 IEEE 1588 timestamp block을 구분합니다.
공통 기반
Linux lan8841_config_init은 KSZ9131 계열 공통 초기화를 먼저 사용하므로 RGMII skew DT 속성과 pad timing은 micrel 공통 경로까지 함께 읽어야 합니다.
전용 errata
LAN8841 초기화에는 magnetics strap 조건에 따른 10/100 signal tuning, LDO adjustment와 100BASE-T RGMII latency 관련 MMD write가 포함될 수 있습니다.
PTP block
PHY가 ingress/egress frame을 parse하고 timestamp할 수 있습니다. MAC timestamp와 동시에 켜면 어느 clock/point가 packet timestamp의 주인인지 먼저 정합니다.
cable test
TDR 결과는 link-down 진단에 유용하지만 connector, transformer와 cable이 합쳐진 거리/상태입니다. board 내부 위치를 자동으로 확정하지 않습니다.
레지스터와 관측값을 함께 읽는 표
| 항목 | 소유 블록 | 설정 또는 의미 | 정상 증거 | 실패 해석 |
|---|---|---|---|---|
| PHY ID/model | C22 ID register | LAN8841 driver match | Microchip LAN8841로 bind | KSZ9131/LAN884x variant 오인 |
| RGMII skew controls | KSZ9131-compatible MMD | RXC/TXC와 data/control skew | DT picosecond 값과 readback 일치 | 단위/허용 code 반올림 오류 |
| operation strap override | LAN8841 common control MMD | interface와 MagJack 관련 latch | board strap과 일치 | errata 조건 판정 오류 |
| analog control MMD | LAN8841 analog block | PLL/LDO와 10/100 tuning | Linux driver sequence 완료 | 다른 revision에 값 복사 |
| INT output/status | LAN8841 interrupt block | open-drain/buffer와 link/PTP source | board pull-up와 IRQ 설정 일치 | 출력 mode 또는 ack 오류 |
| PTP command/parser | common-control MMD | reset/enable, RX/TX parser와 timestamp mode | 선택한 PTP profile만 처리 | MAC/PHY timestamp 중복 |
| cable diagnostic | PHY DSP/TDR | pair status와 fault distance | known cable baseline과 일치 | link 중 실행 또는 거리 과신 |
증상에서 첫 실패 경계를 찾는 표
| 관측 증상 | 직전 통과 증거 | 우선 확인 | 반증 시험 | 판정 |
|---|---|---|---|---|
| 1G 정상, 100M에서 packet 오류 | PHY ID/RGMII 1G 성공 | 100BT latency errata와 MAC speed 전환 | 100M 전용 counter/loopback | 속도별 RGMII/errata 경계 |
| shorted-center-tap MagJack 보드만 실패 | 다른 magnetics 정상 | strap override와 signal tuning errata | BOM/strap별 driver sequence 비교 | magnetics 조건부 초기화 |
| PTP timestamp가 두 번 또는 흔들림 | packet 전달 정상 | MAC/PHY timestamp ownership | 한쪽 timestamp를 끄고 비교 | timestamp point/clock 중복 |
| PTP IRQ만 없음 | link IRQ 정상 | PTP source enable와 INT output mode | PTP status polling과 pin 비교 | PHY 내부 interrupt route |
| cable test가 항상 같은 거리 | MDIO 접근 정상 | test start/poll/complete 순서 | open/short fixture로 교정 | TDR 실행 또는 해석 오류 |
| resume 후 skew/errata 값 유실 | cold boot 정상 | power-down register retention | resume 전후 MMD diff와 config_init 재호출 확인 | PHY context restore |
실제 검증 절차
| 순서 | 실행 | 남길 증거 | 판정 목적 |
|---|---|---|---|
| 1 | board magnetics 종류와 strap override 값을 저장합니다. | BOM/strap identity | 조건부 errata 판단 |
| 2 | RGMII skew DT picosecond 값과 MMD readback을 방향별로 비교합니다. | RXC/TXC/data skew ledger | timing 설정 검증 |
| 3 | Linux config_init의 공통 초기화와 LAN8841 전용 write를 순서대로 추적합니다. | 함수/레지스터 sequence | 누락 경계 확인 |
| 4 | MAC timestamp와 PHY timestamp를 각각 단독으로 시험해 offset과 jitter를 측정합니다. | timestamp owner별 결과 | PTP 경계 분리 |
| 5 | known-good/open/short fixture로 cable test를 교정합니다. | pair별 status/distance | TDR 신뢰 범위 확인 |
주의LAN8841 analog errata 값은 PHY revision과 magnetics 조건을 확인한 Linux driver 또는 제조사 문서의 sequence로 적용합니다. 다른 Microchip PHY에 복사하지 않습니다.
공개적으로 다시 확인할 수 있는 자료
공개되지 않은 vendor register나 integration별 offset을 추측해서 채우지 않았습니다. 아래 제조사 자료, architecture 문서와 Linux v6.18.37 원본에서 다시 확인할 수 있는 범위만 사용했습니다.
Linux PHY Abstraction Layer
PHY 장치, MDIO, link 상태와 PHY driver의 공개 Linux 계약
Linux phylink
PHY, fixed-link, in-band PCS와 MAC callback의 관계
Linux Ethernet controller binding
phy-mode, phy-handle, fixed-link와 managed 속성
Linux v6.18.37 phy_device.c
PHY 장치 생성, attach, start/stop과 상태 갱신
Linux v6.18.37 phylink.c
link resolve, MAC config, link up/down 실행 경로
TI DP83867IR/CR datasheet
strap, RGMII/SGMII, extended register, clock, interrupt와 진단 기능
TI DP83867 RGMII timing budget
0.25ns 단계 internal delay와 setup/hold margin 계산 및 측정 절차
Linux DP83867 driver
DT 속성, RGMIIDCTL, FIFO, impedance, interrupt와 downshift 초기화
Linux RTL8211F driver
paged register, RGMII TX/RX delay, ALDPS, CLKOUT, EEE, WOL과 interrupt 처리
Microchip LAN8841 product and datasheet
RGMII, IEEE 1588v2, cable diagnostics와 제조사 데이터시트
Linux LAN8841 driver in micrel.c
KSZ9131 공통 초기화, LAN8841 errata, PTP, interrupt와 cable test 경로