ARM-Linux s3c2440 之UART分析(四)
时间:11-19
来源:互联网
点击:
注册完成之后,设备与驱动是如何连接的呢? 原来在driver_register()注册中已经进行设备连接了。
串口是一种platform设备,在体系框架setup_arch()中完成设备注册,而且设备的注册先于驱动注册,最终串口设备与驱动的连接在driver_register() -->bus_add_driver()中完成。
- intbus_add_driver(structdevice_driver*drv)
- {
- intret;
- structdevice_driver*other;
- …
- if(drv->bus->p->drivers_autoprobe){//platfrom_but_type==1自动探测platfrom设备
- error=driver_attach(drv);
- if(error)
- gotoout_unregister;
- }
- ….
- }
最后driver_attach()-->bus_for_each_dev(),完成串口设备与驱动的连接
- intbus_for_each_dev(structbus_type*bus,structdevice*start,
- void*data,int(*fn)(structdevice*,void*))
- {
- structklist_iteri;
- structdevice*dev;
- interror=0;
- if(!bus)
- return-EINVAL;
- klist_iter_init_node(&bus->p->klist_devices,&i,
- (start?&start->p->knode_bus:NULL));
- while((dev=next_device(&i))&&!error)//遍历所有对应上的设备
- error=fn(dev,data);
- klist_iter_exit(&i);
- returnerror;
- }
ARMLinuxs3c2440UAR 相关文章:
- ARM-Linux s3c2440 之UART分析(一)(11-19)
- ARM-Linux s3c2440 之UART分析(二)(11-19)
- ARMLinux s3c2440 之UART分析二(11-19)
- ARM-Linux s3c2440 之UART分析(三)(11-19)
- ARMLinux s3c2440 之UART分析一(11-19)
- ARM-Linux s3c2440 之UART分析(五)(11-19)