当前位置: 技术问答>linux和unix
关于i2c总线驱动加载方式问题
来源: 互联网 发布时间:2016-10-24
本文导语: static int __init i2c_adapter_xxx_init(void) { xxx_adapter_hw_init(); i2c_add_adapter(&xxx_adapter); } 和 static struct platform_driver i2c_pxa_driver = { .probe = i...
static int __init i2c_adapter_xxx_init(void)
{
xxx_adapter_hw_init();
i2c_add_adapter(&xxx_adapter);
}
和
static struct platform_driver i2c_pxa_driver = {
.probe = i2c_pxa_probe,
.remove = __exit_p(i2c_pxa_remove),
.suspend_late = i2c_pxa_suspend_late,
.resume_early = i2c_pxa_resume_early,
.driver = {
.name = "pxa2xx-i2c",
.owner = THIS_MODULE,
},
};
static int __init i2c_adap_pxa_init(void)
{
#ifdef CONFIG_PXA3xx_DVFM
dvfm_register("I2C", &dvfm_dev_idx);
#endif
return platform_driver_register(&i2c_pxa_driver);
}
这两种总线驱动加载的方法有何不同? 是不是两种不同模型下的形式?
|
platform_driver_register
这种加载方式适合soc ,因为没有标准总线如pci,靠platform_driver_register来手工实现一次设备跟驱动的匹配
这种加载方式适合soc ,因为没有标准总线如pci,靠platform_driver_register来手工实现一次设备跟驱动的匹配
|
直接注册驱动控制设备:单枪匹马型?
平台注册方式: 统一协调?
第一种方式内核的作用跑哪里去了?
|
跟linux驱动的模型有关,只要驱动程序运行正常,哪个都无所谓
|
另外一种就很常见那种
cdev_add 、register_blkdev 等
等于直接注册驱动控制设备,没有考虑跟其他驱动控制同一硬件的冲突
平台注册方式可以统一管理设备资源,处理好冲突
驱动只能通过platform device 提供的标准接口进行申请并使用设备资源
cdev_add 、register_blkdev 等
等于直接注册驱动控制设备,没有考虑跟其他驱动控制同一硬件的冲突
平台注册方式可以统一管理设备资源,处理好冲突
驱动只能通过platform device 提供的标准接口进行申请并使用设备资源
|
楼主想写总线驱动还是设备驱动?