打印

嵌入式linux 系统 网卡驱动 ioread32函数返回值异常

[复制链接]
3198|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bingfeng1210|  楼主 | 2011-7-20 14:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我看内核网卡驱动的时候,看到
static int emac_mii_read(struct mii_bus *bus, int phy_id, int phy_reg)
{
unsigned int phy_data = 0;
unsigned int phy_control;

/* Wait until mdio is ready for next command */
MDIO_WAIT_FOR_USER_ACCESS;

phy_control = (MDIO_USERACCESS_GO |
       MDIO_USERACCESS_READ |
       ((phy_reg << 21) & MDIO_USERACCESS_REGADR) |
       ((phy_id << 16) & MDIO_USERACCESS_PHYADR) |
       (phy_data & MDIO_USERACCESS_DATA));
emac_mdio_write(MDIO_USERACCESS(0), phy_control);

/* Wait until mdio is ready for next command */
MDIO_WAIT_FOR_USER_ACCESS;

return emac_mdio_read(MDIO_USERACCESS(0)) & MDIO_USERACCESS_DATA;

}
在 return emac_mdio_read(MDIO_USERACCESS(0)) & MDIO_USERACCESS_DATA;这个语句在执行之前,开发板的网卡驱动返回的数据都是正常的(两块开发板的比较,一块板子是能正常通信,一块是不能的)


#define MDIO_USERACCESS(inst) (0x80 + (inst * 8))
#define emac_mdio_read(reg)   ioread32(bus->priv + (reg))
在最后一个语句执行的时候,关联到ioread32函数的时候,我找不到函数体了,我看了搜索相关的文件,没有找到这个函数体,想问下,如何找到这个函数的函数体。因为就是因为这个函数返回的值不正确,使用导致我们的网卡驱动出现问题。困扰很久了,希望各位大侠帮忙看看。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

10

帖子

1

粉丝