USB HID的几个阶段
LinuxUSB Gadget分为三层,其中两层是与硬件无关的:Gadget功能驱动层,USB设备层;一层是与硬件相关的UDC层。每一层都提供一种关键的数据结构与函数与其他层交互。
Gadget功能驱动层: 最主要的结构是struct usb_composite_driver,这个结构在这层定义,并且实现结构中的各个函数。
USB设备层: 最主要的数据结构是struct usb_composite_dev与usb_gadget_driver。前一个代表一个USB设备,而后一个是Gadget驱动,与UDC层交互。
UDC层: 最主要的数据结构是struct usb_gadget,通常包含在其他结构体中。这个结构体代表了一个USB设备控制器的所有关于USB通信的信息。
UDC层提供usb_gadget_unregister_driver(struct usb_gadget_driver *driver)函数,这个函数由USB设备层调用,USB设备层将自己定义的struct usb_gadget_driver结构变量传递给他。USB设备层提供usb_composite_register(struct usb_composite_driver *driver)函数,这个函数由Gadget功能驱动层调用,Gadget功能驱动层将自己定义的struct usb_composite_driver 结构变量传递给他。
目前我们代码中的 hid代码整理
硬件平台:tcc8935 内核源码:linux 3.1.10
hid相关的源码在linux内核源码下的
v13.05_r1-tcc-android-4.2.2_release/kernel/drivers/usb/gadget/,主要包括