您的位置 首页 芯闻

ARM-Linux s3c2440 之UART剖析(四)

注册完成之后,设备与驱动是如何连接的呢?原来在driver_register()注册中已经进行设备连接了。串口是一种platform设备,在体系框架setup…

注册完结之后,设备与驱动是怎么衔接的呢? 本来在driver_register()注册中现已进行设备衔接了。

串口是一种platform设备,在系统结构setup_arch()中完结设备注册,并且设备的注册先于驱动注册,终究串口设备与驱动的衔接在driver_register() –>bus_add_driver()中完结。

  1. intbus_add_driver(structdevice_driver*drv)
  2. {
  3. intret;
  4. structdevice_driver*other;
  5. if(drv->bus->p->drivers_autoprobe){//platfrom_but_type==1主动勘探platfrom设备
  6. error=driver_attach(drv);
  7. if(error)
  8. gotoout_unregister;
  9. }
  10. ….
  11. }

最终driver_attach()–>bus_for_each_dev(),完结串口设备与驱动的衔接

  1. intbus_for_each_dev(structbus_type*bus,structdevice*start,
  2. void*data,int(*fn)(structdevice*,void*))
  3. {
  4. structklist_iteri;
  5. structdevice*dev;
  6. interror=0;
  7. if(!bus)
  8. return-EINVAL;
  9. klist_iter_init_node(&bus->p->klist_devices,&i,
  10. (start?&start->p->knode_bus:NULL));
  11. while((dev=next_device(&i))&&!error)//遍历一切对应上的设备
  12. error=fn(dev,data);
  13. klist_iter_exit(&i);
  14. returnerror;
  15. }

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/xinwen/264931.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部