# Patent

## Title
Enhancements to universal serial bus (USB) suspend and resume operations

## Abstract

Some embodiments of the invention include apparatus, systems, and methods to perform universal serial bus (USB) suspend and resume operations based on active communication between USB devices to improve power management. Other embodiments are described and claimed.

## Background
FIELD
Embodiments of the present invention relate to electronic data communication, and particularly to suspend and resume operations in USB protocols.
BACKGROUND
USB is one type of connection to allow transfer of data between electrical systems or devices. The Universal Serial Bus Implementers Forum (USB-IF), in Portland, Oreg., U.S.A., manages and publishes the specifications for USB. Several specification revisions of USB have been published by USB-IF. At the time of this writing, USB 2.0 published in Apr. 27, 2000 is the latest USB specification revision and is compatible with earlier USB specification revisions such as USB 1.0 and USB 1.1. In the description described herein, USB 2.0 refers to the USB 2.0 specification revision and all other earlier USB specification revisions published by the USB-IF.
USB 2.0 includes a suspend operation to allow a USB device to enter a suspend state. USB 2.0 requires a USB device to enter the suspend state after a specific time of idling or inactivity on the USB connection. USB 2.0 also includes a resume operation to allow a USB device to exit the suspend state. USB 2.0 requires the resume operation to last for some specific time.
The timing requirements for the suspend and resume operations as specified in USB 2.0 may limit the power management for some systems having USB. For other systems, especially for systems that draw power mainly from a battery, the timing requirements for the suspend and resume operations may be too large, causing USB as specified in USB 2.0 to be an unfavorable choice for connectivity in some of these systems.



BRIEF DESCRIPTION OF DRAWINGS
FIG. 1 shows an apparatus having USB devices according to an embodiment of the invention.
FIG. 2 shows an exemplary timing diagram for a suspend operation of the apparatus of FIG. 1.
FIG. 3 shows an exemplary timing diagram for a resume operation of the apparatus of FIG. 1.
FIG. 4 shows a system having USB devices according to an embodiment of the invention.
FIG. 5 is a flowchart showing a method for suspend and resume operations according to an embodiment of the invention.
FIG. 6 is a block diagram of an article according to an embodiment of the invention.



