通常,会在驱动的probe函数中获取device的相关信息,然后使用 platform_set_drvdata进行保存。在其他函数中要用到时(比如remove),通过platform_get_drvdata来获取。 内核中的定义为: #define platform_get_drvdata(_dev)dev_get_drvdata(&(_dev)->dev) #define platform_set_drvdata(_dev,data)dev_set_drvdata...
通常,会在驱动的probe函数中获取device的相关信息,然后使用 platform_set_drvdata进行保存。在其他函数中要用到时(比如remove),通过platform_get_drvdata来获取。 内核中的定义为: #define platform_get_drvdata(_dev)dev_get_drvdata(&(_dev)->dev) #define platform_set_drvdata(_dev,data)dev_set_drvdata...
platform_get_drvdata(const struct platform_device *pdev): 驱动中常用到platform_set_drvdata 和 platform_get_drvdata这两个函数,用于保存局部变量: include/linux/platform_device.h中: static inline void *platform_get_drvdata(const struct platform_device *pdev) { return dev_get_drvdata(&pdev->dev...
/* /drivers/base/dd.c */intdev_set_drvdata(struct device*dev,void*data){int error;if(!dev->p){error=device_private_init(dev);if(error)returnerror;}dev->p->driver_data=data;return0;} /* /linux/device.h */struct device{struct device*parent;struct device_private*p;struct kobject ko...
dev_set_drvdata (struct device *dev, void *data) { dev->driver_data = data; } 就是吧data赋值给dev->driver_data,pdev是平台总线设备,对于整个驱动是可见的,所以可以通过platform_get_drvdata来获取data。 marvell sd驱动eg: chip是在probe函数中定义的局部变量,如果想在其他地方使用它怎么办呢? 这就...
_dev指的是struct platform_device,可以看到其实调用的是dev_get_drvdata和dev_set_drvdata。 struct platform_device { const char* name; intid; struct devicedev; u32num_resources; struct resource* resource; const struct platform_device_id*id_entry; ...
platform_device_register、platform_device_unregister,Platform设备的注册/注销接口,和底层的device_register等接口类似。 arch_setup_pdev_archdata,设置platform_device变量中的archdata指针。 platform_get_resource、platform_get_irq、platform_get_resource_byname、platform_get_irq_byname,通过这些接口,可以获取platform...
Platform总线、设备和驱动 现实中,虽然我们在PCI,SPI等总线上,设备总是挂载上去,这类我们不难理解总线,paltform和dev的关系。但是对于SoC中集成的外设控制器,它们无实体总线,所以Linux抽象出来一种虚拟总线,Platform总线,设备为Plaform_device,驱动为Platform_driver. ...
.pm = &platform_dev_pm_ops, //电源管理 }; 我们看看设备和驱动的匹配函数match static int platform_match(struct device *dev, struct device_driver *drv) { struct platform_device *pdev = to_platform_device(dev); //获得平台设备 struct platform_driver *pdrv = to_platform_driver(drv); //获得...
dev;20u32num_resources;21structresource*resource;22};下面是对应旳FB设备旳变量定义//arch/arm/mach-pxa/generic.c229staticstructplatform_devicepxafb_device={230.name="pxa2xx-fb",231.id=-1,232.dev={233.platform_data=&pxa_fb_info,234.dma_mask...