mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 20:07:46 +09:00
debf378724206de37e21fdd9a96a33e693ee01c7
The dwc2 programming guide section 3.5 'Halting a Channel' says that the application can disable any channel by programming the HCCHARn register with the HCCHARn.ChDis and HCCHARn.ChEna bits set to 1'b1. This enables the dwc_otg host to flush the posted requests (if any) and generates a Channel Halted interrupt. But it also requires that channel disable must not be programmed for non-split periodic channels. At the end of the next uframe/frame (in the worst case), the core generates a channel halted and disables the channel automatically. If we disable non-spilt periodic channels to halt the channels, it will easily to cause data transfer fail. A typical case is take photo with usb camera or close usb camera, Specifically, the observed order is: 1. uvc driver calls usb_kill_urb 2. usb_kill_urb calls urb_dequeue to cancel urb 3. urb_dequeue call dwc_otg_hc_halt to disable non-spilt periodic channels 4. usb core doesn't halt the non-spilt periodic channels immediately, and the application reallocates the channels for other transactions without waiting for the HCINTn.ChHltd interrupt. 5. uvc driver calls usb_set_interface to start control transfer, and gets a channel which used for non-spilt periodic transfer before. The core generates a channel halted and disables the channel automatically. This cause control transfer fail. Change-Id: I95424a99b77b552396a9fb95a5058258270ed4c2 Signed-off-by: William Wu <william.wu@rock-chips.com>
Linux kernel
============
There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.
In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``. The formatted documentation can also be read online at:
https://www.kernel.org/doc/html/latest/
There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.
See Documentation/00-INDEX for a list of what is contained in each file.
Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.
Description
Languages
C
97.7%
Assembly
1.6%
Makefile
0.3%
Perl
0.1%