DESCRIPTION OF EMBODIMENTS
FIG. 1 shows an apparatus having USB devices according to an embodiment of the invention. Apparatus 100 includes a system host controller 101, USB devices 110 and 120, and a power source 130. USB ports 111 and 122, and a USB segment 140 allow USB devices 110 and 120 to communicate with each other. Each of the USB ports 111 and 122 includes transmitters and receivers to transmit and receive data. USB segment 140 includes a power line (VBUS), a ground line (GND), and data lines (D+ and D−) according to USB 2.0 specification. Power source 130 supplies power to apparatus 100. In some embodiments, power source 130 includes a battery. System host controller 101 includes any combination of hardware, firmware, and software to control operations of apparatus 100. System host controller 101 may include a general-purpose processor or an application specific integrated circuit (ASIC). USB device 110 may be a USB host controller to allow apparatus 100 to communicate with one or more other USB devices inside or outside apparatus 100, besides USB device 120. Circuits 115 and 125 control USB ports 111 and 122, respectively, to transfer data between USB devices 110 and 120. Data described herein refers to signals that represent any combination of data information, address information, status information, control information, and other information.
In some embodiments, a portion or an entire apparatus 100 resides in a host system. Examples of host systems include desktop computers, laptop computers, digital cameras, video game devices, personal digital assistant (PDA) devices, cellular phones, and other digital systems.
Each of the USB devices 110 and 120 performs a single function or multiple functions. Examples of the functions performed by USB device 110 include function of an input/output controller to control input and output data in a system such as a computer or any one of the systems mentioned in the examples. Examples of functions performed by USB device 120 include functions of keyboards or keypads, displays, pointing devices, gaming devices, audio devices, video devices, and storage devices.
USB devices 110 and 120 comply with USB 2.0. In addition, USB devices 110 and 120 include enhanced suspend and resume operations that are different from the suspend and resume operations specified in USB 2.0.
In FIG. 1, USB devices 110 and 120 have different operating states including an enabled state and a suspend state. In the enabled state, USB devices 110 and 120, and USB segment 140 are enabled (active) and ready to transfer data or are actively transferring data. In the suspend state, all or a portion of apparatus 100 is suspended (deactivated or idled). In some embodiments, USB device 110 initiates a suspend operation to suspend USB port 111 and to allow USB port 122, or USB device 120, or both to enter the suspend state. The initiation of the suspend operation may be based on either the configuration of USB device 110 or the configuration of system host controller 101. For example, in systems such as laptop computers or cellular phones, the power from power source 130 may be mainly supplied by a battery. To extend the battery life in these systems, USB device 110 or system host controller 101 may be configured to aggressively suspend a portion of apparatus 100 such as one of the USB port 111, USB port 122, USB device 120, or any combination of USB port 111, USB port 122, and USB device 120. In apparatus 100, the suspend operation includes a bi-directional communication between USB devices 110 and 120.
FIG. 2 shows an exemplary timing diagram for a suspend operation of the apparatus of FIG. 1. In FIG. 2, an enabled state occurs between times T0 and T1, a suspend communication occurs between times T1 and T2, a transition interval (TRAN) occurs between times T2 and T3, and a suspend state occurs between times T3 and T4.
In the enabled state, USB ports 111 and 122 are enabled; USB segment 140 is active; and USB devices 110 and 120 are ready to exchange data with each other. USB device 110 may broadcast transaction signaling to USB port 111. The broadcast transaction signaling may include timing reference such as USB microframe and USB frame as specified in USB 2.0.
At time T1, USB device 110 may stop broadcasting transaction signaling to USB port 111 and initiate the suspend communication to prepare USB port 111 for the suspend state.
At time T2, the suspend communication between USB devices 110 and 120 is completed. Between times T2 and T3 in the transition interval, USB device 110 prepares to suspend USB port 111. USB device 120 may prepare to place either only USB port 122 into the suspend state or both USB device 120 and USB port 122 into the suspend state.
At time T3, USB device 110 places USB port 111 into the suspend state. USB port 122, USB device 120, or both USB port 122 and USB device 120 enter the suspend state. USB segment 140 is deactivated or idling at time T3. In some embodiments, between times T2 and T3, USB device 120 may remain in the enabled state while USB port 122 is in the suspend state. Thus, between times T2 and T3, the state of USB port 122 and the state USB device 120 may be different. A USB port or a USB device uses less power in the suspend state than in the enabled state. For example, the amount of power used by USB device 120 in the suspend state is less than the amount of power used by USB device 120 in the enabled state.
During the suspend communication, USB device 110 sends USB device 120 a suspend command 211. Suspend command 211 may include information to notify USB device 120 to place either only USB port 122 into the suspend state or both USB port 122 and USB device 120 into the suspend state. As mentioned above, USB 120 may remain at a state that is different from the suspend state when USB port 122 is in the suspend state. For example, USB device 120 may stay in the enabled state while USB port 122 is in the suspend state.
In FIG. 2, upon receiving suspend command 211, USB device 120 sends USB device 110 a suspend response 222 to acknowledge suspend command 211. Thus, the suspend communication between USB devices 110 and 120 is a bi-directional communication in which both USB devices 110 and 120 exchange data with each other.
In some embodiments, suspend command 211 in FIG. 2 includes at least one suspend transaction. The suspend transaction may include a suspend token packet containing information to notify USB device 120 that USB device 110 is in the process of suspending USB port 111 at which USB device 120 is coupled. The suspend token packet described herein carries information different from the information carried by any token packet according to USB 2.0. For example, besides including the packet identifier (PID) such as OUT or SETUP as in USB 2.0, the suspend token packet described herein may also include additional information that specifically indicates the suspend token is for the suspend communication. As another example, the PID of the suspend token packet described herein may be a new PID category, for example “SUSPEND” PID or “SLEEP” PID, which is reserved only for the suspend communication. Therefore, when a USB device such as USB device 120 detects or receives the suspend token packet included in suspend command 211 of FIG. 2, the USB device readily recognizes that a suspend communication is initiated and that appropriate actions are needed for a response.
In other embodiments, suspend command 211 in FIG. 2 includes a suspend signaling instead of a suspend transaction. The suspend signaling is a form of a special signaling or a chirp that is different from the signaling of a transaction. A transaction has specific data packet formats, whereas a special signaling has no data packet format. In FIG. 2 the suspend signaling included in suspend command 211 may be a chirp or a series of chirps (a series of special signaling). An example of activities to create a chirp (special signaling) includes connecting one of the data lines (D+ or D−) of USB segment 140 to either ground or a power source and driving an amount of current on the other data line for a specific duration (time). For example, the chirp may be a chirp M in which chirp M may be created by connecting the data line D− of USB segment 140 to ground and driving an amount of current on the data line D+ for a specific duration. As another example, the chirp may be a chirp N in which chirp N may be created by connecting the data line D+ the USB segment 140 to a power source and driving an amount of current the data line D− for a specific duration.
In some embodiments, the suspend signaling may be a series of chirps M, a series of chirps N, or a series of alternating chirp M and chirp N. USB 2.0 has signaling created by chirp J and chirp K. However, the suspend signaling created by chirp M and chirp N described herein is intentionally created to be different from any kind of signaling created by chirp J and chirp K of USB 2.0.
In some embodiments, suspend response 222 in FIG. 2 (sent by USB device 120 of FIG. 1) includes at least one respond transaction. The respond transaction may include a handshake packet. The handshake packet may include information to acknowledge the recognition or the receipt of suspend command 211 sent by USB device 110. In some embodiments, the handshake packet described herein may include the ACK handshake packet as in USB 2.0. In other embodiments, the handshake packet described herein carries information different from the information carried by any handshake packet according to USB 2.0. For example, besides including a PID such as ACK, NAK, STALL, or NYET as in USB 2.0, the handshake packet described herein may also include additional information that specifically indicates information related to the suspend communication. Therefore, when a USB device such as USB device 110 detects or receives the handshake packet described herein, the USB device such as USB device 110 readily recognizes that the suspend command, such as suspend command 211, is recognized or received by a USB device such as USB device 120.
In other embodiments, suspend response 222 in FIG. 2 includes a respond signaling instead of a respond transaction. Similarly to the suspend transaction and suspend signaling represented by suspend command 211, the respond transaction represented by suspend response 222 has specific packet formats whereas the respond signaling has no packet format. The respond signaling may be a chirp such as chirp M and chirp N described above. The respond signaling may also be a series of chirps M, a series of chirps N, or a series of alternating chirp M and chirp N.
The above description shows that the suspend communication in FIG. 2 is a bi-directional communication between USB devices 110 and 120. As described above, suspend command 211 may include either a suspend transaction or a suspend signaling; suspend response 222 may also include either a suspend transaction or a suspend signaling. In some embodiments, the suspend communication in FIG. 2 may include the same communication type. For example, both suspend command 211 and suspend response 222 may include either suspend transactions or suspend signaling. In other embodiments, the suspend communication may include a mix of signaling and transaction. For example, suspend command 211 may include a suspend signaling whereas suspend response 222 may include a respond transaction. As another example, suspend command 211 may include a suspend transaction whereas suspend response 222 may include a respond signaling.
USB 2.0 allows data to be transferred between USB devices at three different transfer rates or speeds: low speed, full speed, and high speed. The low, full, and high speeds correspond to data transfer rates of 1.5 Mb/s, 12 Mb/s, and 480 Mb/s, respectively. Mb/s stands for megabits per second (106 bits per second). Thus, a high-speed USB device may transfer data on a USB segment at a rate up to 480 Mb/s. A USB segment may be in a low speed, full speed, or high speed mode depending on the speed of the USB device. During the suspend state, USB 2.0 requires a USB segment coupled to a low-speed device to be placed into a low-speed idle state, a USB segment coupled to a full-speed device to be placed into full-speed idle state. For a high-speed device during the suspend state, USB 2.0 requires a USB segment coupled to the high-speed USB device to be switched from the high-speed mode to the full-speed idle state, as in the case of the full-speed device.
Thus, according to USB 2.0, a USB segment during the suspend state is placed into either the low-speed idle state or into the full-speed idle state. In both the low-speed idle and full-speed idle states, one of the data lines (D+ or D−) of the USB segment is coupled to a power source through a pull-up resistor. Current or charge from the power source may leak to ground through the pull-up resistor, thereby power may be wasted.
In apparatus 100 of FIG. 1, the data lines of USB segment 140 are decoupled from the power source during the suspend state. Thus, apparatus 100 may avoid the current leakage through the pull-up resistor during the suspend state, thereby power may be saved.
In some embodiments, USB device 120 of FIG. 1 is a high-speed USB device and USB segment 140 is in a high-speed mode during the enabled state. During the suspend state of apparatus 100 of FIG. 1, USB segment 140 is not switched from the high-speed mode to the full-speed idle state. USB segment 140 is kept at the same high-speed mode during the enabled state and during the suspend state. In contrast, as described above, USB 2.0 requires a USB segment in the high-speed mode during the enabled state to be switched to the full-speed idle during the suspend state.
Keeping USB segment 140 of apparatus 100 at the same high speed mode during the enabled state and during the suspend state may reduce design complexity. In the high-speed mode, both data lines (D+ and D−) of a USB segment are coupled to ground when the USB segment is not transferring data. Switching the USB segment from the high-speed mode to the full-speed idle state during the suspend state, as required by USB 2.0, involves activities such as disconnecting a data line of the USB segment from ground and connecting the data line to the power source through the pull-up resistor. The design complexity in apparatus 100 may be reduced because the data lines of USB segment 140 may not need to be switched between ground and the power source.
Further, keeping USB segment 140 in apparatus 100 at the same high speed mode during the enabled state and during the suspend state may also save power in the suspend state. For example, since the data lines (D+ and D−) of USB segment 140 remain coupled to ground or decoupled from the power source during the suspend state, current leakage through the pull-up resistor may be avoided, thereby power may be saved.
As mentioned above, USB device 110 includes a mechanism to distinguish between the active state and the idle state of USB segment 140. Thus, USB device 110 is able to distinguish between the high-speed mode of USB segment 140 during the enabled state and the high speed mode of USB segment 140 during the suspend state so that USB device 110 may send appropriate signaling on USB segment 140 to communicate with USB device 120 during both active state and idle state of USB segment 140.
In some embodiments, the last activity on USB segment 140 of FIG. 1 may occur at time T1 (FIG. 2) such that from time T1 to time T3, USB segment 140 is active but may be idling. In USB 2.0, a USB device such as USB device 120 may enter the suspend state only after three milliseconds of inactivity or idling on a USB segment. Thus, in USB 2.0, a USB device such as USB device 120 may enter the suspend state at time T3 where T3 is at least three milliseconds counting from T1 when the last activity occurs at time T1. In apparatus 100, however, USB device 120 is allowed to enter the suspend state at time T3 where T3 is less than three milliseconds counting from T1. In apparatus 100, although USB device 120 may enter the suspend state by itself after the three milliseconds of inactivity on USB segment 140, USB device 120 may also prepare to enter the suspend state when the suspend communication is initiated. In apparatus 100, the suspend communication may be initiated before three milliseconds of inactivity on USB segment 140. In some embodiments, the suspend communication lasts in the order of microseconds and less than one millisecond and the transition interval between T2 and T3 is about ten microseconds. Thus, in apparatus 100, USB device 120 may enter the suspend state before three milliseconds of inactivity on USB segment 140. Entering the suspend state before three milliseconds of inactivity or idling on a USB segment may improve power management in apparatus 100.
As specified in USB 2.0, a USB device such as USB device 120 of FIG. 1 can begin to make a transition from a powered state to suspend state after more than three milliseconds of idling or inactivity on a USB segment such as USB segment 140 that couples to the USB device. Since the factor to allow the USB device in USB 2.0 to enter the suspend state depends on the presence or absence of activity on the USB segment, the suspend operation in USB 2.0 may be referred to as a “passive” suspend operation. In contrast, the suspend operation of apparatus 100 of FIG. 1 may be referred to as an “active” suspend operation because USB port 122, USB device 120, or both USB port 122 and USB device 120 enters the suspend state after an active bi-directional communication between USB devices 110 and 120.
In some embodiments, USB device 120 may include a configuration descriptor register to indicate a capability of supporting the active suspend operation described herein. In these embodiments, USB device 110 may recognize the capability of supporting the active suspend operation of USB device 120 during a USB enumeration process or during the suspend communication. USB devices 110 and 120 may both use the active suspend operation.
In other embodiments, USB device 110 may support the active suspend operation described above while USB device 120 is incapable of supporting the active suspend operation. In these embodiments, USB device 110 may recognize the incapability of supporting the active suspend operation by USB device 120 during a USB enumeration process. Therefore, during the normal operation after the USB enumeration process, USB device 110 may not initiate the suspend communication, for example, USB device 110 may not send suspend command 211 (FIG. 2) to initiate the suspend communication. In this case, the suspend operation may be performed as specified in USB 2.0.
In some other embodiments, USB device 110 may support the active suspend operation while USB device 120 is incapable of supporting the active suspend operation. In these embodiments, USB device 110 may be unaware of the incapability of supporting the active suspend operation by USB device 120. Thus, USB device 110 may still send suspend command 211 (FIG. 2) to initiate the suspend communication. In some embodiments, USB device 110 is configured to abort suspend communication after a time interval of no response from USB device 120 after suspend command 211 is sent. In this case, the suspend operation may be performed as specified in USB 2.0.
FIG. 3 shows an exemplary timing diagram for a resume operation of the apparatus of FIG. 1. FIG. 3 shows a suspend state between times T4 and T5, an enabled state beginning from either time T11 or T13 to time T14, a resume operation 301 beginning from time T5 and completing at either time T9 or T12, and a transition interval (TRAN) between times T9 and T11 or between times T12 and T13. Resume operation 301 includes two different resume communications 310 and 320. Depending which one of the USB devices 110 or 120 (FIG. 1) initiates resume operation 301, only one of the resume communications 310 and 320 is performed during resume operation 301. Resume communication 310 is performed if USB 110 initiates resume operation 301. Resume communication 320 is performed if USB device 120 initiates resume operation 301.
In embodiments where USB device 110 is a USB host controller, resume communication 310 in FIG. 3 may be referred to as host-initiated resume communication; resume communication 320 may be referred to as device-initiated resume communication or remote-wakeup resume communication. As mentioned above, resume communication 320 is performed if USB device 120 initiates resume operation 301. In some embodiments, USB device 120 may initiate the resume communication to allow USB port 122 or both USB port 122 and USB device 120 to exit the suspend state only after receiving a permission from USB device 110 during the suspend communication described in FIG. 2. For example, USB device 110 may include the permission in suspend command 211 during the suspend communication. In other embodiments, USB device 120 may initiate the resume communication to exit the suspend state only after a remote-wakeup capability of USB device 120 is enabled before the suspend communication. In some embodiments, the remote-wakeup capability of USB device 120 may be enabled by USB device 110. For example, USB device 110 may enable the remote-wakeup capability of USB device 120 by setting a value in a configuration descriptor register of USB device 120 during a USB enumeration or configuration process before a suspend communication.
The suspend state in FIG. 3 may represent the suspend state in FIG. 2. In the suspend state in FIG. 3, USB segment 140 (FIG. 1) is in the idle state with no active signaling activity being present. To resume communication between USB devices 110 and 120, either USB device 110 or USB device 120 may initiate the resume operation to establish connectivity.
In the case where USB device 110 initiates resume operation 301, resume communication 310 is performed. At time T5, USB device 110 starts to change the state of USB port 111 from the suspend state to a different state such as the enabled state. For example, at time T5, USB device 110 starts to drive data “L” signaling on USB segment 140 for a duration from time T5 to time T8. The data L signaling refers to differential voltage on the data lines (D+ and D−) of USB segment 140 where one of the data lines has a higher voltage than the other data line. USB 2.0 has data J and data K signaling. The data L signaling of FIG. 3 has a different driving duration from that of the data J or data K of USB 2.0. At time T8 in FIG. 3, USB device 110 issues an End-of-Resume (EOR) signaling on USB segment 140. The EOR signaling indicates that resume communication 310 is completed. In some embodiments, the EOR may be the End-of-Packet (EOP) of USB 2.0. Upon detection of the EOR signaling and after a transition interval occurred between times T9 and T11, USB device 120 may take USB port 122 out of the suspend state and place USB port 122 into the enabled state. If both USB port 122 and USB device 120 were in the suspend state before time T11, USB device 120 may take both USB port 122 and USB device 120 out of the suspend state and place either USB port 122 or both USB port 122 and USB device 120 into the enabled state. Thus, at time T11 in FIG. 3, USB device 120 may take at least port USB port 122 out of the suspend state and place at least USB port 122 into the enabled state. At time T11, USB segment 140 is activated or enabled. USB device 110 may broadcast communication packets to USB device 120 at time T11. In some embodiments, the duration between times T5 and T8 is about 50 microseconds; the duration between times T9 and T11 is about ten microseconds.
In the case where USB device 120 initiates resume operation 301, resume communication 320 is performed. At the beginning of resume communication 320 in FIG. 3 at time T5, USB device 120 starts to change the state of USB port 122 from the suspend state to a different state such as the enabled state. For example, at time T5, USB device 120 starts to drive the data L signaling on USB segment 140 for a duration from time T5 to time T7. The duration to the drive data L signaling from time T5 to T7 in resume communication 320 may be different from the duration to drive the data L signaling from time T5 to T8 in resume communication 310 described above. At time T7, USB device 120 stops driving the data L signaling and begins to detect or listen for signaling activity on USB segment 140.
In FIG. 3, at a time such as time T6, USB device 110 may recognize the data L signaling driven by USB device 120. In response, USB device 110 begins to drive the data L signaling to USB device 120 from time T6 to time T10. At time T10, USB device 110 issues the EOR signaling on USB segment 140. The EOR signaling indicates that resume communication 310 is completed. In some embodiments, the EOR may be the End-of-Packet (EOP) of USB 2.0. Upon the detection of the EOR signaling and after a transition interval occurred between times T12 and T13, USB device 120 may take USB port 122 out of the suspend state and place USB port 122 into the enabled state. If both USB port 122 and USB device 120 were in the suspend state before time T13, USB device 120 may take both USB port 122 and USB device 120 out of the suspend state and place either USB port 122 or both USB port 122 and USB device 120 into the enabled state. Thus, at time T13 in FIG. 3, USB device 120 may take at least port USB port 122 out of the suspend state and place at least USB port 122 into the enabled state. At time T13, USB segment 140 is activated or enabled. USB device 110 may broadcast communication packets to USB device 120 at time T13. In some embodiments, the duration between times T5 and T7 is about 25 microseconds; T6 is about 15 microseconds from T5; the duration between times T6 and T10 is about 50 microseconds; and the duration between times T12 and T13 is about ten microseconds.
In resume operation 301 described above, the duration for resume operation 301 may be dependent mainly on the capability of USB device 110 and USB device 120 to detect and recognize the change in the state of USB segment 140 such as the data L signaling and the EOR signaling. Thus, resume operation 301 may be performed in a relatively smaller duration in comparison to that in USB 2.0. For example, the duration of resume operation 301 may be less than one hundred microseconds, which may be sufficient for both USB devices 110 and 120 to complete the resume operation. Smaller duration for the resume operation may improve power management in apparatus 100.
In embodiments where one of the USB devices 110 and 120 may lack support for a resume operation such as resume operation 301 described in FIG. 3, the resume operation between USB devices 110 and 120 may be performed according to USB 2.0.
FIG. 4 shows a system having USB devices according to an embodiment of the invention. System 400 includes a system host controller 401, an input/output (I/O) controller 404, a memory device 406, and a USB host controller 408 including a number of root ports 421, 422, 423, and 424. Each of the USB segments 431, 432, 433, 434 provides a point-to-point connection between USB host controller 408 and one of the peripheral device 410, keypad or keyboard 412, display 414, and USB hub device 416.
Each of the peripheral device 410, keypad or keyboard 412, display 414, and USB hub device 416 includes a USB port (471, 472, 473, or 474) coupled to one of the USB segments 431, 432, 433, 434. USB hub device 416 includes non-root ports 425 and 426 to provide additional attachment points to allow additional USB devices to attach to USB host controller 408. For example, USB device 418 having USB port 475 may attach to USB host controller 408 through USB segment 435 and hub device 416. As another example, USB device 420 having USB port 476 may attach to USB host controller 408 through USB segment 436 and USB hub device 416.
In the embodiments represented by FIG. 4, peripheral device 410, keypad or keyboard 412, and display 414 include USB functions and are coupled to USB host controller 408. In some embodiments, one or more of the peripheral device 410, keypad or keyboard 412, and display 414 may include non-USB functions and may couple to I/O controller 404 instead of to USB host controller 408.
System 400 further includes an antenna 450. Antenna 450 may be one or more of a patch, omnidirectional, beam, monopole, dipole, and rhombic antenna, among others. Antenna 450 provides an option for system 400 to communicate with other systems or devices via wireless media.
System 400 further includes a battery 402 to supply power to system 400. In some embodiments, system 400 may use power supplied from an electrical outlet such as a home or office electrical outlet.
In some embodiments, the entire system 400 may be included in a single system unit. For example, the entire system 400 may be included in a desktop computer or in a laptop computer. In other embodiments, only a portion of system 400 may be included in a single system unit. For example, only portion 499 of system 400 may be included in a desktop computer, a laptop computer, a digital hand-held system such as a cellular phone.
The illustration of system 400 in FIG. 4 is intended to provide a general understanding of the structure of various embodiments described herein. System 400 is not intended to serve as a complete description of all the elements and features of systems that might make use of the structures described herein.
System 400 includes various modes of operation including suspend and resume operations. In some embodiments, the suspend and resume operations in system 400 are performed by USB host controller 408 and at least one of the peripheral device 410, keypad or keyboard 412, display 414, and USB hub device 416. In other embodiments, the suspend and resume operations in system 400 are performed by USB hub device 416 and at least one of the USB devices 418 and 420.
In some embodiments, USB host controller 408 and at least one of the peripheral device 410, keypad or keyboard 412, display 414, USB hub device 416, USB device 418, and USB device 420 are configured to perform the suspend and resume operations described in FIG. 1 through FIG. 3. Thus, in some embodiments, suspend and resume operations, as described in FIG. 1 through FIG. 3, may occur in devices coupled between any one of the USB segments 431, 432, 433, 434, 435, and 436 of system 400. Using the suspend and resume communication described herein may improve power management in system 400 to save power. Thus, the life of battery 402 may be extended.
FIG. 5 is a flowchart showing a method for suspend and resume operations according to an embodiment of the invention. In some embodiments, method 500 may be used in apparatus 100 of FIG. 1 and system 400 of FIG. 4.
In FIG. 5, box 510 initiates a bi-directional suspend communication between a first USB device and a second USB device. The first and second USB devices may be in an enabled state before the bi-directional suspend communication is initiated. The bi-directional suspend communication may include the first USB device sending a suspend command on a USB segment. The USB segment is coupled between a USB port of the first and a USB port of the second USB device. The bi-directional suspend communication may also include the second USB device detecting the suspend command and sending a suspend response to the first USB device.
In some embodiments, the suspend command sent by the first USB device may include a transaction, a special signaling, or a series of special signaling. The transition may include a suspend token packet. In other embodiments, the suspend command sent by the first USB device may include a permission to allow the second USB device to initiate remote-wakeup resume communication to exit a suspend state.
In some embodiments, the suspend response sent by the second USB device in box 510 may include a transaction, a special signaling, or a series of special signaling. The transition may include a handshake packet.
The bi-directional suspend communication in box 510 may include embodiments of the suspend communication described in FIG. 1 and FIG. 2.
In FIG. 5, box 520 places at least one of the USB port of the first USB device, the USB port of the second USB device, and the second USB device into a suspend state based on the bi-directional suspend communication. For example, box 520 may place both the USB port of the first USB device and the USB port of the second USB device into a suspend state based on the bi-directional suspend communication. In some embodiments, the second USB device is in an enabled stated while the USB port of the second device is in the suspend state. Thus, the state of USB port of the second USB device and the state of the second USB device may be different after the suspend communication is performed.
In some embodiments, at least one of the USB port of the first USB device, the USB port of the second USB device, and the second USB device is placed into the suspend state without waiting for more than three milliseconds of idling or inactivity on the USB segment. The USB segment is in an idle state when least one of the USB port of the first USB device, the USB port of the second USB device, and the second USB device is placed into the suspend state. In some embodiments, the data lines of the USB segment are decoupled from a power source when the USB segment in the idle state.
In box 530 of FIG. 5, a resume communication is initiated to start a resume operation. The resume communication may be initiated by either the first USB device or the second USB device.
If the first USB device initiates the resume communication, the first USB device drives a data signaling on the USB segment for a driving duration. At the end of the driving duration, the first USB device issues an End-of-Resume (EOR) signaling on the USB segment. The EOR signaling indicates the completion of the resume communication.
If the second USB device initiates the resume communication, the second USB device drives a data signaling on the USB segment for a first duration. At some time during the first duration, the first USB device detects the data signaling from the second USB device and drives a second data signaling to the second USB device for a second duration. The first duration ends before the second duration ends. At the end of the second duration, the first USB device issues the EOR signaling on the USB segment.
Thus, regardless of which of the first and second USB devices initiates the resume communication, the first USB device issues the EOR signaling on the USB segment. The data signaling and the EOR signaling may include the data L signaling and the EOR signaling described in FIG. 3.
In box 540 of FIG. 5, either the USB port of the second USB device, or both the USB port of the second USB device and the second USB device exits the suspend state. In some embodiments, the USB port of the second USB device or both the USB port of the second USB device and the second USB device exits the suspend state the second USB device exits the suspend state after the EOR signaling (box 530) is detected and after a transition interval.
The individual activities shown in FIG. 5 do not have to be performed in the order illustrated or in any particular order. Moreover, various activities described with respect to the methods identified herein can be executed in serial or parallel fashion. Some activities may be repeated indefinitely, and others may occur only once. Various embodiments may have more or fewer activities than those illustrated.
FIG. 6 is a block diagram of an article 600 according to an embodiment of the invention. Article 600 may include a computer, a memory system, a magnetic or optical disk, other type of storage devices, a hand-held system such as a cellular phone, or other electronic systems. Article 600 includes a controller 610 coupled to a machine-accessible medium such as a memory 620. Controller 610 may include any combination of a general-purpose processor, an application specific integrated circuit, a chipset including an input/output control unit, and one or more USB devices including a USB host controller. Memory 620 may be removable storage media. Memory 620 may include any type of memory such as electrical, optical, or electromagnetic. Memory 620 has associated information or data 630. Examples of associated information 630 are computer program instructions. Associated information 630, when accessed, results in a machine (for example, controller 610) performing activities such as initiating a suspend communication on a USB segment coupled between a first USB device and a second USB device, and placing the second USB device into a suspend state based on the suspend communication between the first and second USB devices. Other activities may include initiating a resume communication, and exiting the suspend state based on the resume communication. The activities performed when associated information 630 is accessed may include activities described in FIG. 1 through FIG. 5.
Improved power management may result from implementing the apparatus, systems, and methods described in FIG. 1 through FIG. 6.
The above description and the drawings illustrate some specific embodiments of the invention sufficiently to enable those skilled in the art to practice the embodiments of the invention. Other embodiments may incorporate structural, logical, electrical, process, and other changes. In the drawings, like features or like numerals describe substantially similar devices throughout the several views. Examples merely typify possible variations. Portions and features of some embodiments may be included in or substituted for those of others. Many other embodiments will be apparent to those of skill in the art upon reading and understanding the above description. Therefore, the scope of various embodiments is determined by the appended claims, along with the full range of equivalents to which such claims are entitled.

