欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

linux iic适配器平添有点疑惑

更新时间: 2014-01-05 03:20:00 责任编辑: Author_N1

 

linux IIC适配器添加有点疑惑
在probe函数里面执行ret = i2c_add_adapter(i2c_pnx->adapter),然后调用如下函数
static int i2c_register_adapter(struct i2c_adapter *adap)
{
int res = 0, dummy;

mutex_init(&adap->bus_lock);
mutex_init(&adap->clist_lock);
INIT_LIST_HEAD(&adap->clients);

mutex_lock(&core_lock);

/* Add the adapter to the driver core.
 * If the parent pointer is not set up,
 * we add this adapter to the host bus.
 */
if (adap->dev.parent == NULL) {
adap->dev.parent = &platform_bus;
pr_debug("I2C adapter driver [%s] forgot to specify "
 "physical device\n", adap->name);
}
sprintf(adap->dev.bus_id, "i2c-%d", adap->nr);
adap->dev.release = &i2c_adapter_dev_release;
adap->dev.class = &i2c_adapter_class;
res = device_register(&adap->dev);
if (res)
goto out_list;

dev_dbg(&adap->dev, "adapter [%s] registered\n", adap->name);

/* create pre-declared device nodes for new-style drivers */
if (adap->nr < __i2c_first_dynamic_bus_num)
i2c_scan_static_board_info(adap);

/* Notify drivers */
dummy = bus_for_each_drv(&i2c_bus_type, NULL, adap,
 i2c_do_add_adapter);

out_unlock:
mutex_unlock(&core_lock);
return res;

out_list:
idr_remove(&i2c_adapter_idr, adap->nr);
goto out_unlock;
}
问题:上面函数里面调用res = device_register(&adap->dev)把设备注册到IIC总线上,但是
adap-dev.bus也没有被赋值啊,那是怎么注册到IIC总线上的呢。正常应该是
adap-dev.bus=&i2c_bus_type;这样才能把设备注册到IIC总线上啊,求指导。
--参考方法--
你这是什么版本的内核
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:20:00
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20943/
本文WWW.DOC100.NET DOC100.NET版权所有。