From nobody@FreeBSD.org  Mon Dec  3 21:22:11 2001
Return-Path: <nobody@FreeBSD.org>
Received: from freefall.freebsd.org (freefall.FreeBSD.org [216.136.204.21])
	by hub.freebsd.org (Postfix) with ESMTP id 5143E37B416
	for <freebsd-gnats-submit@FreeBSD.org>; Mon,  3 Dec 2001 21:22:11 -0800 (PST)
Received: (from nobody@localhost)
	by freefall.freebsd.org (8.11.6/8.11.6) id fB45MBj41193;
	Mon, 3 Dec 2001 21:22:11 -0800 (PST)
	(envelope-from nobody)
Message-Id: <200112040522.fB45MBj41193@freefall.freebsd.org>
Date: Mon, 3 Dec 2001 21:22:11 -0800 (PST)
From: Lars Eggert <larse@isi.edu>
To: freebsd-gnats-submit@FreeBSD.org
Subject: umass support for ATAPI [with patch]
X-Send-Pr-Version: www-1.0

>Number:         32490
>Category:       misc
>Synopsis:       umass support for ATAPI [with patch]
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Dec 03 21:30:00 PST 2001
>Closed-Date:    Wed Apr 10 13:33:05 PDT 2002
>Last-Modified:  Wed Apr 10 13:33:05 PDT 2002
>Originator:     Lars Eggert
>Release:        4.4-RELEASE
>Organization:
USC Information Sciences Institute
>Environment:
>Description:
This patch (against 4.4-STABLE) is a slight modification of the 6-to-10 conversion patch Gerd Knops posted to the usb-bsd list (http://groups.yahoo.com/group/usb-bsd/message/1233).

I've verified that it enables attaching, mounting and accessing a Pentax Optio 430 digital camera, which identifies itself as an ATAPI device.

Here is Gerd's description of the patch:
> The umass patch below against FreeBSD 4.3-BETA introduces on the fly
> conversion of 6 byte to 10 byte commands (read, write, mode select,
> mode sense). This should make many devices work that previously would
> have needed an explicit da_quirk_table entry in scsi_da.c.
> 
> I tested Sony Memory stick adapter (UTF) and Sony S70 (RBC), both work
> fine now without an entry in da_quirk_table, hence I removed those
> entries with the patch.
> 
> The patch should also bring us closer to support devices like
> USB-CDROMs. However when I tested I got 'Get Max Lun not supported
> (STALLED)', not sure what is causing this.

I'd be great if this could be committed.
>How-To-Repeat:

>Fix:
533a534,538
> Static int
> umass_6_10_transform __P((struct umass_softc *sc,
> 			     unsigned char *cmd,
> 			     unsigned char **rcmd, int *rcmdlen));
> 
659c664
< #if 0
---
> #if 1
2635a2641,2648
>        /* These commands we can convert 'on the fly' to legal commands */
> 	case READ_6:
> 	case WRITE_6:
> 	case MODE_SELECT_6:
> 	case MODE_SENSE_6:
> 		umass_6_10_transform(sc, cmd, rcmd, rcmdlen);
> 		*rcmdlen = 10;
> 		return 1;               /* success */
2644a2658,2716
> Static int
> umass_6_10_transform(struct umass_softc *sc,
>     unsigned char *cmd,
>     unsigned char **rcmd, int *rcmdlen)
> {
> 	/*
> 	 * This function converts these 6 byte commands to
> 	 * their 10 byte equivalents:
> 	 *
> 	 * READ_6        -> READ_10
> 	 * WRITE_6       -> WRITE_10
> 	 * MODE_SELECT_6 -> MODE_SELECT_10
> 	 * MODE_SENSE_6  -> MODE_SENSE_10
> 	 *
> 	 * NOTE: rcmdlen is NOT modified! The calling code must set
> 	 * it as required for it's context.
> 	 */
> 	KASSERT(*rcmdlen >= 10,
> 	    ("rcmdlen = %d < 10, buffer too small in umass_6_10_transform",
> 		
> 		*rcmdlen));
> 	memset(*rcmd, 0, *rcmdlen);
> 	switch(cmd[0])
> 	    {
> 	    case READ_6:
> 	    case WRITE_6:
> 		    
> 		    if(cmd[0] == WRITE_6) {
> 			    (*rcmd)[0] = WRITE_10;
> 		    } else {
> 			    (*rcmd)[0] = READ_10;
> 		    }
> 		    (*rcmd)[3] = cmd[1];
> 		    (*rcmd)[4] = cmd[2];
> 		    (*rcmd)[5] = cmd[3];
> 		    (*rcmd)[8] = cmd[4];
> 		    (*rcmd)[9] = cmd[5];
> 		    return 1;               /* success */
> 	    case MODE_SELECT_6:
> 		    (*rcmd)[0] = MODE_SELECT_10;
> 		    (*rcmd)[1] = cmd[1];
> 		    (*rcmd)[8] = cmd[4];
> 		    (*rcmd)[9] = cmd[5];
> 		    return 1;               /* success */
> 	    case MODE_SENSE_6:
> 		    (*rcmd)[0] = MODE_SENSE_10;
> 		    (*rcmd)[1] = cmd[1];
> 		    (*rcmd)[2] = cmd[2];
> 		    (*rcmd)[8] = cmd[4];
> 		    (*rcmd)[9] = cmd[5];
> 		    return 1;               /* success */
> 	    }
> 	printf("%s: Unsupported command 0x%02x in umass_6_10_transform",
> 	    USBDEVNAME(sc->sc_dev), cmd[0]);
> 	printf("\n");
> 	return 0;       /* failure */
> }
> 
> 
2688a2761,2762
> 	case SYNCHRONIZE_CACHE:         /* Tested with Sony memory
> 					 * stick adapter */
2693,2701c2767
< 	/* Other UFI commands: FORMAT_UNIT, MODE_SELECT, READ_FORMAT_CAPACITY,
< 	 * VERIFY, WRITE_AND_VERIFY.
< 	 * These should be checked whether they somehow can be made to fit.
< 	 */
< 
< 	/* These commands are known _not_ to work. They should be converted
< 	 * The 6 byte commands can be switched off with a CAM quirk. See
< 	 * the entry for the Y-E data drive.
< 	 */
---
> 	/* 6-bytes commands are converted on the fly */
2705a2772,2776
> 		/* convert on the fly */
> 		umass_6_10_transform(sc, cmd, rcmd, rcmdlen);
> 		return 1;               /* success */
> 		
> 	/* These commands are known _not_ to work. */
2707a2779,2782
> 	/* Other UFI commands: FORMAT_UNIT, MODE_SELECT,
>          * READ_FORMAT_CAPACITY, VERIFY, WRITE_AND_VERIFY. These
>          * should be checked whether they somehow can be made to fit.
>          */
2752,2755c2827
< 	/* These commands are known _not_ to work. They should be converted
< 	 * The 6 byte commands can be switched off with a CAM quirk. See
< 	 * the entry for the Y-E data drive.
< 	 */
---
> 	/* 6-bytes commands are converted on the fly */
2759a2832,2834
> 		umass_6_10_transform(sc, cmd, rcmd, rcmdlen);
> 		return 1;               /* success */
>        /* These commands are known _not_ to work */

>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->sos 
Responsible-Changed-By: des 
Responsible-Changed-When: Tue Dec 4 04:18:26 PST 2001 
Responsible-Changed-Why:  
Over to Mr ATA. 

http://www.FreeBSD.org/cgi/query-pr.cgi?pr=32490 
Responsible-Changed-From-To: sos->freebsd-bugs 
Responsible-Changed-By: sos 
Responsible-Changed-When: Tue Dec 4 04:28:14 PST 2001 
Responsible-Changed-Why:  
This is not an ATA driver matter, its USB.. 

http://www.FreeBSD.org/cgi/query-pr.cgi?pr=32490 

From: Lars Eggert <larse@ISI.EDU>
To: freebsd-gnats-submit@FreeBSD.org, larse@ISI.EDU
Cc:  
Subject: Re: misc/32490: umass support for ATAPI [with patch]
Date: Thu, 13 Dec 2001 17:17:25 -0800

 This is an ALTERNATIVE patch that just adds the required quirks to 
 scsi_da.c, in case that's preferred. Either this or the original patch 
 work for me.
 
 Lars
 
 --- /usr/src/sys/cam/scsi/scsi_da.c     Sun Jul 29 17:48:20 2001
 +++ /usr/src/sys/cam/scsi/scsi_da.c     Mon Dec  3 14:52:55 2001
 @@ -246,6 +246,14 @@
                  /*quirks*/ DA_Q_NO_6_BYTE|DA_Q_NO_SYNC_CACHE
          },
          {
 +               /*
 +                * Pentax Optio 430 Digital Camera
 +                * (will probably also work for the Optio 330)
 +                */
 +               {T_DIRECT, SIP_MEDIA_REMOVABLE, "PENTAX", 
 "DIGITAL_CAMERA", "*"},
 +               /*quirks*/ DA_Q_NO_6_BYTE|DA_Q_NO_SYNC_CACHE
 +       },
 +       {
                  {T_OPTICAL, SIP_MEDIA_REMOVABLE, "FUJITSU", 
 "MCF3064AP", "*"},
                  /*quirks*/ DA_Q_NO_6_BYTE
          }
 --- /usr/src/sys/dev/usb/umass.c        Sat Jan  6 14:36:15 2001
 +++ /usr/src/sys/dev/usb/umass.c        Mon Dec  3 14:47:47 2001
 @@ -575,7 +575,7 @@
 
          dd = usbd_get_device_descriptor(udev);
 
 -#if 0
 +#if 1
          /* XXX ATAPI support is untested. Don't use it for the moment */
          if (UGETW(dd->idVendor) == USB_VENDOR_SHUTTLE
              && UGETW(dd->idProduct) == USB_PRODUCT_SHUTTLE_EUSB) {
 @@ -656,7 +656,7 @@
                  break;
          case USUBCLASS_SFF8020I:
          case USUBCLASS_SFF8070I:
 -#if 0
 +#if 1
                  /* XXX ATAPI support is untested. Don't use it for the 
 moment */
                  sc->proto |= PROTO_ATAPI;
                  break;
 
 -- 
 Lars Eggert <larse@isi.edu>               Information Sciences Institute
 http://www.isi.edu/larse/              University of Southern California
 

From: Lars Eggert <larse@ISI.EDU>
To: freebsd-gnats-submit@FreeBSD.org
Cc:  
Subject: Re: misc/32490: umass support for ATAPI [with patch]
Date: Mon, 04 Feb 2002 16:28:43 -0800

 This is a cryptographically signed message in MIME format.
 
 --------------ms070605000904030007040308
 Content-Type: text/plain; charset=us-ascii; format=flowed
 Content-Transfer-Encoding: 7bit
 
 Now that 4.5 is out, maybe this could be committed?
 
 Thanks,
 Lars
 -- 
 Lars Eggert <larse@isi.edu>               Information Sciences Institute
 http://www.isi.edu/larse/              University of Southern California
 
 --------------ms070605000904030007040308
 Content-Type: application/x-pkcs7-signature; name="smime.p7s"
 Content-Transfer-Encoding: base64
 Content-Disposition: attachment; filename="smime.p7s"
 Content-Description: S/MIME Cryptographic Signature
 
 MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIInzCC
 ArUwggIeoAMCAQICAwWBRzANBgkqhkiG9w0BAQIFADCBkjELMAkGA1UEBhMCWkExFTATBgNV
 BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMQ8wDQYDVQQKEwZUaGF3dGUx
 HTAbBgNVBAsTFENlcnRpZmljYXRlIFNlcnZpY2VzMSgwJgYDVQQDEx9QZXJzb25hbCBGcmVl
 bWFpbCBSU0EgMjAwMC44LjMwMB4XDTAxMDgyNDE2NDAwMFoXDTAyMDgyNDE2NDAwMFowVDEP
 MA0GA1UEBBMGRWdnZXJ0MQ0wCwYDVQQqEwRMYXJzMRQwEgYDVQQDEwtMYXJzIEVnZ2VydDEc
 MBoGCSqGSIb3DQEJARYNbGFyc2VAaXNpLmVkdTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
 gYEA0AvLBsD78nxcUHeHkaMgl3b4qYPnfgbf8Lh+HQP8RgGMRG/Yb+vTpkGezlwt9pkJxiD1
 1uZDy4CNNJUu3gKxKSb+zRV70O+lkwwftuHoLHoH4xwo3LcQ2LGDpd+I95tUN4dfJ3TmeEcU
 SF50dC/SuUI4w8AlhXQ8IxrhgdayTpECAwEAAaNWMFQwKgYFK2UBBAEEITAfAgEAMBowGAIB
 BAQTTDJ1TXlmZkJOVWJOSkpjZFoyczAYBgNVHREEETAPgQ1sYXJzZUBpc2kuZWR1MAwGA1Ud
 EwEB/wQCMAAwDQYJKoZIhvcNAQECBQADgYEAheZhn0pQA8zI7U2K1ZIAl11j0a1DKxnp3GtT
 vOUrGRB3WvYxidvdZ1kizhEsWeXU81TkNDH0DaRqtOEeu6Q2OhB+jeKEqY7IDAJE4/fI0e+d
 6PnG1hd+vEvYmsKHkmzBhPc94XUOKNWO+qVNP2NGyNI3QIDy5wX4fdcOo1S34r4wggK1MIIC
 HqADAgECAgMFgUcwDQYJKoZIhvcNAQECBQAwgZIxCzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxX
 ZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEPMA0GA1UEChMGVGhhd3RlMR0wGwYD
 VQQLExRDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEoMCYGA1UEAxMfUGVyc29uYWwgRnJlZW1haWwg
 UlNBIDIwMDAuOC4zMDAeFw0wMTA4MjQxNjQwMDBaFw0wMjA4MjQxNjQwMDBaMFQxDzANBgNV
 BAQTBkVnZ2VydDENMAsGA1UEKhMETGFyczEUMBIGA1UEAxMLTGFycyBFZ2dlcnQxHDAaBgkq
 hkiG9w0BCQEWDWxhcnNlQGlzaS5lZHUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANAL
 ywbA+/J8XFB3h5GjIJd2+KmD534G3/C4fh0D/EYBjERv2G/r06ZBns5cLfaZCcYg9dbmQ8uA
 jTSVLt4CsSkm/s0Ve9DvpZMMH7bh6Cx6B+McKNy3ENixg6XfiPebVDeHXyd05nhHFEhedHQv
 0rlCOMPAJYV0PCMa4YHWsk6RAgMBAAGjVjBUMCoGBStlAQQBBCEwHwIBADAaMBgCAQQEE0wy
 dU15ZmZCTlViTkpKY2RaMnMwGAYDVR0RBBEwD4ENbGFyc2VAaXNpLmVkdTAMBgNVHRMBAf8E
 AjAAMA0GCSqGSIb3DQEBAgUAA4GBAIXmYZ9KUAPMyO1NitWSAJddY9GtQysZ6dxrU7zlKxkQ
 d1r2MYnb3WdZIs4RLFnl1PNU5DQx9A2karThHrukNjoQfo3ihKmOyAwCROP3yNHvnej5xtYX
 frxL2JrCh5JswYT3PeF1DijVjvqlTT9jRsjSN0CA8ucF+H3XDqNUt+K+MIIDKTCCApKgAwIB
 AgIBDDANBgkqhkiG9w0BAQQFADCB0TELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4g
 Q2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYDVQQKExFUaGF3dGUgQ29uc3VsdGluZzEo
 MCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMbVGhh
 d3RlIFBlcnNvbmFsIEZyZWVtYWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1mcmVl
 bWFpbEB0aGF3dGUuY29tMB4XDTAwMDgzMDAwMDAwMFoXDTAyMDgyOTIzNTk1OVowgZIxCzAJ
 BgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEP
 MA0GA1UEChMGVGhhd3RlMR0wGwYDVQQLExRDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEoMCYGA1UE
 AxMfUGVyc29uYWwgRnJlZW1haWwgUlNBIDIwMDAuOC4zMDCBnzANBgkqhkiG9w0BAQEFAAOB
 jQAwgYkCgYEA3jMypmPHCSVFPtJueCdngcXaiBmClw7jRCmKYzUqbXA8+tyu9+50bzC8M5B/
 +TRxoKNtmPHDT6Jl2w36S/HW3WGl+YXNVZo1Gp2Sdagnrthy+boC9tewkd4c6avgGAOofENC
 UFGHgzzwObSbVIoTh/+zm51JZgAtCYnslGvpoWkCAwEAAaNOMEwwKQYDVR0RBCIwIKQeMBwx
 GjAYBgNVBAMTEVByaXZhdGVMYWJlbDEtMjk3MBIGA1UdEwEB/wQIMAYBAf8CAQAwCwYDVR0P
 BAQDAgEGMA0GCSqGSIb3DQEBBAUAA4GBAHMbbyZli/8VNEtZYortRL5Jx+gNu4+5DWomKmKE
 H7iHY3QcbbfPGlORS+HN5jjZ7VD0Omw0kqzmkpxuwSMBwgmn70uuct0GZ/VQby5YuLYLwVBX
 tewc1+8XttWIm7eiiBrtOVs5fTT8tpYYJU1q9J3Fw5EvqZa4BTxS/N3pYgNIMYICpjCCAqIC
 AQEwgZowgZIxCzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcT
 CUNhcGUgVG93bjEPMA0GA1UEChMGVGhhd3RlMR0wGwYDVQQLExRDZXJ0aWZpY2F0ZSBTZXJ2
 aWNlczEoMCYGA1UEAxMfUGVyc29uYWwgRnJlZW1haWwgUlNBIDIwMDAuOC4zMAIDBYFHMAkG
 BSsOAwIaBQCgggFhMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8X
 DTAyMDIwNTAwMjg0M1owIwYJKoZIhvcNAQkEMRYEFP7zb5cZT9dpvgJkY/aWmcDf4m0AMFIG
 CSqGSIb3DQEJDzFFMEMwCgYIKoZIhvcNAwcwDgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3DQMC
 AgFAMAcGBSsOAwIHMA0GCCqGSIb3DQMCAgEoMIGtBgsqhkiG9w0BCRACCzGBnaCBmjCBkjEL
 MAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3du
 MQ8wDQYDVQQKEwZUaGF3dGUxHTAbBgNVBAsTFENlcnRpZmljYXRlIFNlcnZpY2VzMSgwJgYD
 VQQDEx9QZXJzb25hbCBGcmVlbWFpbCBSU0EgMjAwMC44LjMwAgMFgUcwDQYJKoZIhvcNAQEB
 BQAEgYC6iqKrn+D7SxjXIZIITRY4TSw3sqyfQzH4luiqvOgKAI5vPLGNlD6wK6LjrIjxxCxl
 147jUwTwGYOLv4iBeP2X8NDLnyYY0Ww+cxBeo+0QmfYhmfAzvACZCv1SKkwPifxDTnQsTa4h
 cMx/5SlqFQUBOf+r80Yu6gkKQ309Jxz8iwAAAAAAAA==
 --------------ms070605000904030007040308--
 
State-Changed-From-To: open->closed 
State-Changed-By: n_hibma 
State-Changed-When: Wed Apr 10 13:31:50 PDT 2002 
State-Changed-Why:  
This patch has been superseded by an implementation by jhb which has 
been committed to current. 

Thanks for the patch though! 


http://www.freebsd.org/cgi/query-pr.cgi?pr=32490 
>Unformatted:
