linux sdio设备驱动,Linux SDIO总线驱动

三.驱动加载

我们还是以SDIO驱动为例,注册一个SDIO驱动会调用下面的函数。

int sdio_register_driver(struct sdio_driver*drv)

{

drv->drv.name= drv->name;

drv->drv.bus= &sdio_bus_type;

returndriver_register(&drv->drv);

}

其实很好理解sdio_driver其实是driver的封装,并且该driver的bus为sdio_bus_type。这个设备的驱动很简单。那来看sdio_driver结构

struct sdio_driver{

char*name; --驱动名称

conststruct sdio_device_id *id_table;  --驱动设备ID

int(*probe)(struct sdio_func *, const struct sdio_device_id *);

void(*remove)(struct sdio_func *);

structdevice_driver drv;

};

id_table很熟悉吧,嘿嘿在usb的驱动中如何将设备和驱动匹配就是根据这个东西。在SDIO中也是根据该id_table来进行设备和驱动的匹配。

四.驱动和设备匹配

在介绍了设备注册和驱动注册后,那来看这两个是怎样匹配的。记住SDIO驱动之上有两条总线一个mmc bus 一个是SDIO bus。

先来看mmc bus的match

static int mmc_bus_match(struct device *dev,struct device_drive

你可能感兴趣的:(linux,sdio设备驱动)