- 論壇徽章:
- 0
|
platform_driver_register(struct platform_driver *drv)注冊后如何找到驅動匹配的設備
struct platform_driver {
int (*probe)(struct platform_device *);
int (*remove)(struct platform_device *);
void (*shutdown)(struct platform_device *);
int (*suspend)(struct platform_device *, pm_message_t state);
int (*suspend_late)(struct platform_device *, pm_message_t state);
int (*resume_early)(struct platform_device *);
int (*resume)(struct platform_device *);
struct device_driver driver;
};
struct platform_driver 的結構成員如上,那么注冊了一個struct platform_driver *drv,內核怎么知道那個設備是該驅動想驅動的呢,在什么條件下才會調用該platform_driver *drv的PROBE函數(shù)呢?struct device_driver {
const char * name; struct bus_type * bus;
struct kobject kobj;
struct klist klist_devices;
struct klist_node knode_bus;
struct module * owner;
const char * mod_name; /* used for built-in modules */
struct module_kobject * mkobj;
int (*probe) (struct device * dev);
int (*remove) (struct device * dev);
void (*shutdown) (struct device * dev);
int (*suspend) (struct device * dev, pm_message_t state);
int (*resume) (struct device * dev);
};
struct device_driver 里的name成員是設備的名字還是改設備DRIVER的名字?這里有兩個PROBE函數(shù),是不是先調用struct device_driver 里的PROBE,然后在調用struct platform_driver里的PROBE函數(shù) |
|