summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2010-09-02 21:18:20 -0400
committerKevin O'Connor <kevin@koconnor.net>2010-09-02 21:18:20 -0400
commit9c000e695786a3ffcb1a80fc4c30e89e65a81dfa (patch)
tree0ebb02b1bbe546201ef57adf9984ced5c1bdd341
parenteebe949461466c9fdb482a542b0aaa8957b6a62b (diff)
Support Samsung SE-S084 USB DVD drive (and probably many others)
A full implementation of ATAPI USB support would need to translate / filter certain package types or some devices might not work. No previously working devices break with the patch, so it is fine to commit. Signed-off-by: Stefan Reinauer <stepan@coresystems.de>
-rw-r--r--src/usb-msc.c4
-rw-r--r--src/usb-msc.h6
2 files changed, 7 insertions, 3 deletions
diff --git a/src/usb-msc.c b/src/usb-msc.c
index 52fb58a..968cae3 100644
--- a/src/usb-msc.c
+++ b/src/usb-msc.c
@@ -182,7 +182,9 @@ usb_msc_init(struct usb_pipe *pipe
return -1;
// Verify right kind of device
- if (iface->bInterfaceSubClass != US_SC_SCSI
+ if ((iface->bInterfaceSubClass != US_SC_SCSI &&
+ iface->bInterfaceSubClass != US_SC_ATAPI_8070 &&
+ iface->bInterfaceSubClass != US_SC_ATAPI_8020)
|| iface->bInterfaceProtocol != US_PR_BULK) {
dprintf(1, "Unsupported MSC USB device (subclass=%02x proto=%02x)\n"
, iface->bInterfaceSubClass, iface->bInterfaceProtocol);
diff --git a/src/usb-msc.h b/src/usb-msc.h
index 467ccf3..71adb20 100644
--- a/src/usb-msc.h
+++ b/src/usb-msc.h
@@ -15,9 +15,11 @@ int process_usb_op(struct disk_op_s *op);
* MSC flags
****************************************************************/
-#define US_SC_SCSI 0x06
+#define US_SC_ATAPI_8020 0x02
+#define US_SC_ATAPI_8070 0x05
+#define US_SC_SCSI 0x06
-#define US_PR_BULK 0x50
+#define US_PR_BULK 0x50
#define USB_MSC_TYPE_DISK 0x00
#define USB_MSC_TYPE_CDROM 0x05