## Claims

1. A method comprising:
initiating a suspend communication on a universal serial bus (USB) segment between a USB port of a first USB device and a USB port of a second USB device, wherein initiating the suspend communication includes sending a suspend command from the first USB device to the second USB device, and sending a suspend response from the second USB device to the first USB device in response to the suspend command;
placing at least one of the USB port of the first device, the USB port of the second USB device, and the second USB device in a suspend state based on the suspend communication between the first USB device and the second USB device; and
initiating a resume communication on the USB segment, wherein initiating the resume communication includes one of the first and second USB devices driving a signal on the USB segment, for less than one millisecond.

2. The method of claim 1, wherein the suspend command includes a token packet indicating an initiation for the suspend state.

3. The method of claim 2, wherein the suspend response includes a handshake packet indicating an acknowledgement of the suspend command.

4. The method of claim 1, wherein sending the suspend command includes sending a permission to allow the second USB device to initiate the resume communication to enable at least one of the USB port of the first device, the USB port of the second USB device, and the second USB device to exit the suspend state based on the resume communication.

5. The method of claim 1, wherein placing at least one of the USB port of the first device, the USB port of the second USB device, and the second USB device in the suspend state includes decoupling both data lines of the USB segment from a power source.

6. The method of claim 1, wherein placing at least one of the USB port of the first device, the USB port of the second USB device, and the second USB device in the suspend state occurs before three milliseconds of inactivity on the USB segment.

