• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6/drivers/usb/storage/

Lines Matching refs:us

137 	struct us_data *us = usb_get_intfdata(iface);
140 mutex_lock(&us->dev_mutex);
143 if (us->suspend_resume_hook)
144 (us->suspend_resume_hook)(us, US_SUSPEND);
149 mutex_unlock(&us->dev_mutex);
156 struct us_data *us = usb_get_intfdata(iface);
158 mutex_lock(&us->dev_mutex);
161 if (us->suspend_resume_hook)
162 (us->suspend_resume_hook)(us, US_RESUME);
164 mutex_unlock(&us->dev_mutex);
171 struct us_data *us = usb_get_intfdata(iface);
176 usb_stor_report_bus_reset(us);
191 struct us_data *us = usb_get_intfdata(iface);
196 mutex_lock(&us->dev_mutex);
203 struct us_data *us = usb_get_intfdata(iface);
208 usb_stor_report_bus_reset(us);
211 mutex_unlock(&us->dev_mutex);
225 void fill_inquiry_response(struct us_data *us, unsigned char *data,
242 u16 bcdDevice = le16_to_cpu(us->pusb_dev->descriptor.bcdDevice);
245 n = strlen(us->unusual_dev->vendorName);
246 memcpy(data+8, us->unusual_dev->vendorName, min(8, n));
247 n = strlen(us->unusual_dev->productName);
248 memcpy(data+16, us->unusual_dev->productName, min(16, n));
256 usb_stor_set_xfer_buf(data, data_len, us->srb);
262 struct us_data *us = (struct us_data *)__us;
263 struct Scsi_Host *host = us_to_host(us);
267 if (wait_for_completion_interruptible(&us->cmnd_ready))
273 mutex_lock(&(us->dev_mutex));
279 if (us->srb == NULL) {
281 mutex_unlock(&us->dev_mutex);
287 if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags)) {
288 us->srb->result = DID_ABORT << 16;
297 if (us->srb->sc_data_direction == DMA_BIDIRECTIONAL) {
299 us->srb->result = DID_ERROR << 16;
305 else if (us->srb->device->id &&
306 !(us->fflags & US_FL_SCM_MULT_TARG)) {
308 us->srb->device->id, us->srb->device->lun);
309 us->srb->result = DID_BAD_TARGET << 16;
312 else if (us->srb->device->lun > us->max_lun) {
314 us->srb->device->id, us->srb->device->lun);
315 us->srb->result = DID_BAD_TARGET << 16;
318 /* Handle those devices which need us to fake
320 else if ((us->srb->cmnd[0] == INQUIRY) &&
321 (us->fflags & US_FL_FIX_INQUIRY)) {
327 fill_inquiry_response(us, data_ptr, 36);
328 us->srb->result = SAM_STAT_GOOD;
333 US_DEBUG(usb_stor_show_command(us->srb));
334 us->proto_handler(us->srb, us);
335 usb_mark_last_busy(us->pusb_dev);
342 if (us->srb->result != DID_ABORT << 16) {
344 us->srb->result);
345 us->srb->scsi_done(us->srb);
356 if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags)) {
357 complete(&(us->notify));
360 clear_bit(US_FLIDX_ABORTING, &us->dflags);
361 clear_bit(US_FLIDX_TIMED_OUT, &us->dflags);
365 us->srb = NULL;
369 mutex_unlock(&us->dev_mutex);
388 static int associate_dev(struct us_data *us, struct usb_interface *intf)
393 us->pusb_dev = interface_to_usbdev(intf);
394 us->pusb_intf = intf;
395 us->ifnum = intf->cur_altsetting->desc.bInterfaceNumber;
397 le16_to_cpu(us->pusb_dev->descriptor.idVendor),
398 le16_to_cpu(us->pusb_dev->descriptor.idProduct),
399 le16_to_cpu(us->pusb_dev->descriptor.bcdDevice));
405 usb_set_intfdata(intf, us);
408 us->cr = kmalloc(sizeof(*us->cr), GFP_KERNEL);
409 if (!us->cr) {
414 us->iobuf = usb_alloc_coherent(us->pusb_dev, US_IOBUF_SIZE,
415 GFP_KERNEL, &us->iobuf_dma);
416 if (!us->iobuf) {
427 static void adjust_quirks(struct us_data *us)
430 u16 vid = le16_to_cpu(us->pusb_dev->descriptor.idVendor);
431 u16 pid = le16_to_cpu(us->pusb_dev->descriptor.idProduct);
497 us->fflags = (us->fflags & ~mask) | f;
501 static int get_device_info(struct us_data *us, const struct usb_device_id *id,
504 struct usb_device *dev = us->pusb_dev;
506 &us->pusb_intf->cur_altsetting->desc;
507 struct device *pdev = &us->pusb_intf->dev;
510 us->unusual_dev = unusual_dev;
511 us->subclass = (unusual_dev->useProtocol == US_SC_DEVICE) ?
514 us->protocol = (unusual_dev->useTransport == US_PR_DEVICE) ?
517 us->fflags = USB_US_ORIG_FLAGS(id->driver_info);
518 adjust_quirks(us);
520 if (us->fflags & US_FL_IGNORE_DEVICE) {
530 us->fflags &= ~US_FL_GO_SLOW;
532 if (us->fflags)
536 us->fflags);
540 * reports from users that will help us remove unneeded entries
552 us->subclass == idesc->bInterfaceSubClass)
555 us->protocol == idesc->bInterfaceProtocol)
557 if (msg >= 0 && !(us->fflags & US_FL_NEED_OVERRIDE))
578 static void get_transport(struct us_data *us)
580 switch (us->protocol) {
582 us->transport_name = "Control/Bulk";
583 us->transport = usb_stor_CB_transport;
584 us->transport_reset = usb_stor_CB_reset;
585 us->max_lun = 7;
589 us->transport_name = "Control/Bulk/Interrupt";
590 us->transport = usb_stor_CB_transport;
591 us->transport_reset = usb_stor_CB_reset;
592 us->max_lun = 7;
596 us->transport_name = "Bulk";
597 us->transport = usb_stor_Bulk_transport;
598 us->transport_reset = usb_stor_Bulk_reset;
604 static void get_protocol(struct us_data *us)
606 switch (us->subclass) {
608 us->protocol_name = "Reduced Block Commands (RBC)";
609 us->proto_handler = usb_stor_transparent_scsi_command;
613 us->protocol_name = "8020i";
614 us->proto_handler = usb_stor_pad12_command;
615 us->max_lun = 0;
619 us->protocol_name = "QIC-157";
620 us->proto_handler = usb_stor_pad12_command;
621 us->max_lun = 0;
625 us->protocol_name = "8070i";
626 us->proto_handler = usb_stor_pad12_command;
627 us->max_lun = 0;
631 us->protocol_name = "Transparent SCSI";
632 us->proto_handler = usb_stor_transparent_scsi_command;
636 us->protocol_name = "Uniform Floppy Interface (UFI)";
637 us->proto_handler = usb_stor_ufi_command;
643 static int get_pipes(struct us_data *us)
646 us->pusb_intf->cur_altsetting;
678 if (!ep_in || !ep_out || (us->protocol == US_PR_CBI && !ep_int)) {
684 us->send_ctrl_pipe = usb_sndctrlpipe(us->pusb_dev, 0);
685 us->recv_ctrl_pipe = usb_rcvctrlpipe(us->pusb_dev, 0);
686 us->send_bulk_pipe = usb_sndbulkpipe(us->pusb_dev,
688 us->recv_bulk_pipe = usb_rcvbulkpipe(us->pusb_dev,
691 us->recv_intr_pipe = usb_rcvintpipe(us->pusb_dev,
693 us->ep_bInterval = ep_int->bInterval;
699 static int usb_stor_acquire_resources(struct us_data *us)
704 us->current_urb = usb_alloc_urb(0, GFP_KERNEL);
705 if (!us->current_urb) {
712 if (us->unusual_dev->initFunction) {
713 p = us->unusual_dev->initFunction(us);
719 th = kthread_run(usb_stor_control_thread, us, "usb-storage");
721 dev_warn(&us->pusb_intf->dev,
725 us->ctl_thread = th;
731 static void usb_stor_release_resources(struct us_data *us)
740 complete(&us->cmnd_ready);
741 if (us->ctl_thread)
742 kthread_stop(us->ctl_thread);
745 if (us->extra_destructor) {
747 us->extra_destructor(us->extra);
751 kfree(us->extra);
752 usb_free_urb(us->current_urb);
756 static void dissociate_dev(struct us_data *us)
761 kfree(us->cr);
762 usb_free_coherent(us->pusb_dev, US_IOBUF_SIZE, us->iobuf, us->iobuf_dma);
765 usb_set_intfdata(us->pusb_intf, NULL);
771 static void quiesce_and_remove_host(struct us_data *us)
773 struct Scsi_Host *host = us_to_host(us);
776 if (us->pusb_dev->state == USB_STATE_NOTATTACHED)
777 set_bit(US_FLIDX_DISCONNECTING, &us->dflags);
782 set_bit(US_FLIDX_DONT_SCAN, &us->dflags);
783 wake_up(&us->delay_wait);
784 wait_for_completion(&us->scanning_done);
795 set_bit(US_FLIDX_DISCONNECTING, &us->dflags);
797 wake_up(&us->delay_wait);
801 static void release_everything(struct us_data *us)
803 usb_stor_release_resources(us);
804 dissociate_dev(us);
807 * (and "us" along with it) when the refcount becomes 0. */
808 scsi_host_put(us_to_host(us));
814 struct us_data *us = (struct us_data *)__us;
815 struct device *dev = &us->pusb_intf->dev;
824 wait_event_freezable_timeout(us->delay_wait,
825 test_bit(US_FLIDX_DONT_SCAN, &us->dflags),
830 if (!test_bit(US_FLIDX_DONT_SCAN, &us->dflags)) {
833 if (us->protocol == US_PR_BULK &&
834 !(us->fflags & US_FL_SINGLE_LUN)) {
835 mutex_lock(&us->dev_mutex);
836 us->max_lun = usb_stor_Bulk_max_lun(us);
837 mutex_unlock(&us->dev_mutex);
839 scsi_scan_host(us_to_host(us));
845 usb_autopm_put_interface(us->pusb_intf);
846 complete_and_exit(&us->scanning_done, 0);
866 struct us_data *us;
875 host = scsi_host_alloc(&usb_stor_host_template, sizeof(*us));
887 *pus = us = host_to_us(host);
888 memset(us, 0, sizeof(struct us_data));
889 mutex_init(&(us->dev_mutex));
890 init_completion(&us->cmnd_ready);
891 init_completion(&(us->notify));
892 init_waitqueue_head(&us->delay_wait);
893 init_completion(&us->scanning_done);
896 result = associate_dev(us, intf);
901 result = get_device_info(us, id, unusual_dev);
906 get_transport(us);
907 get_protocol(us);
916 release_everything(us);
922 int usb_stor_probe2(struct us_data *us)
926 struct device *dev = &us->pusb_intf->dev;
929 if (!us->transport || !us->proto_handler) {
933 US_DEBUGP("Transport: %s\n", us->transport_name);
934 US_DEBUGP("Protocol: %s\n", us->protocol_name);
937 if (us->fflags & US_FL_SINGLE_LUN)
938 us->max_lun = 0;
941 result = get_pipes(us);
946 result = usb_stor_acquire_resources(us);
949 snprintf(us->scsi_name, sizeof(us->scsi_name), "usb-storage %s",
950 dev_name(&us->pusb_intf->dev));
951 result = scsi_add_host(us_to_host(us), dev);
959 th = kthread_create(usb_stor_scan_thread, us, "usb-stor-scan");
963 complete(&us->scanning_done);
964 quiesce_and_remove_host(us);
969 usb_autopm_get_interface_no_resume(us->pusb_intf);
977 release_everything(us);
985 struct us_data *us = usb_get_intfdata(intf);
988 quiesce_and_remove_host(us);
989 release_everything(us);
997 struct us_data *us;
1017 result = usb_stor_probe1(&us, intf, id,
1024 result = usb_stor_probe2(us);