From 5ac56be748f11f3dc6c6a7e1817ecca81b55cc14 Mon Sep 17 00:00:00 2001 From: Christian Prochaska Date: Mon, 7 May 2018 20:09:34 +0200 Subject: [PATCH] usb_block_drv: set inquiry response length to 36 bytes Fixes #2825 --- repos/os/src/drivers/usb_block/main.cc | 1 - repos/os/src/drivers/usb_block/scsi.h | 9 ++++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/repos/os/src/drivers/usb_block/main.cc b/repos/os/src/drivers/usb_block/main.cc index 4203764df..9bad87b87 100644 --- a/repos/os/src/drivers/usb_block/main.cc +++ b/repos/os/src/drivers/usb_block/main.cc @@ -206,7 +206,6 @@ struct Usb::Block_driver : Usb::Completion, using namespace Scsi; switch (actual_size) { - case 36: /* min INQUIRY data size */ case Inquiry_response::LENGTH: { Inquiry_response r((addr_t)data); diff --git a/repos/os/src/drivers/usb_block/scsi.h b/repos/os/src/drivers/usb_block/scsi.h index b58e8748c..161245ec3 100644 --- a/repos/os/src/drivers/usb_block/scsi.h +++ b/repos/os/src/drivers/usb_block/scsi.h @@ -98,7 +98,14 @@ Genode::uint64_t Scsi::be64(Genode::uint64_t val) struct Scsi::Inquiry_response : Genode::Mmio { - enum { LENGTH = 36 /* default */ + 20 /* drive serial number and vendor unique */}; + /* + * Minimum response length is 36 bytes. + * + * Some devices have problems when more is requested, e.g.: + * - hama sd card reader (05e3:0738) + * - delock sata adapter (174c:5106) + */ + enum { LENGTH = 36 }; struct Dt : Register<0x0, 8> { }; /* device type */ struct Rm : Register<0x1, 8> { struct Rmb : Bitfield<7, 1> { }; }; /* removable media */