On Mon, Dec 10 2012, Golmer Palmer <[email protected]> wrote: > This message is for request to support CD-ROM boot support in the USB Gadget > driver. > > Specifically, I ask for improve "g_mass_storage" driver with: > > * 2048 byte/sector support in CD mode.
Unless I'm missing something, g_mass_storage is using 2048 sector size
for CD-ROMs. See initialisation of blksize in fsg_lun_open() in
storage_common.c.
> * workaround for READ TOC command with incorrect length.
Does the following help:
----------------- >8 ---------------------------------------------------
drivers/usb/gadget/f_mass_storage.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/drivers/usb/gadget/f_mass_storage.c
b/drivers/usb/gadget/f_mass_storage.c
index 5d027b3..850d779 100644
--- a/drivers/usb/gadget/f_mass_storage.c
+++ b/drivers/usb/gadget/f_mass_storage.c
@@ -1823,7 +1823,12 @@ static int check_command(struct fsg_common *common, int
cmnd_size,
/* Check that only command bytes listed in the mask are non-zero */
common->cmnd[1] &= 0x1f; /* Mask away the LUN */
- for (i = 1; i < cmnd_size; ++i) {
+ /*
+ * Some BIOSes put some non-zero values in READ_TOC requests in the
+ * last two bytes -- Andreas Kemnade. So let's exclude those.
+ */
+ i = common->cmnd[0] == READ_TOC ? cmnd_size - 2 : cmnd_size;
+ while (--i >= 1) {
if (common->cmnd[i] && !(mask & (1 << i))) {
if (curlun)
curlun->sense_data = SS_INVALID_FIELD_IN_CDB;
----------------- >8 ---------------------------------------------------
--
Best regards, _ _
.o. | Liege of Serenely Enlightened Majesty of o' \,=./ `o
..o | Computer Science, Michał “mina86” Nazarewicz (o o)
ooo +----<email/xmpp: [email protected]>--------------ooO--(_)--Ooo--
pgpeXrxFNynaX.pgp
Description: PGP signature
