Lines Matching defs:devinfo

77 				struct uas_dev_info *devinfo);
80 static void uas_free_streams(struct uas_dev_info *devinfo);
99 struct uas_dev_info *devinfo =
106 spin_lock_irqsave(&devinfo->lock, flags);
108 if (devinfo->resetting)
111 for (i = 0; i < devinfo->qdepth; i++) {
112 if (!devinfo->cmnd[i])
115 cmnd = devinfo->cmnd[i];
125 queue_work(workqueue, &devinfo->work);
128 spin_unlock_irqrestore(&devinfo->lock, flags);
133 struct uas_dev_info *devinfo =
135 struct Scsi_Host *shost = usb_get_intfdata(devinfo->intf);
137 dev_dbg(&devinfo->intf->dev, "starting scan\n");
139 dev_dbg(&devinfo->intf->dev, "scan complete\n");
146 struct uas_dev_info *devinfo = cmnd->device->hostdata;
148 lockdep_assert_held(&devinfo->lock);
150 queue_work(workqueue, &devinfo->work);
153 static void uas_zap_pending(struct uas_dev_info *devinfo, int result)
160 spin_lock_irqsave(&devinfo->lock, flags);
161 for (i = 0; i < devinfo->qdepth; i++) {
162 if (!devinfo->cmnd[i])
165 cmnd = devinfo->cmnd[i];
174 spin_unlock_irqrestore(&devinfo->lock, flags);
249 struct uas_dev_info *devinfo = (void *)cmnd->device->hostdata;
251 lockdep_assert_held(&devinfo->lock);
257 devinfo->cmnd[cmdinfo->uas_tag - 1] = NULL;
303 struct uas_dev_info *devinfo = (struct uas_dev_info *)shost->hostdata;
313 spin_lock_irqsave(&devinfo->lock, flags);
315 if (devinfo->resetting)
325 if (idx >= MAX_CMNDS || !devinfo->cmnd[idx]) {
331 cmnd = devinfo->cmnd[idx];
381 spin_unlock_irqrestore(&devinfo->lock, flags);
398 struct uas_dev_info *devinfo = (void *)cmnd->device->hostdata;
403 spin_lock_irqsave(&devinfo->lock, flags);
413 if (devinfo->resetting)
433 spin_unlock_irqrestore(&devinfo->lock, flags);
444 static struct urb *uas_alloc_data_urb(struct uas_dev_info *devinfo, gfp_t gfp,
448 struct usb_device *udev = devinfo->udev;
453 ? devinfo->data_in_pipe : devinfo->data_out_pipe;
459 if (devinfo->use_streams)
467 static struct urb *uas_alloc_sense_urb(struct uas_dev_info *devinfo, gfp_t gfp,
470 struct usb_device *udev = devinfo->udev;
482 usb_fill_bulk_urb(urb, udev, devinfo->status_pipe, iu, sizeof(*iu),
484 if (devinfo->use_streams)
494 static struct urb *uas_alloc_cmd_urb(struct uas_dev_info *devinfo, gfp_t gfp,
497 struct usb_device *udev = devinfo->udev;
522 usb_fill_bulk_urb(urb, udev, devinfo->cmd_pipe, iu, sizeof(*iu) + len,
540 struct uas_dev_info *devinfo = cmnd->device->hostdata;
544 urb = uas_alloc_sense_urb(devinfo, gfp, cmnd);
547 usb_anchor_urb(urb, &devinfo->sense_urbs);
559 struct uas_dev_info *devinfo)
565 lockdep_assert_held(&devinfo->lock);
574 cmdinfo->data_in_urb = uas_alloc_data_urb(devinfo, GFP_ATOMIC,
582 usb_anchor_urb(cmdinfo->data_in_urb, &devinfo->data_urbs);
594 cmdinfo->data_out_urb = uas_alloc_data_urb(devinfo, GFP_ATOMIC,
602 usb_anchor_urb(cmdinfo->data_out_urb, &devinfo->data_urbs);
614 cmdinfo->cmd_urb = uas_alloc_cmd_urb(devinfo, GFP_ATOMIC, cmnd);
621 usb_anchor_urb(cmdinfo->cmd_urb, &devinfo->cmd_urbs);
640 struct uas_dev_info *devinfo = sdev->hostdata;
651 if ((devinfo->flags & US_FL_NO_ATA_1X) &&
660 spin_lock_irqsave(&devinfo->lock, flags);
662 if (devinfo->resetting) {
669 for (idx = 0; idx < devinfo->qdepth; idx++) {
670 if (!devinfo->cmnd[idx])
673 if (idx == devinfo->qdepth) {
674 spin_unlock_irqrestore(&devinfo->lock, flags);
697 if (!devinfo->use_streams)
700 err = uas_submit_urbs(cmnd, devinfo);
714 spin_unlock_irqrestore(&devinfo->lock, flags);
720 devinfo->cmnd[idx] = cmnd;
722 spin_unlock_irqrestore(&devinfo->lock, flags);
736 struct uas_dev_info *devinfo = (void *)cmnd->device->hostdata;
741 spin_lock_irqsave(&devinfo->lock, flags);
749 devinfo->cmnd[cmdinfo->uas_tag - 1] = NULL;
757 spin_unlock_irqrestore(&devinfo->lock, flags);
774 struct uas_dev_info *devinfo = sdev->hostdata;
775 struct usb_device *udev = devinfo->udev;
779 err = usb_lock_device_for_reset(udev, devinfo->intf);
788 spin_lock_irqsave(&devinfo->lock, flags);
789 devinfo->resetting = 1;
790 spin_unlock_irqrestore(&devinfo->lock, flags);
792 usb_kill_anchored_urbs(&devinfo->cmd_urbs);
793 usb_kill_anchored_urbs(&devinfo->sense_urbs);
794 usb_kill_anchored_urbs(&devinfo->data_urbs);
795 uas_zap_pending(devinfo, DID_RESET);
799 spin_lock_irqsave(&devinfo->lock, flags);
800 devinfo->resetting = 0;
801 spin_unlock_irqrestore(&devinfo->lock, flags);
817 struct uas_dev_info *devinfo = (struct uas_dev_info *)
820 if (devinfo->flags & US_FL_NO_REPORT_LUNS)
828 struct uas_dev_info *devinfo =
831 sdev->hostdata = devinfo;
840 if (devinfo->flags & US_FL_MAX_SECTORS_64)
842 else if (devinfo->flags & US_FL_MAX_SECTORS_240)
850 struct uas_dev_info *devinfo = sdev->hostdata;
852 if (devinfo->flags & US_FL_NO_REPORT_OPCODES)
856 if (devinfo->flags & US_FL_BROKEN_FUA)
860 if (devinfo->flags & US_FL_ALWAYS_SYNC) {
867 if (devinfo->flags & US_FL_NO_READ_CAPACITY_16)
871 if (devinfo->flags & US_FL_NO_SAME)
878 if (devinfo->flags & US_FL_FIX_CAPACITY)
884 if (devinfo->flags & US_FL_CAPACITY_HEURISTICS)
896 if (devinfo->flags & US_FL_NO_WP_DETECT)
899 scsi_change_queue_depth(sdev, devinfo->qdepth - 2);
946 static int uas_configure_endpoints(struct uas_dev_info *devinfo)
949 struct usb_device *udev = devinfo->udev;
952 r = uas_find_endpoints(devinfo->intf->cur_altsetting, eps);
956 devinfo->cmd_pipe = usb_sndbulkpipe(udev,
958 devinfo->status_pipe = usb_rcvbulkpipe(udev,
960 devinfo->data_in_pipe = usb_rcvbulkpipe(udev,
962 devinfo->data_out_pipe = usb_sndbulkpipe(udev,
966 devinfo->qdepth = 32;
967 devinfo->use_streams = 0;
969 devinfo->qdepth = usb_alloc_streams(devinfo->intf, eps + 1,
971 if (devinfo->qdepth < 0)
972 return devinfo->qdepth;
973 devinfo->use_streams = 1;
979 static void uas_free_streams(struct uas_dev_info *devinfo)
981 struct usb_device *udev = devinfo->udev;
984 eps[0] = usb_pipe_endpoint(udev, devinfo->status_pipe);
985 eps[1] = usb_pipe_endpoint(udev, devinfo->data_in_pipe);
986 eps[2] = usb_pipe_endpoint(udev, devinfo->data_out_pipe);
987 usb_free_streams(devinfo->intf, eps, 3, GFP_NOIO);
994 struct uas_dev_info *devinfo;
1015 devinfo = (struct uas_dev_info *)shost->hostdata;
1016 devinfo->intf = intf;
1017 devinfo->udev = udev;
1018 devinfo->resetting = 0;
1019 devinfo->shutdown = 0;
1020 devinfo->flags = dev_flags;
1021 init_usb_anchor(&devinfo->cmd_urbs);
1022 init_usb_anchor(&devinfo->sense_urbs);
1023 init_usb_anchor(&devinfo->data_urbs);
1024 spin_lock_init(&devinfo->lock);
1025 INIT_WORK(&devinfo->work, uas_do_work);
1026 INIT_WORK(&devinfo->scan_work, uas_scan_work);
1028 result = uas_configure_endpoints(devinfo);
1036 shost->can_queue = devinfo->qdepth - 2;
1044 schedule_work(&devinfo->scan_work);
1049 uas_free_streams(devinfo);
1058 static int uas_cmnd_list_empty(struct uas_dev_info *devinfo)
1063 spin_lock_irqsave(&devinfo->lock, flags);
1065 for (i = 0; i < devinfo->qdepth; i++) {
1066 if (devinfo->cmnd[i]) {
1072 spin_unlock_irqrestore(&devinfo->lock, flags);
1082 static int uas_wait_for_pending_cmnds(struct uas_dev_info *devinfo)
1089 flush_work(&devinfo->work);
1091 r = usb_wait_anchor_empty_timeout(&devinfo->sense_urbs, 5000);
1095 r = usb_wait_anchor_empty_timeout(&devinfo->data_urbs, 500);
1101 } while (!uas_cmnd_list_empty(devinfo));
1109 struct uas_dev_info *devinfo = (struct uas_dev_info *)shost->hostdata;
1112 if (devinfo->shutdown)
1120 if (uas_wait_for_pending_cmnds(devinfo) != 0) {
1126 uas_free_streams(devinfo);
1134 struct uas_dev_info *devinfo = (struct uas_dev_info *)shost->hostdata;
1138 if (devinfo->shutdown)
1141 err = uas_configure_endpoints(devinfo);
1160 struct uas_dev_info *devinfo = (struct uas_dev_info *)shost->hostdata;
1162 if (uas_wait_for_pending_cmnds(devinfo) != 0) {
1178 struct uas_dev_info *devinfo = (struct uas_dev_info *)shost->hostdata;
1182 err = uas_configure_endpoints(devinfo);
1200 struct uas_dev_info *devinfo = (struct uas_dev_info *)shost->hostdata;
1203 spin_lock_irqsave(&devinfo->lock, flags);
1204 devinfo->resetting = 1;
1205 spin_unlock_irqrestore(&devinfo->lock, flags);
1207 cancel_work_sync(&devinfo->work);
1208 usb_kill_anchored_urbs(&devinfo->cmd_urbs);
1209 usb_kill_anchored_urbs(&devinfo->sense_urbs);
1210 usb_kill_anchored_urbs(&devinfo->data_urbs);
1211 uas_zap_pending(devinfo, DID_NO_CONNECT);
1217 cancel_work_sync(&devinfo->scan_work);
1220 uas_free_streams(devinfo);
1234 struct uas_dev_info *devinfo = (struct uas_dev_info *)shost->hostdata;
1239 devinfo->shutdown = 1;
1240 uas_free_streams(devinfo);