Lines Matching +full:os +full:- +full:initiated
1 // SPDX-License-Identifier: GPL-2.0+
7 * (c) 1999-2002 Matthew Dharm (mdharm-usb@one-eyed-alien.net)
10 * (c) 2000 David L. Brown, Jr. (usb-storage@davidb.org)
20 * similar to commands in the SCSI-II and ATAPI specifications.
23 * exhibits class-specific exemptions from the USB specification.
62 return us->scsi_name; in host_info()
67 struct us_data *us = host_to_us(sdev->host); in slave_alloc()
74 sdev->inquiry_len = 36; in slave_alloc()
78 * We'll play it safe by requiring 512-byte alignment always. in slave_alloc()
80 blk_queue_update_dma_alignment(sdev->request_queue, (512 - 1)); in slave_alloc()
83 if (us->protocol == USB_PR_BULK && us->max_lun > 0) in slave_alloc()
84 sdev->sdev_bflags |= BLIST_FORCELUN; in slave_alloc()
91 struct us_data *us = host_to_us(sdev->host); in slave_configure()
98 if (us->fflags & (US_FL_MAX_SECTORS_64 | US_FL_MAX_SECTORS_MIN)) { in slave_configure()
101 if (us->fflags & US_FL_MAX_SECTORS_MIN) in slave_configure()
103 if (queue_max_hw_sectors(sdev->request_queue) > max_sectors) in slave_configure()
104 blk_queue_max_hw_sectors(sdev->request_queue, in slave_configure()
106 } else if (sdev->type == TYPE_TAPE) { in slave_configure()
112 blk_queue_max_hw_sectors(sdev->request_queue, 0x7FFFFF); in slave_configure()
113 } else if (us->pusb_dev->speed >= USB_SPEED_SUPER) { in slave_configure()
118 blk_queue_max_hw_sectors(sdev->request_queue, 2048); in slave_configure()
127 if (!us->pusb_dev->bus->controller->dma_mask) in slave_configure()
128 blk_queue_bounce_limit(sdev->request_queue, BLK_BOUNCE_HIGH); in slave_configure()
135 if (sdev->type == TYPE_DISK) { in slave_configure()
139 * all their devices -- primarily makers of cell phones in slave_configure()
145 switch (le16_to_cpu(us->pusb_dev->descriptor.idVendor)) { in slave_configure()
150 if (!(us->fflags & (US_FL_FIX_CAPACITY | in slave_configure()
152 us->fflags |= US_FL_CAPACITY_HEURISTICS; in slave_configure()
157 * Disk-type devices use MODE SENSE(6) if the protocol in slave_configure()
161 if (us->subclass != USB_SC_SCSI && us->subclass != USB_SC_CYP_ATACB) in slave_configure()
162 sdev->use_10_for_ms = 1; in slave_configure()
168 sdev->use_192_bytes_for_3f = 1; in slave_configure()
173 * is write-protected. Now that we tell the sd driver in slave_configure()
174 * to do a 192-byte transfer with this command the in slave_configure()
177 * devices are write-enabled. in slave_configure()
179 if (us->fflags & US_FL_NO_WP_DETECT) in slave_configure()
180 sdev->skip_ms_page_3f = 1; in slave_configure()
186 sdev->skip_ms_page_8 = 1; in slave_configure()
189 sdev->skip_vpd_pages = 1; in slave_configure()
192 sdev->no_report_opcodes = 1; in slave_configure()
195 sdev->no_write_same = 1; in slave_configure()
202 if (us->fflags & US_FL_FIX_CAPACITY) in slave_configure()
203 sdev->fix_capacity = 1; in slave_configure()
210 if (us->fflags & US_FL_CAPACITY_HEURISTICS) in slave_configure()
211 sdev->guess_capacity = 1; in slave_configure()
214 if (us->fflags & US_FL_NO_READ_CAPACITY_16) in slave_configure()
215 sdev->no_read_capacity_16 = 1; in slave_configure()
223 if (!(us->fflags & US_FL_NEEDS_CAP16)) in slave_configure()
224 sdev->try_rc_10_first = 1; in slave_configure()
230 if (sdev->scsi_level > SCSI_SPC_2 && in slave_configure()
231 !(us->fflags & US_FL_BAD_SENSE)) in slave_configure()
232 us->fflags |= US_FL_SANE_SENSE; in slave_configure()
235 * USB-IDE bridges tend to report SK = 0x04 (Non-recoverable in slave_configure()
236 * Hardware Error) when any low-level error occurs, in slave_configure()
242 sdev->retry_hwerror = 1; in slave_configure()
246 * automatically, requiring a START-STOP UNIT command. in slave_configure()
248 sdev->allow_restart = 1; in slave_configure()
255 sdev->last_sector_bug = 1; in slave_configure()
258 * Enable last-sector hacks for single-target devices using in slave_configure()
259 * the Bulk-only transport, unless we already know the in slave_configure()
262 if (!(us->fflags & (US_FL_FIX_CAPACITY | US_FL_CAPACITY_OK | in slave_configure()
264 us->protocol == USB_PR_BULK) in slave_configure()
265 us->use_last_sector_hacks = 1; in slave_configure()
268 if (us->fflags & US_FL_WRITE_CACHE) in slave_configure()
269 sdev->wce_default_on = 1; in slave_configure()
271 /* A few buggy USB-ATA bridges don't understand FUA */ in slave_configure()
272 if (us->fflags & US_FL_BROKEN_FUA) in slave_configure()
273 sdev->broken_fua = 1; in slave_configure()
276 if (us->fflags & US_FL_ALWAYS_SYNC) { in slave_configure()
278 sdev->skip_ms_page_8 = 1; in slave_configure()
279 sdev->skip_ms_page_3f = 1; in slave_configure()
281 sdev->wce_default_on = 1; in slave_configure()
286 * Non-disk-type devices don't need to blacklist any pages in slave_configure()
287 * or to force 192-byte transfer lengths for MODE SENSE. in slave_configure()
290 sdev->use_10_for_ms = 1; in slave_configure()
293 if (us->fflags & US_FL_NO_READ_DISC_INFO) in slave_configure()
294 sdev->no_read_disc_info = 1; in slave_configure()
302 * be single-LUN. in slave_configure()
304 if ((us->protocol == USB_PR_CB || us->protocol == USB_PR_CBI) && in slave_configure()
305 sdev->scsi_level == SCSI_UNKNOWN) in slave_configure()
306 us->max_lun = 0; in slave_configure()
309 * Some devices choke when they receive a PREVENT-ALLOW MEDIUM in slave_configure()
312 if (us->fflags & US_FL_NOT_LOCKABLE) in slave_configure()
313 sdev->lockable = 0; in slave_configure()
324 struct us_data *us = host_to_us(dev_to_shost(starget->dev.parent)); in target_alloc()
332 starget->no_report_luns = 1; in target_alloc()
343 if (us->subclass == USB_SC_UFI) in target_alloc()
344 starget->pdt_1f_for_no_lun = 1; in target_alloc()
354 struct us_data *us = host_to_us(srb->device->host); in queuecommand_lck()
356 /* check for state-transition errors */ in queuecommand_lck()
357 if (us->srb != NULL) { in queuecommand_lck()
358 printk(KERN_ERR USB_STORAGE "Error in %s: us->srb = %p\n", in queuecommand_lck()
359 __func__, us->srb); in queuecommand_lck()
364 if (test_bit(US_FLIDX_DISCONNECTING, &us->dflags)) { in queuecommand_lck()
366 srb->result = DID_NO_CONNECT << 16; in queuecommand_lck()
371 if ((us->fflags & US_FL_NO_ATA_1X) && in queuecommand_lck()
372 (srb->cmnd[0] == ATA_12 || srb->cmnd[0] == ATA_16)) { in queuecommand_lck()
373 memcpy(srb->sense_buffer, usb_stor_sense_invalidCDB, in queuecommand_lck()
375 srb->result = SAM_STAT_CHECK_CONDITION; in queuecommand_lck()
381 srb->scsi_done = done; in queuecommand_lck()
382 us->srb = srb; in queuecommand_lck()
383 complete(&us->cmnd_ready); in queuecommand_lck()
397 struct us_data *us = host_to_us(srb->device->host); in DEF_SCSI_QCMD()
402 * us->srb together with the TIMED_OUT, RESETTING, and ABORTING in DEF_SCSI_QCMD()
408 if (us->srb != srb) { in DEF_SCSI_QCMD()
410 usb_stor_dbg(us, "-- nothing to abort\n"); in DEF_SCSI_QCMD()
419 * with an auto-reset that begins as soon as we release the lock. in DEF_SCSI_QCMD()
421 set_bit(US_FLIDX_TIMED_OUT, &us->dflags); in DEF_SCSI_QCMD()
422 if (!test_bit(US_FLIDX_RESETTING, &us->dflags)) { in DEF_SCSI_QCMD()
423 set_bit(US_FLIDX_ABORTING, &us->dflags); in DEF_SCSI_QCMD()
429 wait_for_completion(&us->notify); in DEF_SCSI_QCMD()
439 struct us_data *us = host_to_us(srb->device->host); in device_reset()
445 mutex_lock(&(us->dev_mutex)); in device_reset()
446 result = us->transport_reset(us); in device_reset()
447 mutex_unlock(&us->dev_mutex); in device_reset()
455 struct us_data *us = host_to_us(srb->device->host); in bus_reset()
465 * Report a driver-initiated device reset to the SCSI layer.
466 * Calling this for a SCSI-initiated reset is unnecessary but harmless.
475 if (us->fflags & US_FL_SCM_MULT_TARG) { in usb_stor_report_device_reset()
476 for (i = 1; i < host->max_id; ++i) in usb_stor_report_device_reset()
482 * Report a driver-initiated bus reset to the SCSI layer.
483 * Calling this for a SCSI-initiated reset is unnecessary but harmless.
511 seq_printf(m, " Host scsi%d: usb-storage\n", host->host_no); in show_info()
514 if (us->pusb_dev->manufacturer) in show_info()
515 string = us->pusb_dev->manufacturer; in show_info()
516 else if (us->unusual_dev->vendorName) in show_info()
517 string = us->unusual_dev->vendorName; in show_info()
521 if (us->pusb_dev->product) in show_info()
522 string = us->pusb_dev->product; in show_info()
523 else if (us->unusual_dev->productName) in show_info()
524 string = us->unusual_dev->productName; in show_info()
528 if (us->pusb_dev->serial) in show_info()
529 string = us->pusb_dev->serial; in show_info()
535 seq_printf(m, " Protocol: %s\n", us->protocol_name); in show_info()
536 seq_printf(m, " Transport: %s\n", us->transport_name); in show_info()
542 if (us->fflags & value) seq_printf(m, " " #name); in show_info()
558 return sprintf(buf, "%u\n", queue_max_hw_sectors(sdev->request_queue)); in max_sectors_show()
569 blk_queue_max_hw_sectors(sdev->request_queue, ms); in max_sectors_store()
572 return -EINVAL; in max_sectors_store()
587 .name = "usb-storage",
588 .proc_name = "usb-storage",
593 /* command interface -- queued only */
605 .this_id = -1,
620 * only an 8-bit register to hold the number of sectors in one transfer
629 * and Apple Mac OS X 10.11 limiting transfers to 256 sectors for USB2
658 sht->name = name; in usb_stor_host_template_init()
659 sht->proc_name = name; in usb_stor_host_template_init()
660 sht->module = owner; in usb_stor_host_template_init()