aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Lehey <grog@FreeBSD.org>2022-03-23 01:40:28 +0000
committerGreg Lehey <grog@FreeBSD.org>2022-03-23 01:40:28 +0000
commit31e076d70b5fc06e9cd9ecfe19296d4fe6a8a5a5 (patch)
tree2deb82de7140914417841a5bc6e4339504c77082
parent4d1ba6febfa7c7808027fd1ef60b3bffadd17853 (diff)
downloadsrc-31e076d70b5fc06e9cd9ecfe19296d4fe6a8a5a5.tar.gz
src-31e076d70b5fc06e9cd9ecfe19296d4fe6a8a5a5.zip
Add devices and quirks for some Olympus cameras.
Reviewed by: hps@ Fixes: Problems attaching Olympus cameras. MFC after: 2 weeks
-rw-r--r--sys/dev/usb/quirk/usb_quirk.c35
-rw-r--r--sys/dev/usb/usbdevs14
2 files changed, 48 insertions, 1 deletions
diff --git a/sys/dev/usb/quirk/usb_quirk.c b/sys/dev/usb/quirk/usb_quirk.c
index cab6f1b7c074..d86ca5643515 100644
--- a/sys/dev/usb/quirk/usb_quirk.c
+++ b/sys/dev/usb/quirk/usb_quirk.c
@@ -353,6 +353,39 @@ static struct usb_quirk_entry usb_quirks[USB_DEV_QUIRKS_MAX] = {
USB_QUIRK(OLYMPUS, C1, 0x0000, 0xffff, UQ_MSC_FORCE_WIRE_BBB,
UQ_MSC_FORCE_PROTO_SCSI, UQ_MSC_WRONG_CSWSIG),
USB_QUIRK(OLYMPUS, C700, 0x0000, 0xffff, UQ_MSC_NO_GETMAXLUN),
+ /* Selected Olympus DSLR and EVIL models. See ../usbdevs for more
+ * details.
+ *
+ * Not all quirks apply to all models. The commented-out entries are
+ * correct for that model.
+ */
+ USB_QUIRK(OLYMPUS, E_1, 0x0000, 0xffff, UQ_MSC_NO_GETMAXLUN,
+ UQ_MSC_NO_TEST_UNIT_READY, UQ_MSC_NO_PREVENT_ALLOW,
+ UQ_MSC_NO_SYNC_CACHE),
+ /*
+ * Product code 0x118.
+ * USB_QUIRK(OLYMPUS, E_300, 0x0000, 0xffff, UQ_MSC_NO_GETMAXLUN,
+ * UQ_MSC_NO_TEST_UNIT_READY, UQ_MSC_NO_PREVENT_ALLOW,
+ * UQ_MSC_NO_SYNC_CACHE),
+ * USB_QUIRK(OLYMPUS, E_30, 0x0000, 0xffff, UQ_MSC_NO_GETMAXLUN,
+ * UQ_MSC_NO_TEST_UNIT_READY, UQ_MSC_NO_PREVENT_ALLOW,
+ * UQ_MSC_NO_SYNC_CACHE), */
+ USB_QUIRK(OLYMPUS, E_330, 0x0000, 0xffff, UQ_MSC_NO_GETMAXLUN,
+ UQ_MSC_NO_TEST_UNIT_READY, UQ_MSC_NO_PREVENT_ALLOW,
+ UQ_MSC_NO_SYNC_CACHE, UQ_MSC_NO_START_STOP),
+ USB_QUIRK(OLYMPUS, E_PM1, 0x0000, 0xffff, UQ_MSC_NO_GETMAXLUN,
+ UQ_MSC_NO_TEST_UNIT_READY, UQ_MSC_NO_PREVENT_ALLOW,
+ UQ_MSC_NO_SYNC_CACHE, UQ_MSC_NO_START_STOP),
+ /* Product code 0x12e.
+ * USB_QUIRK(OLYMPUS, E_PM2, 0x0000, 0xffff, 0),
+ * USB_QUIRK(OLYMPUS, E_M1MarkII, 0x0000, 0xffff, UQ_MSC_NO_GETMAXLUN,
+ * UQ_MSC_NO_TEST_UNIT_READY, UQ_MSC_NO_PREVENT_ALLOW,
+ * UQ_MSC_NO_SYNC_CACHE),
+ * USB_QUIRK(OLYMPUS, E_M5MarkIII, 0x0000, 0xffff, 0),
+ */
+ USB_QUIRK(OLYMPUS, E_M1, 0x0000, 0xffff, UQ_MSC_NO_GETMAXLUN,
+ UQ_MSC_NO_TEST_UNIT_READY, UQ_MSC_NO_PREVENT_ALLOW,
+ UQ_MSC_NO_SYNC_CACHE, UQ_MSC_NO_START_STOP),
USB_QUIRK(ONSPEC, SDS_HOTFIND_D, 0x0000, 0xffff, UQ_MSC_FORCE_WIRE_BBB,
UQ_MSC_FORCE_PROTO_SCSI, UQ_MSC_NO_GETMAXLUN, UQ_MSC_NO_SYNC_CACHE),
USB_QUIRK(ONSPEC, CFMS_RW, 0x0000, 0xffff, UQ_MSC_FORCE_PROTO_SCSI),
@@ -1042,7 +1075,7 @@ usb_quirk_init(void *arg)
{
char envkey[sizeof(USB_QUIRK_ENVROOT) + 2]; /* 2 digits max, 0 to 99 */
int i;
-
+
/* initialize mutex */
mtx_init(&usb_quirk_mtx, "USB quirk", NULL, MTX_DEF);
diff --git a/sys/dev/usb/usbdevs b/sys/dev/usb/usbdevs
index 01c25d7c0962..3b7ea2b9c1b4 100644
--- a/sys/dev/usb/usbdevs
+++ b/sys/dev/usb/usbdevs
@@ -3535,6 +3535,20 @@ product OLIMEX ARM_USB_OCD_H 0x002b FTDI compatible adapter
/* Olympus products */
product OLYMPUS C1 0x0102 C-1 Digital Camera
product OLYMPUS C700 0x0105 C-700 Ultra Zoom
+/* Current Olympus DSLRs and EVIL cameras reuse the same product code and
+ * bcdDevice for multiple models. This may result in problems with newer
+ * cameras. */
+/* Olympus DSLRs */
+product OLYMPUS E_1 0x0102
+product OLYMPUS E_300 0x0118
+product OLYMPUS E_330 0x0118
+product OLYMPUS E_30 0x0118
+/* Olympus EVIL cameras */
+product OLYMPUS E_PM1 0x012c
+product OLYMPUS E_PM2 0x012e
+product OLYMPUS E_M1 0x012e
+product OLYMPUS E_M1MarkII 0x012e
+product OLYMPUS E_M5MarkIII 0x012e
/* OmniVision Technologies, Inc. products */
product OMNIVISION OV511 0x0511 OV511 Camera