summary refs log tree commit diff
path: root/pkgs/misc/uboot/guruplug-usb-msd-multi-lun.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/misc/uboot/guruplug-usb-msd-multi-lun.patch')
-rw-r--r--pkgs/misc/uboot/guruplug-usb-msd-multi-lun.patch106
1 files changed, 0 insertions, 106 deletions
diff --git a/pkgs/misc/uboot/guruplug-usb-msd-multi-lun.patch b/pkgs/misc/uboot/guruplug-usb-msd-multi-lun.patch
deleted file mode 100644
index 4f32dd89031..00000000000
--- a/pkgs/misc/uboot/guruplug-usb-msd-multi-lun.patch
+++ /dev/null
@@ -1,106 +0,0 @@
-The GuruPlug's microSD card reader is a USB mass storage device that
-has two logical units (LUNs), i.e., two "SCSI disks".  This patch
-adds multi-LUN support to the USB MSD driver.
-
-See the thread at <http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/85425>.
-
---- u-boot/common/usb_storage.c	1970-01-01 01:00:01.000000000 +0100
-+++ u-boot/common/usb_storage.c	2010-10-02 00:38:15.000000000 +0200
-@@ -204,6 +204,22 @@ int usb_stor_info(void)
- 	return 1;
- }
- 
-+static unsigned int usb_get_max_lun(struct us_data *us)
-+{
-+	int len;
-+	unsigned char result;
-+	len = usb_control_msg(us->pusb_dev,
-+			      usb_rcvctrlpipe(us->pusb_dev, 0),
-+			      US_BBB_GET_MAX_LUN,
-+			      USB_TYPE_CLASS | USB_RECIP_INTERFACE | USB_DIR_IN,
-+			      0, us->ifnum,
-+			      &result, sizeof(result),
-+			      USB_CNTL_TIMEOUT * 5);
-+	USB_STOR_PRINTF("Get Max LUN -> len = %i, result = %i\n",
-+			len, (int) result);
-+	return (len > 0) ? result : 0;
-+}
-+
- /*******************************************************************************
-  * scan the usb and reports device info
-  * to the user if mode = 1
-@@ -241,13 +257,21 @@ int usb_stor_scan(int mode)
- 			break; /* no more devices avaiable */
- 
- 		if (usb_storage_probe(dev, 0, &usb_stor[usb_max_devs])) {
--			/* ok, it is a storage devices
--			 * get info and fill it in
--			 */
--			if (usb_stor_get_info(dev, &usb_stor[usb_max_devs],
--						&usb_dev_desc[usb_max_devs]) == 1)
-+			/* OK, it's a storage device.  Iterate over its LUNs
-+			 * and populate `usb_dev_desc'.  */
-+			int lun, max_lun, start = usb_max_devs;
-+
-+			max_lun = usb_get_max_lun(&usb_stor[usb_max_devs]);
-+			for (lun = 0;
-+			     lun <= max_lun && usb_max_devs < USB_MAX_STOR_DEV;
-+			     lun++) {
-+				usb_dev_desc[usb_max_devs].lun = lun;
-+				if (usb_stor_get_info(dev, &usb_stor[start],
-+						      &usb_dev_desc[usb_max_devs]) == 1) {
- 				usb_max_devs++;
- 		}
-+			}
-+		}
- 		/* if storage device */
- 		if (usb_max_devs == USB_MAX_STOR_DEV) {
- 			printf("max USB Storage Device reached: %d stopping\n",
-@@ -882,6 +906,7 @@ static int usb_inquiry(ccb *srb, struct 
- 	do {
- 		memset(&srb->cmd[0], 0, 12);
- 		srb->cmd[0] = SCSI_INQUIRY;
-+		srb->cmd[1] = srb->lun << 5;
- 		srb->cmd[4] = 36;
- 		srb->datalen = 36;
- 		srb->cmdlen = 12;
-@@ -905,6 +930,7 @@ static int usb_request_sense(ccb *srb, s
- 	ptr = (char *)srb->pdata;
- 	memset(&srb->cmd[0], 0, 12);
- 	srb->cmd[0] = SCSI_REQ_SENSE;
-+	srb->cmd[1] = srb->lun << 5;
- 	srb->cmd[4] = 18;
- 	srb->datalen = 18;
- 	srb->pdata = &srb->sense_buf[0];
-@@ -924,6 +950,7 @@ static int usb_test_unit_ready(ccb *srb,
- 	do {
- 		memset(&srb->cmd[0], 0, 12);
- 		srb->cmd[0] = SCSI_TST_U_RDY;
-+		srb->cmd[1] = srb->lun << 5;
- 		srb->datalen = 0;
- 		srb->cmdlen = 12;
- 		if (ss->transport(srb, ss) == USB_STOR_TRANSPORT_GOOD)
-@@ -943,6 +970,7 @@ static int usb_read_capacity(ccb *srb, s
- 	do {
- 		memset(&srb->cmd[0], 0, 12);
- 		srb->cmd[0] = SCSI_RD_CAPAC;
-+		srb->cmd[1] = srb->lun << 5;
- 		srb->datalen = 8;
- 		srb->cmdlen = 12;
- 		if (ss->transport(srb, ss) == USB_STOR_TRANSPORT_GOOD)
-@@ -957,6 +985,7 @@ static int usb_read_10(ccb *srb, struct 
- {
- 	memset(&srb->cmd[0], 0, 12);
- 	srb->cmd[0] = SCSI_READ10;
-+	srb->cmd[1] = srb->lun << 5;
- 	srb->cmd[2] = ((unsigned char) (start >> 24)) & 0xff;
- 	srb->cmd[3] = ((unsigned char) (start >> 16)) & 0xff;
- 	srb->cmd[4] = ((unsigned char) (start >> 8)) & 0xff;
-@@ -973,6 +1002,7 @@ static int usb_write_10(ccb *srb, struct
- {
- 	memset(&srb->cmd[0], 0, 12);
- 	srb->cmd[0] = SCSI_WRITE10;
-+	srb->cmd[1] = srb->lun << 5;
- 	srb->cmd[2] = ((unsigned char) (start >> 24)) & 0xff;
- 	srb->cmd[3] = ((unsigned char) (start >> 16)) & 0xff;
- 	srb->cmd[4] = ((unsigned char) (start >> 8)) & 0xff;