USB
jacob
这个作者很懒,什么都没留下…
展开
-
USB Core 八
//将提交过来的urb 指派给合适的主机控制器驱动程序 int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags) { int status; struct usb_hcd *hcd = bus_to_hcd(urb->dev->bus); /* static inline struct usb_bus *hcd_t原创 2013-04-23 11:39:52 · 1029 阅读 · 0 评论 -
USB Core 七
struct usb_hcd { /* * housekeeping */ struct usb_bus self; /* hcd is-a bus */ struct kref kref; /* reference counter */ const char *product_desc; /* 主机控制器的产品描述字符串,对于UHCI,它为“UHCI Host C原创 2013-04-23 10:59:01 · 819 阅读 · 0 评论 -
USB descriptor
struct usb_device_descriptor { __u8 bLength;//设备描述符的字节数大小,为0x12 __u8 bDescriptorType;//描述符类型编号,为0x01 __le16 bcdUSB;//USB版本号 __u8 bDeviceClass;//USB分配的设备类代码,0x01~0xfe为标准设备类,0xff为厂商自定义类型原创 2013-04-28 09:18:07 · 6547 阅读 · 1 评论 -
USB Core 四
struct urb *usb_alloc_urb(int iso_packets, gfp_t mem_flags) { struct urb *urb; urb = kmalloc(sizeof(struct urb) + iso_packets * sizeof(struct usb_iso_packet_descriptor), mem_flags); if原创 2013-04-19 16:00:32 · 856 阅读 · 0 评论 -
USB Core五
int usb_submit_urb(struct urb *urb, gfp_t mem_flags) { int pipe, temp, max; struct usb_device *dev; int is_out; if (!urb || urb->hcpriv || !urb->complete) return -EINVAL; if (!(dev = u原创 2013-04-22 17:38:51 · 1140 阅读 · 0 评论 -
USB Core 九
static int usb_parse_configuration(struct device *ddev, int cfgidx,struct usb_host_config *config, unsigned char *buffer, int size) { unsigned char *buffer0 = buffer; int cfgno; int nintf, nint原创 2013-04-25 11:53:13 · 990 阅读 · 0 评论 -
USB Core 十一
//现在看看第二阶段的重头戏,看看设备是怎么从Address 进入Configured 的 //usb_disable_device 函数的清理工作主要有两部分,一是将设备 里所有端点给disable 掉,一是将设备当前配置使用的每个接口都从系统里给unregister 掉,也就是将接口和它对应的驱动给分开. void usb_disable_device(struct usb_devic原创 2013-04-26 15:04:36 · 1217 阅读 · 0 评论 -
USB Core二
/** * usb_alloc_dev - usb device constructor (usbcore-internal) * @parent: 设备连接的那个hub * @bus: 设备连接的那条总线 * @ port1 就是设备连接在hub 上的那个端口 * Context: !in_interrupt() * * Only hub drivers (inc原创 2013-04-18 14:53:47 · 1591 阅读 · 0 评论 -
USB Core三
struct urb { /* private: usb core and host controller only fields in the urb */ struct kref kref; /* kref,urb 的引用计数 ,每多一个使用者,它的这个引用计数就加1, 每减少一个使用者,引用计数就减一,如果连最后一个使用者都释放了 这个urb,宣称不再使用它了*原创 2013-04-18 16:10:00 · 1278 阅读 · 0 评论 -
USB Core 六
struct usb_bus { 277 struct device *controller; /* host/master side hardware */ int busnum; /* busnum,总线编号*/ /* bus_name 总线的名字,大多数情况下主机控制器都是一个PCI 设备,那么bus_name 应该就是用来在PCI总线上标识usb 主机控制器的名字,PCI 总线原创 2013-04-22 19:43:23 · 658 阅读 · 0 评论 -
USB Core 十
int usb_register_device_driver(struct usb_device_driver *new_udriver, struct module *owner) { int retval = 0; if (usb_disabled())//判断一下usb 子系统是不是在你启动内核的时候就被禁止了 return -ENODEV; new_udri原创 2013-04-26 14:09:13 · 1460 阅读 · 0 评论