Commit 396bbe14 authored by Diego Elio Pettenò's avatar Diego Elio Pettenò Committed by Jens Axboe

sr_vendor: support Beurer GL50 evo CD-on-a-chip devices.

The Beurer GL50 evo uses a Cygnal-manufactured CD-on-a-chip that only
accepts a subset of SCSI commands, and supports neither audio commands
nor generic packet commands.

Actually sending those commands bring the device to an unrecoverable
state that causes the device to hang and reset.

To: Jens Axboe <axboe@kernel.dk>
Cc: linux-kernel@vger.kernel.org
Cc: linux-scsi@vger.kernel.org
Signed-off-by: default avatarDiego Elio Pettenò <flameeyes@flameeyes.com>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 366ba7c7
...@@ -61,6 +61,7 @@ ...@@ -61,6 +61,7 @@
#define VENDOR_NEC 2 #define VENDOR_NEC 2
#define VENDOR_TOSHIBA 3 #define VENDOR_TOSHIBA 3
#define VENDOR_WRITER 4 /* pre-scsi3 writers */ #define VENDOR_WRITER 4 /* pre-scsi3 writers */
#define VENDOR_CYGNAL_85ED 5 /* CD-on-a-chip */
#define VENDOR_TIMEOUT 30*HZ #define VENDOR_TIMEOUT 30*HZ
...@@ -99,6 +100,23 @@ void sr_vendor_init(Scsi_CD *cd) ...@@ -99,6 +100,23 @@ void sr_vendor_init(Scsi_CD *cd)
} else if (!strncmp(vendor, "TOSHIBA", 7)) { } else if (!strncmp(vendor, "TOSHIBA", 7)) {
cd->vendor = VENDOR_TOSHIBA; cd->vendor = VENDOR_TOSHIBA;
} else if (!strncmp(vendor, "Beurer", 6) &&
!strncmp(model, "Gluco Memory", 12)) {
/* The Beurer GL50 evo uses a Cygnal-manufactured CD-on-a-chip
that only accepts a subset of SCSI commands. Most of the
not-implemented commands are fine to fail, but a few,
particularly around the MMC or Audio commands, will put the
device into an unrecoverable state, so they need to be
avoided at all costs.
*/
cd->vendor = VENDOR_CYGNAL_85ED;
cd->cdi.mask |= (
CDC_MULTI_SESSION |
CDC_CLOSE_TRAY | CDC_OPEN_TRAY |
CDC_LOCK |
CDC_GENERIC_PACKET |
CDC_PLAY_AUDIO
);
} }
#endif #endif
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment