소스 검색

Merge branch 'master' of ssh://10.10.0.7/home/wd/git/u-boot/master

Wolfgang Denk 17 년 전
부모
커밋
e0320b1ebe
3개의 변경된 파일21개의 추가작업 그리고 19개의 파일을 삭제
  1. 15 4
      common/cmd_usb.c
  2. 2 5
      drivers/usb/usbdcore.c
  3. 4 10
      drivers/usb/usbdcore_ep0.c

+ 15 - 4
common/cmd_usb.c

@@ -554,13 +554,24 @@ int do_usb (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 	}
 
 	if (strncmp(argv[1],"part",4) == 0) {
-		int devno, ok;
-		for (ok=0, devno=0; devno<USB_MAX_STOR_DEV; ++devno) {
+		int devno, ok = 0;
+		if (argc==2) {
+			for (devno=0; devno<USB_MAX_STOR_DEV; ++devno) {
+				stor_dev=usb_stor_get_dev(devno);
+				if (stor_dev->type!=DEV_TYPE_UNKNOWN) {
+					ok++;
+					if (devno)
+						printf("\n");
+					printf("print_part of %x\n",devno);
+					print_part(stor_dev);
+				}
+			}
+		}
+		else {
+			devno=simple_strtoul(argv[2], NULL, 16);
 			stor_dev=usb_stor_get_dev(devno);
 			if (stor_dev->type!=DEV_TYPE_UNKNOWN) {
 				ok++;
-				if (devno)
-					printf("\n");
 				printf("print_part of %x\n",devno);
 				print_part(stor_dev);
 			}

+ 2 - 5
drivers/usb/usbdcore.c

@@ -146,12 +146,9 @@ struct usb_string_descriptor *usbd_get_string (__u8 index)
 static struct usb_configuration_instance *usbd_device_configuration_instance (struct usb_device_instance *device,
 		unsigned int port, unsigned int configuration)
 {
-	/* XXX */
-	configuration = configuration ? configuration - 1 : 0;
-
-	if (configuration >= device->configurations) {
+	if (configuration >= device->configurations)
 		return NULL;
-	}
+
 	return device->configuration_instance_array + configuration;
 }
 

+ 4 - 10
drivers/usb/usbdcore_ep0.c

@@ -235,8 +235,8 @@ static int ep0_get_descriptor (struct usb_device_instance *device,
 				return -1;
 			}
 			/*dbg_ep0(2, "%d %d", index, device_descriptor->bNumConfigurations); */
-			if (index > device_descriptor->bNumConfigurations) {
-				dbg_ep0 (0, "index too large: %d > %d", index,
+			if (index >= device_descriptor->bNumConfigurations) {
+				dbg_ep0 (0, "index too large: %d >= %d", index,
 					 device_descriptor->
 					 bNumConfigurations);
 				return -1;
@@ -571,14 +571,8 @@ int ep0_recv_setup (struct urb *urb)
 
 		case USB_REQ_SET_CONFIGURATION:
 			/* c.f. 9.4.7 - the top half of wValue is reserved */
-			/* */
-			if ((device->configuration =
-				le16_to_cpu (request->wValue) & 0xFF80) != 0) {
-				/* c.f. 9.4.7 - zero is the default or addressed state, in our case this */
-				/* is the same is configuration zero */
-				serial_printf("error setting dev->config to zero!\n");
-				device->configuration = 0;	/* TBR - ?????? */
-			}
+			device->configuration = le16_to_cpu(request->wValue) & 0xff;
+
 			/* reset interface and alternate settings */
 			device->interface = device->alternate = 0;