Lines Matching full:to

33 They abstract the interface to the devices, often provide ways of performing
45 These functions cover everything from initialization to performing I/O
48 USB devices are often referred to in two different ways.
49 The first way is the USB version that they conform to.
51 However, devices are also referred to as
63 In general, each speed usually corresponds to a specific USB protocol
69 Low-speed devices are only a USB 1.x thing, they did not jump the fire line to
75 its version as USB 2.1, to indicate that it is actually a USB 3.0 device.
78 operations vector, it helps to understand how USB devices are organized
83 A request, or transfer, is made to a specific USB endpoint.
87 Endpoints themselves are either used to make one-shot requests, for example,
88 making requests to a mass storage device for a given sector, or for making
95 These refer to the general direction that data moves relative to the operating
97 For example, an IN transfer transfers data in to the operating system, from the
99 An OUT transfer transfers data from the operating system, out to the device.
104 These transfers are large transfers of data to or from a device.
107 Bulk endpoints do not have an explicit time component to them.
110 These transfers are used to manipulate devices themselves and are used
118 A good example of interrupt transfers is to receive input from a USB keyboard.
120 Meaning that a client (device driver) opens up an interrupt-IN endpoint to poll
132 drivers to always provide the system with sufficient data.
144 Host controllers will look at these descriptors to ensure that they
155 Client device drivers gain access to this tree and then use them to then open
159 Each pipe gives access to a specific endpoint on the device which can be
160 used to perform transfers of a specific type and direction.
165 One to the default control endpoint to configure the device, and then the
166 other two are used to perform I/O.
168 These routines translate more or less directly into calls to a host
170 A request to open a pipe takes an endpoint descriptor that describes the
172 work necessary to allow the client device driver to access it.
173 Once the pipe is open, it either makes one-shot transfers specific to the
176 All of these different actions translate into requests to the host
179 required resources for polling are allocated with a request and then proceed to
185 For example, open an endpoint, the host controller has to implement
205 In addition, all devices should configure interrupts, before getting ready to
220 If the call to register fails for whatever reason, the device driver
225 functions it registered with the call to
238 The device descriptor should match a hub of a USB generation equivalent to the
257 appended to the structure.
259 Note, that the structure needs to be packed, as though it were read from
274 driver to be attached and associated with the root controller.
275 As such, driver writers need to ensure that all initialization is done prior to
278 calls into the driver's operation vector before the call to
281 If the call to
288 Otherwise, at this point it's safe to assume that the instance of the
302 then the device driver should fail the call to
323 If it has been called before the device registers, then it will fail to register
326 likely lead to data corruption and crashes.
328 Similarly, part of the minor number space is utilized to represent
332 and it's trying to extract the minor number, it must take into account
335 The following shows how to perform this, given a
355 member should be set to the symbol
363 member should be set to the symbol
389 entry point that obtains access to its
399 entry point that obtains access to its
409 entry point that obtains access to its
414 If the device driver wishes to have private ioctls, it may check the
429 member should be set to
434 member should be set to the bitwise-inclusive-OR of the
444 structure should not be implemented and set to the appropriate value,
454 However, in response to a data transfer, the device driver will need to call
460 across the call to
462 Returning an I/O to the USBA, particularly an error, may result in
463 another call back to one of the
472 There are certain occasions where a device driver may have to enter the
477 The USBA should in general, not hold this lock across calls to the HCD driver,
478 and in turn, the HCD driver should not hold this lock across any calls back to
480 As such, the HCD driver should make sure to incorporate the lock ordering of
486 The final recommendation is that due to the fact that the host
487 controller driver provides services to a multitude of USB devices at
488 once, it should strive not to hold its own internal locks while waiting
489 for I/O to complete, such as an issued command.
491 If the device driver does not pay attention to these conditions, it can easily
492 lead to service stalls.
494 The majority of the entry points that a host controller driver has to
515 It is the driver's responsibility to keep track of these outstanding transfers
520 If for some reason, the driver fails to initialize the I/O transfer and
529 Host controller drivers need to be ready for this and report it.
530 Each request structure has an attribute to indicate whether or not short
539 transfers to the root hub.
543 entry point, it already has to look at the pipe handle it's been given
545 However, before it does that it needs to look at the USB address of the device
546 the handle corresponds to.
553 likely need to handle this in a different manner from traditional pipes.
555 The device driver will want to check for the presence of the device's
560 The device driver needs to intercept control transfers to the root hub
562 For example, the device driver may be asked to get a port's status.
563 It should determine the appropriate way to perform this, such as reading a
566 The device driver needs to implement all of the major hub specific
569 implement and what the hub driver currently requires to implement this.
571 Aside from the fact that the request is not being issued to a specific
572 USB device, a request to the root hub follows the normal rules for a
573 transfer and the device driver will need to call
587 Otherwise, this represents a request to begin polling on the status
591 Every USB device has an address assigned to it.
592 The addresses assigned to each controller are independent.
601 device addressing themselves to facilitate their functionality.
605 An HCD driver that needs to address devices itself must implement the
611 Here, the device driver will need to provide data and perform a callback
613 Different drivers have different ways to perform this.
614 For example, some hardware will provide an interrupt to indicate that a change
626 When a pipe to the root hub is closed, the device driver should tear
631 When a request to stop interrupt polling comes in and it is directed
637 The primary request that was used to start polling should be returned,
638 as with any other request to stop interrupt polling.
641 If for some reason it calls asking to stop polling on an isochronous transfer,
657 A single transfer request comes in; however, the driver needs to keep ensuring
658 that transfers are being made within the polling bounds until a request to stop
668 to return due to a request to stop polling or an error.
677 Note, it is possible that memory will not be available to duplicate such a
679 In this case, the driver should use the original request to return an error and
688 give data to hcdi drivers in the form of
693 to perform and copy the data to and from the message blocks.
697 to try and bind the memory used for DMA transfers to a message block nor
698 should they bind the message block's read pointer to a DMA handle using
702 that there are going to be outstanding message blocks that may be in use
703 by the controller or belong to the controller outside of the boundaries
704 of a given call to one of the transfer functions and its corresponding
710 If that timeout expires, it needs to stop the endpoint, remove that request, and
711 return to the caller.
724 If any of the times is set to zero, the default USBA timeout should be
726 In that case, drivers should set the value to the macro
733 Due to the periodic nature of even outbound requests, it is less likely
734 that a timeout will occur; however, driver writers are encouraged to
739 The exact means of performing the timeout is best left to the driver
742 One strategy to consider is to use the
778 This structure is used to contain the endpoint descriptor, but also additional
783 This structure is filled out by client device drivers that want to make
785 Host controllers use this and act on it to perform bulk transfers to USB
790 This structure is filled out by client device drivers that want to make
792 Host controllers use this and act on it to perform bulk transfers to USB
797 This structure is filled out by client device drivers that want to make
799 Host controllers use this and act on it to perform bulk transfers to USB
804 This structure is filled out by client device drivers that want to make
806 Host controllers use this and act on it to perform bulk transfers to USB
835 This is a set of codes that may be returned as a part of the call to
844 generally enable it and set it to a moderate rate.
846 Due to the way host controller drivers need to interact with hotplug,
849 property to one in their