分析ak4951_amb.c驱动程序,在probe函数中遇到i2c_set_clientdata函数,一开始我只是根据函数名去
理解该函数的意义,即设置i2c客户端的私有数据。其实从函数名这么理解我至少认为是理解正确的,我现在
在这里深入研究一下,是否根据函数名理解的该函数正确?还有就是搞清楚函数内部是怎样实现的
static inline void i2c_set_clientdata(struct i2c_client *dev, void *data)
{
dev_set_drvdata(&dev->dev, data);
}
int dev_set_drvdata(struct device *dev, void *data)
{
。。。。
。。。
。。
。
dev->p->driver_data = data;
return 0;
}
int device_private_init(struct device *dev)
{
dev->p = kzalloc(sizeof(*dev->p), GFP_KERNEL);
if (!dev->p)
return -ENOMEM;
dev->p->device = dev;
。。。
。。
。
return 0;
}