Linux中编译mdio命令,linux网络设备—mdio总线

本文详细介绍了Linux系统中mdio总线的结构体定义、初始化过程和注册步骤。从结构体`struct mii_bus`的解析到`mdio_bus_init`函数的调用,再到`mdiobus_alloc`、`mdiobus_register`函数的使用,展示了mdio总线如何分配内存、填充结构体成员,并注册设备文件。同时,还涉及到phy设备的扫描和注册。
摘要由CSDN通过智能技术生成

一.结构体

structmii_bus {

constchar*name;//总线名

charid[MII_BUS_ID_SIZE];//id

void*priv;//私有数据

int(*read)(structmii_bus *bus,intphy_id,intregnum);//读方法

int(*write)(structmii_bus *bus,intphy_id,intregnum, u16 val);//写方法

int(*reset)(structmii_bus *bus);//复位

structmutex mdio_lock;

structdevice *parent;//父设备

enum{

MDIOBUS_ALLOCATED = 1,

MDIOBUS_REGISTERED,

MDIOBUS_UNREGISTERED,

MDIOBUS_RELEASED,

} state;    //总线状态

structdevice dev;//设备文件

structphy_device *phy_map[PHY_MAX_ADDR];//PHY设备数组

u32 phy_mask;

int*irq; //中断

};

struct mii_bus {

const char *name;//总线名

char id[MII_BUS_ID_SIZE];//id

void *priv;//私有数据

int (*read)(struct mii_bus *bus, int phy_id, int regnum);//读方法

int (*write)(struct mii_bus *bus, int phy_id, int regnum, u16 val);//写方法

int (*reset)(struct mii_bus *bus);//复位

struct mutex mdio_lock;

struct device *parent;//父设备

enum {

MDIOBUS_ALLOCATED = 1,

MDIOBUS_REGISTERED,

MDIOBUS_UNREGISTERED,

MDIOBUS_RELEASED,

} state;//总线状态

struct device dev;//设备文件

struct phy_device *phy_map[PHY_MAX_ADDR];//PHY设备数组

u32 phy_mask;

int *irq;//中断

};

二.初始化过程

在phy_init函数中调用了mdio_bus_init初始化mdio总线

int__init mdio_bus_init(void)

{

intret;

ret = class_register(&mdio_bus_class);  //注册设备类

if(!ret) {

ret = bus_register(&mdio_bus_type); //注册mdio总线

if(re

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值