usb_autopm_put_interface — decrement a USB interface's PM-usage counter
void usb_autopm_put_interface ( | struct usb_interface * intf) ; |
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.