码迷,mamicode.com
首页 > 其他好文 > 详细

usb gadget驱动框架分析

时间:2019-01-08 15:29:00      阅读:988      评论:0      收藏:0      [点我收藏+]

标签:执行流程   reg   amp   使用   drive   上拉   nes   注册   取消   

以renesas BSP为例:

1.composite_driver层注册流程

usb_composite_probe
    usb_gadget_probe_driver   /*driver->udc_name没有指定为e659000.usb那么就默认是使用第一个UDC,找里面的第一个还没有被driver匹配的udc*/
        udc_bind_to_driver
            usb_gadget_udc_set_speed /*##调用usbhsg_gadget_ops中的udc_set_speed()设置为USB_SPEED_HIGH,可行并没有提供udc_set_speed()*/
            driver->bind(udc->gadget, driver) //调用模板副本composite_driver_template的bind(),也即是composite_bind
            composite_bind(struct usb_gadget *gadget, struct usb_gadget_driver *gdriver) //arg1为usbhs_mod_gadget_probe中的gadget,arg2为丰满后的composite_driver_template的副本
                composite_dev_prepare
                    usb_ep_alloc_request //##对gadget->ep0调用usbhsg_ep_ops中的alloc_request()
                    usb_gadget_set_selfpowered //##调用usbhsg_gadget_ops中的set_selfpowered(),也就是usbhsg_set_selfpowered
                composite->bind //## 调用全局carlplay_driver.bind,也就是carplay_bind,里面usb_get_function_instance,usb_add_config
                update_unchanged_dev_desc(&cdev->desc, composite->dev); //## 将carlplay_driver.dev的设备描述符拷贝到cdev->desc中
            usb_gadget_udc_start //## 调用usbhsg_gadget_ops的udc_start(),也即是usbhsg_gadget_start()
            usb_udc_connect_control //## 根据udc->vbus值,调用usbhsg_gadget_ops.pullup来进行上拉/取消Dp上的上拉电阻,也即是usbhsg_pullup
            kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE); //向用户空间发送 UDEV e659000.usb CHANGE*/
            //到此usb_composite_probe执行流程结束

 

2.UDC驱动注册流程

usbhs_probe
    usbhs_mod_probe
        usbhs_mod_gadget_probe
            usb_add_gadget_udc
                list_add_tail(&udc->list, &udc_list); //这里面将这个UDC驱动放到全局链表udc_list中

 

3.gadget function注册流程

usb_function_register
    list_add_tail(&newf->list, &func_list); //仅仅是只添加到全局链表func_list而已

 

usb gadget驱动框架分析

标签:执行流程   reg   amp   使用   drive   上拉   nes   注册   取消   

原文地址:https://www.cnblogs.com/hellokitty2/p/10238295.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!