7. The method of claim 1 further comprising:
exiting the suspend state based on the resume communication between the first USB device and the second USB device.

8. A method comprising:
initiating a suspend communication on a universal serial bus (USB) segment between a USB port of a first USB device and a USB port of a second USB device, wherein initiating the suspend communication includes sending a suspend command from the first USB device to the second USB device, and sending a suspend response from the second USB device to the first USB device in response to the suspend command;
placing at least one of the USB port of the first device, the USB port of the second USB device, and the second USB device in a suspend state based on the suspend communication between the first USB device and the second USB device;
initiating a resume communication on the USB segment, wherein initiating the resume communication includes one of the first and second USB devices driving a data signaling on the USB segment for less than one millisecond; and
exiting the suspend state based on the resume communication between the first USB device and the second USB device.

9. The method of claim 8, wherein initiating the resume communication includes the first USB device issuing an End-of-Resume signaling on the USB segment after the data signaling, and wherein the first USB device is allowed to send a token packet to the USB segment less than ten milliseconds after an occurrence of the End-of-Resume signaling on the USB segment.

10. The method of claim 8, wherein the second USB device is allowed to drive the data signaling on the USB segment before two milliseconds lapsed from a beginning of the suspend state.

11. An apparatus comprising:
a first USB port to transfer data with a USB device through a USB segment, the first USB port to couple to a USB port of the USB device through the USB segment; and
a circuit to initiate a bi-directional suspend communication on the USB segment through the first USB port to allow at least one of the first USB port, the USB port of the USB device, and the USB device to enter a suspend state based on the bi-directional suspend communication, wherein the circuit is to send to the USB device a suspend command during the bi-directional suspend communication and to receive from the USB device a suspend response from the USB device after the suspend command is sent, and the circuit is further to drive a signal on the USB segment for less than one millisecond to initiate a resume communication on the USB segment.

