IP Library Granted Patent US 9,087,031
Granted Patent B2
US 9,087,031 · App. 14/052,306 · Granted Jul 21, 2015

Method and program for selective suspension of USB device

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,087,031
App. No.
14/052,306
Granted
Jul 21, 2015
Kind
B2
Abstract

A method provides device selective suspension feature when the operating system does not allow certain device drivers to perform device selective suspension. Two driver stacks are provided in the kernel space for the device. The first driver stack includes a virtual bus, a PDO (physical device object) created by the virtual bus, and a driver for the device (e.g. NDIS driver); the second stack includes a device driver stack (e.g. USB generic driver) and a function driver that performs device selective suspension by sending power IRPs to the device driver stack. By using a virtual bus and PDOs created by the virtual bus in the first driver stack, the driver above the PDO can be any one of many types of drivers (NDIS driver being one example). The virtual bus forwards IRPs from the first driver stack to the second driver stack.

Claims (18)

1. A method for controlling a device coupled to a host computer, comprising:

providing a first driver stack in a kernel space of an operating system (OS) of the host computer, wherein the first driver stack comprises a virtual bus, a physical device object created by and coupled to the virtual bus, and a first device driver coupled to the physical device object, to interact with user applications in a user space of the OS; and

providing a second driver stack in the kernel space of the OS, wherein the second driver stack comprises a function driver and a second device driver for the device, to interact with the device, wherein the function driver is coupled to the virtual bus of the first driver stack and the second device driver is coupled to the function driver,

wherein the first driver stack forwards data between the user applications and the second driver stack, and the second driver stack forwards data between the first driver stack and the device,

wherein the function driver issues a command to the second device driver to selectively suspend the device, and

wherein the first driver stack and the second driver stack are distinct, and the first device driver and the function driver are distinct.

2. The method of claim 1 , wherein when the device is in a suspend state, and in response to the first driver stack receiving a data or command from a user application, the function driver issues another command to the second device driver to resume the network device.

3. The method of claim 1 , wherein when the device is in a suspend state, the function driver allows the device to resume.

4. The method of claim 1 , further comprising providing a power manager in the kernel space for monitoring and synchronize changes of power state of the device and the virtual bus.

5. A computer software program product having a computer readable program code embedded in a computer usable non-transitory storage medium for controlling a host computer, the computer readable program code configured to cause the host computer to execute a process for controlling a device coupled to the host computer, the process comprising:

providing a first driver stack in a kernel space of an operating system (OS) of the host computer, wherein the first driver stack comprises a virtual bus, a physical device object created by and coupled to the virtual bus, and a first device driver coupled to the physical device object, to interact with user applications in a user space of the OS; and

providing a second driver stack in the kernel space of the OS, wherein the second driver stack comprises a function driver and a second device driver for the device, to interact with the device, wherein the function driver is coupled to the virtual bus of the first driver stack and the second device driver is coupled to the function driver,

wherein the first driver stack forwards data between the user applications and the second driver stack, and the second driver stack forwards data between the first driver stack and the device,

wherein the function driver issues a command to the second device driver to selectively suspend the device, and

wherein the first driver stack and the second driver stack are distinct, and the first device driver and the function driver are distinct.

6. The computer software program product of claim 5 , wherein when the device is in a suspend state, and in response to the first driver stack receiving a data or command from a user application, the function driver issues another command to the second device driver to resume the network device.

7. The computer software program product of claim 5 , wherein when the device is in a suspend state, the function driver allows the device to resume.

8. The computer software program product of claim 5 , wherein the process further comprises providing a power manager in the kernel space for monitoring and synchronize changes of power state of the device and the virtual bus.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 17, 2024
From: MEDIATEK INC.
To: INTERLINK SILICON SOLUTIONS INC.
Reel/Frame 069604/0902 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2013
From: HSU, YING-CHE; HUANG, WEN-JUIN; TSAI, ANG-JUEI
To: MEDIATEK INC.
Reel/Frame 031392/0880 →