799}
800
801static int cm109_usb_resume(struct usb_interface *intf)
802{
803 struct cm109_dev *dev = usb_get_intfdata(intf);
804
805 dev_info(&intf->dev, "cm109: usb_resume\n");
806
807 mutex_lock(&dev->pm_mutex);
808 cm109_restore_state(dev);
809 mutex_unlock(&dev->pm_mutex);
810
811 return 0;
812}
813
814static int cm109_usb_pre_reset(struct usb_interface *intf)
815{
816 struct cm109_dev *dev = usb_get_intfdata(intf);
817
818 mutex_lock(&dev->pm_mutex);
819
820
821
822
823
824 dev->resetting = 1;
825 smp_wmb();
826
827 cm109_stop_traffic(dev);
828
829 return 0;
830}
831
832static int cm109_usb_post_reset(struct usb_interface *intf)
833{
834 struct cm109_dev *dev = usb_get_intfdata(intf);
835
836 dev->resetting = 0;
837 smp_wmb();
838
839 cm109_restore_state(dev);