12. The apparatus of claim 11, wherein the circuit is to send a token packet within the suspend command indicating an initiation for the suspend state, and wherein the circuit is to receive a handshake packet within the suspend response indicating an acknowledgement of the suspend command.

13. The apparatus of claim 11, wherein the circuit is to initiate the bi-directional suspend communication to allow at least one of the first USB port, the USB port of the USB device, and the USB device to enter the suspend state before three milliseconds of inactivity on the USB segment.

14. The apparatus of claim 11, wherein the circuit is to allow at least one of the first USB port, the USB port of the USB device, and the USB device to exit the suspend state based on the resume communication.

15. The apparatus of claim 14, wherein the circuit is to drive the signal on the USB segment for less than 20 milliseconds during the resume communication.

16. The apparatus of claim 11, wherein the circuit is to enable at least one of the first USB port, the USB port of the USB device, and the USB device to exit the suspend state based on the resume communication.

17. The apparatus of claim 11, wherein the first USB port is a USB root port.

18. A system comprising:
a USB device including a USB port;
a USB segment coupled to the USB port;
a USB host controller to initiate a bi-directional suspend communication on the USB segment to allow at least one of the USB port and the USB device to enter a suspend state based on the bi-directional suspend communication between the USB host controller and the USB device, wherein the USB host controller is to send to the USB device a suspend command during the bi-directional suspend communication and to receive from the USB device a suspend response from the USB device after the suspend command is sent, wherein one of the USB device and the USB host controller is to drive a signal on the USB segment for less than one millisecond to initiate a resume communication on the USB segment; and
a battery to supply power to the USB host controller.

