如果有定义struct platform_device *pdev;那设备相关的信息会保存在pdev->dev.platform_data中。在驱动中的probe配置好的设备信息则是通过 platform_set_drvdata保存在pdev->dev->p->driver_data中,但是driver_data 已经封装在函数platform_set_drvdata和platform_get_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...
/* /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...
内核提供了这个方法,使用函数platform_set_drvdata()可以将ndev保存成平台总线设备的私有数据。以后再要使用它时只需调用platform_get_drvdata()就可以了。 staticint__devinitdm9000_probe(struct platform_device*pdev) { struct dm9000_plat_data*pdata=pdev->dev.platform_data; struct board_info*db;/*Poin...
static inline void platform_set_drvdata(struct platform_device *pdev, void *data) { dev_set_drvdata(&pdev->dev, data); } int dev_set_drvdata(struct device *dev, void *data) { int error; if (!dev->p) { error = device_private_init(dev); ...
在Linux 中,`platform_set_drvdata` 函数用于将私有数据与某个平台设备相关联。 该函数的原型如下: ```c void platform_set_drvdata(struct platform_device *pdev, void *data); ``` 该函数有两个参数: - `pdev`:指向要设置私有数据的平台设备的指针。
arch_setup_pdev_archdata,设置platform_device变量中的archdata指针。 platform_get_resource、platform_get_irq、platform_get_resource_byname、platform_get_irq_byname,通过这些接口,可以获取platform_device变量中的resource信息,以及直接获取IRQ的number等等。
static int __init globalfifo_platform_dev_init(void) { int ret; plat_dev = platform_device_alloc(DEV_NAME, -1); if (!plat_dev) return -ENOMEM; ret = platform_device_add(plat_dev); if (ret) { printk(KERN_ERR "add platform device fail, ret = [%d]\n", ret); ...
dev; 20 u32 num_resources; 21 structresource*resource; 22}; 下面是对应旳FB设备旳变量定义 //arch/arm/mach-pxa/generic.c 229staticstructplatform_devicepxafb_device={ 230 .name ="pxa2xx-fb", 231 .id =-1, 232 .dev ={ 233 .platform_data ...
Development version of the Upstream MultiPath TCP Linux kernel 🐧 - gpio: adp5520: cleanup probe error path + remove platform_set_drvdata() · multipath-tcp/mptcp_net-next@6681db5