1151 struct usb_interface *intf;
1152 struct usb_device *parent = udev->parent;
1153
1154 if (udev->state == USB_STATE_NOTATTACHED ||
1155 udev->state == USB_STATE_SUSPENDED)
1156 goto done;
1157
1158 udev->do_remote_wakeup = device_may_wakeup(&udev->dev);
1159
1160 if (udev->auto_pm) {
1161 status = autosuspend_check(udev, 0);
1162 if (status < 0)
1163 goto done;
1164 }
1165
1166
1167 if (udev->actconfig) {
1168 for (; i < udev->actconfig->desc.bNumInterfaces; i++) {
1169 intf = udev->actconfig->interface[i];
1170 status = usb_suspend_interface(udev, intf, msg);
1171 if (status != 0)
1172 break;
1173 }
1174 }
1175 if (status == 0)
1176 status = usb_suspend_device(udev, msg);
1177
1178
1179 if (status != 0) {
1180 while (--i >= 0) {
1181 intf = udev->actconfig->interface[i];
1182 usb_resume_interface(udev, intf, 0);
1183 }
1184
1185
1186 if (udev->auto_pm)
1187 autosuspend_check(udev, status == -EBUSY);
1188
1189
1190
1191