void platform_set_drvdata(struct platform_device *pdev, void *data); ``` 该函数有两个参数: - `pdev`:指向要设置私有数据的平台设备的指针。 - `data`:指向要与该平台设备关联的私有数据的指针。 调用该函数后,可以使用 `platform_get_drvdata` 函数来获取与平台设备相关联的私有数据。 例如,以下代码...
static__devinitintwm831x_boostp_probe(struct platform_device *pdev){structwm831x*wm831x=dev_get_drvdata(pdev->dev.parent);structwm831x_pdata*pdata=wm831x->dev->platform_data;intid = pdev->id % ARRAY_SIZE(pdata->dcdc);structwm831x_dcdc*dcdc;structresource*res;intret, irq; dev...
驱动中常用到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); } static inline void platform_set_drvdata(struct platf...
static inline void *platform_get_drvdata(const struct platform_device *pdev) { return dev_get_drvdata(&pdev->dev); }static inline void platform_set_drvdata(struct platform_device *pdev, void *data) { dev_set_drvdata(&pdev->dev, data); } static inline void dev_set_drvdata (struct...
使用函数platform_set_drvdata()可以将radio保存成平台总线设备的私有数据。以后再要使用它时只需调用platform_get_drvdata()就可以了 struct marimba_fm_platform_data *tavarua_pdata; struct tavarua_device *radio; int retval; int i; FMDBG("%s: probe called\n", __func__); ...
ndev是我们在probe函数中定义的局部变量,如果我想在其他地方使用它怎么办呢? 这就需要把它保存起来。内核提供了这个方法,使用函数platform_set_drvdata()可以将ndev保存成平台总线设备的私有数据。以后再要使用它时只需调用platform_get_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...
staticintgpio_led_probe(structplatform_device*pdev){structgpio_led_platform_data*pdata=dev_get_platdata(&pdev->dev);structgpio_leds_priv*priv;inti,ret=0;// ...// 中略,内容为根据pdata构造priv//(前提是pdata有效,否则走设备树流程)// ...platform_set_drvdata(pdev,priv);return0;} ...
platform_set_drvdata、platform_get_drvdata,设置或者获取driver保存在device变量中的私有数据。 3.4 懒人API 又是注册platform device,又是注册platform driver,看着挺啰嗦的。不过内核想到了这点,所以提供一个懒人API,可以同时注册platform driver,并分配一个platform device: ...
_platform_data*pdata;interr;if(id>1){printk(KERN_ERR"ar71xx: invalid ethernet id %d\n",id);return;}/* 初始化ath79_ethX_pll_data */ath79_init_eth_pll_data(id);if(id==0)pdev=&ath79_eth0_device;elsepdev=&ath79_eth1_device;/* 设置ath79_eth0_device.dev.platfo...