struct dm9000_plat_data *pdata = pdev->dev.platform_data;
struct board_info *db; /* Point a board information structure */
struct net_device *ndev;
2、初始化一个网络设备,系统函数:alloc_etherdev()
3、获得dm9k所使用的平台资源并将其保存在board_info变量db中。关键系统函数:netdev_priv(), platform_get_resource()
4、根据资源信息分配内存,申请中断等等, 并将申请后的资源信息也保存到db中,并且填充ndev中的参数。 关键系统函数:request_mem_region(), ioremap()。
resource_size(),自定义函数:dm9000_set_io(db, iosize);
db和ndev中填充了那些东西:
struct board_info *db:
addr_res -- 地址资源
data_res -- 数据资源
irq_res -- 中断资源
addr_req -- 分配的地址内存资源
io_addr -- 寄存器I/O基地址
data_req -- 分配的数据内存资源
io_data -- 数据I/O基地址
dumpblk -- IO模式
outblk -- IO模式
inblk -- IO模式
lock -- 自旋锁
addr_lock -- 互斥锁
struct net_device *ndev:
base_addr -- 设备IO地址
irq -- 设备IRQ号