19. The system of claim 18, wherein the USB host controller is to send a token packet within the suspend command indicating an initiation of a suspend operation, and wherein the USB host controller is to receive a handshake packet within the suspend response.

20. The system of claim 18, wherein the USB host controller is to initiate the resume communication to allow at least one of the USB port and the USB device to exit the suspend state based on the resume communication.

21. The system of claim 18, wherein the USB host controller is to receive the resume communication initiated by the USB device to enable at least one of the USB port and the USB device to exit the suspend state based on the resume communication.

22. The system of claim 18, wherein the USB device is to decouple both data lines of the USB segment from a power source.

23. A machine-readable medium comprising instructions, which when implemented by one or more processors perform the following operations:
initiating a suspend communication on a universal serial bus (USB) segment between a USB port of a first USB device and a USB port of a second USB device, wherein initiating the suspend communication includes sending a suspend command from the first USB device to the second USB device, and sending a suspend response from the second USB device to the first USB device in response to the suspend command;
placing at least one of the USB port of the first device, the USB port of the second USB device, and the second USB device in a suspend state based on the suspend communication between the first USB device and the second USB device; and
initiating a resume communication on the USB segment, wherein initiating the resume communication includes one of the first and second USB devices driving a signal on the USB segment, for less than one millisecond.

24. The machine-readable medium of claim 23, wherein the suspend command includes a token packet indicating an initiation for the suspend state, and wherein the suspend response includes a handshake packet indicating an acknowledgement of the suspend command.

25. The machine-readable medium of claim 23, wherein sending the suspend command includes the first USB device driving a data signaling on one of a plurality of data lines of the USB segment for a duration, and wherein sending the suspend response includes the second USB device driving a data signaling on one of the plurality of data lines of the USB segment for a duration.

26. The machine-readable medium of claim 23 further comprising:
exiting the suspend state based on the resume communication between the first USB device and the second USB device.