aboutsummaryrefslogtreecommitdiff
path: root/LUFA/Drivers/USB/Class/Host/MassStorage.c
diff options
context:
space:
mode:
authorDean Camera <[email protected]>2009-08-27 11:43:37 +0000
committerDean Camera <[email protected]>2009-08-27 11:43:37 +0000
commit023838fe4aad5b5f0da00b767afd1400d4e40b4c (patch)
treef67fdc47fb1a251574cee37eef5979754670c95b /LUFA/Drivers/USB/Class/Host/MassStorage.c
parentf52b265090db54c580be9fd5307b4d5368972f51 (diff)
downloadqmk_firmware-023838fe4aad5b5f0da00b767afd1400d4e40b4c.tar.gz
qmk_firmware-023838fe4aad5b5f0da00b767afd1400d4e40b4c.zip
Add check to Pipe_IsEndpointBound() in the Mass Storage Host mode Class driver to ensure that multiple instances of the driver can be used on a single device with multiple Mass Storage interfaces.
Diffstat (limited to 'LUFA/Drivers/USB/Class/Host/MassStorage.c')
-rw-r--r--LUFA/Drivers/USB/Class/Host/MassStorage.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/LUFA/Drivers/USB/Class/Host/MassStorage.c b/LUFA/Drivers/USB/Class/Host/MassStorage.c
index 1f66aa8630..ba281cfa48 100644
--- a/LUFA/Drivers/USB/Class/Host/MassStorage.c
+++ b/LUFA/Drivers/USB/Class/Host/MassStorage.c
@@ -113,8 +113,11 @@ static uint8_t DComp_NextInterfaceBulkDataEndpoint(void* CurrentDescriptor)
uint8_t EndpointType = (DESCRIPTOR_CAST(CurrentDescriptor,
USB_Descriptor_Endpoint_t).Attributes & EP_TYPE_MASK);
- if (EndpointType == EP_TYPE_BULK)
- return DESCRIPTOR_SEARCH_Found;
+ if ((EndpointType == EP_TYPE_BULK) &&
+ (!(Pipe_IsEndpointBound(CurrentEndpoint->EndpointAddress))))
+ {
+ return DESCRIPTOR_SEARCH_Found;
+ }
}
else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)
{