Patent ID: 7035948

Claim:
A method for transferring information between a host system and a Universal Bus System (USB) device via a USB Host Controller, comprising: creating an endpoint and transfer descriptor (“ETD”) data structure, wherein an endpoint descriptor and a transfer descriptor are placed in an ETD table located in an ETD memory in a local memory accessible to the USB Host Controller, and a host system processing unit sets up the ETD table and downloads ETDs from a host system memory to the local memory; assigning a buffer memory in the local memory for each ETD; partitioning the buffer memory into a first memory buffer and a second memory buffer, wherein the first memory buffer size and the second memory buffer size is programmed by the host system processing unit to hold a certain number of packets, wherein the number of packets depend on a size and type of a transaction descriptor; writing data packets in the first memory buffer until the first memory buffer is full; transferring data packets from the first memory buffer after the first memory buffer is full; writing data packets in the second memory buffer, while data packets are being read from the first memory buffer; wherein during a direct memory access (DMA) mode, the host system processing unit enables an ETD and the USB Host Controller maintains a data byte counter whose count indicates a byte count and a packet count for packets that have been written to local memory and a DMA control logic in the Host Controller by setting a bit indicates when the first memory buffer and the second memory buffer are filled.