usb_autopm_put_interface
Prev | Chapter 5. USB Core APIs | Next

## Name

usb_autopm_put_interface — decrement a USB interface's PM-usage counter

## Synopsis

`void usb_autopm_put_interface (` | struct usb_interface * | intf`)`;

## Arguments

`intf`

  the usb_interface whose counter should be decremented

## Description

This routine should be called by an interface driver when it is finished using `intf` and wants to allow it to autosuspend. A typical example would be a character-device driver when its device file is closed.

The routine decrements `intf`'s usage counter. When the counter reaches 0, a delayed autosuspend request for `intf`'s device is queued. When the delay expires, if `intf`->pm_usage_cnt is still <= 0 along with all the other usage counters for the sibling interfaces and `intf`'s usb_device, the device and all its interfaces will be autosuspended.

Note that `intf`->pm_usage_cnt is owned by the interface driver. The core will not change its value other than the increment and decrement in usb_autopm_get_interface and usb_autopm_put_interface. The driver may use this simple counter-oriented discipline or may set the value any way it likes.

If the driver has set `intf`->needs_remote_wakeup then autosuspend will take place only if the device's remote-wakeup facility is enabled.

Suspend method calls queued by this routine can arrive at any time while `intf` is resumed and its usage counter is equal to 0. They are not protected by the usb_device's lock but only by its pm_mutex. Drivers must provide their own synchronization.

This routine can run only in process context.

Prev | Up | Next
usb_deregister | Home | usb_autopm_get_interface