On Mon, Dec 10 2012, Golmer Palmer <onrollo-9...@yahoo.es> 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: m...@google.com>--------------ooO--(_)--Ooo--

Attachment: pgpeXrxFNynaX.pgp
Description: PGP signature

Reply via email to