probe()函数是什么时候被调用,设备和驱动是怎么联系起来的??
platform_add_devices(ldd6410_devices, ARRAY_SIZE(ldd6410_devices)); //这是bsp中添加所有的设备--》 platform_device_register(devs[i]);//注册平台设备---》platform_device_add(pdev);将平台设备加入到platform_bus中---》device_add(&pdev->dev);
下面是驱动
static int __init gpio_led_init(void)
{
return platform_driver_register(&gpio_led_driver); //注册平台驱动
}
platform_driver_register(&gpio_led_driver) ----》driver_register(&drv->driver);----》bus_add_driver(drv); //添加驱动到总线 ---》driver_attach(drv);//为驱动寻找相应的设备----》
int driver_attach(struct device_driver *drv)
{
return bus_for_each_dev(drv->bus, NULL, drv, __driver_attach); //遍历设备总线寻找驱动
}
-----》__driver_attach()
static int __driver_attach(struct device *dev, void *data)
{
struct device_driver *drv = data;
/*