+\r
+ if (PcdGetBool(PcdUsbExtendedDecode)) {\r
+ Status = gBS->LocateDevicePath( &gEfiUsbIoProtocolGuid, &DevicePath, &TempHandle );\r
+ UsbIo = NULL;\r
+ if (!EFI_ERROR(Status)) {\r
+ Status = gBS->OpenProtocol(TempHandle, &gEfiUsbIoProtocolGuid, (VOID**)&UsbIo, gImageHandle, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL);\r
+ } \r
+\r
+ if (!EFI_ERROR(Status)) {\r
+ ASSERT(UsbIo != NULL);\r
+ Status = UsbIo->UsbGetInterfaceDescriptor(UsbIo, &InterfaceDesc);\r
+ if (!EFI_ERROR(Status)) {\r
+ if (InterfaceDesc.InterfaceClass == USB_MASS_STORE_CLASS && MappingItem->Mtd == MTDTypeUnknown) {\r
+ switch (InterfaceDesc.InterfaceSubClass){\r
+ case USB_MASS_STORE_SCSI:\r
+ MappingItem->Mtd = MTDTypeHardDisk;\r
+ break;\r
+ case USB_MASS_STORE_8070I:\r
+ case USB_MASS_STORE_UFI:\r
+ MappingItem->Mtd = MTDTypeFloppy;\r
+ break;\r
+ case USB_MASS_STORE_8020I:\r
+ MappingItem->Mtd = MTDTypeCDRom;\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ } \r
+ }\r