usb_autopm_get_interface
Prev | Chapter 5. USB Core APIs | Next

## Name

usb_autopm_get_interface — increment a USB interface's PM-usage counter

## Synopsis

`int usb_autopm_get_interface (` | struct usb_interface * | intf`)`;

## Arguments

`intf`

  the usb_interface whose counter should be incremented

## Description

This routine should be called by an interface driver when it wants to use `intf` and needs to guarantee that it is not suspended. In addition, the routine prevents `intf` from being autosuspended subsequently. (Note that this will not prevent suspend events originating in the PM core.) This prevention will persist until `usb_autopm_put_interface` is called or `intf` is unbound. A typical example would be a character-device driver when its device file is opened.

The routine increments `intf`'s usage counter. (However if the autoresume fails then the counter is re-decremented.) So long as the counter is greater than 0, autosuspend will not be allowed for `intf` or its usb_device. When the driver is finished using `intf` it should call `usb_autopm_put_interface` to decrement the usage counter and queue a delayed autosuspend request (if the counter is <= 0).

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.

Resume method calls generated by this routine can arrive at any time while `intf` is suspended. 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_autopm_put_interface | Home | usb_autopm_set_interface