首页 > 代码库 > 13 Linux驱动之平台设备
13 Linux驱动之平台设备
一 platform子系统
1.对平台设备描述
struct platform_device {
const char * name; //设备名字
int id; // -1
struct device dev; //通用设备描述
u32 num_resources; //资源的个数
struct resource * resource;//资源
//如果是在driver的id_table中匹配成功,id_entry就会记录id_table匹配的项
const struct platform_device_id *id_entry;
/* arch specific additions */
struct pdev_archdata archdata;//平台设备的私有数据
};
2.对平台驱动的描述
struct platform_driver {
int (*probe)(struct platform_device *); //驱动与设备匹配的时候调用
int (*remove)(struct platform_device *);//驱动与设备分离的时候调用
struct device_driver driver;//通用driver描述
const struct platform_device_id *id_table;//支持设备
};
struct device_driver
{
const char *name; //驱动名字
struct module *owner;//THIS_MODULE
...
}
3.注册平台驱动
int platform_driver_register(struct platform_driver *drv);
4.注册平台设
int platform_device_register(struct platform_device *pdev);
5.平台设备与平台驱动匹配过程
[1]通过设备的名字与驱动的id_table + 驱动的名字
[2]匹配成功
[1]在设备记录匹配的驱动
[2]调用驱动提供的probe函数
13 Linux驱动之平台设备