0x1F 이상의 PHY MII 레지스터 읽기

0x1F 이상의 PHY MII 레지스터 읽기

DP83826 PHY에 문제가 있어서 일부 구성 레지스터를 읽고 싶습니다. mdio-tool과 mii-diag를 사용했지만 처음 32개의 레지스터만 읽을 수 있다는 것을 깨달았습니다.

mii-diag -v (verbose)는 처음 32개의 레지스터를 표시하며(아마도 우연이 아닐 것임) 0x1F 이상의 주소로 mdio-tool을 사용하면 주소가 0..1F 범위에 머물도록 이동됩니다. mdio-tool의 코드를 살펴본 결과 레지스터 주소가 전혀 제한되지 않았습니다. 또한 mii-diag -va 비트를 해킹하여 32개 이상의 레지스터를 얻었고 처음 32개 레지스터를 계속해서 반환했습니다. 그래서 한계가 다른 곳에 있는 것 같은데 아직 어디인지 찾지 못했습니다. 이제 이 문제를 일으키는 것이 API인지 장치 드라이버인지 알아내려고 노력 중입니다.

ethtool -d eth0도 시도했지만 GMAC 및 DMA 레지스터만 덤프했습니다.

Linux에서 0x1F 이외의 PHY MII 레지스터를 읽고 쓰는 방법은 무엇입니까?

답변1

나는 그것이 어떻게 작동하는지 알아 냈습니다.

기본 표준 MDIO 주소는 5비트로 구성되므로 [0..32] 범위만 직접 접근할 수 있습니다. 기본 표준 이상의 추가 레지스터를 제공하는 장치의 경우 MDIO 관리 장치(MMD) 간접 방법(IEEE 802.3ah 초안의 22절에 정의됨)을 사용하여 확장 레지스터 세트에 액세스할 수 있습니다.

결국 이는 기본 주소 범위 내의 몇 가지 레지스터를 통한 간접 액세스에 지나지 않습니다. 내 특별한 경우에는 (지적했듯이@murrayjensen), REGCR(0x0D) 및 ADDAR(0x0E)이 이 목적으로 사용됩니다. 레지스터 내의 주소와 비트 필드는 칩마다 다를 수 있지만 메커니즘은 상당히 유사합니다.

관련 정보