Linux2.6.39下DM9K驱动源码分析(6)

/*****************************************************************************************************************************************

5、设备复位。硬件操作函数dm9000_reset()

6、 读一下生产商和制造商的ID,应该是0x9000 0A46。 关键函数:ior()

7、 读一下芯片类型。

========以上步骤结束后我们可以认为已经找到了DM9000========

8、借助ether_setup()函数来部分初始化ndev。因为对以太网设备来讲,很多操作与属性是固定的,内核可以帮助完成。

9、手动初始化ndev的ops和db的mii部分。

10、(如果有的话)从EEPROM中读取节点地址。这里可以看到mini2440这个板子上没有为DM9000外挂EEPROM,所以读取出来的全部是0xff。见函数dm9000_read_eeprom。 关于外挂EEPROM,可以参考datasheet上的7.EEPROM Format一节。

11、很显然ndev是我们在probe函数中定义的局部变量,如果我想在其他地方使用它怎么办呢? 这就需要把它保存起来。内核提供了这个方法,使用函数platform_set_drvdata()可以将ndev保存成平台总线设备的私有数据。以后再要使用它时只需调用platform_get_drvdata()就可以了。

12、使用register_netdev()注册ndev。

***************************************************************************************************************************************/
out:
    dev_err(db->dev, "not found (%d).\n", ret);

    dm9000_release_board(pdev, db);
    free_netdev(ndev);

    return ret;
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wyxjyy.html