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");
145 struct uas_dev_info *devinfo = cmnd->device->hostdata;
147 lockdep_assert_held(&devinfo->lock);
149 queue_work(workqueue, &devinfo->work);
152 static void uas_zap_pending(struct uas_dev_info *devinfo, int result)
159 spin_lock_irqsave(&devinfo->lock, flags);
160 for (i = 0; i < devinfo->qdepth; i++) {
161 if (!devinfo->cmnd[i])
164 cmnd = devinfo->cmnd[i];
173 spin_unlock_irqrestore(&devinfo->lock, flags);
247 struct uas_dev_info *devinfo = (void *)cmnd->device->hostdata;
249 lockdep_assert_held(&devinfo->lock);
255 devinfo->cmnd[cmdinfo->uas_tag - 1] = NULL;
301 struct uas_dev_info *devinfo = (struct uas_dev_info *)shost->hostdata;
311 spin_lock_irqsave(&devinfo->lock, flags);
313 if (devinfo->resetting)
323 if (idx >= MAX_CMNDS || !devinfo->cmnd[idx]) {
329 cmnd = devinfo->cmnd[idx];
379 spin_unlock_irqrestore(&devinfo->lock, flags);
396 struct uas_dev_info *devinfo = (void *)cmnd->device->hostdata;
401 spin_lock_irqsave(&devinfo->lock, flags);
411 if (devinfo->resetting)
431 spin_unlock_irqrestore(&devinfo->lock, flags);
442 static struct urb *uas_alloc_data_urb(struct uas_dev_info *devinfo, gfp_t gfp,
446 struct usb_device *udev = devinfo->udev;
451 ? devinfo->data_in_pipe : devinfo->data_out_pipe;
457 if (devinfo->use_streams)
465 static struct urb *uas_alloc_sense_urb(struct uas_dev_info *devinfo, gfp_t gfp,
468 struct usb_device *udev = devinfo->udev;
480 usb_fill_bulk_urb(urb, udev, devinfo->status_pipe, iu, sizeof(*iu),
482 if (devinfo->use_streams)
492 static struct urb *uas_alloc_cmd_urb(struct uas_dev_info *devinfo, gfp_t gfp,
495 struct usb_device *udev = devinfo->udev;
520 usb_fill_bulk_urb(urb, udev, devinfo->cmd_pipe, iu, sizeof(*iu) + len,
538 struct uas_dev_info *devinfo = cmnd->device->hostdata;
542 urb = uas_alloc_sense_urb(devinfo, gfp, cmnd);
545 usb_anchor_urb(urb, &devinfo->sense_urbs);
557 struct uas_dev_info *devinfo)
563 lockdep_assert_held(&devinfo->lock);
572 cmdinfo->data_in_urb = uas_alloc_data_urb(devinfo, GFP_ATOMIC,
580 usb_anchor_urb(cmdinfo->data_in_urb, &devinfo->data_urbs);
592 cmdinfo->data_out_urb = uas_alloc_data_urb(devinfo, GFP_ATOMIC,
600 usb_anchor_urb(cmdinfo->data_out_urb, &devinfo->data_urbs);
612 cmdinfo->cmd_urb = uas_alloc_cmd_urb(devinfo, GFP_ATOMIC, cmnd);
619 usb_anchor_urb(cmdinfo->cmd_urb, &devinfo->cmd_urbs);
637 struct uas_dev_info *devinfo = sdev->hostdata;
646 if ((devinfo->flags & US_FL_NO_ATA_1X) &&
655 spin_lock_irqsave(&devinfo->lock, flags);
657 if (devinfo->resetting) {
664 for (idx = 0; idx < devinfo->qdepth; idx++) {
665 if (!devinfo->cmnd[idx])
668 if (idx == devinfo->qdepth) {
669 spin_unlock_irqrestore(&devinfo->lock, flags);
691 if (!devinfo->use_streams)
694 err = uas_submit_urbs(cmnd, devinfo);
708 spin_unlock_irqrestore(&devinfo->lock, flags);
714 devinfo->cmnd[idx] = cmnd;
716 spin_unlock_irqrestore(&devinfo->lock, flags);
730 struct uas_dev_info *devinfo = (void *)cmnd->device->hostdata;
735 spin_lock_irqsave(&devinfo->lock, flags);
743 devinfo->cmnd[cmdinfo->uas_tag - 1] = NULL;
751 spin_unlock_irqrestore(&devinfo->lock, flags);
768 struct uas_dev_info *devinfo = sdev->hostdata;
769 struct usb_device *udev = devinfo->udev;
773 err = usb_lock_device_for_reset(udev, devinfo->intf);
782 spin_lock_irqsave(&devinfo->lock, flags);
783 devinfo->resetting = 1;
784 spin_unlock_irqrestore(&devinfo->lock, flags);
786 usb_kill_anchored_urbs(&devinfo->cmd_urbs);
787 usb_kill_anchored_urbs(&devinfo->sense_urbs);
788 usb_kill_anchored_urbs(&devinfo->data_urbs);
789 uas_zap_pending(devinfo, DID_RESET);
793 spin_lock_irqsave(&devinfo->lock, flags);
794 devinfo->resetting = 0;
795 spin_unlock_irqrestore(&devinfo->lock, flags);
811 struct uas_dev_info *devinfo = (struct uas_dev_info *)
814 if (devinfo->flags & US_FL_NO_REPORT_LUNS)
822 struct uas_dev_info *devinfo =
825 sdev->hostdata = devinfo;
834 if (devinfo->flags & US_FL_MAX_SECTORS_64)
836 else if (devinfo->flags & US_FL_MAX_SECTORS_240)
844 struct uas_dev_info *devinfo = sdev->hostdata;
846 if (devinfo->flags & US_FL_NO_REPORT_OPCODES)
850 if (devinfo->flags & US_FL_BROKEN_FUA)
854 if (devinfo->flags & US_FL_ALWAYS_SYNC) {
861 if (devinfo->flags & US_FL_NO_READ_CAPACITY_16)
865 if (devinfo->flags & US_FL_NO_SAME)
872 if (devinfo->flags & US_FL_FIX_CAPACITY)
878 if (devinfo->flags & US_FL_CAPACITY_HEURISTICS)
897 if (devinfo->flags & US_FL_NO_WP_DETECT)
900 scsi_change_queue_depth(sdev, devinfo->qdepth - 2);
948 static int uas_configure_endpoints(struct uas_dev_info *devinfo)
951 struct usb_device *udev = devinfo->udev;
954 r = uas_find_endpoints(devinfo->intf->cur_altsetting, eps);
958 devinfo->cmd_pipe = usb_sndbulkpipe(udev,
960 devinfo->status_pipe = usb_rcvbulkpipe(udev,
962 devinfo->data_in_pipe = usb_rcvbulkpipe(udev,
964 devinfo->data_out_pipe = usb_sndbulkpipe(udev,
968 devinfo->qdepth = 32;
969 devinfo->use_streams = 0;
971 devinfo->qdepth = usb_alloc_streams(devinfo->intf, eps + 1,
973 if (devinfo->qdepth < 0)
974 return devinfo->qdepth;
975 devinfo->use_streams = 1;
981 static void uas_free_streams(struct uas_dev_info *devinfo)
983 struct usb_device *udev = devinfo->udev;
986 eps[0] = usb_pipe_endpoint(udev, devinfo->status_pipe);
987 eps[1] = usb_pipe_endpoint(udev, devinfo->data_in_pipe);
988 eps[2] = usb_pipe_endpoint(udev, devinfo->data_out_pipe);
989 usb_free_streams(devinfo->intf, eps, 3, GFP_NOIO);
996 struct uas_dev_info *devinfo;
1017 devinfo = (struct uas_dev_info *)shost->hostdata;
1018 devinfo->intf = intf;
1019 devinfo->udev = udev;
1020 devinfo->resetting = 0;
1021 devinfo->shutdown = 0;
1022 devinfo->flags = dev_flags;
1023 init_usb_anchor(&devinfo->cmd_urbs);
1024 init_usb_anchor(&devinfo->sense_urbs);
1025 init_usb_anchor(&devinfo->data_urbs);
1026 spin_lock_init(&devinfo->lock);
1027 INIT_WORK(&devinfo->work, uas_do_work);
1028 INIT_WORK(&devinfo->scan_work, uas_scan_work);
1030 result = uas_configure_endpoints(devinfo);
1038 shost->can_queue = devinfo->qdepth - 2;
1046 schedule_work(&devinfo->scan_work);
1051 uas_free_streams(devinfo);
1060 static int uas_cmnd_list_empty(struct uas_dev_info *devinfo)
1065 spin_lock_irqsave(&devinfo->lock, flags);
1067 for (i = 0; i < devinfo->qdepth; i++) {
1068 if (devinfo->cmnd[i]) {
1074 spin_unlock_irqrestore(&devinfo->lock, flags);
1084 static int uas_wait_for_pending_cmnds(struct uas_dev_info *devinfo)
1091 flush_work(&devinfo->work);
1093 r = usb_wait_anchor_empty_timeout(&devinfo->sense_urbs, 5000);
1097 r = usb_wait_anchor_empty_timeout(&devinfo->data_urbs, 500);
1103 } while (!uas_cmnd_list_empty(devinfo));
1111 struct uas_dev_info *devinfo = (struct uas_dev_info *)shost->hostdata;
1114 if (devinfo->shutdown)
1122 if (uas_wait_for_pending_cmnds(devinfo) != 0) {
1128 uas_free_streams(devinfo);
1136 struct uas_dev_info *devinfo = (struct uas_dev_info *)shost->hostdata;
1140 if (devinfo->shutdown)
1143 err = uas_configure_endpoints(devinfo);
1162 struct uas_dev_info *devinfo = (struct uas_dev_info *)shost->hostdata;
1164 if (uas_wait_for_pending_cmnds(devinfo) != 0) {
1180 struct uas_dev_info *devinfo = (struct uas_dev_info *)shost->hostdata;
1184 err = uas_configure_endpoints(devinfo);
1202 struct uas_dev_info *devinfo = (struct uas_dev_info *)shost->hostdata;
1205 spin_lock_irqsave(&devinfo->lock, flags);
1206 devinfo->resetting = 1;
1207 spin_unlock_irqrestore(&devinfo->lock, flags);
1209 cancel_work_sync(&devinfo->work);
1210 usb_kill_anchored_urbs(&devinfo->cmd_urbs);
1211 usb_kill_anchored_urbs(&devinfo->sense_urbs);
1212 usb_kill_anchored_urbs(&devinfo->data_urbs);
1213 uas_zap_pending(devinfo, DID_NO_CONNECT);
1219 cancel_work_sync(&devinfo->scan_work);
1222 uas_free_streams(devinfo);
1236 struct uas_dev_info *devinfo = (struct uas_dev_info *)shost->hostdata;
1241 devinfo->shutdown = 1;
1242 uas_free_streams(devinfo);