网卡phy扫描问题

设备树里读出来 mac基地址0xcac80000,phy号为1,但是去扫描phy操作读它的第二位第三位寄存器,一直读的都是0,读不到正常数值?是不是基地址不对?我扫了很多phy号都读不到正常值,而且操作各个寄存器读写也操作不了。

您好,这里 phy 地址是正确的,方便给下扫描命令吗。我这边使用sys节点和mdio-tool(这个工具需要安装)访问phy寄存器,都是正常的,可以参考一下。
读:

写:

1 Like

void synopGMAC_attach(synopGMACdevice gmacdev, UINT64 macBase, UINT64 dmaBase, UINT32 phyBase)
{
/
清理设备数据结构 */
utilsMemSet((void *)gmacdev, 0, sizeof(synopGMACdevice));

/* 填充MAC和DMA基地址 */
gmacdev->MacBase = 0xcac80000;  // GMAC寄存器基地址
gmacdev->DmaBase = dmaBase;     // DMA基地址(需要确认)
gmacdev->PhyBase = phyBase;     // PHY地址(设备树中为1)

printk("macBase = 0x%llx; DmaBase = 0x%llx; PhyBase = 0x%x\n", 
       gmacdev->MacBase, gmacdev->DmaBase, gmacdev->PhyBase);

// 继续初始化...

}
我现在就不做扫phy操作直接这么去写phy的设备了。

dma的偏移可以给一下吗 我看设备树里没给,我用普通的0x1000/0x2000/0x3000偏移好像也不能进行reset和读写等的操作?
就是0xcac81000/0xcac82000/0xcac83000按照普通dma的寄存器偏移和寄存器操作都操作不了?
能否确认一下dma偏移

Muse Card gmac控制器的 DMA 偏移是 0x0000,全部寄存器定义在 k1x_emac.h中,但是请注意 MAC 控制器是通过:
#define MAC_MDIO_CONTROL 0x01A0
#define MAC_MDIO_DATA 0x01A4
两个寄存器访问 PHY 寄存器的,方法参考

1 Like