svn commit: r278516 - stable/9/sys/dev/usb
Hans Petter Selasky
hselasky at FreeBSD.org
Tue Feb 10 13:47:30 UTC 2015
Author: hselasky
Date: Tue Feb 10 13:47:29 2015
New Revision: 278516
URL: https://svnweb.freebsd.org/changeset/base/278516
Log:
MFC r278105:
Separate out detection of prevent and allow medium removal quirk.
PR: 185747
Modified:
stable/9/sys/dev/usb/usb_msctest.c
Directory Properties:
stable/9/sys/ (props changed)
stable/9/sys/dev/ (props changed)
Modified: stable/9/sys/dev/usb/usb_msctest.c
==============================================================================
--- stable/9/sys/dev/usb/usb_msctest.c Tue Feb 10 13:45:55 2015 (r278515)
+++ stable/9/sys/dev/usb/usb_msctest.c Tue Feb 10 13:47:29 2015 (r278516)
@@ -108,6 +108,8 @@ static uint8_t scsi_request_sense[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
static uint8_t scsi_read_capacity[] = { 0x25, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00 };
+static uint8_t scsi_prevent_removal[] = { 0x1e, 0, 0, 0, 1, 0 };
+static uint8_t scsi_allow_removal[] = { 0x1e, 0, 0, 0, 0, 0 };
#define BULK_SIZE 64 /* dummy */
#define ERR_CSW_FAILED -1
@@ -691,10 +693,28 @@ usb_msc_auto_quirk(struct usb_device *ud
USB_MS_HZ);
if (err != 0) {
+ if (err != ERR_CSW_FAILED)
+ goto error;
+ DPRINTF("Test unit ready failed\n");
+ }
+ err = bbb_command_start(sc, DIR_OUT, 0, NULL, 0,
+ &scsi_prevent_removal, sizeof(scsi_prevent_removal),
+ USB_MS_HZ);
+
+ if (err == 0) {
+ err = bbb_command_start(sc, DIR_OUT, 0, NULL, 0,
+ &scsi_allow_removal, sizeof(scsi_allow_removal),
+ USB_MS_HZ);
+ }
+
+ if (err != 0) {
if (err != ERR_CSW_FAILED)
goto error;
+ DPRINTF("Device doesn't handle prevent and allow removal\n");
+ usbd_add_dynamic_quirk(udev, UQ_MSC_NO_PREVENT_ALLOW);
}
+
timeout = 1;
retry_sync_cache:
@@ -707,11 +727,9 @@ retry_sync_cache:
if (err != ERR_CSW_FAILED)
goto error;
- DPRINTF("Device doesn't handle synchronize cache "
- "and prevent allow medium removal\n");
+ DPRINTF("Device doesn't handle synchronize cache\n");
usbd_add_dynamic_quirk(udev, UQ_MSC_NO_SYNC_CACHE);
- usbd_add_dynamic_quirk(udev, UQ_MSC_NO_PREVENT_ALLOW);
} else {
/*
@@ -738,13 +756,10 @@ retry_sync_cache:
goto retry_sync_cache;
DPRINTF("Device most likely doesn't "
- "handle synchronize cache nor"
- "prevent allow medium removal\n");
+ "handle synchronize cache\n");
usbd_add_dynamic_quirk(udev,
UQ_MSC_NO_SYNC_CACHE);
- usbd_add_dynamic_quirk(udev,
- UQ_MSC_NO_PREVENT_ALLOW);
} else {
if (err != ERR_CSW_FAILED)
goto error;
More information about the svn-src-stable-9
mailing list